@social-mail/social-mail-client 1.0.113 → 1.0.115
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/content/editor/edit.html +159 -0
- package/content/templates/plain/index.html +32 -0
- package/dist/admin/AdminAppIndex.pack.js +2605 -269
- package/dist/admin/AdminAppIndex.pack.js.map +1 -1
- package/dist/admin/AdminAppIndex.pack.min.js +258 -9
- package/dist/admin/AdminAppIndex.pack.min.js.map +1 -1
- package/dist/common/Sql.d.ts +1 -0
- package/dist/common/Sql.d.ts.map +1 -1
- package/dist/common/Sql.js.map +1 -1
- package/dist/common/commands/CommonCommands.d.ts +7 -0
- package/dist/common/commands/CommonCommands.d.ts.map +1 -1
- package/dist/common/commands/CommonCommands.js +10 -0
- package/dist/common/commands/CommonCommands.js.map +1 -1
- package/dist/common/controls/html/grapes-js/GrapesJSEditor.d.ts +19 -0
- package/dist/common/controls/html/grapes-js/GrapesJSEditor.d.ts.map +1 -0
- package/dist/common/controls/html/grapes-js/GrapesJSEditor.js +119 -0
- package/dist/common/controls/html/grapes-js/GrapesJSEditor.js.map +1 -0
- package/dist/common/controls/tree/FileTreeView.d.ts +16 -0
- package/dist/common/controls/tree/FileTreeView.d.ts.map +1 -0
- package/dist/common/controls/tree/FileTreeView.js +100 -0
- package/dist/common/controls/tree/FileTreeView.js.map +1 -0
- package/dist/common/controls/tree/TreeView.d.ts +4 -1
- package/dist/common/controls/tree/TreeView.d.ts.map +1 -1
- package/dist/common/controls/tree/TreeView.js +35 -17
- package/dist/common/controls/tree/TreeView.js.map +1 -1
- package/dist/common/pages/websites/edit/WebSiteFolderEditor.d.ts.map +1 -1
- package/dist/common/pages/websites/edit/WebSiteFolderEditor.js +2 -1
- package/dist/common/pages/websites/edit/WebSiteFolderEditor.js.map +1 -1
- package/dist/common/pages/websites/manage/ManageWebSitePage.d.ts +10 -0
- package/dist/common/pages/websites/manage/ManageWebSitePage.d.ts.map +1 -0
- package/dist/common/pages/websites/manage/ManageWebSitePage.js +45 -0
- package/dist/common/pages/websites/manage/ManageWebSitePage.js.map +1 -0
- package/dist/common/pages/websites/studio/WebSiteStudioPage.d.ts +24 -0
- package/dist/common/pages/websites/studio/WebSiteStudioPage.d.ts.map +1 -0
- package/dist/common/pages/websites/studio/WebSiteStudioPage.js +244 -0
- package/dist/common/pages/websites/studio/WebSiteStudioPage.js.map +1 -0
- package/dist/common/pages/websites/templates/ChooseWebSiteTemplatePage.d.ts +9 -0
- package/dist/common/pages/websites/templates/ChooseWebSiteTemplatePage.d.ts.map +1 -0
- package/dist/common/pages/websites/templates/ChooseWebSiteTemplatePage.js +59 -0
- package/dist/common/pages/websites/templates/ChooseWebSiteTemplatePage.js.map +1 -0
- package/dist/model/model.d.ts +9 -0
- package/dist/model/model.d.ts.map +1 -1
- package/dist/model/model.js +2 -1
- package/dist/model/model.js.map +1 -1
- package/dist/services/websites/WebSiteService.d.ts +1 -0
- package/dist/services/websites/WebSiteService.d.ts.map +1 -1
- package/dist/services/websites/WebSiteService.js +8 -1
- package/dist/services/websites/WebSiteService.js.map +1 -1
- package/dist/site-editor/blocks/Block.d.ts +6 -0
- package/dist/site-editor/blocks/Block.d.ts.map +1 -0
- package/dist/site-editor/blocks/Block.js +48 -0
- package/dist/site-editor/blocks/Block.js.map +1 -0
- package/dist/site-editor/blocks/ImageBlock.d.ts +2 -0
- package/dist/site-editor/blocks/ImageBlock.d.ts.map +1 -0
- package/dist/site-editor/blocks/ImageBlock.js +23 -0
- package/dist/site-editor/blocks/ImageBlock.js.map +1 -0
- package/dist/site-editor/blocks/WrapGrid.d.ts +2 -0
- package/dist/site-editor/blocks/WrapGrid.d.ts.map +1 -0
- package/dist/site-editor/blocks/WrapGrid.js +22 -0
- package/dist/site-editor/blocks/WrapGrid.js.map +1 -0
- package/dist/site-editor/commands/CodeCommand.d.ts +2 -0
- package/dist/site-editor/commands/CodeCommand.d.ts.map +1 -0
- package/dist/site-editor/commands/CodeCommand.js +51 -0
- package/dist/site-editor/commands/CodeCommand.js.map +1 -0
- package/dist/site-editor/commands/EditorCommand.d.ts +6 -0
- package/dist/site-editor/commands/EditorCommand.d.ts.map +1 -0
- package/dist/site-editor/commands/EditorCommand.js +52 -0
- package/dist/site-editor/commands/EditorCommand.js.map +1 -0
- package/dist/site-editor/commands/IEditorCommandParameter.d.ts +5 -0
- package/dist/site-editor/commands/IEditorCommandParameter.d.ts.map +1 -0
- package/dist/site-editor/commands/IEditorCommandParameter.js +9 -0
- package/dist/site-editor/commands/IEditorCommandParameter.js.map +1 -0
- package/dist/site-editor/components/Component.d.ts +5 -0
- package/dist/site-editor/components/Component.d.ts.map +1 -0
- package/dist/site-editor/components/Component.js +21 -0
- package/dist/site-editor/components/Component.js.map +1 -0
- package/dist/site-editor/components/ImageComponent.d.ts +1 -0
- package/dist/site-editor/components/ImageComponent.d.ts.map +1 -0
- package/dist/site-editor/components/ImageComponent.js +9 -0
- package/dist/site-editor/components/ImageComponent.js.map +1 -0
- package/dist/site-editor/drag-drop/DragDropHelper.d.ts +3 -0
- package/dist/site-editor/drag-drop/DragDropHelper.d.ts.map +1 -0
- package/dist/site-editor/drag-drop/DragDropHelper.js +117 -0
- package/dist/site-editor/drag-drop/DragDropHelper.js.map +1 -0
- package/dist/site-editor/editor/HtmlPageEditor.d.ts +43 -0
- package/dist/site-editor/editor/HtmlPageEditor.d.ts.map +1 -0
- package/dist/site-editor/editor/HtmlPageEditor.js +500 -0
- package/dist/site-editor/editor/HtmlPageEditor.js.map +1 -0
- package/dist/site-editor/properties/ColorEditor.d.ts +6 -0
- package/dist/site-editor/properties/ColorEditor.d.ts.map +1 -0
- package/dist/site-editor/properties/ColorEditor.js +46 -0
- package/dist/site-editor/properties/ColorEditor.js.map +1 -0
- package/dist/site-editor/properties/Properties.d.ts +2 -0
- package/dist/site-editor/properties/Properties.d.ts.map +1 -0
- package/dist/site-editor/properties/Properties.js +48 -0
- package/dist/site-editor/properties/Properties.js.map +1 -0
- package/dist/site-editor/properties/ThicknessEditor.d.ts +4 -0
- package/dist/site-editor/properties/ThicknessEditor.d.ts.map +1 -0
- package/dist/site-editor/properties/ThicknessEditor.js +15 -0
- package/dist/site-editor/properties/ThicknessEditor.js.map +1 -0
- package/dist/site-editor/styler/IStylerPair.d.ts +10 -0
- package/dist/site-editor/styler/IStylerPair.d.ts.map +1 -0
- package/dist/site-editor/styler/IStylerPair.js +9 -0
- package/dist/site-editor/styler/IStylerPair.js.map +1 -0
- package/dist/site-editor/styler/Styler.d.ts +170 -0
- package/dist/site-editor/styler/Styler.d.ts.map +1 -0
- package/dist/site-editor/styler/Styler.js +137 -0
- package/dist/site-editor/styler/Styler.js.map +1 -0
- package/dist/site-editor/styler/StylerSet.d.ts +8 -0
- package/dist/site-editor/styler/StylerSet.d.ts.map +1 -0
- package/dist/site-editor/styler/StylerSet.js +51 -0
- package/dist/site-editor/styler/StylerSet.js.map +1 -0
- package/dist/site-editor/styler/properties/border.d.ts +3 -0
- package/dist/site-editor/styler/properties/border.d.ts.map +1 -0
- package/dist/site-editor/styler/properties/border.js +38 -0
- package/dist/site-editor/styler/properties/border.js.map +1 -0
- package/dist/site-editor/styler/properties/boxShadow.d.ts +3 -0
- package/dist/site-editor/styler/properties/boxShadow.d.ts.map +1 -0
- package/dist/site-editor/styler/properties/boxShadow.js +24 -0
- package/dist/site-editor/styler/properties/boxShadow.js.map +1 -0
- package/dist/site-editor/styler/properties/color.d.ts +3 -0
- package/dist/site-editor/styler/properties/color.d.ts.map +1 -0
- package/dist/site-editor/styler/properties/color.js +93 -0
- package/dist/site-editor/styler/properties/color.js.map +1 -0
- package/dist/site-editor/styler/properties/cursor.d.ts +3 -0
- package/dist/site-editor/styler/properties/cursor.d.ts.map +1 -0
- package/dist/site-editor/styler/properties/cursor.js +20 -0
- package/dist/site-editor/styler/properties/cursor.js.map +1 -0
- package/dist/site-editor/styler/properties/filter.d.ts +3 -0
- package/dist/site-editor/styler/properties/filter.d.ts.map +1 -0
- package/dist/site-editor/styler/properties/filter.js +24 -0
- package/dist/site-editor/styler/properties/filter.js.map +1 -0
- package/dist/site-editor/styler/properties/layout.d.ts +3 -0
- package/dist/site-editor/styler/properties/layout.d.ts.map +1 -0
- package/dist/site-editor/styler/properties/layout.js +78 -0
- package/dist/site-editor/styler/properties/layout.js.map +1 -0
- package/dist/site-editor/toolbars/EditorToolbar.d.ts +3 -0
- package/dist/site-editor/toolbars/EditorToolbar.d.ts.map +1 -0
- package/dist/site-editor/toolbars/EditorToolbar.js +49 -0
- package/dist/site-editor/toolbars/EditorToolbar.js.map +1 -0
- package/dist/site-editor/toolbars/UndoRedoToolbar.d.ts +2 -0
- package/dist/site-editor/toolbars/UndoRedoToolbar.d.ts.map +1 -0
- package/dist/site-editor/toolbars/UndoRedoToolbar.js +40 -0
- package/dist/site-editor/toolbars/UndoRedoToolbar.js.map +1 -0
- package/dist/style/GlobalStyle.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/web/AppIndex.pack.js +5188 -2832
- package/dist/web/AppIndex.pack.js.map +1 -1
- package/dist/web/AppIndex.pack.min.js +399 -150
- package/dist/web/AppIndex.pack.min.js.map +1 -1
- package/dist/web/drawer/AppDrawer.d.ts +1 -0
- package/dist/web/drawer/AppDrawer.d.ts.map +1 -1
- package/dist/web/drawer/AppDrawer.js +24 -4
- package/dist/web/drawer/AppDrawer.js.map +1 -1
- package/dist/web/page/files/FolderPage.d.ts.map +1 -1
- package/dist/web/page/files/FolderPage.js.map +1 -1
- package/dist/web/page/files/media/ChooseMediaPage.d.ts +24 -0
- package/dist/web/page/files/media/ChooseMediaPage.d.ts.map +1 -0
- package/dist/web/page/files/media/ChooseMediaPage.js +165 -0
- package/dist/web/page/files/media/ChooseMediaPage.js.map +1 -0
- package/dist/web/page/files/service/CloudFileService.d.ts +6 -3
- package/dist/web/page/files/service/CloudFileService.d.ts.map +1 -1
- package/dist/web/page/files/service/CloudFileService.js +34 -5
- package/dist/web/page/files/service/CloudFileService.js.map +1 -1
- package/node_modules/@web-atoms/core/dist/core/AtomList.d.ts.map +1 -1
- package/node_modules/@web-atoms/core/dist/core/AtomList.js +5 -3
- package/node_modules/@web-atoms/core/dist/core/AtomList.js.map +1 -1
- package/node_modules/@web-atoms/core/dist/services/FetchBuilder.d.ts +3 -0
- package/node_modules/@web-atoms/core/dist/services/FetchBuilder.d.ts.map +1 -1
- package/node_modules/@web-atoms/core/dist/services/FetchBuilder.js +10 -0
- package/node_modules/@web-atoms/core/dist/services/FetchBuilder.js.map +1 -1
- package/node_modules/@web-atoms/core/dist/style/styled.d.ts +2 -2
- package/node_modules/@web-atoms/core/dist/style/styled.d.ts.map +1 -1
- package/node_modules/@web-atoms/core/dist/style/styled.js.map +1 -1
- package/node_modules/@web-atoms/core/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@web-atoms/core/package.json +1 -1
- package/node_modules/@web-atoms/core/src/core/AtomList.ts +5 -3
- package/node_modules/@web-atoms/core/src/services/FetchBuilder.ts +13 -0
- package/node_modules/@web-atoms/core/src/style/styled.ts +3 -1
- package/node_modules/@web-atoms/web-controls/dist/basic/AtomChips.d.ts +1 -0
- package/node_modules/@web-atoms/web-controls/dist/basic/AtomChips.d.ts.map +1 -1
- package/node_modules/@web-atoms/web-controls/dist/basic/AtomChips.js +2 -0
- package/node_modules/@web-atoms/web-controls/dist/basic/AtomChips.js.map +1 -1
- package/node_modules/@web-atoms/web-controls/dist/basic/AtomRepeater.js +3 -0
- package/node_modules/@web-atoms/web-controls/dist/basic/AtomRepeater.js.map +1 -1
- package/node_modules/@web-atoms/web-controls/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@web-atoms/web-controls/package.json +2 -2
- package/node_modules/@web-atoms/web-controls/src/basic/AtomChips.tsx +4 -0
- package/node_modules/@web-atoms/web-controls/src/basic/AtomRepeater.tsx +3 -0
- package/package.json +3 -3
- package/src/common/Sql.ts +1 -0
- package/src/common/commands/CommonCommands.ts +12 -0
- package/src/common/controls/html/grapes-js/GrapesJSEditor.tsx +97 -0
- package/src/common/controls/tree/FileTreeView.tsx +74 -0
- package/src/common/controls/tree/TreeView.tsx +34 -12
- package/src/common/pages/websites/edit/WebSiteFolderEditor.tsx +2 -1
- package/src/common/pages/websites/manage/ManageWebSitePage.tsx +44 -0
- package/src/common/pages/websites/studio/WebSiteStudioPage.tsx +205 -0
- package/src/common/pages/websites/templates/ChooseWebSiteTemplatePage.tsx +38 -0
- package/src/model/model.ts +11 -0
- package/src/services/websites/WebSiteService.ts +8 -1
- package/src/site-editor/blocks/Block.tsx +38 -0
- package/src/site-editor/blocks/ImageBlock.tsx +14 -0
- package/src/site-editor/blocks/WrapGrid.tsx +11 -0
- package/src/site-editor/commands/CodeCommand.tsx +36 -0
- package/src/site-editor/commands/EditorCommand.tsx +42 -0
- package/src/site-editor/commands/IEditorCommandParameter.ts +5 -0
- package/src/site-editor/components/Component.tsx +9 -0
- package/src/site-editor/components/ImageComponent.tsx +0 -0
- package/src/site-editor/drag-drop/DragDropHelper.ts +141 -0
- package/src/site-editor/editor/HtmlPageEditor.tsx +497 -0
- package/src/site-editor/properties/ColorEditor.tsx +36 -0
- package/src/site-editor/properties/Properties.tsx +35 -0
- package/src/site-editor/properties/ThicknessEditor.tsx +5 -0
- package/src/site-editor/styler/IStylerPair.ts +9 -0
- package/src/site-editor/styler/Styler.ts +169 -0
- package/src/site-editor/styler/StylerSet.ts +42 -0
- package/src/site-editor/styler/properties/border.ts +30 -0
- package/src/site-editor/styler/properties/boxShadow.ts +14 -0
- package/src/site-editor/styler/properties/color.ts +82 -0
- package/src/site-editor/styler/properties/cursor.ts +49 -0
- package/src/site-editor/styler/properties/filter.ts +14 -0
- package/src/site-editor/styler/properties/layout.ts +72 -0
- package/src/site-editor/toolbars/EditorToolbar.tsx +40 -0
- package/src/site-editor/toolbars/UndoRedoToolbar.tsx +27 -0
- package/src/style/GlobalStyle.ts +1 -1
- package/src/web/drawer/AppDrawer.tsx +21 -4
- package/src/web/page/files/FolderPage.tsx +0 -1
- package/src/web/page/files/media/ChooseMediaPage.tsx +135 -0
- package/src/web/page/files/service/CloudFileService.ts +33 -8
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AtomControl } from "@web-atoms/core/dist/web/controls/AtomControl";
|
|
2
|
+
import WebApp from "@web-atoms/core/dist/web/WebApp";
|
|
3
|
+
|
|
4
|
+
function addLinkTag(href, integrity?, rel = "stylesheet") {
|
|
5
|
+
if (!document.head.querySelector(`[href="${href}"]`)) {
|
|
6
|
+
const fa = document.createElement("link");
|
|
7
|
+
fa.href = href;
|
|
8
|
+
fa.crossOrigin = "anonymous";
|
|
9
|
+
fa.as = "style";
|
|
10
|
+
fa.rel = "preload";
|
|
11
|
+
if (integrity) {
|
|
12
|
+
fa.integrity = integrity;
|
|
13
|
+
}
|
|
14
|
+
fa.onload = () => {
|
|
15
|
+
fa.onload = null;
|
|
16
|
+
fa.rel = rel;
|
|
17
|
+
};
|
|
18
|
+
document.head.insertBefore(fa, document.head.firstElementChild);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
addLinkTag("https://cdn.jsdelivr.net/gh/mdbassit/Coloris@latest/dist/coloris.min.css");
|
|
23
|
+
|
|
24
|
+
export default class ColorEditor extends AtomControl {
|
|
25
|
+
|
|
26
|
+
constructor(app, e = document.createElement("input")) {
|
|
27
|
+
super(app, e);
|
|
28
|
+
e.type = "text";
|
|
29
|
+
e.className = "coloris";
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
async init() {
|
|
33
|
+
await this.app.installScript("https://cdn.jsdelivr.net/gh/mdbassit/Coloris@latest/dist/coloris.min.js");
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import XNode from "@web-atoms/core/dist/core/XNode";
|
|
2
|
+
import { StylerSet } from "../styler/StylerSet";
|
|
3
|
+
import Select from "@web-atoms/web-controls/dist/basic/Select";
|
|
4
|
+
import Bind from "@web-atoms/core/dist/core/Bind";
|
|
5
|
+
import type HtmlPageEditor from "../editor/HtmlPageEditor";
|
|
6
|
+
import { AtomControl } from "@web-atoms/core/dist/web/controls/AtomControl";
|
|
7
|
+
import Expander from "@web-atoms/web-controls/dist/basic/Expander";
|
|
8
|
+
|
|
9
|
+
const BindStyleValue = AtomControl.registerProperty("data-style-property", "custom", (c, e, v) => {
|
|
10
|
+
const editor = c as HtmlPageEditor;
|
|
11
|
+
const pv = editor.selection.style(v);
|
|
12
|
+
(c as any).render(<div value={Bind.sourceTwoWays(pv, (s) => s.source.value)}></div>, e, c);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
export default function Properties() {
|
|
16
|
+
|
|
17
|
+
const styler = StylerSet.instance;
|
|
18
|
+
|
|
19
|
+
return <div
|
|
20
|
+
data-layout="vertical-flex-stretch-items">
|
|
21
|
+
|
|
22
|
+
{ ... styler.properties.map((p) => {
|
|
23
|
+
return <div data-layout="vertical-flex-stretch-items">
|
|
24
|
+
<label>{p.name}</label>
|
|
25
|
+
<Select
|
|
26
|
+
{ ... BindStyleValue(p.key)}
|
|
27
|
+
valuePath={(v) => v.value}
|
|
28
|
+
items={[ { label: "None", value: ""}, ...p.values.map((pair) => ({ label: pair.name, value: pair.name }))]}/>
|
|
29
|
+
</div>;
|
|
30
|
+
}) }
|
|
31
|
+
|
|
32
|
+
</div>;
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Styler class will create a style that will read the default css variables stored as JSON.
|
|
3
|
+
* Only CSS Variables will be loaded for editing.
|
|
4
|
+
*
|
|
5
|
+
* Styler class will serialize all new styles and properties, the values will always be hardcoded, never to be changed in future.
|
|
6
|
+
* For example, property styler-padding=default, will always use default spacing variable.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import styled from "@web-atoms/core/dist/style/styled";
|
|
10
|
+
import IStylerPair from "./IStylerPair";
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
type IStyledVariables<Type> = {
|
|
14
|
+
[Property in keyof Type]: { name: string, value: Type[Property] };
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const camelToSnakeCase = (str: string) => str.replace(/[A-Z]/g, (letter: string) => `-${letter.toLowerCase()}`);
|
|
18
|
+
|
|
19
|
+
const prepareVariables = <T>(a: T): {[Property in keyof T]: { name: string, value: string }} => {
|
|
20
|
+
const r = {} as any;
|
|
21
|
+
for (const key in a) {
|
|
22
|
+
if (Object.prototype.hasOwnProperty.call(a, key)) {
|
|
23
|
+
const value = a[key];
|
|
24
|
+
const name = camelToSnakeCase(key);
|
|
25
|
+
r[key] = {
|
|
26
|
+
name,
|
|
27
|
+
value,
|
|
28
|
+
toString() {
|
|
29
|
+
return `var(--${name}, ${value})`;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return r;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const stylerVars = prepareVariables({
|
|
38
|
+
|
|
39
|
+
sizeTiny: "2px",
|
|
40
|
+
sizeSmall: "5px",
|
|
41
|
+
sizeSmaller: "7px",
|
|
42
|
+
sizeDefault: "10px",
|
|
43
|
+
sizeLarger: "15px",
|
|
44
|
+
sizeLarge: "20px",
|
|
45
|
+
|
|
46
|
+
defaultColor: "canvas",
|
|
47
|
+
defaultTextColor: "canvastext",
|
|
48
|
+
|
|
49
|
+
borderColor: "lightgray",
|
|
50
|
+
|
|
51
|
+
headerColor: "#0571ff30",
|
|
52
|
+
headerTextColor: "",
|
|
53
|
+
|
|
54
|
+
accentColor: "blue",
|
|
55
|
+
accentTextColor: "white",
|
|
56
|
+
|
|
57
|
+
noteColor: "#ffffe0",
|
|
58
|
+
noteTextColor: "",
|
|
59
|
+
|
|
60
|
+
warningColor: "#FFC107",
|
|
61
|
+
warningTextColor: "darkgray",
|
|
62
|
+
|
|
63
|
+
selectionColor: "highlight",
|
|
64
|
+
selectionTextColor: "highlightText",
|
|
65
|
+
|
|
66
|
+
hoverColor: "#A0A0A010",
|
|
67
|
+
hoverTextColor: "CanvasText",
|
|
68
|
+
|
|
69
|
+
stopColor: "red",
|
|
70
|
+
stopTextColor: "white",
|
|
71
|
+
|
|
72
|
+
goColor: "green",
|
|
73
|
+
goTextColor: "white",
|
|
74
|
+
|
|
75
|
+
acceptColor: "blue",
|
|
76
|
+
acceptTextColor: "white",
|
|
77
|
+
|
|
78
|
+
rejectColor: "red",
|
|
79
|
+
rejectTextColor: "white",
|
|
80
|
+
|
|
81
|
+
fontSizeSmall: "0.8125em",
|
|
82
|
+
|
|
83
|
+
commandBgColor: "#F0F0F0",
|
|
84
|
+
|
|
85
|
+
menuBgColor: "#808080",
|
|
86
|
+
menuColor: "#F0F0F0",
|
|
87
|
+
|
|
88
|
+
linkColor: "blue",
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
export class StylerVariable {
|
|
93
|
+
constructor(public name: string, public value: string) {}
|
|
94
|
+
|
|
95
|
+
toString() {
|
|
96
|
+
return `--${this.name}: ${this.value};`;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export class StylerPropertyPair {
|
|
101
|
+
|
|
102
|
+
public value: string;
|
|
103
|
+
|
|
104
|
+
constructor(
|
|
105
|
+
public name: string,
|
|
106
|
+
value: any) {
|
|
107
|
+
this.value = value.toString();
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
toString() {
|
|
111
|
+
return this.value.split("\n").join("\n\t");
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export class StylerProperty {
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
public static from(pairs: IStylerPair) {
|
|
119
|
+
const r = [];
|
|
120
|
+
for (const key in pairs) {
|
|
121
|
+
if (Object.prototype.hasOwnProperty.call(pairs, key)) {
|
|
122
|
+
const element = pairs[key];
|
|
123
|
+
r.push(new StylerProperty(element.name, key, element.className, element.values));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return r;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
public values: StylerPropertyPair[];
|
|
130
|
+
constructor(
|
|
131
|
+
public name: string,
|
|
132
|
+
public key: string,
|
|
133
|
+
public className: string,
|
|
134
|
+
values: any) {
|
|
135
|
+
this.values = [];
|
|
136
|
+
for (const k in values) {
|
|
137
|
+
if (Object.prototype.hasOwnProperty.call(values, k)) {
|
|
138
|
+
const element = values[k];
|
|
139
|
+
this.values.push(new StylerPropertyPair(k, element.expand(`[${this.key}=${k}]`)));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
toString() {
|
|
145
|
+
return this.values.join("\n");
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export type IStyleValue = string | { name: string, value: string };
|
|
150
|
+
|
|
151
|
+
export const pair = (name: string , value?: string ) => ( !value ? (value=name, name = name.replace(" ", "-")) : (name), { name, value });
|
|
152
|
+
|
|
153
|
+
export const createSet = (name: string, values: IStyleValue[], appendGlobals = true) => {
|
|
154
|
+
const r = {
|
|
155
|
+
custom: styled.css `${name}: var(--${name});`
|
|
156
|
+
};
|
|
157
|
+
if (appendGlobals) {
|
|
158
|
+
values.push(... ["inherit", "initial", "revert", "revert-layer", "unset"]);
|
|
159
|
+
}
|
|
160
|
+
for (const iterator of values) {
|
|
161
|
+
if (typeof iterator === "string") {
|
|
162
|
+
r[iterator] = styled.css `\t${name}: ${iterator};`;
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
r[iterator.name] = styled.css `\t${name}: ${iterator.value};`;
|
|
166
|
+
}
|
|
167
|
+
return r as any;
|
|
168
|
+
};
|
|
169
|
+
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import styled from "@web-atoms/core/dist/style/styled";
|
|
2
|
+
import { StylerProperty, StylerPropertyPair, StylerVariable, stylerVars } from "./Styler";
|
|
3
|
+
import { stylerLayout } from "./properties/layout";
|
|
4
|
+
import { stylerCursor } from "./properties/cursor";
|
|
5
|
+
import { stylerColor } from "./properties/color";
|
|
6
|
+
import { stylerBackdropFilter } from "./properties/filter";
|
|
7
|
+
import { stylerBoxShadow } from "./properties/boxShadow";
|
|
8
|
+
import { stylerBorder } from "./properties/border";
|
|
9
|
+
|
|
10
|
+
const vars = [];
|
|
11
|
+
for (const key in stylerVars) {
|
|
12
|
+
if (Object.prototype.hasOwnProperty.call(stylerVars, key)) {
|
|
13
|
+
const element = stylerVars[key];
|
|
14
|
+
vars.push(new StylerVariable(element.name, element.value));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export class StylerSet {
|
|
19
|
+
|
|
20
|
+
public static instance = new StylerSet();
|
|
21
|
+
|
|
22
|
+
vars = vars;
|
|
23
|
+
|
|
24
|
+
properties = [
|
|
25
|
+
... StylerProperty.from(stylerLayout),
|
|
26
|
+
... StylerProperty.from(stylerColor),
|
|
27
|
+
... StylerProperty.from(stylerCursor),
|
|
28
|
+
... StylerProperty.from(stylerBorder),
|
|
29
|
+
... StylerProperty.from(stylerBackdropFilter),
|
|
30
|
+
... StylerProperty.from(stylerBoxShadow)
|
|
31
|
+
] as StylerProperty[];
|
|
32
|
+
|
|
33
|
+
toString() {
|
|
34
|
+
return `:root{
|
|
35
|
+
${this.vars.join("\n")}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
${this.properties.join("\n")}
|
|
39
|
+
`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import styled from "@web-atoms/core/dist/style/styled";
|
|
2
|
+
import IStylerPair from "../IStylerPair";
|
|
3
|
+
import { stylerVars } from "../Styler";
|
|
4
|
+
|
|
5
|
+
export const stylerBorder: IStylerPair = {
|
|
6
|
+
"styler-border": {
|
|
7
|
+
|
|
8
|
+
name: "Border",
|
|
9
|
+
className: "",
|
|
10
|
+
values: {
|
|
11
|
+
"none": styled.css `
|
|
12
|
+
border: none !important;
|
|
13
|
+
`,
|
|
14
|
+
|
|
15
|
+
"solid": styled.css `
|
|
16
|
+
border: solid 1px lightgray;
|
|
17
|
+
`
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
"styler-border-radius": {
|
|
22
|
+
name: "Border Radius",
|
|
23
|
+
className: "",
|
|
24
|
+
values: {
|
|
25
|
+
"default": styled.css `
|
|
26
|
+
border-radius: ${stylerVars.sizeDefault};
|
|
27
|
+
`
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import styled from "@web-atoms/core/dist/style/styled";
|
|
2
|
+
import IStylerPair from "../IStylerPair";
|
|
3
|
+
|
|
4
|
+
export const stylerBoxShadow: IStylerPair = {
|
|
5
|
+
"styler-box-shadow": {
|
|
6
|
+
name: "Box Shadow",
|
|
7
|
+
className: "",
|
|
8
|
+
values: {
|
|
9
|
+
"default": styled.css `
|
|
10
|
+
box-shadow: 0px 2px 7px 0px rgba(0, 0, 0, 0.14);
|
|
11
|
+
`
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import styled from "@web-atoms/core/dist/style/styled";
|
|
2
|
+
import IStylerPair from "../IStylerPair";
|
|
3
|
+
import { stylerVars } from "../Styler";
|
|
4
|
+
|
|
5
|
+
export const stylerColor: IStylerPair = {
|
|
6
|
+
"styler-color": {
|
|
7
|
+
name: "Text Color",
|
|
8
|
+
className: "",
|
|
9
|
+
values: {
|
|
10
|
+
"custom": styled.css `color: var(--styler-color);`,
|
|
11
|
+
"red": styled.css `color: red ;`,
|
|
12
|
+
"blue": styled.css `color: blue ;`,
|
|
13
|
+
"green": styled.css `color: green ;`,
|
|
14
|
+
"lightgreen": styled.css `color: lightgreen ;`,
|
|
15
|
+
"lightyellow": styled.css `color: lightyellow ;`,
|
|
16
|
+
"gold": styled.css `color: gold ;`,
|
|
17
|
+
"goldenrod": styled.css `color: goldenrod ;`,
|
|
18
|
+
"fuchsia": styled.css `color: fuchsia ;`,
|
|
19
|
+
"black": styled.css `color: black ;`,
|
|
20
|
+
"white": styled.css `color: white ;`,
|
|
21
|
+
"header": styled.css `color: ${stylerVars.headerTextColor} ;`,
|
|
22
|
+
"default": styled.css `color: ${stylerVars.defaultTextColor} ;`,
|
|
23
|
+
"highlight": styled.css `color: ${stylerVars.selectionTextColor} ;`,
|
|
24
|
+
"selection": styled.css `color: ${stylerVars.selectionTextColor} ;`,
|
|
25
|
+
"accent": styled.css `color: ${stylerVars.accentColor} ;`,
|
|
26
|
+
"force-custom": styled.css `color: var(--styler-color) !important;`,
|
|
27
|
+
"force-red": styled.css `color: red !important;`,
|
|
28
|
+
"force-blue": styled.css `color: blue !important;`,
|
|
29
|
+
"force-green": styled.css `color: green !important;`,
|
|
30
|
+
"force-lightgreen": styled.css `color: lightgreen !important;`,
|
|
31
|
+
"force-lightyellow": styled.css `color: lightyellow !important;`,
|
|
32
|
+
"force-gold": styled.css `color: gold !important;`,
|
|
33
|
+
"force-goldenrod": styled.css `color: goldenrod !important;`,
|
|
34
|
+
"force-fuchsia": styled.css `color: fuchsia !important;`,
|
|
35
|
+
"force-black": styled.css `color: black !important;`,
|
|
36
|
+
"force-white": styled.css `color: white !important;`,
|
|
37
|
+
"force-header": styled.css `color: ${stylerVars.headerTextColor} !important;`,
|
|
38
|
+
"force-default": styled.css `color: ${stylerVars.defaultTextColor} !important;`,
|
|
39
|
+
"force-highlight": styled.css `color: ${stylerVars.selectionTextColor} !important;`,
|
|
40
|
+
"force-selection": styled.css `color: ${stylerVars.selectionTextColor} !important;`,
|
|
41
|
+
"force-accent": styled.css `color: ${stylerVars.accentColor} !important;`,
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"styler-background-color": {
|
|
45
|
+
name: "Box Color",
|
|
46
|
+
className: "",
|
|
47
|
+
values: {
|
|
48
|
+
"custom": styled.css `background-color: var(--styler-color);`,
|
|
49
|
+
"red": styled.css `background-color: red ;`,
|
|
50
|
+
"blue": styled.css `background-color: blue ;`,
|
|
51
|
+
"green": styled.css `background-color: green ;`,
|
|
52
|
+
"lightgreen": styled.css `background-color: lightgreen ;`,
|
|
53
|
+
"lightyellow": styled.css `background-color: lightyellow ;`,
|
|
54
|
+
"gold": styled.css `background-color: gold ;`,
|
|
55
|
+
"goldenrod": styled.css `background-color: goldenrod ;`,
|
|
56
|
+
"fuchsia": styled.css `background-color: fuchsia ;`,
|
|
57
|
+
"black": styled.css `background-color: black ;`,
|
|
58
|
+
"white": styled.css `background-color: white ;`,
|
|
59
|
+
"header": styled.css `background-color: ${stylerVars.headerColor} ;`,
|
|
60
|
+
"default": styled.css `background-color: ${stylerVars.defaultColor} ;`,
|
|
61
|
+
"highlight": styled.css `background-color: ${stylerVars.selectionColor} ;`,
|
|
62
|
+
"selection": styled.css `background-color: ${stylerVars.selectionColor} ;`,
|
|
63
|
+
"accent": styled.css `background-color: ${stylerVars.accentColor} ;`,
|
|
64
|
+
"force-custom": styled.css `background-color: var(--styler-color) !important;`,
|
|
65
|
+
"force-red": styled.css `background-color: red !important;`,
|
|
66
|
+
"force-blue": styled.css `background-color: blue !important;`,
|
|
67
|
+
"force-green": styled.css `background-color: green !important;`,
|
|
68
|
+
"force-lightgreen": styled.css `background-color: lightgreen !important;`,
|
|
69
|
+
"force-lightyellow": styled.css `background-color: lightyellow !important;`,
|
|
70
|
+
"force-gold": styled.css `background-color: gold !important;`,
|
|
71
|
+
"force-goldenrod": styled.css `background-color: goldenrod !important;`,
|
|
72
|
+
"force-fuchsia": styled.css `background-color: fuchsia !important;`,
|
|
73
|
+
"force-black": styled.css `background-color: black !important;`,
|
|
74
|
+
"force-white": styled.css `background-color: white !important;`,
|
|
75
|
+
"force-header": styled.css `background-color: ${stylerVars.headerColor} !important;`,
|
|
76
|
+
"force-default": styled.css `background-color: ${stylerVars.defaultTextColor} !important;`,
|
|
77
|
+
"force-highlight": styled.css `background-color: ${stylerVars.selectionTextColor} !important;`,
|
|
78
|
+
"force-selection": styled.css `background-color: ${stylerVars.selectionTextColor} !important;`,
|
|
79
|
+
"force-accent": styled.css `background-color: ${stylerVars.accentColor} !important;`,
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import IStylerPair from "../IStylerPair";
|
|
2
|
+
import { createSet } from "../Styler";
|
|
3
|
+
|
|
4
|
+
export const stylerCursor: IStylerPair = {
|
|
5
|
+
"styler-cursor": {
|
|
6
|
+
name: "Cursor",
|
|
7
|
+
className: "",
|
|
8
|
+
values: {
|
|
9
|
+
... createSet("cursor", [
|
|
10
|
+
"auto",
|
|
11
|
+
"default",
|
|
12
|
+
"nope",
|
|
13
|
+
"context-menu",
|
|
14
|
+
"help",
|
|
15
|
+
"pointer",
|
|
16
|
+
"progress",
|
|
17
|
+
"wait",
|
|
18
|
+
"cell",
|
|
19
|
+
"crosshair",
|
|
20
|
+
"text",
|
|
21
|
+
"vertical-text",
|
|
22
|
+
"alias",
|
|
23
|
+
"copy",
|
|
24
|
+
"move",
|
|
25
|
+
"no-drop",
|
|
26
|
+
"not-allowed",
|
|
27
|
+
"grab",
|
|
28
|
+
"grabbing",
|
|
29
|
+
"e-resize",
|
|
30
|
+
"n-resize",
|
|
31
|
+
"ne-resize",
|
|
32
|
+
"nw-resize",
|
|
33
|
+
"s-resize",
|
|
34
|
+
"se-resize",
|
|
35
|
+
"sw-resize",
|
|
36
|
+
"w-resize",
|
|
37
|
+
"ew-resize",
|
|
38
|
+
"ns-resize",
|
|
39
|
+
"nesw-resize",
|
|
40
|
+
"nwse-resize",
|
|
41
|
+
"col-resize",
|
|
42
|
+
"row-resize",
|
|
43
|
+
"all-scroll",
|
|
44
|
+
"zoom-in",
|
|
45
|
+
"zoom-out"
|
|
46
|
+
])
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import styled from "@web-atoms/core/dist/style/styled";
|
|
2
|
+
import IStylerPair from "../IStylerPair";
|
|
3
|
+
|
|
4
|
+
export const stylerBackdropFilter: IStylerPair = {
|
|
5
|
+
"styler-backdrop-filter": {
|
|
6
|
+
name: "Backdrop Filter",
|
|
7
|
+
className: "",
|
|
8
|
+
values: {
|
|
9
|
+
"blur": styled.css `
|
|
10
|
+
backdrop-filter: blur(15px);
|
|
11
|
+
`
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import styled from "@web-atoms/core/dist/style/styled";
|
|
2
|
+
import IStylerPair from "../IStylerPair";
|
|
3
|
+
import { stylerVars } from "../Styler";
|
|
4
|
+
|
|
5
|
+
export const stylerLayout: IStylerPair = {
|
|
6
|
+
"styler-layout": {
|
|
7
|
+
|
|
8
|
+
name: "Layout",
|
|
9
|
+
className: "",
|
|
10
|
+
values: {
|
|
11
|
+
"wrap-list": styled.css `
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
flex-wrap: wrap;
|
|
15
|
+
gap: ${stylerVars.sizeDefault};
|
|
16
|
+
padding: ${stylerVars.sizeDefault};
|
|
17
|
+
margin: ${stylerVars.sizeDefault};
|
|
18
|
+
`,
|
|
19
|
+
|
|
20
|
+
"column": styled.css `
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-direction: column;
|
|
23
|
+
flex-wrap: nowrap;
|
|
24
|
+
gap: ${stylerVars.sizeDefault};
|
|
25
|
+
padding: ${stylerVars.sizeDefault};
|
|
26
|
+
margin: ${stylerVars.sizeDefault};
|
|
27
|
+
`,
|
|
28
|
+
|
|
29
|
+
"row": styled.css `
|
|
30
|
+
display: flex;
|
|
31
|
+
flex-direction: row;
|
|
32
|
+
flex-wrap: nowrap;
|
|
33
|
+
gap: ${stylerVars.sizeDefault};
|
|
34
|
+
padding: ${stylerVars.sizeDefault};
|
|
35
|
+
margin: ${stylerVars.sizeDefault};
|
|
36
|
+
`,
|
|
37
|
+
|
|
38
|
+
"block": styled.css `
|
|
39
|
+
display: block;
|
|
40
|
+
padding: ${stylerVars.sizeDefault};
|
|
41
|
+
margin: ${stylerVars.sizeDefault};
|
|
42
|
+
`,
|
|
43
|
+
"nav-bar": styled.css `
|
|
44
|
+
display: flex;
|
|
45
|
+
padding: ${stylerVars.sizeSmall};
|
|
46
|
+
margin: ${stylerVars.sizeDefault};
|
|
47
|
+
border-radius: ${stylerVars.sizeLarge};
|
|
48
|
+
align-items: center;
|
|
49
|
+
justify-content: space-between;
|
|
50
|
+
& > h1, & > h2, & > h3, & > h5, & > h6 {
|
|
51
|
+
margin-block-start: 0;
|
|
52
|
+
margin-block-end: 0;
|
|
53
|
+
}
|
|
54
|
+
`,
|
|
55
|
+
|
|
56
|
+
"floating-nav-bar": styled.css `
|
|
57
|
+
display: flex;
|
|
58
|
+
padding: ${stylerVars.sizeSmall};
|
|
59
|
+
margin: ${stylerVars.sizeDefault};
|
|
60
|
+
position: sticky;
|
|
61
|
+
top: ${stylerVars.sizeDefault};
|
|
62
|
+
border-radius: ${stylerVars.sizeLarge};
|
|
63
|
+
align-items: center;
|
|
64
|
+
justify-content: space-between;
|
|
65
|
+
& > h1, & > h2, & > h3, & > h5, & > h6 {
|
|
66
|
+
margin-block-start: 0;
|
|
67
|
+
margin-block-end: 0;
|
|
68
|
+
}
|
|
69
|
+
`,
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import XNode from "@web-atoms/core/dist/core/XNode";
|
|
2
|
+
import styled from "@web-atoms/core/dist/style/styled";
|
|
3
|
+
|
|
4
|
+
styled.css `
|
|
5
|
+
|
|
6
|
+
display: flex;
|
|
7
|
+
gap: 10px;
|
|
8
|
+
flex-wrap: wrap;
|
|
9
|
+
align-items: center;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
align-content: flex-start;
|
|
12
|
+
& > * {
|
|
13
|
+
color: #555555;
|
|
14
|
+
padding: 5px;
|
|
15
|
+
cursor: pointer;
|
|
16
|
+
&:not([data-disabled]):hover, &[data-disabled=false]:hover {
|
|
17
|
+
background-color: #00800050;
|
|
18
|
+
}
|
|
19
|
+
&[data-disabled=true] {
|
|
20
|
+
color: #80808080;
|
|
21
|
+
}
|
|
22
|
+
&[data-selected=true] {
|
|
23
|
+
color: green;
|
|
24
|
+
background-color: lightgray;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
& + [data-html-editor-element] {
|
|
28
|
+
margin-left: 20px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
`.installGlobal("[data-html-editor-element=toolbar]");
|
|
32
|
+
|
|
33
|
+
export default function EditorToolbar(a, ... nodes: XNode[]) {
|
|
34
|
+
return <div
|
|
35
|
+
data-html-editor-element="toolbar"
|
|
36
|
+
{ ... a}
|
|
37
|
+
>
|
|
38
|
+
{ ... nodes }
|
|
39
|
+
</div>;
|
|
40
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import Bind from "@web-atoms/core/dist/core/Bind";
|
|
2
|
+
import XNode from "@web-atoms/core/dist/core/XNode";
|
|
3
|
+
import EditorToolbar from "./EditorToolbar";
|
|
4
|
+
import { EditorCommand } from "../commands/EditorCommand";
|
|
5
|
+
import HtmlPageEditor from "../editor/HtmlPageEditor";
|
|
6
|
+
|
|
7
|
+
export default function UndoRedoToolbar() {
|
|
8
|
+
return <EditorToolbar
|
|
9
|
+
data-element="undo">
|
|
10
|
+
<i
|
|
11
|
+
event-click={EditorCommand.onClick((editor) => {
|
|
12
|
+
editor.redoList.insert(editor.redoList.length, editor.htmlDocument.documentElement.innerHTML);
|
|
13
|
+
editor.htmlDocument.documentElement.innerHTML = editor.undoList.removeAt(editor.undoList.length-1);
|
|
14
|
+
})}
|
|
15
|
+
title="Undo"
|
|
16
|
+
data-disabled={Bind.oneWay((editor: HtmlPageEditor) => editor.undoList.length === 0)}
|
|
17
|
+
class="fas fa-undo" />
|
|
18
|
+
<i
|
|
19
|
+
event-click={EditorCommand.onClick((editor) => {
|
|
20
|
+
editor.undoList.insert(editor.undoList.length, editor.htmlDocument.documentElement.innerHTML);
|
|
21
|
+
editor.htmlDocument.documentElement.innerHTML = editor.redoList.removeAt(editor.redoList.length-1);
|
|
22
|
+
})}
|
|
23
|
+
title="Redo"
|
|
24
|
+
data-disabled={Bind.oneWay((editor: HtmlPageEditor) => editor.redoList.length === 0)}
|
|
25
|
+
class="fas fa-redo" />
|
|
26
|
+
</EditorToolbar>;
|
|
27
|
+
}
|
package/src/style/GlobalStyle.ts
CHANGED
|
@@ -30,7 +30,7 @@ function addLinkTag(href, integrity?, rel = "stylesheet") {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
addLinkTag("https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap");
|
|
33
|
-
addLinkTag("https://npm-git.azureedge.net/npm/package/@c8private/fa-icons@6.
|
|
33
|
+
addLinkTag("https://npm-git.azureedge.net/npm/package/@c8private/fa-icons@6.5.1/css/all.min.css");
|
|
34
34
|
addLinkTag("https://cdn.jsdelivr.net/npm/file-icon-vectors@1.0.0/dist/file-icon-vivid.min.css");
|
|
35
35
|
|
|
36
36
|
styled.css `
|