@sealcode/jdd-editor 0.1.20 → 0.1.23

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 (96) hide show
  1. package/.nyc_output/cfebf13d-f940-426b-a4d3-af28d17bb6b8.json +1 -0
  2. package/.nyc_output/processinfo/2ad4e34c-cebb-4299-9698-08eccbbe71f7.json +1 -0
  3. package/.nyc_output/processinfo/71f2685b-e2c9-4db2-9f31-0dbdcacfcea1.json +1 -0
  4. package/.nyc_output/processinfo/cfebf13d-f940-426b-a4d3-af28d17bb6b8.json +1 -0
  5. package/.nyc_output/processinfo/index.json +1 -1
  6. package/.xunit +1 -1
  7. package/@types/test.test.d.ts +0 -0
  8. package/coverage/clover.xml +279 -259
  9. package/dist/src/components.sreact.js +1 -1
  10. package/dist/src/components.sreact.js.map +2 -2
  11. package/dist/src/controllers/autogrow-textarea.stimulus.js.map +2 -2
  12. package/dist/src/controllers/markdown-textarea.stimulus.js +1 -1
  13. package/dist/src/controllers/markdown-textarea.stimulus.js.map +2 -2
  14. package/dist/src/controllers/refresh-styles.stimulus.js +1 -1
  15. package/dist/src/controllers/refresh-styles.stimulus.js.map +2 -2
  16. package/dist/src/inputs/component-input-single-reference.js +1 -1
  17. package/dist/src/inputs/component-input-single-reference.js.map +2 -2
  18. package/dist/src/inputs/component-input-structured.js +1 -1
  19. package/dist/src/inputs/component-input-structured.js.map +2 -2
  20. package/dist/src/inputs/component-input.js +30 -7
  21. package/dist/src/inputs/component-input.js.map +2 -2
  22. package/dist/src/jdd-page.js +1 -1
  23. package/dist/src/jdd-page.js.map +2 -2
  24. package/{lib → dist}/src/test.test.js +1 -1
  25. package/dist/src/test.test.js.map +7 -0
  26. package/package.json +8 -7
  27. package/src/components.sreact.ts +1 -1
  28. package/src/controllers/autogrow-textarea.stimulus.ts +2 -1
  29. package/src/controllers/markdown-textarea.stimulus.ts +1 -1
  30. package/src/controllers/refresh-styles.stimulus.ts +3 -1
  31. package/src/inputs/component-input-single-reference.ts +1 -1
  32. package/src/inputs/component-input-structured.ts +1 -1
  33. package/src/inputs/component-input.ts +31 -9
  34. package/src/jdd-page.ts +1 -1
  35. package/src/test.test.ts +3 -0
  36. package/test.cjs +53 -0
  37. package/.mocharc.js +0 -6
  38. package/.nyc_output/9bfa248d-4f8e-4d29-9c47-d1a3961c5254.json +0 -1
  39. package/.nyc_output/processinfo/29e7bb87-9f10-462e-84d8-ec620cfa9e6b.json +0 -1
  40. package/.nyc_output/processinfo/7d7104e8-f179-427b-b4bd-30f78397e4f1.json +0 -1
  41. package/.nyc_output/processinfo/9bfa248d-4f8e-4d29-9c47-d1a3961c5254.json +0 -1
  42. package/esbuild.js +0 -23
  43. package/lib/src/component-preview-actions.js +0 -377
  44. package/lib/src/component-preview-actions.js.map +0 -7
  45. package/lib/src/components.sreact.js +0 -93
  46. package/lib/src/components.sreact.js.map +0 -7
  47. package/lib/src/controllers/autogrow-textarea.stimulus.js +0 -13
  48. package/lib/src/controllers/autogrow-textarea.stimulus.js.map +0 -7
  49. package/lib/src/controllers/component-debugger.stimulus.js +0 -193
  50. package/lib/src/controllers/component-debugger.stimulus.js.map +0 -7
  51. package/lib/src/controllers/exportable-textarea.stimulus.js +0 -71
  52. package/lib/src/controllers/exportable-textarea.stimulus.js.map +0 -7
  53. package/lib/src/controllers/input-image-preview.stimulus.js +0 -30
  54. package/lib/src/controllers/input-image-preview.stimulus.js.map +0 -7
  55. package/lib/src/controllers/jdd-table-paste.stimulus.js +0 -78
  56. package/lib/src/controllers/jdd-table-paste.stimulus.js.map +0 -7
  57. package/lib/src/controllers/json-editor.stimulus.js +0 -114
  58. package/lib/src/controllers/json-editor.stimulus.js.map +0 -7
  59. package/lib/src/controllers/markdown-textarea.stimulus.js +0 -174
  60. package/lib/src/controllers/markdown-textarea.stimulus.js.map +0 -7
  61. package/lib/src/controllers/refresh-on-ts-changes.stimulus.js +0 -90
  62. package/lib/src/controllers/refresh-on-ts-changes.stimulus.js.map +0 -7
  63. package/lib/src/controllers/refresh-styles.stimulus.js +0 -67
  64. package/lib/src/controllers/refresh-styles.stimulus.js.map +0 -7
  65. package/lib/src/controllers/submit-on-input.stimulus.js +0 -55
  66. package/lib/src/controllers/submit-on-input.stimulus.js.map +0 -7
  67. package/lib/src/controllers/toast.stimulus.js +0 -19
  68. package/lib/src/controllers/toast.stimulus.js.map +0 -7
  69. package/lib/src/edit-jdd-field.js +0 -94
  70. package/lib/src/edit-jdd-field.js.map +0 -7
  71. package/lib/src/index.js +0 -3
  72. package/lib/src/index.js.map +0 -7
  73. package/lib/src/inputs/component-input-enum.js +0 -30
  74. package/lib/src/inputs/component-input-enum.js.map +0 -7
  75. package/lib/src/inputs/component-input-image.js +0 -63
  76. package/lib/src/inputs/component-input-image.js.map +0 -7
  77. package/lib/src/inputs/component-input-list.js +0 -74
  78. package/lib/src/inputs/component-input-list.js.map +0 -7
  79. package/lib/src/inputs/component-input-single-reference.js +0 -31
  80. package/lib/src/inputs/component-input-single-reference.js.map +0 -7
  81. package/lib/src/inputs/component-input-structured.js +0 -36
  82. package/lib/src/inputs/component-input-structured.js.map +0 -7
  83. package/lib/src/inputs/component-input-table.js +0 -228
  84. package/lib/src/inputs/component-input-table.js.map +0 -7
  85. package/lib/src/inputs/component-input.js +0 -164
  86. package/lib/src/inputs/component-input.js.map +0 -7
  87. package/lib/src/inputs/print-arg-path.js +0 -7
  88. package/lib/src/inputs/print-arg-path.js.map +0 -7
  89. package/lib/src/jdd-creator.js +0 -131
  90. package/lib/src/jdd-creator.js.map +0 -7
  91. package/lib/src/jdd-page.js +0 -339
  92. package/lib/src/jdd-page.js.map +0 -7
  93. package/lib/src/test.test.js.map +0 -7
  94. /package/{.eslintrc.js → .eslintrc.cjs} +0 -0
  95. /package/.nyc_output/{29e7bb87-9f10-462e-84d8-ec620cfa9e6b.json → 2ad4e34c-cebb-4299-9698-08eccbbe71f7.json} +0 -0
  96. /package/.nyc_output/{7d7104e8-f179-427b-b4bd-30f78397e4f1.json → 71f2685b-e2c9-4db2-9f31-0dbdcacfcea1.json} +0 -0
@@ -1,174 +0,0 @@
1
- import { Controller } from "stimulus";
2
- const CSS_ID = "simplemde-css";
3
- const JS_ID = "simplemde-js";
4
- class MarkdownTextarea extends Controller {
5
- constructor() {
6
- super(...arguments);
7
- this.mdeStarted = false;
8
- }
9
- addCSS() {
10
- const tag = document.querySelector(`head #${CSS_ID}`);
11
- if (!tag) {
12
- const link = document.createElement("link");
13
- link.setAttribute("rel", "stylesheet");
14
- link.setAttribute("type", "text/css");
15
- link.setAttribute("id", CSS_ID);
16
- link.setAttribute("href", "/dist/simplemde.min.css");
17
- document.head.appendChild(link);
18
- }
19
- }
20
- async addJS() {
21
- return new Promise((resolve, reject) => {
22
- const once_loaded = (e) => {
23
- e.target.setAttribute("loaded", "true");
24
- resolve();
25
- };
26
- try {
27
- const tag = document.querySelector(`head #${JS_ID}`);
28
- if (!tag) {
29
- const script = document.createElement("script");
30
- script.setAttribute("id", JS_ID);
31
- script.setAttribute("src", "/dist/simplemde.min.js");
32
- script.addEventListener("load", once_loaded);
33
- document.head.appendChild(script);
34
- } else {
35
- if (tag.getAttribute("loaded") == "true") {
36
- resolve();
37
- } else {
38
- tag.addEventListener("load", once_loaded);
39
- }
40
- }
41
- } catch (e) {
42
- reject(e);
43
- }
44
- });
45
- }
46
- handleResize() {
47
- this.sm.codemirror.refresh();
48
- }
49
- async connect() {
50
- var _a, _b;
51
- console.log("Markdown connect!", this.element);
52
- if ((_a = this.element.parentNode) == null ? void 0 : _a.querySelector(".editor-toolbar")) {
53
- return;
54
- }
55
- this.addCSS();
56
- await this.addJS();
57
- const component_block = this.isInsideComponentBlock();
58
- if (component_block) {
59
- if (this.isHiddenBlock()) {
60
- const handler = () => {
61
- var _a2;
62
- (_a2 = this.getCheckboxThatShowsBlock()) == null ? void 0 : _a2.removeEventListener(
63
- "change",
64
- handler
65
- );
66
- setTimeout(() => this.init(), 1);
67
- };
68
- (_b = this.getCheckboxThatShowsBlock()) == null ? void 0 : _b.addEventListener(
69
- "change",
70
- handler
71
- );
72
- } else {
73
- await this.init();
74
- }
75
- } else {
76
- await this.init();
77
- }
78
- }
79
- async startMDE() {
80
- if (this.mdeStarted) {
81
- return;
82
- }
83
- this.sm = new SimpleMDE({
84
- element: this.element,
85
- autoDownloadFontAwesome: false,
86
- spellChecker: false,
87
- hideIcons: ["image", "preview", "side-by-side"],
88
- status: ["words"],
89
- autosave: { enabled: false },
90
- forceSync: true,
91
- initialValue: this.element.value
92
- });
93
- this.sm.codemirror.on("change", () => {
94
- this.element.dispatchEvent(new Event("input"));
95
- });
96
- this.setupRefreshOnShow();
97
- this.resizeObserver = new ResizeObserver(() => {
98
- this.sm.codemirror.refresh();
99
- });
100
- const wrapper = this.sm.element.closest(
101
- ".grow-wrap"
102
- );
103
- this.resizeObserver.observe(wrapper);
104
- document.addEventListener(
105
- "turbo:before-morph-element",
106
- function(event) {
107
- const target = event.target;
108
- if (target == wrapper && event.detail.newElement !== void 0) {
109
- event.preventDefault();
110
- }
111
- }
112
- );
113
- this.mdeStarted = true;
114
- }
115
- async init() {
116
- this.intersectionObserver = new IntersectionObserver(
117
- (entries) => {
118
- entries.forEach((entry) => {
119
- if (entry.intersectionRatio > 0.2) {
120
- this.startMDE();
121
- }
122
- });
123
- },
124
- {
125
- root: this.element.closest(".component-arguments"),
126
- rootMargin: "0px",
127
- threshold: 0.25
128
- }
129
- );
130
- this.intersectionObserver.observe(this.element);
131
- }
132
- isHiddenBlock() {
133
- var _a;
134
- return !((_a = this.getCheckboxThatShowsBlock()) == null ? void 0 : _a.checked);
135
- }
136
- isInsideComponentBlock() {
137
- return this.element.closest(".jdd-editor__component-block");
138
- }
139
- getCheckboxThatShowsBlock() {
140
- const block = this.isInsideComponentBlock();
141
- if (!block) {
142
- return null;
143
- }
144
- return block.querySelector(".component-collapse-toggle");
145
- }
146
- setupRefreshOnShow() {
147
- var _a;
148
- this.checkboxHandler = (e) => {
149
- const target = e.target;
150
- if (target.checked) {
151
- this.sm.codemirror.refresh();
152
- }
153
- };
154
- (_a = this.getCheckboxThatShowsBlock()) == null ? void 0 : _a.addEventListener(
155
- "change",
156
- this.checkboxHandler
157
- );
158
- }
159
- disconnect() {
160
- var _a, _b, _c;
161
- console.log("disconnecting", this.element);
162
- (_a = this.getCheckboxThatShowsBlock()) == null ? void 0 : _a.removeEventListener(
163
- "change",
164
- this.checkboxHandler
165
- );
166
- (_b = this.element.closest(".grow-wrap")) == null ? void 0 : _b.removeAttribute("data-turbo-permanent");
167
- (_c = this.resizeObserver) == null ? void 0 : _c.unobserve(this.sm.element);
168
- this.sm.toTextArea();
169
- }
170
- }
171
- export {
172
- MarkdownTextarea as default
173
- };
174
- //# sourceMappingURL=markdown-textarea.stimulus.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/controllers/markdown-textarea.stimulus.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-misused-promises */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Controller } from \"stimulus\";\nimport type { default as simplemde } from \"simplemde\";\n\nconst CSS_ID = \"simplemde-css\";\nconst JS_ID = \"simplemde-js\";\n\ndeclare const SimpleMDE: simplemde;\n\nexport default class MarkdownTextarea extends Controller<HTMLTextAreaElement> {\n\tsm: simplemde;\n\tcheckboxHandler: (this: HTMLElement, ev: Event) => any;\n\tresizeObserver: ResizeObserver;\n\tintersectionObserver: IntersectionObserver;\n\tmdeStarted = false;\n\n\taddCSS() {\n\t\tconst tag = document.querySelector(`head #${CSS_ID}`);\n\t\tif (!tag) {\n\t\t\tconst link = document.createElement(\"link\");\n\t\t\tlink.setAttribute(\"rel\", \"stylesheet\");\n\t\t\tlink.setAttribute(\"type\", \"text/css\");\n\t\t\tlink.setAttribute(\"id\", CSS_ID);\n\t\t\tlink.setAttribute(\"href\", \"/dist/simplemde.min.css\");\n\t\t\tdocument.head.appendChild(link);\n\t\t}\n\t}\n\n\tasync addJS() {\n\t\treturn new Promise<void>((resolve, reject) => {\n\t\t\tconst once_loaded = (e: MouseEvent) => {\n\t\t\t\t(e.target as HTMLScriptElement).setAttribute(\"loaded\", \"true\");\n\t\t\t\tresolve();\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tconst tag = document.querySelector(`head #${JS_ID}`);\n\t\t\t\tif (!tag) {\n\t\t\t\t\tconst script = document.createElement(\"script\");\n\t\t\t\t\tscript.setAttribute(\"id\", JS_ID);\n\t\t\t\t\tscript.setAttribute(\"src\", \"/dist/simplemde.min.js\");\n\t\t\t\t\tscript.addEventListener(\"load\", once_loaded);\n\t\t\t\t\tdocument.head.appendChild(script);\n\t\t\t\t} else {\n\t\t\t\t\tif (tag.getAttribute(\"loaded\") == \"true\") {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttag.addEventListener(\"load\", once_loaded);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treject(e);\n\t\t\t}\n\t\t});\n\t}\n\n\thandleResize() {\n\t\tthis.sm.codemirror.refresh();\n\t}\n\n\tasync connect() {\n\t\tconsole.log(\"Markdown connect!\", this.element);\n\t\tif (this.element.parentNode?.querySelector(\".editor-toolbar\")) {\n\t\t\t//already loaded, quit;\n\t\t\treturn;\n\t\t}\n\t\tthis.addCSS();\n\t\tawait this.addJS();\n\t\tconst component_block = this.isInsideComponentBlock();\n\n\t\t// some offloading of starting the MDE, because it is slow on Chrome\n\t\tif (component_block) {\n\t\t\tif (this.isHiddenBlock()) {\n\t\t\t\tconst handler = () => {\n\t\t\t\t\tthis.getCheckboxThatShowsBlock()?.removeEventListener(\n\t\t\t\t\t\t\"change\",\n\t\t\t\t\t\thandler\n\t\t\t\t\t);\n\t\t\t\t\tsetTimeout(() => this.init(), 1);\n\t\t\t\t};\n\t\t\t\tthis.getCheckboxThatShowsBlock()?.addEventListener(\n\t\t\t\t\t\"change\",\n\t\t\t\t\thandler\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tawait this.init();\n\t\t\t}\n\t\t} else {\n\t\t\tawait this.init();\n\t\t}\n\t}\n\n\tasync startMDE() {\n\t\tif (this.mdeStarted) {\n\t\t\treturn;\n\t\t}\n\t\tthis.sm = new (SimpleMDE as any)({\n\t\t\telement: this.element,\n\t\t\tautoDownloadFontAwesome: false,\n\t\t\tspellChecker: false,\n\t\t\thideIcons: [\"image\", \"preview\", \"side-by-side\"],\n\t\t\tstatus: [\"words\"],\n\t\t\tautosave: { enabled: false },\n\t\t\tforceSync: true, // for autosubmit to work\n\t\t\tinitialValue: this.element.value,\n\t\t}) as simplemde;\n\t\t// this.element.closest(\".grow-wrap\").setAttribute(\"data-turbo-permanent\", \"\");\n\t\tthis.sm.codemirror.on(\"change\", () => {\n\t\t\tthis.element.dispatchEvent(new Event(\"input\"));\n\t\t});\n\t\tthis.setupRefreshOnShow();\n\t\tthis.resizeObserver = new ResizeObserver(() => {\n\t\t\tthis.sm.codemirror.refresh();\n\t\t});\n\t\tconst wrapper = (this.sm as any).element.closest(\n\t\t\t\".grow-wrap\"\n\t\t) as HTMLDivElement;\n\t\tthis.resizeObserver.observe(wrapper);\n\t\tdocument.addEventListener(\n\t\t\t\"turbo:before-morph-element\",\n\t\t\tfunction (event: BeforeUnloadEvent) {\n\t\t\t\tconst target = event.target as HTMLDivElement;\n\t\t\t\t// disallow morphing, but allow removing\n\t\t\t\tif (\n\t\t\t\t\ttarget == wrapper &&\n\t\t\t\t\t(event as any).detail.newElement !== undefined\n\t\t\t\t) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.mdeStarted = true;\n\t}\n\n\tasync init() {\n\t\tthis.intersectionObserver = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\tif (entry.intersectionRatio > 0.2) {\n\t\t\t\t\t\tthis.startMDE();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t{\n\t\t\t\troot: this.element.closest(\".component-arguments\"),\n\t\t\t\trootMargin: \"0px\",\n\t\t\t\tthreshold: 0.25,\n\t\t\t}\n\t\t);\n\t\tthis.intersectionObserver.observe(this.element);\n\t}\n\n\tisHiddenBlock() {\n\t\treturn !this.getCheckboxThatShowsBlock()?.checked;\n\t}\n\n\tisInsideComponentBlock(): false | HTMLDivElement {\n\t\treturn this.element.closest(\".jdd-editor__component-block\") as\n\t\t\t| HTMLDivElement\n\t\t\t| false;\n\t}\n\n\tgetCheckboxThatShowsBlock(): HTMLInputElement | null {\n\t\tconst block = this.isInsideComponentBlock();\n\t\tif (!block) {\n\t\t\treturn null;\n\t\t}\n\t\treturn block.querySelector(\".component-collapse-toggle\");\n\t}\n\n\tsetupRefreshOnShow() {\n\t\tthis.checkboxHandler = (e) => {\n\t\t\tconst target = e.target as HTMLInputElement;\n\t\t\tif (target.checked) {\n\t\t\t\tthis.sm.codemirror.refresh();\n\t\t\t}\n\t\t};\n\t\tthis.getCheckboxThatShowsBlock()?.addEventListener(\n\t\t\t\"change\",\n\t\t\tthis.checkboxHandler\n\t\t);\n\t}\n\n\tdisconnect() {\n\t\tconsole.log(\"disconnecting\", this.element);\n\t\tthis.getCheckboxThatShowsBlock()?.removeEventListener(\n\t\t\t\"change\",\n\t\t\tthis.checkboxHandler\n\t\t);\n\t\tthis.element\n\t\t\t.closest(\".grow-wrap\")\n\t\t\t?.removeAttribute(\"data-turbo-permanent\");\n\t\tthis.resizeObserver?.unobserve((this.sm as any).element as HTMLElement);\n\t\tthis.sm.toTextArea();\n\t}\n}\n"],
5
- "mappings": "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",
6
- "names": ["_a"]
7
- }
@@ -1,90 +0,0 @@
1
- import { Controller } from "stimulus";
2
- const APP_DOWN_ERROR_MESSAGE = "App is currently down";
3
- const sleep = (time) => new Promise((resolve) => {
4
- setTimeout(resolve, time);
5
- });
6
- async function get_status() {
7
- const r = await fetch("/status.json");
8
- return await r.json();
9
- }
10
- async function wait_for_run_id_to_change() {
11
- let first_timestamp;
12
- try {
13
- const { started_at } = await get_status();
14
- first_timestamp = started_at;
15
- } catch (e) {
16
- await wait_for_app_to_be_stable();
17
- return;
18
- }
19
- if (!first_timestamp) {
20
- throw new Error(APP_DOWN_ERROR_MESSAGE);
21
- }
22
- while (true) {
23
- const { started_at } = await get_status().catch(() => ({
24
- started_at: first_timestamp
25
- }));
26
- if (started_at !== first_timestamp) {
27
- return;
28
- }
29
- await sleep(100);
30
- }
31
- }
32
- async function wait_for_app_to_be_stable(n = 3) {
33
- console.log("Waiting for app to be stable....");
34
- let counter = 0;
35
- while (true) {
36
- const { status } = await get_status().catch(() => ({
37
- status: "down"
38
- }));
39
- if (status == "running") {
40
- console.log(counter);
41
- counter++;
42
- } else {
43
- counter = 0;
44
- }
45
- if (counter == n) {
46
- return;
47
- }
48
- await sleep(100);
49
- }
50
- }
51
- async function wait_for_app_restart() {
52
- try {
53
- await wait_for_run_id_to_change();
54
- } catch (e) {
55
- if (e.message !== APP_DOWN_ERROR_MESSAGE) {
56
- throw e;
57
- }
58
- }
59
- await wait_for_app_to_be_stable();
60
- }
61
- class RefreshOnTSChanges extends Controller {
62
- async connect() {
63
- const { port, watch } = await fetch("/dist/notifier.json").then(
64
- (r) => r.json()
65
- );
66
- if (!watch) {
67
- console.warn(
68
- "Not running auto refresh on watch because the build process is not running in watch mode"
69
- );
70
- return;
71
- }
72
- const socket = new WebSocket(`ws://localhost:${port}`);
73
- socket.onmessage = async (message) => {
74
- const data = message.data;
75
- if (typeof data === "string" && data.endsWith("-ts")) {
76
- document.documentElement.classList.add("restarting");
77
- await wait_for_app_restart();
78
- document.documentElement.dispatchEvent(new Event("ts-rebuilt"));
79
- document.documentElement.classList.remove("restarting");
80
- }
81
- };
82
- }
83
- async disconnect() {
84
- this.socket.close();
85
- }
86
- }
87
- export {
88
- RefreshOnTSChanges as default
89
- };
90
- //# sourceMappingURL=refresh-on-ts-changes.stimulus.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/controllers/refresh-on-ts-changes.stimulus.ts"],
4
- "sourcesContent": ["import { Controller } from \"stimulus\";\n\nconst APP_DOWN_ERROR_MESSAGE = \"App is currently down\";\n\nconst sleep = (time: number) =>\n\tnew Promise((resolve) => {\n\t\tsetTimeout(resolve, time);\n\t});\n\nasync function get_status(): Promise<{ started_at: number; status: string }> {\n\tconst r = await fetch(\"/status.json\");\n\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\treturn (await r.json()) as { started_at: number; status: string };\n}\n\nasync function wait_for_run_id_to_change() {\n\tlet first_timestamp: number;\n\ttry {\n\t\tconst { started_at } = await get_status();\n\t\tfirst_timestamp = started_at;\n\t} catch (e) {\n\t\tawait wait_for_app_to_be_stable();\n\t\treturn;\n\t}\n\n\tif (!first_timestamp) {\n\t\tthrow new Error(APP_DOWN_ERROR_MESSAGE);\n\t}\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst { started_at } = await get_status().catch(() => ({\n\t\t\tstarted_at: first_timestamp,\n\t\t}));\n\t\tif (started_at !== first_timestamp) {\n\t\t\treturn;\n\t\t}\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tawait sleep(100);\n\t}\n}\n\nasync function wait_for_app_to_be_stable(n = 3) {\n\t// eslint-disable-next-line no-console\n\tconsole.log(\"Waiting for app to be stable....\");\n\tlet counter = 0;\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst { status } = await get_status().catch(() => ({\n\t\t\tstatus: \"down\",\n\t\t}));\n\t\tif (status == \"running\") {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.log(counter);\n\t\t\tcounter++;\n\t\t} else {\n\t\t\tcounter = 0;\n\t\t}\n\t\tif (counter == n) {\n\t\t\treturn;\n\t\t}\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tawait sleep(100);\n\t}\n}\n\nasync function wait_for_app_restart() {\n\ttry {\n\t\tawait wait_for_run_id_to_change();\n\t} catch (e) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\tif (e.message !== APP_DOWN_ERROR_MESSAGE) {\n\t\t\tthrow e;\n\t\t}\n\t}\n\tawait wait_for_app_to_be_stable();\n}\n\nexport default class RefreshOnTSChanges extends Controller {\n\tsocket: WebSocket;\n\n\tasync connect() {\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\tconst { port, watch } = (await fetch(\"/dist/notifier.json\").then((r) =>\n\t\t\tr.json()\n\t\t)) as { port: number; watch: boolean };\n\t\tif (!watch) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(\n\t\t\t\t\"Not running auto refresh on watch because the build process is not running in watch mode\"\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tconst socket = new WebSocket(`ws://localhost:${port}`);\n\t\tsocket.onmessage = async (message) => {\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tconst data = message.data as unknown;\n\t\t\tif (typeof data === \"string\" && data.endsWith(\"-ts\")) {\n\t\t\t\tdocument.documentElement.classList.add(\"restarting\");\n\t\t\t\tawait wait_for_app_restart();\n\t\t\t\tdocument.documentElement.dispatchEvent(new Event(\"ts-rebuilt\"));\n\t\t\t\tdocument.documentElement.classList.remove(\"restarting\");\n\t\t\t}\n\t\t};\n\t}\n\n\tasync disconnect() {\n\t\tthis.socket.close();\n\t}\n}\n"],
5
- "mappings": "AAAA,SAAS,kBAAkB;AAE3B,MAAM,yBAAyB;AAE/B,MAAM,QAAQ,CAAC,SACd,IAAI,QAAQ,CAAC,YAAY;AACxB,aAAW,SAAS,IAAI;AACzB,CAAC;AAEF,eAAe,aAA8D;AAC5E,QAAM,IAAI,MAAM,MAAM,cAAc;AAEpC,SAAQ,MAAM,EAAE,KAAK;AACtB;AAEA,eAAe,4BAA4B;AAC1C,MAAI;AACJ,MAAI;AACH,UAAM,EAAE,WAAW,IAAI,MAAM,WAAW;AACxC,sBAAkB;AAAA,EACnB,SAAS,GAAP;AACD,UAAM,0BAA0B;AAChC;AAAA,EACD;AAEA,MAAI,CAAC,iBAAiB;AACrB,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACvC;AAGA,SAAO,MAAM;AAEZ,UAAM,EAAE,WAAW,IAAI,MAAM,WAAW,EAAE,MAAM,OAAO;AAAA,MACtD,YAAY;AAAA,IACb,EAAE;AACF,QAAI,eAAe,iBAAiB;AACnC;AAAA,IACD;AAEA,UAAM,MAAM,GAAG;AAAA,EAChB;AACD;AAEA,eAAe,0BAA0B,IAAI,GAAG;AAE/C,UAAQ,IAAI,kCAAkC;AAC9C,MAAI,UAAU;AAEd,SAAO,MAAM;AAEZ,UAAM,EAAE,OAAO,IAAI,MAAM,WAAW,EAAE,MAAM,OAAO;AAAA,MAClD,QAAQ;AAAA,IACT,EAAE;AACF,QAAI,UAAU,WAAW;AAExB,cAAQ,IAAI,OAAO;AACnB;AAAA,IACD,OAAO;AACN,gBAAU;AAAA,IACX;AACA,QAAI,WAAW,GAAG;AACjB;AAAA,IACD;AAEA,UAAM,MAAM,GAAG;AAAA,EAChB;AACD;AAEA,eAAe,uBAAuB;AACrC,MAAI;AACH,UAAM,0BAA0B;AAAA,EACjC,SAAS,GAAP;AAED,QAAI,EAAE,YAAY,wBAAwB;AACzC,YAAM;AAAA,IACP;AAAA,EACD;AACA,QAAM,0BAA0B;AACjC;AAEA,MAAO,2BAAyC,WAAW;AAAA,EAG1D,MAAM,UAAU;AAEf,UAAM,EAAE,MAAM,MAAM,IAAK,MAAM,MAAM,qBAAqB,EAAE;AAAA,MAAK,CAAC,MACjE,EAAE,KAAK;AAAA,IACR;AACA,QAAI,CAAC,OAAO;AAEX,cAAQ;AAAA,QACP;AAAA,MACD;AACA;AAAA,IACD;AACA,UAAM,SAAS,IAAI,UAAU,kBAAkB,MAAM;AACrD,WAAO,YAAY,OAAO,YAAY;AAErC,YAAM,OAAO,QAAQ;AACrB,UAAI,OAAO,SAAS,YAAY,KAAK,SAAS,KAAK,GAAG;AACrD,iBAAS,gBAAgB,UAAU,IAAI,YAAY;AACnD,cAAM,qBAAqB;AAC3B,iBAAS,gBAAgB,cAAc,IAAI,MAAM,YAAY,CAAC;AAC9D,iBAAS,gBAAgB,UAAU,OAAO,YAAY;AAAA,MACvD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,aAAa;AAClB,SAAK,OAAO,MAAM;AAAA,EACnB;AACD;",
6
- "names": []
7
- }
@@ -1,67 +0,0 @@
1
- import { Controller } from "stimulus";
2
- function make_new_link(href) {
3
- const new_link = document.createElement("link");
4
- new_link.rel = "stylesheet";
5
- new_link.href = href.split("?")[0] + `?${Math.random()}+${Math.random()}`;
6
- new_link.type = "text/css";
7
- return new_link;
8
- }
9
- function refresh_css() {
10
- const actual_hrefs = new Set(
11
- Array.from(document.querySelectorAll("head link[rel=stylesheet]")).map(
12
- (e) => {
13
- var _a;
14
- return (_a = e == null ? void 0 : e.getAttribute("href")) == null ? void 0 : _a.split("?")[0];
15
- }
16
- )
17
- );
18
- return actual_hrefs.forEach((href) => {
19
- var _a;
20
- const new_link = make_new_link(href);
21
- const to_delete_after_load = Array.from(
22
- document.querySelectorAll(
23
- `head link[rel=stylesheet][href^="${href}"]`
24
- )
25
- );
26
- new_link.onload = function() {
27
- setTimeout(() => {
28
- to_delete_after_load.forEach((to_remove) => {
29
- to_remove.remove();
30
- });
31
- }, 100);
32
- };
33
- (_a = document.querySelector("head")) == null ? void 0 : _a.appendChild(new_link);
34
- });
35
- }
36
- class RefreshStyles extends Controller {
37
- async connect() {
38
- const { port } = await fetch("/dist/notifier.json").then(
39
- (r) => r.json()
40
- );
41
- try {
42
- this.socket = new WebSocket(`ws://localhost:${port}`);
43
- } catch (e) {
44
- console.error(e);
45
- console.warn(
46
- "Not enabling auto style refresh due to the above error"
47
- );
48
- }
49
- this.socket.onmessage = async (message) => {
50
- if (message.data === "css") {
51
- refresh_css();
52
- }
53
- };
54
- document.documentElement.addEventListener("turbo:morph", refresh_css);
55
- }
56
- async disconnect() {
57
- this.socket.close();
58
- document.documentElement.removeEventListener(
59
- "turbo:morph",
60
- refresh_css
61
- );
62
- }
63
- }
64
- export {
65
- RefreshStyles as default
66
- };
67
- //# sourceMappingURL=refresh-styles.stimulus.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/controllers/refresh-styles.stimulus.ts"],
4
- "sourcesContent": ["import { Controller } from \"stimulus\";\n\nfunction make_new_link(href: string) {\n\tconst new_link = document.createElement(\"link\");\n\tnew_link.rel = \"stylesheet\";\n\tnew_link.href = href.split(\"?\")[0] + `?${Math.random()}+${Math.random()}`;\n\tnew_link.type = \"text/css\";\n\treturn new_link;\n}\n\nfunction refresh_css() {\n\tconst actual_hrefs = new Set(\n\t\tArray.from(document.querySelectorAll(\"head link[rel=stylesheet]\")).map(\n\t\t\t(e) => e?.getAttribute(\"href\")?.split(\"?\")[0]\n\t\t)\n\t);\n\treturn actual_hrefs.forEach((href: string) => {\n\t\tconst new_link = make_new_link(href);\n\t\tconst to_delete_after_load = Array.from(\n\t\t\tdocument.querySelectorAll(\n\t\t\t\t`head link[rel=stylesheet][href^=\"${href}\"]`\n\t\t\t)\n\t\t);\n\t\tnew_link.onload = function () {\n\t\t\t// delay to prevent flicker\n\t\t\tsetTimeout(() => {\n\t\t\t\tto_delete_after_load.forEach((to_remove) => {\n\t\t\t\t\tto_remove.remove();\n\t\t\t\t});\n\t\t\t}, 100);\n\t\t};\n\t\tdocument.querySelector(\"head\")?.appendChild(new_link);\n\t});\n}\n\nexport default class RefreshStyles extends Controller {\n\tsocket: WebSocket;\n\n\tasync connect() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst { port } = await fetch(\"/dist/notifier.json\").then((r) =>\n\t\t\tr.json()\n\t\t);\n\t\ttry {\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\n\t\t\tthis.socket = new WebSocket(`ws://localhost:${port as number}`);\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(\n\t\t\t\t\"Not enabling auto style refresh due to the above error\"\n\t\t\t);\n\t\t}\n\t\tthis.socket.onmessage = async (message) => {\n\t\t\tif (message.data === \"css\") {\n\t\t\t\trefresh_css();\n\t\t\t}\n\t\t};\n\t\tdocument.documentElement.addEventListener(\"turbo:morph\", refresh_css);\n\t}\n\n\tasync disconnect() {\n\t\tthis.socket.close();\n\t\tdocument.documentElement.removeEventListener(\n\t\t\t\"turbo:morph\",\n\t\t\trefresh_css\n\t\t);\n\t}\n}\n"],
5
- "mappings": "AAAA,SAAS,kBAAkB;AAE3B,SAAS,cAAc,MAAc;AACpC,QAAM,WAAW,SAAS,cAAc,MAAM;AAC9C,WAAS,MAAM;AACf,WAAS,OAAO,KAAK,MAAM,GAAG,EAAE,KAAK,IAAI,KAAK,OAAO,KAAK,KAAK,OAAO;AACtE,WAAS,OAAO;AAChB,SAAO;AACR;AAEA,SAAS,cAAc;AACtB,QAAM,eAAe,IAAI;AAAA,IACxB,MAAM,KAAK,SAAS,iBAAiB,2BAA2B,CAAC,EAAE;AAAA,MAClE,CAAC,MAAG;AAbP;AAaU,4CAAG,aAAa,YAAhB,mBAAyB,MAAM,KAAK;AAAA;AAAA,IAC5C;AAAA,EACD;AACA,SAAO,aAAa,QAAQ,CAAC,SAAiB;AAhB/C;AAiBE,UAAM,WAAW,cAAc,IAAI;AACnC,UAAM,uBAAuB,MAAM;AAAA,MAClC,SAAS;AAAA,QACR,oCAAoC;AAAA,MACrC;AAAA,IACD;AACA,aAAS,SAAS,WAAY;AAE7B,iBAAW,MAAM;AAChB,6BAAqB,QAAQ,CAAC,cAAc;AAC3C,oBAAU,OAAO;AAAA,QAClB,CAAC;AAAA,MACF,GAAG,GAAG;AAAA,IACP;AACA,mBAAS,cAAc,MAAM,MAA7B,mBAAgC,YAAY;AAAA,EAC7C,CAAC;AACF;AAEA,MAAO,sBAAoC,WAAW;AAAA,EAGrD,MAAM,UAAU;AAEf,UAAM,EAAE,KAAK,IAAI,MAAM,MAAM,qBAAqB,EAAE;AAAA,MAAK,CAAC,MACzD,EAAE,KAAK;AAAA,IACR;AACA,QAAI;AAGH,WAAK,SAAS,IAAI,UAAU,kBAAkB,MAAgB;AAAA,IAC/D,SAAS,GAAP;AACD,cAAQ,MAAM,CAAC;AAEf,cAAQ;AAAA,QACP;AAAA,MACD;AAAA,IACD;AACA,SAAK,OAAO,YAAY,OAAO,YAAY;AAC1C,UAAI,QAAQ,SAAS,OAAO;AAC3B,oBAAY;AAAA,MACb;AAAA,IACD;AACA,aAAS,gBAAgB,iBAAiB,eAAe,WAAW;AAAA,EACrE;AAAA,EAEA,MAAM,aAAa;AAClB,SAAK,OAAO,MAAM;AAClB,aAAS,gBAAgB;AAAA,MACxB;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;",
6
- "names": []
7
- }
@@ -1,55 +0,0 @@
1
- import { Controller } from "stimulus";
2
- import { throttle } from "throttle-debounce";
3
- class SubmitOnInput extends Controller {
4
- connect() {
5
- this.sendValues = throttle(
6
- 500,
7
- () => {
8
- var _a, _b, _c;
9
- const component_index = ((_a = this.element.closest(".jdd-editor__component-block")) == null ? void 0 : _a.getAttribute("data-component-index")) || null;
10
- if (component_index == null) {
11
- (_b = this.element.closest("form")) == null ? void 0 : _b.requestSubmit();
12
- return;
13
- }
14
- const updateOnlyPreview = (event) => {
15
- var _a2;
16
- const target = event.target;
17
- if ([
18
- "component-arguments",
19
- "component-preview__header"
20
- ].includes(target.id) || ((_a2 = target.parentElement) == null ? void 0 : _a2.classList.contains(
21
- "jdd-container"
22
- )) && !target.classList.contains(
23
- "component-number-" + component_index
24
- )) {
25
- event.preventDefault();
26
- }
27
- };
28
- document.addEventListener(
29
- "turbo:before-morph-element",
30
- updateOnlyPreview
31
- );
32
- (_c = this.element.closest("form")) == null ? void 0 : _c.requestSubmit();
33
- const after_submit = () => {
34
- document.removeEventListener(
35
- "turbo:before-morph-element",
36
- updateOnlyPreview
37
- );
38
- document.removeEventListener("turbo:morph", after_submit);
39
- };
40
- document.addEventListener("turbo:morph", after_submit);
41
- },
42
- { noTrailing: false }
43
- );
44
- }
45
- makePermanent() {
46
- this.element.setAttribute("data-turbo-permanent", "");
47
- }
48
- makeNotPermanent() {
49
- this.element.removeAttribute("data-turbo-permanent");
50
- }
51
- }
52
- export {
53
- SubmitOnInput as default
54
- };
55
- //# sourceMappingURL=submit-on-input.stimulus.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/controllers/submit-on-input.stimulus.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/consistent-type-assertions, @typescript-eslint/no-unsafe-assignment */\nimport { Controller } from \"stimulus\";\nimport { throttle } from \"throttle-debounce\";\n\nexport default class SubmitOnInput extends Controller<HTMLTextAreaElement> {\n\tsendValues: () => void;\n\n\tconnect() {\n\t\tthis.sendValues = throttle(\n\t\t\t500,\n\t\t\t() => {\n\t\t\t\tconst component_index =\n\t\t\t\t\tthis.element\n\t\t\t\t\t\t.closest(\".jdd-editor__component-block\")\n\t\t\t\t\t\t?.getAttribute(\"data-component-index\") || null;\n\t\t\t\tif (component_index == null) {\n\t\t\t\t\t// not an input within a JDD component editor\n\t\t\t\t\tthis.element.closest(\"form\")?.requestSubmit();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// During this automatic submit, we force idiomorph to only update the components edited by this input.\n\t\t\t\tconst updateOnlyPreview = (event: BeforeUnloadEvent) => {\n\t\t\t\t\tconst target = event.target as HTMLDivElement;\n\t\t\t\t\tif (\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"component-arguments\",\n\t\t\t\t\t\t\t\"component-preview__header\",\n\t\t\t\t\t\t].includes(target.id) ||\n\t\t\t\t\t\t(target.parentElement?.classList.contains(\n\t\t\t\t\t\t\t\"jdd-container\"\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t!target.classList.contains(\n\t\t\t\t\t\t\t\t\"component-number-\" + component_index\n\t\t\t\t\t\t\t))\n\t\t\t\t\t) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tdocument.addEventListener(\n\t\t\t\t\t\"turbo:before-morph-element\",\n\t\t\t\t\tupdateOnlyPreview\n\t\t\t\t);\n\t\t\t\tthis.element.closest(\"form\")?.requestSubmit();\n\t\t\t\tconst after_submit = () => {\n\t\t\t\t\tdocument.removeEventListener(\n\t\t\t\t\t\t\"turbo:before-morph-element\",\n\t\t\t\t\t\tupdateOnlyPreview\n\t\t\t\t\t);\n\t\t\t\t\tdocument.removeEventListener(\"turbo:morph\", after_submit);\n\t\t\t\t};\n\t\t\t\tdocument.addEventListener(\"turbo:morph\", after_submit);\n\t\t\t},\n\t\t\t{ noTrailing: false }\n\t\t);\n\t}\n\n\tmakePermanent() {\n\t\t// this prevents morphing from overwriting the input value with previous half-dane values - https://github.com/hotwired/turbo/issues/1199\n\t\tthis.element.setAttribute(\"data-turbo-permanent\", \"\");\n\t}\n\n\tmakeNotPermanent() {\n\t\tthis.element.removeAttribute(\"data-turbo-permanent\");\n\t}\n}\n"],
5
- "mappings": "AACA,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AAEzB,MAAO,sBAAoC,WAAgC;AAAA,EAG1E,UAAU;AACT,SAAK,aAAa;AAAA,MACjB;AAAA,MACA,MAAM;AAVT;AAWI,cAAM,oBACL,UAAK,QACH,QAAQ,8BAA8B,MADxC,mBAEG,aAAa,4BAA2B;AAC5C,YAAI,mBAAmB,MAAM;AAE5B,qBAAK,QAAQ,QAAQ,MAAM,MAA3B,mBAA8B;AAC9B;AAAA,QACD;AAGA,cAAM,oBAAoB,CAAC,UAA6B;AAtB5D,cAAAA;AAuBK,gBAAM,SAAS,MAAM;AACrB,cACC;AAAA,YACC;AAAA,YACA;AAAA,UACD,EAAE,SAAS,OAAO,EAAE,OACnBA,MAAA,OAAO,kBAAP,gBAAAA,IAAsB,UAAU;AAAA,YAChC;AAAA,gBAEA,CAAC,OAAO,UAAU;AAAA,YACjB,sBAAsB;AAAA,UACvB,GACA;AACD,kBAAM,eAAe;AAAA,UACtB;AAAA,QACD;AACA,iBAAS;AAAA,UACR;AAAA,UACA;AAAA,QACD;AACA,mBAAK,QAAQ,QAAQ,MAAM,MAA3B,mBAA8B;AAC9B,cAAM,eAAe,MAAM;AAC1B,mBAAS;AAAA,YACR;AAAA,YACA;AAAA,UACD;AACA,mBAAS,oBAAoB,eAAe,YAAY;AAAA,QACzD;AACA,iBAAS,iBAAiB,eAAe,YAAY;AAAA,MACtD;AAAA,MACA,EAAE,YAAY,MAAM;AAAA,IACrB;AAAA,EACD;AAAA,EAEA,gBAAgB;AAEf,SAAK,QAAQ,aAAa,wBAAwB,EAAE;AAAA,EACrD;AAAA,EAEA,mBAAmB;AAClB,SAAK,QAAQ,gBAAgB,sBAAsB;AAAA,EACpD;AACD;",
6
- "names": ["_a"]
7
- }
@@ -1,19 +0,0 @@
1
- import { Controller } from "stimulus";
2
- class Toast extends Controller {
3
- connect() {
4
- console.log("connect");
5
- this.element.addEventListener(
6
- "animationend",
7
- ({ animationName }) => {
8
- var _a;
9
- if (animationName == "fade-out") {
10
- (_a = this.element.parentElement) == null ? void 0 : _a.removeChild(this.element);
11
- }
12
- }
13
- );
14
- }
15
- }
16
- export {
17
- Toast as default
18
- };
19
- //# sourceMappingURL=toast.stimulus.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/controllers/toast.stimulus.ts"],
4
- "sourcesContent": ["import { Controller } from \"stimulus\";\n\nexport default class Toast extends Controller {\n\tconnect() {\n\t\tconsole.log(\"connect\");\n\t\tthis.element.addEventListener(\n\t\t\t\"animationend\",\n\t\t\t({ animationName }: AnimationEvent) => {\n\t\t\t\tif (animationName == \"fade-out\") {\n\t\t\t\t\tthis.element.parentElement?.removeChild(this.element);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n}\n"],
5
- "mappings": "AAAA,SAAS,kBAAkB;AAE3B,MAAO,cAA4B,WAAW;AAAA,EAC7C,UAAU;AACT,YAAQ,IAAI,SAAS;AACrB,SAAK,QAAQ;AAAA,MACZ;AAAA,MACA,CAAC,EAAE,cAAc,MAAsB;AAP1C;AAQI,YAAI,iBAAiB,YAAY;AAChC,qBAAK,QAAQ,kBAAb,mBAA4B,YAAY,KAAK;AAAA,QAC9C;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;",
6
- "names": []
7
- }
@@ -1,94 +0,0 @@
1
- import {
2
- documentContainerFromStorage,
3
- documentToParsed,
4
- documentToStorage
5
- } from "@sealcode/jdd";
6
- import JDDCreator from "./jdd-creator.js";
7
- import { tempstream } from "tempstream";
8
- class EditJDDField extends JDDCreator {
9
- async getID(ctx) {
10
- const id = ctx.params["id"];
11
- if (!id) {
12
- throw new Error("Missing URL parameter: id");
13
- }
14
- return id;
15
- }
16
- async getItem(ctx) {
17
- const {
18
- items: [item]
19
- } = await this.getCollection(ctx).list(ctx.$context).ids([await this.getID(ctx)]).fetch();
20
- if (!item) {
21
- throw new Error(
22
- "Couldn't get item of id " + await this.getID(ctx)
23
- );
24
- }
25
- return item;
26
- }
27
- mount(router, path) {
28
- super.mount(router, path);
29
- router.post(path + "save/", async (ctx) => {
30
- const { state } = await this.extractState(ctx);
31
- const item = await this.getItem(ctx);
32
- item.set(
33
- this.getJDDFieldName(),
34
- (await documentToStorage(
35
- this.registry,
36
- this.makeJDDContext(ctx),
37
- {
38
- value: state.components
39
- }
40
- )).value
41
- );
42
- await item.save(ctx.$context);
43
- ctx.type = "html";
44
- ctx.status = 422;
45
- if (!state.messages) {
46
- state.messages = [];
47
- }
48
- state.messages.push("Saved!");
49
- ctx.body = this.render(ctx, state);
50
- });
51
- }
52
- async renderHeader(_ctx, _item) {
53
- return `<h1>Edit JDD</h1>`;
54
- }
55
- async renderPreParameterButtons(ctx) {
56
- const item = await this.getItem(ctx);
57
- return tempstream`<div>${this.renderHeader(ctx, item)}</div>`;
58
- }
59
- renderParameterButtons(state) {
60
- {
61
- }
62
- return `<div class="jdd-editor__toolbar">
63
- <input type="submit" value="Preview" />
64
- <select name="component">
65
- ${Object.keys(this.getRegistryComponents()).map((cmp) => `<option value="${cmp}">${cmp}</option>`).join("")}
66
- </select>
67
- ${this.makeActionButton(state, {
68
- action: "add_component",
69
- label: "Add component"
70
- })}
71
- <input type="submit" formaction="./save/" value="zapisz" />
72
- </div>`;
73
- }
74
- async getInitialState(ctx) {
75
- const article = await this.getItem(ctx);
76
- const parsed_document = await documentToParsed(
77
- this.registry,
78
- this.makeJDDContext(ctx),
79
- documentContainerFromStorage(
80
- article.get(this.getJDDFieldName()) || []
81
- )
82
- );
83
- return {
84
- components: parsed_document.value.map((e) => ({
85
- ...e,
86
- open: true
87
- }))
88
- };
89
- }
90
- }
91
- export {
92
- EditJDDField
93
- };
94
- //# sourceMappingURL=edit-jdd-field.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/edit-jdd-field.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/consistent-type-assertions */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type Router from \"@koa/router\";\nimport type { JDDocumentContainer, RawJDDocument } from \"@sealcode/jdd\";\nimport {\n\tdocumentContainerFromStorage,\n\tdocumentToParsed,\n\tdocumentToStorage,\n} from \"@sealcode/jdd\";\nimport type { Context } from \"koa\";\nimport type { Collection, CollectionItem, FieldNames } from \"sealious\";\nimport JDDCreator from \"./jdd-creator.js\";\nimport type { JDDPageState } from \"./jdd-page.js\";\nimport { tempstream } from \"tempstream\";\n\nexport abstract class EditJDDField<C extends Collection> extends JDDCreator {\n\tasync getID(ctx: Context): Promise<string> {\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/no-unsafe-member-access\n\t\tconst id = ctx.params[\"id\"] as string;\n\t\tif (!id) {\n\t\t\tthrow new Error(\"Missing URL parameter: \" + \"id\");\n\t\t}\n\t\treturn id;\n\t}\n\n\tabstract getCollection(ctx: Context): C;\n\n\tasync getItem(ctx: Context): Promise<CollectionItem<C>> {\n\t\tconst {\n\t\t\titems: [item],\n\t\t} = await this.getCollection(ctx)\n\t\t\t.list(ctx.$context)\n\t\t\t.ids([await this.getID(ctx)])\n\t\t\t.fetch();\n\t\tif (!item) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Couldn't get item of id \" + (await this.getID(ctx))\n\t\t\t);\n\t\t}\n\t\treturn item;\n\t}\n\n\tabstract getJDDFieldName(): FieldNames<C[\"fields\"]>;\n\n\tmount(router: Router, path: string) {\n\t\tsuper.mount(router, path);\n\n\t\trouter.post(path + \"save/\", async (ctx) => {\n\t\t\tconst { state } = await this.extractState(ctx);\n\t\t\tconst item = await this.getItem(ctx);\n\n\t\t\titem.set(\n\t\t\t\tthis.getJDDFieldName(),\n\t\t\t\t(\n\t\t\t\t\tawait documentToStorage(\n\t\t\t\t\t\tthis.registry,\n\t\t\t\t\t\tthis.makeJDDContext(ctx),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: state.components,\n\t\t\t\t\t\t} as unknown as JDDocumentContainer<\"parsed\">\n\t\t\t\t\t)\n\t\t\t\t).value as any\n\t\t\t);\n\t\t\tawait item.save(ctx.$context);\n\t\t\tctx.type = \"html\";\n\t\t\tctx.status = 422;\n\t\t\tif (!state.messages) {\n\t\t\t\tstate.messages = [];\n\t\t\t}\n\t\t\tstate.messages.push(\"Saved!\");\n\t\t\tctx.body = this.render(ctx, state);\n\t\t});\n\t}\n\n\tasync renderHeader(_ctx: Context, _item: CollectionItem<C>) {\n\t\treturn /* HTML */ `<h1>Edit JDD</h1>`;\n\t}\n\n\tasync renderPreParameterButtons(ctx: Context) {\n\t\tconst item = await this.getItem(ctx);\n\t\treturn tempstream`<div>${this.renderHeader(ctx, item)}</div>`;\n\t}\n\n\trenderParameterButtons(state: JDDPageState) {\n\t\t{\n\t\t\t/*The below button has to be here in order for it to be the default behavior */\n\t\t}\n\t\treturn `<div class=\"jdd-editor__toolbar\">\n\t\t\t\t<input type=\"submit\" value=\"Preview\" />\n\t\t\t\t<select name=\"component\">\n\t\t\t\t\t${Object.keys(this.getRegistryComponents())\n\t\t\t\t\t\t.map((cmp) => `<option value=\"${cmp}\">${cmp}</option>`)\n\t\t\t\t\t\t.join(\"\")}\n\t\t\t\t</select>\n\t\t\t\t${this.makeActionButton(state, {\n\t\t\t\t\taction: \"add_component\",\n\t\t\t\t\tlabel: \"Add component\",\n\t\t\t\t})}\n\t\t\t\t<input type=\"submit\" formaction=\"./save/\" value=\"zapisz\" />\n\t\t\t</div>`;\n\t}\n\n\tasync getInitialState(ctx: Context) {\n\t\tconst article = await this.getItem(ctx);\n\t\tconst parsed_document = await documentToParsed(\n\t\t\tthis.registry,\n\t\t\tthis.makeJDDContext(ctx),\n\t\t\tdocumentContainerFromStorage(\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\t(article.get(this.getJDDFieldName()) as RawJDDocument) || []\n\t\t\t)\n\t\t);\n\t\treturn {\n\t\t\tcomponents: parsed_document.value.map((e) => ({\n\t\t\t\t...e,\n\t\t\t\topen: true,\n\t\t\t})),\n\t\t};\n\t}\n\n\t// uncomment to create whitelist of allowed components\n\t// getAllowedComponents() {\n\t// \treturn [\"nice-box\"];\n\t// }\n}\n"],
5
- "mappings": "AAMA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAGP,OAAO,gBAAgB;AAEvB,SAAS,kBAAkB;AAEpB,MAAe,qBAA2C,WAAW;AAAA,EAC3E,MAAM,MAAM,KAA+B;AAE1C,UAAM,KAAK,IAAI,OAAO;AACtB,QAAI,CAAC,IAAI;AACR,YAAM,IAAI,MAAM,4BAAiC;AAAA,IAClD;AACA,WAAO;AAAA,EACR;AAAA,EAIA,MAAM,QAAQ,KAA0C;AACvD,UAAM;AAAA,MACL,OAAO,CAAC,IAAI;AAAA,IACb,IAAI,MAAM,KAAK,cAAc,GAAG,EAC9B,KAAK,IAAI,QAAQ,EACjB,IAAI,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC,EAC3B,MAAM;AACR,QAAI,CAAC,MAAM;AACV,YAAM,IAAI;AAAA,QACT,6BAA8B,MAAM,KAAK,MAAM,GAAG;AAAA,MACnD;AAAA,IACD;AACA,WAAO;AAAA,EACR;AAAA,EAIA,MAAM,QAAgB,MAAc;AACnC,UAAM,MAAM,QAAQ,IAAI;AAExB,WAAO,KAAK,OAAO,SAAS,OAAO,QAAQ;AAC1C,YAAM,EAAE,MAAM,IAAI,MAAM,KAAK,aAAa,GAAG;AAC7C,YAAM,OAAO,MAAM,KAAK,QAAQ,GAAG;AAEnC,WAAK;AAAA,QACJ,KAAK,gBAAgB;AAAA,SAEpB,MAAM;AAAA,UACL,KAAK;AAAA,UACL,KAAK,eAAe,GAAG;AAAA,UACvB;AAAA,YACC,OAAO,MAAM;AAAA,UACd;AAAA,QACD,GACC;AAAA,MACH;AACA,YAAM,KAAK,KAAK,IAAI,QAAQ;AAC5B,UAAI,OAAO;AACX,UAAI,SAAS;AACb,UAAI,CAAC,MAAM,UAAU;AACpB,cAAM,WAAW,CAAC;AAAA,MACnB;AACA,YAAM,SAAS,KAAK,QAAQ;AAC5B,UAAI,OAAO,KAAK,OAAO,KAAK,KAAK;AAAA,IAClC,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,MAAe,OAA0B;AAC3D,WAAkB;AAAA,EACnB;AAAA,EAEA,MAAM,0BAA0B,KAAc;AAC7C,UAAM,OAAO,MAAM,KAAK,QAAQ,GAAG;AACnC,WAAO,kBAAkB,KAAK,aAAa,KAAK,IAAI;AAAA,EACrD;AAAA,EAEA,uBAAuB,OAAqB;AAC3C;AAAA,IAEA;AACA,WAAO;AAAA;AAAA;AAAA,OAGF,OAAO,KAAK,KAAK,sBAAsB,CAAC,EACxC,IAAI,CAAC,QAAQ,kBAAkB,QAAQ,cAAc,EACrD,KAAK,EAAE;AAAA;AAAA,MAER,KAAK,iBAAiB,OAAO;AAAA,MAC9B,QAAQ;AAAA,MACR,OAAO;AAAA,IACR,CAAC;AAAA;AAAA;AAAA,EAGJ;AAAA,EAEA,MAAM,gBAAgB,KAAc;AACnC,UAAM,UAAU,MAAM,KAAK,QAAQ,GAAG;AACtC,UAAM,kBAAkB,MAAM;AAAA,MAC7B,KAAK;AAAA,MACL,KAAK,eAAe,GAAG;AAAA,MACvB;AAAA,QAEE,QAAQ,IAAI,KAAK,gBAAgB,CAAC,KAAuB,CAAC;AAAA,MAC5D;AAAA,IACD;AACA,WAAO;AAAA,MACN,YAAY,gBAAgB,MAAM,IAAI,CAAC,OAAO;AAAA,QAC7C,GAAG;AAAA,QACH,MAAM;AAAA,MACP,EAAE;AAAA,IACH;AAAA,EACD;AAMD;",
6
- "names": []
7
- }
package/lib/src/index.js DELETED
@@ -1,3 +0,0 @@
1
- export * from "./edit-jdd-field.js";
2
- export * from "./components.sreact.js";
3
- //# sourceMappingURL=index.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["export * from \"./edit-jdd-field.js\";\nexport * from \"./components.sreact.js\";\n"],
5
- "mappings": "AAAA,cAAc;AACd,cAAc;",
6
- "names": []
7
- }
@@ -1,30 +0,0 @@
1
- import { printArgPath } from "./print-arg-path.js";
2
- function ComponentInputEnum({
3
- arg_path,
4
- arg,
5
- value,
6
- onchange
7
- }) {
8
- return `<div id=${`component-input-enum-${arg_path.join("-")}`}>
9
- <label>
10
- ${arg_path.at(-1) || ""}
11
- <select
12
- name="${`$${printArgPath(arg_path)}`}"
13
- onchange="${onchange || ""}"
14
- >
15
- ${arg.values.map(
16
- (v) => `<option
17
- value="${v}"
18
- ${value == v ? "selected" : ""}
19
- >
20
- ${v}
21
- </option>`
22
- ).join("")}
23
- </select>
24
- </label>
25
- </div>`;
26
- }
27
- export {
28
- ComponentInputEnum
29
- };
30
- //# sourceMappingURL=component-input-enum.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/inputs/component-input-enum.ts"],
4
- "sourcesContent": ["import type { Enum } from \"@sealcode/jdd\";\nimport { printArgPath } from \"./print-arg-path.js\";\n\nexport function ComponentInputEnum<State, S extends string, T extends Enum<S>>({\n\targ_path,\n\targ,\n\tvalue,\n\tonchange,\n}: {\n\tstate: State;\n\targ_path: string[];\n\targ: T;\n\tvalue: string;\n\tonchange?: string;\n}) {\n\treturn /* HTML */ `<div id=${`component-input-enum-${arg_path.join(\"-\")}`}>\n\t\t<label>\n\t\t\t${arg_path.at(-1) || \"\"}\n\t\t\t<select\n\t\t\t\tname=\"${`$${printArgPath(arg_path)}`}\"\n\t\t\t\tonchange=\"${onchange || \"\"}\"\n\t\t\t>\n\t\t\t\t${arg.values\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(v: S) => /* HTML */ `<option\n\t\t\t\t\t\t\tvalue=\"${v}\"\n\t\t\t\t\t\t\t${value == v ? \"selected\" : \"\"}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${v}\n\t\t\t\t\t\t</option>`\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\")}\n\t\t\t</select>\n\t\t</label>\n\t</div>`;\n}\n"],
5
- "mappings": "AACA,SAAS,oBAAoB;AAEtB,SAAS,mBAA+D;AAAA,EAC9E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAMG;AACF,SAAkB,WAAW,wBAAwB,SAAS,KAAK,GAAG;AAAA;AAAA,KAElE,SAAS,GAAG,EAAE,KAAK;AAAA;AAAA,YAEZ,IAAI,aAAa,QAAQ;AAAA,gBACrB,YAAY;AAAA;AAAA,MAEtB,IAAI,OACJ;AAAA,IACA,CAAC,MAAoB;AAAA,gBACX;AAAA,SACP,SAAS,IAAI,aAAa;AAAA;AAAA,SAE1B;AAAA;AAAA,EAEJ,EACC,KAAK,EAAE;AAAA;AAAA;AAAA;AAIb;",
6
- "names": []
7
- }