6 Commits

Author SHA1 Message Date
5cd6b17101 1.0.65 2022-03-15 15:18:06 +01:00
c65540c55f fix(core): update 2022-03-15 15:18:05 +01:00
2a56d38c86 1.0.64 2022-03-11 15:54:54 +01:00
959a78fadd fix(core): update 2022-03-11 15:54:54 +01:00
3ceb68da4d 1.0.63 2022-03-10 23:22:52 +01:00
4a8307e891 fix(core): update 2022-03-10 23:22:52 +01:00
6 changed files with 1506 additions and 794 deletions

1935
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,13 @@
{ {
"name": "@designestate/dees-editor", "name": "@designestate/dees-editor",
"version": "1.0.62", "version": "1.0.65",
"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",
"scripts": { "scripts": {
"test": "npm run build", "test": "npm run build",
"build": "tsbuild element && tsbundle element --production", "build": "tsbuild element --commonjs --allowimplicitany && tsbundle element --commonjs --allowimplicitany --production",
"watch": "tswatch element" "watch": "tswatch element"
}, },
"author": "Lossless GmbH", "author": "Lossless GmbH",
@ -16,17 +16,18 @@
"@designestate/dees-domtools": "^1.0.41", "@designestate/dees-domtools": "^1.0.41",
"@designestate/dees-element": "^1.0.26", "@designestate/dees-element": "^1.0.26",
"@designestate/dees-wcctools": "^1.0.37", "@designestate/dees-wcctools": "^1.0.37",
"@gitzone/tsrun": "^1.2.12", "@gitzone/tsrun": "^1.2.31",
"@losslessone_private/loint-pubapi": "^1.0.9", "@losslessone_private/loint-pubapi": "^1.0.9",
"@parcel/config-default": "^2.3.2",
"@pushrocks/smartexpress": "^3.0.76", "@pushrocks/smartexpress": "^3.0.76",
"monaco-editor": "^0.32.1", "monaco-editor": "^0.33.0",
"typescript": "^4.4.3" "typescript": "^4.4.3",
"xterm": "^4.18.0",
"xterm-addon-fit": "^0.5.0"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.24", "@gitzone/tsbuild": "^2.1.55",
"@gitzone/tsbundle": "^1.0.72", "@gitzone/tsbundle": "^1.0.94",
"@gitzone/tswatch": "^1.0.58", "@gitzone/tswatch": "^1.0.62",
"@pushrocks/projectinfo": "^4.0.5", "@pushrocks/projectinfo": "^4.0.5",
"buffer": "^6.0.3", "buffer": "^6.0.3",
"process": "^0.11.10", "process": "^0.11.10",

View File

@ -0,0 +1,82 @@
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,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 +1,3 @@
export * from './dees-editor'; export * from './dees-editor';
export * from './dees-editor-ace';
export * from './dees-terminal';

View File

@ -7,10 +7,10 @@
"declaration": true, "declaration": true,
"inlineSources": true, "inlineSources": true,
"inlineSourceMap": true, "inlineSourceMap": true,
"noUnusedLocals": true, "noUnusedLocals": false,
"noFallthroughCasesInSwitch": true, "noFallthroughCasesInSwitch": true,
"outDir": "dist/", "outDir": "dist/",
"skipLibCheck": true, "skipLibCheck": false,
"experimentalDecorators": true "experimentalDecorators": true
} }
} }