16 Commits

Author SHA1 Message Date
256a002595 1.0.72 2022-05-20 16:56:17 +02:00
98d7f513e9 fix(core): update 2022-05-20 16:56:17 +02:00
a08e4b11c2 1.0.71 2022-05-20 16:28:09 +02:00
56dee69019 fix(core): update 2022-05-20 16:28:09 +02:00
83f79c5fcb 1.0.70 2022-05-20 16:26:03 +02:00
cd5a083fa8 fix(core): update 2022-05-20 16:26:03 +02:00
1e01b59d32 1.0.69 2022-05-19 13:51:12 +02:00
3b40811295 fix(core): update 2022-05-19 13:51:11 +02:00
80597b25d6 1.0.68 2022-05-18 03:19:55 +02:00
bcadb1b97f fix(core): update 2022-05-18 03:19:55 +02:00
e70d8abc8a 1.0.67 2022-03-18 16:56:51 +01:00
c5ef13acbe fix(core): update 2022-03-18 16:56:50 +01:00
d0f107dc4b 1.0.66 2022-03-16 10:49:03 +01:00
e8534691b4 fix(core): update 2022-03-16 10:49:03 +01:00
5cd6b17101 1.0.65 2022-03-15 15:18:06 +01:00
c65540c55f fix(core): update 2022-03-15 15:18:05 +01:00
16 changed files with 6119 additions and 10209 deletions

View File

@ -22,5 +22,6 @@
} }
} }
} }
] ],
"typescript.tsdk": "node_modules/typescript/lib"
} }

View File

@ -1,6 +1,7 @@
<!--gitzone element--> <!--gitzone default-->
<!-- made by Lossless GmbH --> <!-- made by Lossless GmbH -->
<!-- checkout https://maintainedby.lossless.com for awesome OpenSource projects --> <!-- checkout https://maintainedby.lossless.com for awesome OpenSource projects -->
<!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<!--Lets set some basic meta tags--> <!--Lets set some basic meta tags-->
@ -9,16 +10,119 @@
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height"
/> />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="theme-color" content="#000000">
<!--Lets make sure we recognize this as an PWA-->
<link rel="manifest" href="/manifest.json" />
<link rel="icon" type="image/png" href="/assetbroker/manifest/favicon.png">
<!--Lets load standard fonts-->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link
crossorigin="anonymous"
href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet"
/>
<link href="https://fonts.googleapis.com/css2?family=Exo+2:wght@100;200;300;400;500;600;700;800&family=Roboto+Slab:wght@100;200;300;400;500;600;700;900&family=Roboto:wght@100;300;400;500;700;900&family=Roboto+Mono:wght@100;300;400;500;700;900&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&display=swap" rel="stylesheet">
<!--Lets avoid a rescaling flicker due to default body margins-->
<style> <style>
body { body {
background: #000;
margin: 0px; margin: 0px;
background: #222222;
} }
</style> </style>
<script>
<script type="module" src="./index.ts"></script> projectVersion = '';
</script>
</head> </head>
<body> <body>
<noscript>
<style>
body {
background: #303f9f;
font-family: 'Roboto', sans-serif;
color: #ffffff;
}
a {
color: #ffffff;
text-decoration: none;
}
.logo {
margin-top: 100px;
text-align: center;
}
img {
width: 130px;
}
.container {
width: 600px;
margin: auto;
margin-top: 20px;
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.3);
overflow: hidden;
border-radius: 3px;
background: #4357d9;
}
.contentHeader {
padding: 20px;
text-align: center;
font-size: 25px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.content {
padding: 20px;
}
.footer {
padding: 10px;
text-align: center;
}
</style>
<div class="logo">
<img src="https://assetbroker.lossless.one/brandfiles/lossless/svg-minimal-bright.svg">
</div>
<div class="container">
<div class="contentHeader">
We need JavaScript to run properly!
</div>
<div class="content">
This site is being built using lit-element (made by Google). This technology works with
JavaScript. Subsequently this website does not work as intended by Lossless GmbH without
JavaScript.
</div>
</div>
<div class="footer">
<a href="https://lossless.gmbh">Legal Info</a> |
<a href="https://lossless.gmbh/privacy">Privacy Policy</a>
</div>
</noscript>
<script type="text/javascript" async defer>
window.revenueEnabled = true;
const runRevenueCheck = async () => {
var e = document.createElement('div');
e.id = '476kjuhzgtr764';
e.style.display = 'none';
document.body.appendChild(e);
if (document.getElementById('476kjuhzgtr764')) {
window.revenueEnabled = true;
} else {
window.revenueEnabled = false;
}
console.log(`revenue enabled: ${window.revenueEnabled}`);
};
runRevenueCheck();
</script>
</body> </body>
<script defer type="module" src="/bundle.js"></script>
</html> </html>

View File

@ -3,8 +3,8 @@ import * as deesWccTools from '@designestate/dees-wcctools';
import * as deesDomTools from '@designestate/dees-domtools'; import * as deesDomTools from '@designestate/dees-domtools';
// elements and pages // elements and pages
import * as elements from '../ts_web/elements'; import * as elements from '../ts_web/elements/index.js';
import * as pages from '../ts_web/pages'; import * as pages from '../ts_web/pages/index.js';
deesWccTools.setupWccTools(elements as any, pages); deesWccTools.setupWccTools(elements as any, pages);
deesDomTools.elementBasic.setup(); deesDomTools.elementBasic.setup();

15534
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,36 +1,37 @@
{ {
"name": "@designestate/dees-editor", "name": "@designestate/dees-editor",
"version": "1.0.64", "version": "1.0.72",
"private": false, "private": false,
"description": "an advanced editor for markdown documents based on monaco.", "description": "an advanced editor for markdown documents based on monaco.",
"main": "dist_ts_web/index.js", "main": "dist_ts_web/index.js",
"typings": "dist_ts_web/index.d.ts", "typings": "dist_ts_web/index.d.ts",
"type": "module",
"scripts": { "scripts": {
"test": "npm run build", "test": "tstest test/",
"build": "tsbuild element && tsbundle element --production", "build": "tsbuild element --allowimplicitany --skiplibcheck && tsbundle element --allowimplicitany",
"watch": "tswatch element" "watch": "tswatch element"
}, },
"author": "Lossless GmbH", "author": "Lossless GmbH",
"license": "UNLICENSED", "license": "UNLICENSED",
"dependencies": { "dependencies": {
"@designestate/dees-domtools": "^1.0.41", "@designestate/dees-domtools": "^2.0.22",
"@designestate/dees-element": "^1.0.26", "@designestate/dees-element": "^2.0.15",
"@designestate/dees-wcctools": "^1.0.37", "@designestate/dees-wcctools": "^1.0.74",
"@gitzone/tsrun": "^1.2.12", "@gitzone/tsrun": "^1.2.32",
"@losslessone_private/loint-pubapi": "^1.0.9", "@losslessone_private/loint-pubapi": "^1.0.13",
"@pushrocks/smartexpress": "^3.0.76", "@pushrocks/smartexpress": "^4.0.4",
"monaco-editor": "^0.32.1", "@pushrocks/smartmarkdown": "^2.0.14",
"typescript": "^4.4.3" "monaco-editor": "^0.33.0",
"xterm": "^4.18.0",
"xterm-addon-fit": "^0.5.0"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.24", "@gitzone/tsbuild": "^2.1.61",
"@gitzone/tsbundle": "^1.0.91", "@gitzone/tsbundle": "^2.0.3",
"@gitzone/tswatch": "^1.0.59", "@gitzone/tstest": "^1.0.71",
"@pushrocks/projectinfo": "^4.0.5", "@gitzone/tswatch": "^2.0.1",
"buffer": "^6.0.3", "@pushrocks/projectinfo": "^5.0.1",
"process": "^0.11.10", "@pushrocks/tapbundle": "^5.0.3"
"tslint": "^6.1.3",
"tslint-config-prettier": "^1.17.0"
}, },
"files": [ "files": [
"ts/**/*", "ts/**/*",

15
test/test.browser.ts Normal file
View File

@ -0,0 +1,15 @@
import { expect, expectAsync, tap, webhelpers } from '@pushrocks/tapbundle';
import * as deesEditorLib from '../ts_web/index.js';
tap.test('test dees-editor', async () => {
const deesEditor = new deesEditorLib.DeesEditor;
expect(deesEditor).toBeInstanceOf(deesEditorLib.DeesEditor)
});
tap.test('test dees-terminal', async () => {
const deesTerminal = await webhelpers.fixture(`<dees-terminal></dees-terminal>`);
expect(deesTerminal).toBeInstanceOf(deesEditorLib.DeesTerminal);
})
tap.start()

View File

@ -0,0 +1,8 @@
/**
* autocreated commitinfo by @pushrocks/commitinfo
*/
export const commitinfo = {
name: '@designestate/dees-editor',
version: '1.0.72',
description: 'an advanced editor for markdown documents based on monaco.'
}

View File

@ -1,82 +0,0 @@
import { DeesElement, property, html, customElement, TemplateResult, css, cssManager } from '@designestate/dees-element';
import * as domtools from '@designestate/dees-domtools';
const deferred = domtools.plugins.smartpromise.defer();
let aceDeferred: typeof deferred;
import type * as monaco from 'monaco-editor';
declare global {
interface HTMLElementTagNameMap {
'dees-editor-ace': DeesEditorAce;
}
}
@customElement('dees-editor-ace')
export class DeesEditorAce extends DeesElement {
public static demo = () => html`
<dees-editor-ace></dees-editor-ace>
`;
constructor() {
super();
domtools.DomTools.setupDomTools();
}
public static styles = [
domtools.elementBasic.staticStyles,
css`
:host {
}
* {
box-sizing: border-box;
}
#container {
position: absolute;
height: 100%;
width: 100%;
}
`
]
public render (): TemplateResult {
return html`
<div class="mainbox">
<div id="container"></div>
</div>
`;
}
public async firstUpdated (_changedProperties: Map<string | number | symbol, unknown>): Promise<void> {
super.firstUpdated(_changedProperties);
const container = this.shadowRoot.getElementById('container');
/* if (!aceDeferred) {
aceDeferred = domtools.plugins.smartpromise.defer();
const scriptUrl = `https://cdn.jsdelivr.net/npm/monaco-editor/min/vs/loader.js`;
const script = document.createElement('script');
script.src = scriptUrl;
script.onload = () => {
aceDeferred.resolve();
}
document.head.appendChild(script);
}
await aceDeferred.promise;
(window as any).require.config({
paths: { vs: "https://cdn.jsdelivr.net/npm/monaco-editor/min/vs" }
});
(window as any).require([ "vs/editor/editor.main" ], function () {
const editor: monaco.editor.IStandaloneCodeEditor = (window as any).monaco.editor.create(container, {
value: "function hello() {\n\talert('Hello world!');\n}",
language: 'javascript',
theme: 'vs-dark',
useShadowDOM: true
});
}); */
}
}

View File

@ -0,0 +1,42 @@
import { customElement, DeesElement, html, TemplateResult } from '@designestate/dees-element';
declare global {
interface HTMLElementTagNameMap {
'dees-editormarkdownoutlet': DeesEditorMarkdownOutlet;
}
}
@customElement('dees-editormarkdownoutlet')
export class DeesEditorMarkdownOutlet extends DeesElement {
// DEMO
public static demo = () => html`<dees-editormarkdownoutlet></dees-editormarkdownoutlet>`;
// INSTANCE
private outlet: HTMLElement;
public render(): TemplateResult {
return html`
<div class="outlet markdown-body">
<h1>Hi there</h1>
</div>
`;
}
public async firstUpdated(_changedProperties: Map<string | number | symbol, unknown>) {
await super.firstUpdated(_changedProperties);
const styleElement = document.createElement('style');
const cssText = await (
await fetch('https://unpkg.com/github-markdown-css@5.1.0/github-markdown-dark.css')
).text();
styleElement.textContent = cssText;
this.shadowRoot.append(styleElement);
}
public async updateHtmlText(htmlTextArg: string) {
await this.updateComplete;
if (!this.outlet) {
this.outlet = this.shadowRoot.querySelector('.outlet');
}
this.outlet.innerHTML = htmlTextArg;
}
}

View File

@ -1,9 +1,14 @@
import { DeesElement, property, html, customElement, TemplateResult, css, cssManager } from '@designestate/dees-element'; import {
DeesElement,
property,
html,
customElement,
TemplateResult,
css,
cssManager,
} from '@designestate/dees-element';
import * as domtools from '@designestate/dees-domtools'; import * as domtools from '@designestate/dees-domtools';
const deferred = domtools.plugins.smartpromise.defer();
let monacoDeferred: typeof deferred;
import type * as monaco from 'monaco-editor'; import type * as monaco from 'monaco-editor';
declare global { declare global {
@ -14,9 +19,30 @@ declare global {
@customElement('dees-editor') @customElement('dees-editor')
export class DeesEditor extends DeesElement { export class DeesEditor extends DeesElement {
public static demo = () => html` // DEMO
<dees-editor></dees-editor> public static demo = () => html` <dees-editor></dees-editor> `;
`;
// STATIC
public static monacoDeferred: ReturnType<typeof domtools.plugins.smartpromise.defer>;
// INSTANCE
public editorDeferred = domtools.plugins.smartpromise.defer<monaco.editor.IStandaloneCodeEditor>();
public language = 'typescript';
@property({
type: String
})
public content = "function hello() {\n\talert('Hello world!');\n}";
@property({
type: Object
})
public contentSubject = new domtools.rxjs.Subject<string>();
@property({
type: Boolean
})
public wordWrap: monaco.editor.IStandaloneEditorConstructionOptions['wordWrap'] = 'off';
constructor() { constructor() {
super(); super();
@ -27,7 +53,6 @@ export class DeesEditor extends DeesElement {
domtools.elementBasic.staticStyles, domtools.elementBasic.staticStyles,
css` css`
:host { :host {
} }
* { * {
@ -39,10 +64,10 @@ export class DeesEditor extends DeesElement {
height: 100%; height: 100%;
width: 100%; width: 100%;
} }
` `,
] ];
public render (): TemplateResult { public render(): TemplateResult {
return html` return html`
<div class="mainbox"> <div class="mainbox">
<div id="container"></div> <div id="container"></div>
@ -50,33 +75,52 @@ export class DeesEditor extends DeesElement {
`; `;
} }
public async firstUpdated (_changedProperties: Map<string | number | symbol, unknown>): Promise<void> { public async firstUpdated(
_changedProperties: Map<string | number | symbol, unknown>
): Promise<void> {
super.firstUpdated(_changedProperties); super.firstUpdated(_changedProperties);
const container = this.shadowRoot.getElementById('container'); const container = this.shadowRoot.getElementById('container');
if (!monacoDeferred) { if (!DeesEditor.monacoDeferred) {
monacoDeferred = domtools.plugins.smartpromise.defer(); DeesEditor.monacoDeferred = domtools.plugins.smartpromise.defer();
const scriptUrl = `https://cdn.jsdelivr.net/npm/monaco-editor/min/vs/loader.js`; const scriptUrl = `https://cdn.jsdelivr.net/npm/monaco-editor/min/vs/loader.js`;
const script = document.createElement('script'); const script = document.createElement('script');
script.src = scriptUrl; script.src = scriptUrl;
script.onload = () => { script.onload = () => {
monacoDeferred.resolve(); DeesEditor.monacoDeferred.resolve();
} };
document.head.appendChild(script); document.head.appendChild(script);
} }
await monacoDeferred.promise; await DeesEditor.monacoDeferred.promise;
(window as any).require.config({ (window as any).require.config({
paths: { vs: "https://cdn.jsdelivr.net/npm/monaco-editor/min/vs" } paths: { vs: 'https://cdn.jsdelivr.net/npm/monaco-editor/min/vs' },
}); });
(window as any).require([ "vs/editor/editor.main" ], function () { (window as any).require(['vs/editor/editor.main'], async () => {
const editor: monaco.editor.IStandaloneCodeEditor = (window as any).monaco.editor.create(container, { const editor = ((window as any).monaco.editor as typeof monaco.editor).create(container, {
value: "function hello() {\n\talert('Hello world!');\n}", value: this.content,
language: 'javascript', language: this.language,
theme: 'vs-dark', theme: 'vs-dark',
useShadowDOM: true useShadowDOM: true,
fontSize: 16,
automaticLayout: true,
wordWrap: this.wordWrap
}); });
this.editorDeferred.resolve(editor);
}); });
const css = await (
await fetch('https://cdn.jsdelivr.net/npm/monaco-editor/min/vs/editor/editor.main.css')
).text();
const styleElement = document.createElement('style');
styleElement.textContent = css;
this.shadowRoot.append(styleElement);
// editor is setup let do the rest
const editor = await this.editorDeferred.promise;
editor.onDidChangeModelContent(async eventArg => {
this.contentSubject.next(editor.getValue());
});
this.contentSubject.next(editor.getValue());
} }
} }

View File

@ -0,0 +1,100 @@
import {
DeesElement,
property,
html,
customElement,
TemplateResult,
css,
cssManager,
} from '@designestate/dees-element';
import * as domtools from '@designestate/dees-domtools';
import * as smartmarkdown from '@pushrocks/smartmarkdown';
const deferred = domtools.plugins.smartpromise.defer();
declare global {
interface HTMLElementTagNameMap {
'dees-editormarkdown': DeesEditorMarkdown;
}
}
@customElement('dees-editormarkdown')
export class DeesEditorMarkdown extends DeesElement {
public static demo = () => html`<dees-editormarkdown></dees-editormarkdown>`;
public static styles = [
cssManager.defaultStyles,
css`
.gridcontainer {
position: absolute;
height: 100%;
width: 100%;
display: grid;
grid-template-columns: 60% 40%;
}
.editorContainer {
position: relative;
}
.outletContainer {
background: #111;
color: #fff;
font-family: 'Roboto Slab';
padding: 20px;
overflow-y: scroll;
}
`,
];
public render() {
return html`
<div class="gridcontainer">
<div class="editorContainer">
<dees-editor
.language=${'markdown'}
.content=${`# a test content
This is test content that is of longer form an hopefully starts to wrap when I need it. And yes, it does perfectly. nice.
Test | Hello
--- | ---
Yeah | So good
This is real asset I think. Why would we want to leave that on the table? Can you tell my that?
Why are we here?
Do you know?
> note:
There is something going on.
\`\`\`typescript
const hello = 'yes'
\`\`\`
`}
wordWrap="bounded"
></dees-editor>
</div>
<div class="outletContainer">
<dees-editormarkdownoutlet></dees-editormarkdownoutlet>
</div>
</div>
`;
}
public async firstUpdated(_changedPropertiesArg) {
await super.firstUpdated(_changedPropertiesArg);
const editor = this.shadowRoot.querySelector('dees-editor');
// lets care about wiring the markdown stuff.
const markdownOutlet = this.shadowRoot.querySelector('dees-editormarkdownoutlet');
const smartmarkdownInstance = new smartmarkdown.SmartMarkdown();
const mdParsedResult = await smartmarkdownInstance.getMdParsedResultFromMarkdown('loading...')
editor.contentSubject.subscribe(async contentArg => {
await mdParsedResult.updateFromMarkdownString(contentArg)
const html = mdParsedResult.html;
markdownOutlet.updateHtmlText(html);
})
}
}

View File

@ -0,0 +1,242 @@
import { DeesElement, property, html, customElement, TemplateResult, css, cssManager } from '@designestate/dees-element';
import * as domtools from '@designestate/dees-domtools';
import { Terminal } from 'xterm';
import { FitAddon } from 'xterm-addon-fit';
declare global {
interface HTMLElementTagNameMap {
'dees-terminal': DeesTerminal;
}
}
@customElement('dees-terminal')
export class DeesTerminal extends DeesElement {
public static demo = () => html`
<dees-terminal></dees-terminal>
`;
constructor() {
super();
domtools.DomTools.setupDomTools();
}
public static styles = [
domtools.elementBasic.staticStyles,
css`
:host {
padding: 20px;
background: #000;
position: absolute;
height: 100%;
width: 100%;
}
* {
box-sizing: border-box;
}
#container {
position: absolute;
height: calc(100% - 40px);
width: calc(100% - 40px);
}
/**
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
* https://github.com/chjj/term.js
* @license MIT
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* Originally forked from (with the author's permission):
* Fabrice Bellard's javascript vt100 for jslinux:
* http://bellard.org/jslinux/
* Copyright (c) 2011 Fabrice Bellard
* The original design remains. The terminal itself
* has been extended to include xterm CSI codes, among
* other features.
*/
/**
* Default styles for xterm.js
*/
.xterm {
font-feature-settings: "liga" 0;
position: relative;
user-select: none;
-ms-user-select: none;
-webkit-user-select: none;
}
.xterm.focus,
.xterm:focus {
outline: none;
}
.xterm .xterm-helpers {
position: absolute;
top: 0;
/**
* The z-index of the helpers must be higher than the canvases in order for
* IMEs to appear on top.
*/
z-index: 5;
}
.xterm .xterm-helper-textarea {
padding: 0;
border: 0;
margin: 0;
/* Move textarea out of the screen to the far left, so that the cursor is not visible */
position: absolute;
opacity: 0;
left: -9999em;
top: 0;
width: 0;
height: 0;
z-index: -5;
/** Prevent wrapping so the IME appears against the textarea at the correct position */
white-space: nowrap;
overflow: hidden;
resize: none;
}
.xterm .composition-view {
/* TODO: Composition position got messed up somewhere */
background: #000;
color: #FFF;
display: none;
position: absolute;
white-space: nowrap;
z-index: 1;
}
.xterm .composition-view.active {
display: block;
}
.xterm .xterm-viewport {
/* On OS X this is required in order for the scroll bar to appear fully opaque */
background-color: #000;
overflow-y: scroll;
cursor: default;
position: absolute;
right: 0;
left: 0;
top: 0;
bottom: 0;
}
.xterm .xterm-screen {
position: relative;
}
.xterm .xterm-screen canvas {
position: absolute;
left: 0;
top: 0;
}
.xterm .xterm-scroll-area {
visibility: hidden;
}
.xterm-char-measure-element {
display: inline-block;
visibility: hidden;
position: absolute;
top: 0;
left: -9999em;
line-height: normal;
}
.xterm {
cursor: text;
}
.xterm.enable-mouse-events {
/* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */
cursor: default;
}
.xterm.xterm-cursor-pointer {
cursor: pointer;
}
.xterm.column-select.focus {
/* Column selection mode */
cursor: crosshair;
}
.xterm .xterm-accessibility,
.xterm .xterm-message {
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
z-index: 10;
color: transparent;
}
.xterm .live-region {
position: absolute;
left: -9999px;
width: 1px;
height: 1px;
overflow: hidden;
}
.xterm-dim {
opacity: 0.5;
}
.xterm-underline {
text-decoration: underline;
}
`
]
public render (): TemplateResult {
return html`
<div class="mainbox">
<div id="container"></div>
</div>
`;
}
public async firstUpdated (_changedProperties: Map<string | number | symbol, unknown>): Promise<void> {
super.firstUpdated(_changedProperties);
const container = this.shadowRoot.getElementById('container');
const term = new Terminal();
const fitAddon = new FitAddon();
term.loadAddon(fitAddon);
// Open the terminal in #terminal-container
term.open(container);
// Make the terminal's size and geometry fit the size of #terminal-container
fitAddon.fit();
term.write(`dees-terminal custom terminal. \r\n$ `);
}
}

View File

@ -1,2 +1,4 @@
export * from './dees-editor'; export * from './dees-editor.js';
export * from './dees-editor-ace'; export * from './dees-editormarkdown.js';
export * from './dees-editor-markdownoutlet.js';
export * from './dees-terminal.js';

View File

@ -1 +1 @@
export * from './elements/index'; export * from './elements/index.js';

View File

@ -1,16 +1,8 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "es2017", "experimentalDecorators": true,
"module": "es2015", "target": "ES2020",
"moduleResolution": "node", "module": "ES2020",
"lib": ["es2017", "dom"], "moduleResolution": "node12"
"declaration": true,
"inlineSources": true,
"inlineSourceMap": true,
"noUnusedLocals": false,
"noFallthroughCasesInSwitch": true,
"outDir": "dist/",
"skipLibCheck": false,
"experimentalDecorators": true
} }
} }

View File

@ -1,17 +0,0 @@
{
"extends": ["tslint:latest", "tslint-config-prettier"],
"rules": {
"semicolon": [true, "always"],
"no-console": false,
"ordered-imports": false,
"object-literal-sort-keys": false,
"member-ordering": {
"options":{
"order": [
"static-method"
]
}
}
},
"defaultSeverity": "warning"
}