@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.
Files changed (230) hide show
  1. package/content/editor/edit.html +159 -0
  2. package/content/templates/plain/index.html +32 -0
  3. package/dist/admin/AdminAppIndex.pack.js +2605 -269
  4. package/dist/admin/AdminAppIndex.pack.js.map +1 -1
  5. package/dist/admin/AdminAppIndex.pack.min.js +258 -9
  6. package/dist/admin/AdminAppIndex.pack.min.js.map +1 -1
  7. package/dist/common/Sql.d.ts +1 -0
  8. package/dist/common/Sql.d.ts.map +1 -1
  9. package/dist/common/Sql.js.map +1 -1
  10. package/dist/common/commands/CommonCommands.d.ts +7 -0
  11. package/dist/common/commands/CommonCommands.d.ts.map +1 -1
  12. package/dist/common/commands/CommonCommands.js +10 -0
  13. package/dist/common/commands/CommonCommands.js.map +1 -1
  14. package/dist/common/controls/html/grapes-js/GrapesJSEditor.d.ts +19 -0
  15. package/dist/common/controls/html/grapes-js/GrapesJSEditor.d.ts.map +1 -0
  16. package/dist/common/controls/html/grapes-js/GrapesJSEditor.js +119 -0
  17. package/dist/common/controls/html/grapes-js/GrapesJSEditor.js.map +1 -0
  18. package/dist/common/controls/tree/FileTreeView.d.ts +16 -0
  19. package/dist/common/controls/tree/FileTreeView.d.ts.map +1 -0
  20. package/dist/common/controls/tree/FileTreeView.js +100 -0
  21. package/dist/common/controls/tree/FileTreeView.js.map +1 -0
  22. package/dist/common/controls/tree/TreeView.d.ts +4 -1
  23. package/dist/common/controls/tree/TreeView.d.ts.map +1 -1
  24. package/dist/common/controls/tree/TreeView.js +35 -17
  25. package/dist/common/controls/tree/TreeView.js.map +1 -1
  26. package/dist/common/pages/websites/edit/WebSiteFolderEditor.d.ts.map +1 -1
  27. package/dist/common/pages/websites/edit/WebSiteFolderEditor.js +2 -1
  28. package/dist/common/pages/websites/edit/WebSiteFolderEditor.js.map +1 -1
  29. package/dist/common/pages/websites/manage/ManageWebSitePage.d.ts +10 -0
  30. package/dist/common/pages/websites/manage/ManageWebSitePage.d.ts.map +1 -0
  31. package/dist/common/pages/websites/manage/ManageWebSitePage.js +45 -0
  32. package/dist/common/pages/websites/manage/ManageWebSitePage.js.map +1 -0
  33. package/dist/common/pages/websites/studio/WebSiteStudioPage.d.ts +24 -0
  34. package/dist/common/pages/websites/studio/WebSiteStudioPage.d.ts.map +1 -0
  35. package/dist/common/pages/websites/studio/WebSiteStudioPage.js +244 -0
  36. package/dist/common/pages/websites/studio/WebSiteStudioPage.js.map +1 -0
  37. package/dist/common/pages/websites/templates/ChooseWebSiteTemplatePage.d.ts +9 -0
  38. package/dist/common/pages/websites/templates/ChooseWebSiteTemplatePage.d.ts.map +1 -0
  39. package/dist/common/pages/websites/templates/ChooseWebSiteTemplatePage.js +59 -0
  40. package/dist/common/pages/websites/templates/ChooseWebSiteTemplatePage.js.map +1 -0
  41. package/dist/model/model.d.ts +9 -0
  42. package/dist/model/model.d.ts.map +1 -1
  43. package/dist/model/model.js +2 -1
  44. package/dist/model/model.js.map +1 -1
  45. package/dist/services/websites/WebSiteService.d.ts +1 -0
  46. package/dist/services/websites/WebSiteService.d.ts.map +1 -1
  47. package/dist/services/websites/WebSiteService.js +8 -1
  48. package/dist/services/websites/WebSiteService.js.map +1 -1
  49. package/dist/site-editor/blocks/Block.d.ts +6 -0
  50. package/dist/site-editor/blocks/Block.d.ts.map +1 -0
  51. package/dist/site-editor/blocks/Block.js +48 -0
  52. package/dist/site-editor/blocks/Block.js.map +1 -0
  53. package/dist/site-editor/blocks/ImageBlock.d.ts +2 -0
  54. package/dist/site-editor/blocks/ImageBlock.d.ts.map +1 -0
  55. package/dist/site-editor/blocks/ImageBlock.js +23 -0
  56. package/dist/site-editor/blocks/ImageBlock.js.map +1 -0
  57. package/dist/site-editor/blocks/WrapGrid.d.ts +2 -0
  58. package/dist/site-editor/blocks/WrapGrid.d.ts.map +1 -0
  59. package/dist/site-editor/blocks/WrapGrid.js +22 -0
  60. package/dist/site-editor/blocks/WrapGrid.js.map +1 -0
  61. package/dist/site-editor/commands/CodeCommand.d.ts +2 -0
  62. package/dist/site-editor/commands/CodeCommand.d.ts.map +1 -0
  63. package/dist/site-editor/commands/CodeCommand.js +51 -0
  64. package/dist/site-editor/commands/CodeCommand.js.map +1 -0
  65. package/dist/site-editor/commands/EditorCommand.d.ts +6 -0
  66. package/dist/site-editor/commands/EditorCommand.d.ts.map +1 -0
  67. package/dist/site-editor/commands/EditorCommand.js +52 -0
  68. package/dist/site-editor/commands/EditorCommand.js.map +1 -0
  69. package/dist/site-editor/commands/IEditorCommandParameter.d.ts +5 -0
  70. package/dist/site-editor/commands/IEditorCommandParameter.d.ts.map +1 -0
  71. package/dist/site-editor/commands/IEditorCommandParameter.js +9 -0
  72. package/dist/site-editor/commands/IEditorCommandParameter.js.map +1 -0
  73. package/dist/site-editor/components/Component.d.ts +5 -0
  74. package/dist/site-editor/components/Component.d.ts.map +1 -0
  75. package/dist/site-editor/components/Component.js +21 -0
  76. package/dist/site-editor/components/Component.js.map +1 -0
  77. package/dist/site-editor/components/ImageComponent.d.ts +1 -0
  78. package/dist/site-editor/components/ImageComponent.d.ts.map +1 -0
  79. package/dist/site-editor/components/ImageComponent.js +9 -0
  80. package/dist/site-editor/components/ImageComponent.js.map +1 -0
  81. package/dist/site-editor/drag-drop/DragDropHelper.d.ts +3 -0
  82. package/dist/site-editor/drag-drop/DragDropHelper.d.ts.map +1 -0
  83. package/dist/site-editor/drag-drop/DragDropHelper.js +117 -0
  84. package/dist/site-editor/drag-drop/DragDropHelper.js.map +1 -0
  85. package/dist/site-editor/editor/HtmlPageEditor.d.ts +43 -0
  86. package/dist/site-editor/editor/HtmlPageEditor.d.ts.map +1 -0
  87. package/dist/site-editor/editor/HtmlPageEditor.js +500 -0
  88. package/dist/site-editor/editor/HtmlPageEditor.js.map +1 -0
  89. package/dist/site-editor/properties/ColorEditor.d.ts +6 -0
  90. package/dist/site-editor/properties/ColorEditor.d.ts.map +1 -0
  91. package/dist/site-editor/properties/ColorEditor.js +46 -0
  92. package/dist/site-editor/properties/ColorEditor.js.map +1 -0
  93. package/dist/site-editor/properties/Properties.d.ts +2 -0
  94. package/dist/site-editor/properties/Properties.d.ts.map +1 -0
  95. package/dist/site-editor/properties/Properties.js +48 -0
  96. package/dist/site-editor/properties/Properties.js.map +1 -0
  97. package/dist/site-editor/properties/ThicknessEditor.d.ts +4 -0
  98. package/dist/site-editor/properties/ThicknessEditor.d.ts.map +1 -0
  99. package/dist/site-editor/properties/ThicknessEditor.js +15 -0
  100. package/dist/site-editor/properties/ThicknessEditor.js.map +1 -0
  101. package/dist/site-editor/styler/IStylerPair.d.ts +10 -0
  102. package/dist/site-editor/styler/IStylerPair.d.ts.map +1 -0
  103. package/dist/site-editor/styler/IStylerPair.js +9 -0
  104. package/dist/site-editor/styler/IStylerPair.js.map +1 -0
  105. package/dist/site-editor/styler/Styler.d.ts +170 -0
  106. package/dist/site-editor/styler/Styler.d.ts.map +1 -0
  107. package/dist/site-editor/styler/Styler.js +137 -0
  108. package/dist/site-editor/styler/Styler.js.map +1 -0
  109. package/dist/site-editor/styler/StylerSet.d.ts +8 -0
  110. package/dist/site-editor/styler/StylerSet.d.ts.map +1 -0
  111. package/dist/site-editor/styler/StylerSet.js +51 -0
  112. package/dist/site-editor/styler/StylerSet.js.map +1 -0
  113. package/dist/site-editor/styler/properties/border.d.ts +3 -0
  114. package/dist/site-editor/styler/properties/border.d.ts.map +1 -0
  115. package/dist/site-editor/styler/properties/border.js +38 -0
  116. package/dist/site-editor/styler/properties/border.js.map +1 -0
  117. package/dist/site-editor/styler/properties/boxShadow.d.ts +3 -0
  118. package/dist/site-editor/styler/properties/boxShadow.d.ts.map +1 -0
  119. package/dist/site-editor/styler/properties/boxShadow.js +24 -0
  120. package/dist/site-editor/styler/properties/boxShadow.js.map +1 -0
  121. package/dist/site-editor/styler/properties/color.d.ts +3 -0
  122. package/dist/site-editor/styler/properties/color.d.ts.map +1 -0
  123. package/dist/site-editor/styler/properties/color.js +93 -0
  124. package/dist/site-editor/styler/properties/color.js.map +1 -0
  125. package/dist/site-editor/styler/properties/cursor.d.ts +3 -0
  126. package/dist/site-editor/styler/properties/cursor.d.ts.map +1 -0
  127. package/dist/site-editor/styler/properties/cursor.js +20 -0
  128. package/dist/site-editor/styler/properties/cursor.js.map +1 -0
  129. package/dist/site-editor/styler/properties/filter.d.ts +3 -0
  130. package/dist/site-editor/styler/properties/filter.d.ts.map +1 -0
  131. package/dist/site-editor/styler/properties/filter.js +24 -0
  132. package/dist/site-editor/styler/properties/filter.js.map +1 -0
  133. package/dist/site-editor/styler/properties/layout.d.ts +3 -0
  134. package/dist/site-editor/styler/properties/layout.d.ts.map +1 -0
  135. package/dist/site-editor/styler/properties/layout.js +78 -0
  136. package/dist/site-editor/styler/properties/layout.js.map +1 -0
  137. package/dist/site-editor/toolbars/EditorToolbar.d.ts +3 -0
  138. package/dist/site-editor/toolbars/EditorToolbar.d.ts.map +1 -0
  139. package/dist/site-editor/toolbars/EditorToolbar.js +49 -0
  140. package/dist/site-editor/toolbars/EditorToolbar.js.map +1 -0
  141. package/dist/site-editor/toolbars/UndoRedoToolbar.d.ts +2 -0
  142. package/dist/site-editor/toolbars/UndoRedoToolbar.d.ts.map +1 -0
  143. package/dist/site-editor/toolbars/UndoRedoToolbar.js +40 -0
  144. package/dist/site-editor/toolbars/UndoRedoToolbar.js.map +1 -0
  145. package/dist/style/GlobalStyle.js +1 -1
  146. package/dist/tsconfig.tsbuildinfo +1 -1
  147. package/dist/web/AppIndex.pack.js +5188 -2832
  148. package/dist/web/AppIndex.pack.js.map +1 -1
  149. package/dist/web/AppIndex.pack.min.js +399 -150
  150. package/dist/web/AppIndex.pack.min.js.map +1 -1
  151. package/dist/web/drawer/AppDrawer.d.ts +1 -0
  152. package/dist/web/drawer/AppDrawer.d.ts.map +1 -1
  153. package/dist/web/drawer/AppDrawer.js +24 -4
  154. package/dist/web/drawer/AppDrawer.js.map +1 -1
  155. package/dist/web/page/files/FolderPage.d.ts.map +1 -1
  156. package/dist/web/page/files/FolderPage.js.map +1 -1
  157. package/dist/web/page/files/media/ChooseMediaPage.d.ts +24 -0
  158. package/dist/web/page/files/media/ChooseMediaPage.d.ts.map +1 -0
  159. package/dist/web/page/files/media/ChooseMediaPage.js +165 -0
  160. package/dist/web/page/files/media/ChooseMediaPage.js.map +1 -0
  161. package/dist/web/page/files/service/CloudFileService.d.ts +6 -3
  162. package/dist/web/page/files/service/CloudFileService.d.ts.map +1 -1
  163. package/dist/web/page/files/service/CloudFileService.js +34 -5
  164. package/dist/web/page/files/service/CloudFileService.js.map +1 -1
  165. package/node_modules/@web-atoms/core/dist/core/AtomList.d.ts.map +1 -1
  166. package/node_modules/@web-atoms/core/dist/core/AtomList.js +5 -3
  167. package/node_modules/@web-atoms/core/dist/core/AtomList.js.map +1 -1
  168. package/node_modules/@web-atoms/core/dist/services/FetchBuilder.d.ts +3 -0
  169. package/node_modules/@web-atoms/core/dist/services/FetchBuilder.d.ts.map +1 -1
  170. package/node_modules/@web-atoms/core/dist/services/FetchBuilder.js +10 -0
  171. package/node_modules/@web-atoms/core/dist/services/FetchBuilder.js.map +1 -1
  172. package/node_modules/@web-atoms/core/dist/style/styled.d.ts +2 -2
  173. package/node_modules/@web-atoms/core/dist/style/styled.d.ts.map +1 -1
  174. package/node_modules/@web-atoms/core/dist/style/styled.js.map +1 -1
  175. package/node_modules/@web-atoms/core/dist/tsconfig.tsbuildinfo +1 -1
  176. package/node_modules/@web-atoms/core/package.json +1 -1
  177. package/node_modules/@web-atoms/core/src/core/AtomList.ts +5 -3
  178. package/node_modules/@web-atoms/core/src/services/FetchBuilder.ts +13 -0
  179. package/node_modules/@web-atoms/core/src/style/styled.ts +3 -1
  180. package/node_modules/@web-atoms/web-controls/dist/basic/AtomChips.d.ts +1 -0
  181. package/node_modules/@web-atoms/web-controls/dist/basic/AtomChips.d.ts.map +1 -1
  182. package/node_modules/@web-atoms/web-controls/dist/basic/AtomChips.js +2 -0
  183. package/node_modules/@web-atoms/web-controls/dist/basic/AtomChips.js.map +1 -1
  184. package/node_modules/@web-atoms/web-controls/dist/basic/AtomRepeater.js +3 -0
  185. package/node_modules/@web-atoms/web-controls/dist/basic/AtomRepeater.js.map +1 -1
  186. package/node_modules/@web-atoms/web-controls/dist/tsconfig.tsbuildinfo +1 -1
  187. package/node_modules/@web-atoms/web-controls/package.json +2 -2
  188. package/node_modules/@web-atoms/web-controls/src/basic/AtomChips.tsx +4 -0
  189. package/node_modules/@web-atoms/web-controls/src/basic/AtomRepeater.tsx +3 -0
  190. package/package.json +3 -3
  191. package/src/common/Sql.ts +1 -0
  192. package/src/common/commands/CommonCommands.ts +12 -0
  193. package/src/common/controls/html/grapes-js/GrapesJSEditor.tsx +97 -0
  194. package/src/common/controls/tree/FileTreeView.tsx +74 -0
  195. package/src/common/controls/tree/TreeView.tsx +34 -12
  196. package/src/common/pages/websites/edit/WebSiteFolderEditor.tsx +2 -1
  197. package/src/common/pages/websites/manage/ManageWebSitePage.tsx +44 -0
  198. package/src/common/pages/websites/studio/WebSiteStudioPage.tsx +205 -0
  199. package/src/common/pages/websites/templates/ChooseWebSiteTemplatePage.tsx +38 -0
  200. package/src/model/model.ts +11 -0
  201. package/src/services/websites/WebSiteService.ts +8 -1
  202. package/src/site-editor/blocks/Block.tsx +38 -0
  203. package/src/site-editor/blocks/ImageBlock.tsx +14 -0
  204. package/src/site-editor/blocks/WrapGrid.tsx +11 -0
  205. package/src/site-editor/commands/CodeCommand.tsx +36 -0
  206. package/src/site-editor/commands/EditorCommand.tsx +42 -0
  207. package/src/site-editor/commands/IEditorCommandParameter.ts +5 -0
  208. package/src/site-editor/components/Component.tsx +9 -0
  209. package/src/site-editor/components/ImageComponent.tsx +0 -0
  210. package/src/site-editor/drag-drop/DragDropHelper.ts +141 -0
  211. package/src/site-editor/editor/HtmlPageEditor.tsx +497 -0
  212. package/src/site-editor/properties/ColorEditor.tsx +36 -0
  213. package/src/site-editor/properties/Properties.tsx +35 -0
  214. package/src/site-editor/properties/ThicknessEditor.tsx +5 -0
  215. package/src/site-editor/styler/IStylerPair.ts +9 -0
  216. package/src/site-editor/styler/Styler.ts +169 -0
  217. package/src/site-editor/styler/StylerSet.ts +42 -0
  218. package/src/site-editor/styler/properties/border.ts +30 -0
  219. package/src/site-editor/styler/properties/boxShadow.ts +14 -0
  220. package/src/site-editor/styler/properties/color.ts +82 -0
  221. package/src/site-editor/styler/properties/cursor.ts +49 -0
  222. package/src/site-editor/styler/properties/filter.ts +14 -0
  223. package/src/site-editor/styler/properties/layout.ts +72 -0
  224. package/src/site-editor/toolbars/EditorToolbar.tsx +40 -0
  225. package/src/site-editor/toolbars/UndoRedoToolbar.tsx +27 -0
  226. package/src/style/GlobalStyle.ts +1 -1
  227. package/src/web/drawer/AppDrawer.tsx +21 -4
  228. package/src/web/page/files/FolderPage.tsx +0 -1
  229. package/src/web/page/files/media/ChooseMediaPage.tsx +135 -0
  230. 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,5 @@
1
+ import { AtomControl } from "@web-atoms/core/dist/web/controls/AtomControl";
2
+
3
+ export default class ThicknessEditor extends AtomControl {
4
+
5
+ }
@@ -0,0 +1,9 @@
1
+ export default interface IStylerPair {
2
+ [key: string]: {
3
+ name: string,
4
+ className: string,
5
+ values: {
6
+ [key: string]: any;
7
+ }
8
+ }
9
+ }
@@ -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
+ }
@@ -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.4.2/css/all.min.css");
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 `