@sealcode/jdd-editor 0.1.20 → 0.1.22

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 +6 -5
  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,193 +0,0 @@
1
- import { Controller } from "stimulus";
2
- class ComponentDebugger extends Controller {
3
- connect() {
4
- var _a;
5
- const main_form = (_a = document.querySelector("#component-debugger")) == null ? void 0 : _a.closest("form");
6
- if (!main_form) {
7
- throw new Error("No main form");
8
- }
9
- this.main_form = main_form;
10
- document.documentElement.addEventListener("ts-rebuilt", () => {
11
- this.main_form.requestSubmit();
12
- });
13
- this.main_form.addEventListener("turbo:submit-end", () => {
14
- this.main_form.querySelectorAll("input[type=file]").forEach((input) => input.value = "");
15
- });
16
- window.addEventListener("load", () => {
17
- this.update_width_display();
18
- });
19
- document.addEventListener("turbo:render", () => {
20
- });
21
- const gutter = this.gutterTarget;
22
- gutter.addEventListener("mousedown", (e) => {
23
- this.origin_x = e.clientX;
24
- const resizable = this.targets.find("preview");
25
- this.origin_width = resizable.getBoundingClientRect().width;
26
- const handler = (e2) => this.resizeHandler(e2);
27
- document.addEventListener("mousemove", handler);
28
- const remove_move_listener = () => {
29
- document.removeEventListener("mousemove", handler);
30
- document.removeEventListener("mouseup", remove_move_listener);
31
- document.dispatchEvent(
32
- new Event("component-debugger--resize-done")
33
- );
34
- };
35
- document.addEventListener("mouseup", remove_move_listener);
36
- e.preventDefault();
37
- });
38
- }
39
- update_width_display() {
40
- console.log("uwd");
41
- const preview = this.targets.find("preview");
42
- const component_width = preview.offsetWidth;
43
- this.sizeSelectTarget.querySelectorAll("option").forEach((e) => e.removeAttribute("selected"));
44
- let option = this.sizeSelectTarget.querySelector("option.dynamic");
45
- if (!option) {
46
- option = document.createElement("option");
47
- option.classList.add("dynamic");
48
- option.setAttribute("selected", "");
49
- this.sizeSelectTarget.insertBefore(
50
- option,
51
- this.sizeSelectTarget.childNodes[0]
52
- );
53
- }
54
- option.setAttribute("selected", "");
55
- option.innerHTML = `${component_width} px`;
56
- option.value = String(component_width);
57
- this.sizeSelectTarget.value = String(component_width);
58
- }
59
- resizeHandler(e) {
60
- const width_offset = this.origin_x - e.clientX;
61
- const new_width = Math.max(this.origin_width + width_offset, 1);
62
- this.setPreviewWidth(new_width);
63
- this.update_width_display();
64
- document.dispatchEvent(new Event("component-debugger--resize"));
65
- }
66
- setPreviewWidth(width) {
67
- var _a;
68
- (_a = document.getElementById("component-debugger")) == null ? void 0 : _a.style.setProperty(
69
- "--resizable-column-width",
70
- width.toString() + "px"
71
- );
72
- this.update_width_display();
73
- }
74
- handleWidthDropdown() {
75
- const value = this.sizeSelectTarget.value;
76
- this.setPreviewWidth(parseInt(value));
77
- }
78
- handleBlockHover(e) {
79
- var _a, _b;
80
- const index = parseInt(
81
- ((_a = e.target.closest(".jdd-editor__component-block")) == null ? void 0 : _a.getAttribute("data-component-index")) || "0"
82
- );
83
- (_b = this.element.querySelector(`.component-number-${index}`)) == null ? void 0 : _b.classList.add("highlighted");
84
- }
85
- handleBlockUnhover(e) {
86
- var _a;
87
- const index = parseInt(
88
- ((_a = e.target.closest(".jdd-editor__component-block")) == null ? void 0 : _a.getAttribute("data-component-index")) || ""
89
- );
90
- this.element.querySelectorAll(`.component-number-${index}.highlighted`).forEach((e2) => e2.classList.remove("highlighted"));
91
- }
92
- componentBlockTargetConnected(block_element) {
93
- const index = parseInt(
94
- block_element.getAttribute("data-component-index") || "0"
95
- );
96
- block_element.addEventListener("focusin", () => {
97
- this.scrollToComponentPreview(index);
98
- });
99
- const summary = block_element.querySelector("summary");
100
- if (summary) {
101
- summary.addEventListener(
102
- "mouseenter",
103
- this.handleBlockHover.bind(this)
104
- );
105
- summary.addEventListener(
106
- "mouseleave",
107
- this.handleBlockUnhover.bind(this)
108
- );
109
- }
110
- }
111
- previewTargetConnected(preview_element) {
112
- preview_element.addEventListener("click", ({ target }) => {
113
- var _a;
114
- if (!(target instanceof HTMLElement)) {
115
- return;
116
- }
117
- const closest = target.closest(".jdd-component");
118
- if (!closest) {
119
- return;
120
- }
121
- const index = parseInt(
122
- String(
123
- (_a = Array.from(closest.classList).find((c) => c.startsWith("component-number-"))) == null ? void 0 : _a.replace("component-number-", "")
124
- )
125
- );
126
- if (isNaN(index)) {
127
- return;
128
- }
129
- this.focusComponentBlock(index);
130
- });
131
- }
132
- focusComponentBlock(index) {
133
- var _a;
134
- const block = this.componentBlockTargets[index];
135
- if (!block) {
136
- return;
137
- }
138
- this.checkboxTargets[index].checked = true;
139
- this.checkboxTargets[index].dispatchEvent(new Event("change"));
140
- block.scrollIntoView({ behavior: "smooth" });
141
- (_a = block.querySelector(
142
- ".component-preview-parameters input"
143
- )) == null ? void 0 : _a.focus();
144
- }
145
- getIndex(block_element) {
146
- const index = parseInt(
147
- String(block_element.getAttribute("data-component-index"))
148
- );
149
- return index;
150
- }
151
- labelClicked(element) {
152
- var _a, _b;
153
- const block_element = element.target.closest(
154
- `[data-component-debugger-target="componentBlock"]`
155
- );
156
- const index = this.getIndex(block_element);
157
- if (!((_b = (_a = this.checkboxTargets) == null ? void 0 : _a[index]) == null ? void 0 : _b.checked)) {
158
- this.scrollToComponentPreview(index);
159
- }
160
- }
161
- getPreviewElementForComponentIndex(index) {
162
- const element = this.element.querySelector(
163
- `.component-number-${index}`
164
- );
165
- return element;
166
- }
167
- scrollToComponentPreview(index) {
168
- const element = this.getPreviewElementForComponentIndex(index);
169
- if (!element) {
170
- return;
171
- }
172
- const preview_element = this.element.querySelector(".component-preview");
173
- if (!preview_element) {
174
- throw new Error("Missing preview element!");
175
- }
176
- if (element.clientHeight > preview_element.clientHeight) {
177
- preview_element.scrollTop = element.offsetTop - 44;
178
- } else {
179
- preview_element.scrollTop = element.offsetTop - (preview_element.clientHeight - element.clientHeight) / 2 - 44;
180
- }
181
- }
182
- }
183
- ComponentDebugger.targets = [
184
- "gutter",
185
- "componentBlock",
186
- "checkbox",
187
- "preview",
188
- "sizeSelect"
189
- ];
190
- export {
191
- ComponentDebugger as default
192
- };
193
- //# sourceMappingURL=component-debugger.stimulus.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/controllers/component-debugger.stimulus.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/consistent-type-assertions */\n/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */\nimport { Controller } from \"stimulus\";\n\nexport default class ComponentDebugger extends Controller {\n\tdeclare sizeSelectTarget: HTMLSelectElement;\n\tdeclare gutterTarget: HTMLDivElement;\n\tdeclare checkboxTarget: HTMLInputElement;\n\tdeclare checkboxTargets: HTMLInputElement[];\n\tdeclare previewTarget: HTMLDivElement;\n\tdeclare componentBlockTargets: HTMLDivElement[];\n\tstatic targets = [\n\t\t\"gutter\",\n\t\t\"componentBlock\",\n\t\t\"checkbox\",\n\t\t\"preview\",\n\t\t\"sizeSelect\",\n\t];\n\n\tid: string;\n\tmain_form: HTMLFormElement;\n\torigin_x: number;\n\torigin_width: number;\n\n\tconnect() {\n\t\tconst main_form = document\n\t\t\t.querySelector(\"#component-debugger\")\n\t\t\t?.closest(\"form\");\n\t\tif (!main_form) {\n\t\t\tthrow new Error(\"No main form\");\n\t\t}\n\t\tthis.main_form = main_form;\n\t\tdocument.documentElement.addEventListener(\"ts-rebuilt\", () => {\n\t\t\tthis.main_form.requestSubmit();\n\t\t});\n\t\tthis.main_form.addEventListener(\"turbo:submit-end\", () => {\n\t\t\t// this clears the values of file inputs, so they don't get unecessarily\n\t\t\t// re-uploaded on future submissions - the file is alreade there on the server\n\t\t\tthis.main_form\n\t\t\t\t.querySelectorAll(\"input[type=file]\")\n\t\t\t\t.forEach((input: HTMLInputElement) => (input.value = \"\"));\n\t\t});\n\n\t\twindow.addEventListener(\"load\", () => {\n\t\t\tthis.update_width_display();\n\t\t});\n\t\tdocument.addEventListener(\"turbo:render\", () => {\n\t\t\t// not calling that to see if that improves performance\n\t\t\t// console.log(\"UWD because of render event\");\n\t\t\t// this.update_width_display();\n\t\t});\n\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\tconst gutter = this.gutterTarget;\n\t\tgutter.addEventListener(\"mousedown\", (e) => {\n\t\t\tthis.origin_x = e.clientX;\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tconst resizable = this.targets.find(\"preview\") as HTMLSpanElement;\n\t\t\tthis.origin_width = resizable.getBoundingClientRect().width;\n\t\t\tconst handler = (e: MouseEvent) => this.resizeHandler(e);\n\t\t\tdocument.addEventListener(\"mousemove\", handler);\n\t\t\tconst remove_move_listener = () => {\n\t\t\t\tdocument.removeEventListener(\"mousemove\", handler);\n\t\t\t\tdocument.removeEventListener(\"mouseup\", remove_move_listener);\n\t\t\t\tdocument.dispatchEvent(\n\t\t\t\t\tnew Event(\"component-debugger--resize-done\")\n\t\t\t\t);\n\t\t\t};\n\t\t\tdocument.addEventListener(\"mouseup\", remove_move_listener);\n\t\t\te.preventDefault();\n\t\t});\n\t}\n\n\tupdate_width_display() {\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\tconsole.log(\"uwd\");\n\t\tconst preview = this.targets.find(\"preview\") as HTMLSpanElement;\n\t\tconst component_width = preview.offsetWidth;\n\t\tthis.sizeSelectTarget\n\t\t\t.querySelectorAll(\"option\")\n\t\t\t.forEach((e) => e.removeAttribute(\"selected\"));\n\t\tlet option: HTMLOptionElement | null =\n\t\t\tthis.sizeSelectTarget.querySelector(\"option.dynamic\");\n\t\tif (!option) {\n\t\t\toption = document.createElement(\"option\");\n\t\t\toption.classList.add(\"dynamic\");\n\t\t\toption.setAttribute(\"selected\", \"\");\n\t\t\tthis.sizeSelectTarget.insertBefore(\n\t\t\t\toption,\n\t\t\t\tthis.sizeSelectTarget.childNodes[0]!\n\t\t\t);\n\t\t}\n\t\toption.setAttribute(\"selected\", \"\");\n\t\toption.innerHTML = `${component_width} px`;\n\t\toption.value = String(component_width);\n\t\tthis.sizeSelectTarget.value = String(component_width);\n\t}\n\n\tresizeHandler(e: MouseEvent) {\n\t\tconst width_offset = this.origin_x - e.clientX;\n\t\tconst new_width = Math.max(this.origin_width + width_offset, 1);\n\t\tthis.setPreviewWidth(new_width);\n\t\tthis.update_width_display();\n\t\tdocument.dispatchEvent(new Event(\"component-debugger--resize\"));\n\t}\n\n\tsetPreviewWidth(width: number) {\n\t\tdocument\n\t\t\t.getElementById(\"component-debugger\")\n\t\t\t?.style.setProperty(\n\t\t\t\t\"--resizable-column-width\",\n\t\t\t\twidth.toString() + \"px\"\n\t\t\t);\n\t\tthis.update_width_display();\n\t}\n\n\thandleWidthDropdown() {\n\t\tconst value = this.sizeSelectTarget.value;\n\t\tthis.setPreviewWidth(parseInt(value));\n\t}\n\n\thandleBlockHover(e: MouseEvent) {\n\t\tconst index = parseInt(\n\t\t\t(e.target as HTMLDivElement)\n\t\t\t\t.closest(\".jdd-editor__component-block\")\n\t\t\t\t?.getAttribute(\"data-component-index\") || \"0\"\n\t\t);\n\t\tthis.element\n\t\t\t.querySelector(`.component-number-${index}`)\n\t\t\t?.classList.add(\"highlighted\");\n\t}\n\n\thandleBlockUnhover(e: MouseEvent) {\n\t\tconst index = parseInt(\n\t\t\t(e.target as HTMLDivElement)\n\t\t\t\t.closest(\".jdd-editor__component-block\")\n\t\t\t\t?.getAttribute(\"data-component-index\") || \"\"\n\t\t);\n\t\tthis.element\n\t\t\t.querySelectorAll(`.component-number-${index}.highlighted`)\n\t\t\t.forEach((e) => e.classList.remove(\"highlighted\"));\n\t}\n\n\tcomponentBlockTargetConnected(block_element: HTMLDivElement) {\n\t\tconst index = parseInt(\n\t\t\tblock_element.getAttribute(\"data-component-index\") || \"0\"\n\t\t);\n\t\tblock_element.addEventListener(\"focusin\", () => {\n\t\t\tthis.scrollToComponentPreview(index);\n\t\t});\n\n\t\tconst summary = block_element.querySelector(\"summary\");\n\t\tif (summary) {\n\t\t\tsummary.addEventListener(\n\t\t\t\t\"mouseenter\",\n\t\t\t\tthis.handleBlockHover.bind(this)\n\t\t\t);\n\t\t\tsummary.addEventListener(\n\t\t\t\t\"mouseleave\",\n\t\t\t\tthis.handleBlockUnhover.bind(this)\n\t\t\t);\n\t\t}\n\t}\n\n\tpreviewTargetConnected(preview_element: HTMLDivElement) {\n\t\tpreview_element.addEventListener(\"click\", ({ target }) => {\n\t\t\tif (!(target instanceof HTMLElement)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst closest = target.closest(\".jdd-component\");\n\t\t\tif (!closest) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst index = parseInt(\n\t\t\t\tString(\n\t\t\t\t\tArray.from(closest.classList)\n\t\t\t\t\t\t.find((c) => c.startsWith(\"component-number-\"))\n\t\t\t\t\t\t?.replace(\"component-number-\", \"\")\n\t\t\t\t)\n\t\t\t);\n\t\t\tif (isNaN(index)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.focusComponentBlock(index);\n\t\t});\n\t}\n\n\tfocusComponentBlock(index: number) {\n\t\tconst block = this.componentBlockTargets[index];\n\t\tif (!block) {\n\t\t\treturn;\n\t\t}\n\t\tthis.checkboxTargets[index]!.checked = true;\n\t\tthis.checkboxTargets[index]!.dispatchEvent(new Event(\"change\")); // to help with refreshing markdown editor\n\t\tblock.scrollIntoView({ behavior: \"smooth\" });\n\t\t(\n\t\t\tblock.querySelector(\n\t\t\t\t\".component-preview-parameters input\"\n\t\t\t) as HTMLInputElement\n\t\t)?.focus();\n\t}\n\n\tgetIndex(block_element: HTMLDivElement) {\n\t\tconst index = parseInt(\n\t\t\tString(block_element.getAttribute(\"data-component-index\"))\n\t\t);\n\t\treturn index;\n\t}\n\n\tlabelClicked(element: MouseEvent) {\n\t\tconst block_element = (element.target as HTMLDivElement).closest(\n\t\t\t`[data-component-debugger-target=\"componentBlock\"]`\n\t\t) as HTMLDivElement;\n\t\tconst index = this.getIndex(block_element);\n\t\tif (!this.checkboxTargets?.[index]?.checked) {\n\t\t\tthis.scrollToComponentPreview(index);\n\t\t}\n\t}\n\n\tgetPreviewElementForComponentIndex(index: number) {\n\t\tconst element = this.element.querySelector(\n\t\t\t`.component-number-${index}`\n\t\t) as HTMLDialogElement;\n\t\treturn element;\n\t}\n\n\tscrollToComponentPreview(index: number) {\n\t\tconst element = this.getPreviewElementForComponentIndex(index);\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\t\tconst preview_element =\n\t\t\tthis.element.querySelector(\".component-preview\");\n\t\tif (!preview_element) {\n\t\t\tthrow new Error(\"Missing preview element!\");\n\t\t}\n\t\tif (element.clientHeight > preview_element.clientHeight) {\n\t\t\tpreview_element.scrollTop = element.offsetTop - 44;\n\t\t} else {\n\t\t\tpreview_element.scrollTop =\n\t\t\t\telement.offsetTop -\n\t\t\t\t(preview_element.clientHeight - element.clientHeight) / 2 -\n\t\t\t\t44;\n\t\t}\n\t}\n}\n"],
5
- "mappings": "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",
6
- "names": ["e"]
7
- }
@@ -1,71 +0,0 @@
1
- import { Controller } from "stimulus";
2
- function download(data, filename, type) {
3
- const file = new Blob([data], { type });
4
- const a = document.createElement("a"), url = URL.createObjectURL(file);
5
- a.href = url;
6
- a.download = filename;
7
- document.body.appendChild(a);
8
- a.click();
9
- setTimeout(function() {
10
- document.body.removeChild(a);
11
- window.URL.revokeObjectURL(url);
12
- }, 0);
13
- }
14
- class ExportableTextarea extends Controller {
15
- connect() {
16
- console.log("exportable", this.element);
17
- this.element.removeAttribute("open");
18
- this.element.addEventListener(
19
- "turbo:before-morph-attribute",
20
- (event) => {
21
- if (event.target == this.element && event.detail.attributeName == "open") {
22
- event.preventDefault();
23
- }
24
- }
25
- );
26
- }
27
- async copy(e) {
28
- e.preventDefault();
29
- const textarea = this.element.querySelector("textarea");
30
- if (!textarea) {
31
- throw new Error("Couldn't find the textarea");
32
- }
33
- await navigator.clipboard.writeText(textarea.value);
34
- e.target.textContent = "Copied";
35
- await sleep(1e3);
36
- e.target.textContent = "Copy";
37
- }
38
- async download(e) {
39
- e.preventDefault();
40
- const textarea = this.element.querySelector("textarea");
41
- if (!textarea) {
42
- throw new Error("Couldn't find the textarea");
43
- }
44
- download(
45
- textarea.value,
46
- String(Date.now()) + ".json",
47
- "application/json"
48
- );
49
- }
50
- async import(e) {
51
- var _a;
52
- e.preventDefault();
53
- const file_input = this.element.querySelector(
54
- "input[type='file']"
55
- );
56
- const file = (_a = file_input.files) == null ? void 0 : _a[0];
57
- if (file) {
58
- const text = await file.text();
59
- const textarea = this.element.querySelector("textarea");
60
- textarea.innerHTML = text.replaceAll("<", "&lt;");
61
- textarea.dispatchEvent(new Event("change"));
62
- }
63
- }
64
- }
65
- function sleep(n) {
66
- return new Promise((resolve) => setTimeout(resolve, n));
67
- }
68
- export {
69
- ExportableTextarea as default
70
- };
71
- //# sourceMappingURL=exportable-textarea.stimulus.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/controllers/exportable-textarea.stimulus.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { Controller } from \"stimulus\";\n\nfunction download(data: string, filename: string, type: string) {\n\tconst file = new Blob([data], { type: type });\n\tconst a = document.createElement(\"a\"),\n\t\turl = URL.createObjectURL(file);\n\ta.href = url;\n\ta.download = filename;\n\tdocument.body.appendChild(a);\n\ta.click();\n\tsetTimeout(function () {\n\t\tdocument.body.removeChild(a);\n\t\twindow.URL.revokeObjectURL(url);\n\t}, 0);\n}\n\nexport default class ExportableTextarea extends Controller<HTMLDetailsElement> {\n\tconnect() {\n\t\tconsole.log(\"exportable\", this.element);\n\t\tthis.element.removeAttribute(\"open\");\n\t\tthis.element.addEventListener(\n\t\t\t\"turbo:before-morph-attribute\",\n\t\t\t(event: CustomEvent<{ attributeName: string }>) => {\n\t\t\t\tif (\n\t\t\t\t\tevent.target == this.element &&\n\t\t\t\t\tevent.detail.attributeName == \"open\"\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}\n\n\tasync copy(e: MouseEvent) {\n\t\te.preventDefault();\n\t\tconst textarea = this.element.querySelector(\"textarea\");\n\t\tif (!textarea) {\n\t\t\tthrow new Error(\"Couldn't find the textarea\");\n\t\t}\n\t\tawait navigator.clipboard.writeText(textarea.value);\n\t\t(e.target as HTMLButtonElement).textContent = \"Copied\";\n\t\tawait sleep(1000);\n\t\t(e.target as HTMLButtonElement).textContent = \"Copy\";\n\t}\n\n\tasync download(e: MouseEvent) {\n\t\te.preventDefault();\n\t\tconst textarea = this.element.querySelector(\"textarea\");\n\t\tif (!textarea) {\n\t\t\tthrow new Error(\"Couldn't find the textarea\");\n\t\t}\n\t\tdownload(\n\t\t\ttextarea.value,\n\t\t\tString(Date.now()) + \".json\",\n\t\t\t\"application/json\"\n\t\t);\n\t}\n\n\tasync import(e: MouseEvent) {\n\t\te.preventDefault();\n\t\tconst file_input = this.element.querySelector(\n\t\t\t\"input[type='file']\"\n\t\t) as HTMLInputElement;\n\t\tconst file = file_input.files?.[0];\n\t\tif (file) {\n\t\t\tconst text = await file.text();\n\t\t\tconst textarea = this.element.querySelector(\"textarea\");\n\t\t\ttextarea!.innerHTML = text.replaceAll(\"<\", \"&lt;\");\n\t\t\ttextarea!.dispatchEvent(new Event(\"change\"));\n\t\t}\n\t}\n}\n\nfunction sleep(n: number) {\n\treturn new Promise((resolve) => setTimeout(resolve, n));\n}\n"],
5
- "mappings": "AACA,SAAS,kBAAkB;AAE3B,SAAS,SAAS,MAAc,UAAkB,MAAc;AAC/D,QAAM,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,KAAW,CAAC;AAC5C,QAAM,IAAI,SAAS,cAAc,GAAG,GACnC,MAAM,IAAI,gBAAgB,IAAI;AAC/B,IAAE,OAAO;AACT,IAAE,WAAW;AACb,WAAS,KAAK,YAAY,CAAC;AAC3B,IAAE,MAAM;AACR,aAAW,WAAY;AACtB,aAAS,KAAK,YAAY,CAAC;AAC3B,WAAO,IAAI,gBAAgB,GAAG;AAAA,EAC/B,GAAG,CAAC;AACL;AAEA,MAAO,2BAAyC,WAA+B;AAAA,EAC9E,UAAU;AACT,YAAQ,IAAI,cAAc,KAAK,OAAO;AACtC,SAAK,QAAQ,gBAAgB,MAAM;AACnC,SAAK,QAAQ;AAAA,MACZ;AAAA,MACA,CAAC,UAAkD;AAClD,YACC,MAAM,UAAU,KAAK,WACrB,MAAM,OAAO,iBAAiB,QAC7B;AACD,gBAAM,eAAe;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,KAAK,GAAe;AACzB,MAAE,eAAe;AACjB,UAAM,WAAW,KAAK,QAAQ,cAAc,UAAU;AACtD,QAAI,CAAC,UAAU;AACd,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC7C;AACA,UAAM,UAAU,UAAU,UAAU,SAAS,KAAK;AAClD,IAAC,EAAE,OAA6B,cAAc;AAC9C,UAAM,MAAM,GAAI;AAChB,IAAC,EAAE,OAA6B,cAAc;AAAA,EAC/C;AAAA,EAEA,MAAM,SAAS,GAAe;AAC7B,MAAE,eAAe;AACjB,UAAM,WAAW,KAAK,QAAQ,cAAc,UAAU;AACtD,QAAI,CAAC,UAAU;AACd,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC7C;AACA;AAAA,MACC,SAAS;AAAA,MACT,OAAO,KAAK,IAAI,CAAC,IAAI;AAAA,MACrB;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,OAAO,GAAe;AA3D7B;AA4DE,MAAE,eAAe;AACjB,UAAM,aAAa,KAAK,QAAQ;AAAA,MAC/B;AAAA,IACD;AACA,UAAM,QAAO,gBAAW,UAAX,mBAAmB;AAChC,QAAI,MAAM;AACT,YAAM,OAAO,MAAM,KAAK,KAAK;AAC7B,YAAM,WAAW,KAAK,QAAQ,cAAc,UAAU;AACtD,eAAU,YAAY,KAAK,WAAW,KAAK,MAAM;AACjD,eAAU,cAAc,IAAI,MAAM,QAAQ,CAAC;AAAA,IAC5C;AAAA,EACD;AACD;AAEA,SAAS,MAAM,GAAW;AACzB,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,CAAC,CAAC;AACvD;",
6
- "names": []
7
- }
@@ -1,30 +0,0 @@
1
- import { Controller } from "stimulus";
2
- class InputImagePreview extends Controller {
3
- handleChange() {
4
- var _a, _b, _c, _d;
5
- let img = this.element.querySelector("img");
6
- if (!img) {
7
- img = document.createElement("img");
8
- img.setAttribute("style", "height: 40px; width: 40px");
9
- (_a = this.element.querySelector(".image-preview-container")) == null ? void 0 : _a.appendChild(img);
10
- }
11
- window.URL.revokeObjectURL(img.src);
12
- const file = (_c = (_b = this.element.querySelector("input")) == null ? void 0 : _b.files) == null ? void 0 : _c[0];
13
- if (!file) {
14
- console.warn("No file");
15
- return;
16
- }
17
- const new_url = window.URL.createObjectURL(file);
18
- img.src = new_url;
19
- img.parentNode;
20
- (_d = img.parentElement) == null ? void 0 : _d.querySelectorAll("source").forEach((e) => {
21
- var _a2;
22
- return (_a2 = e.parentNode) == null ? void 0 : _a2.removeChild(e);
23
- });
24
- img.style.aspectRatio = "1";
25
- }
26
- }
27
- export {
28
- InputImagePreview as default
29
- };
30
- //# sourceMappingURL=input-image-preview.stimulus.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/controllers/input-image-preview.stimulus.ts"],
4
- "sourcesContent": ["import { Controller } from \"stimulus\";\n\nexport default class InputImagePreview extends Controller {\n\tid: string;\n\n\thandleChange() {\n\t\tlet img = this.element.querySelector(\"img\");\n\t\tif (!img) {\n\t\t\timg = document.createElement(\"img\");\n\t\t\timg.setAttribute(\"style\", \"height: 40px; width: 40px\");\n\t\t\tthis.element\n\t\t\t\t.querySelector(\".image-preview-container\")\n\t\t\t\t?.appendChild(img);\n\t\t}\n\t\twindow.URL.revokeObjectURL(img.src);\n\t\tconst file = this.element.querySelector(\"input\")?.files?.[0];\n\t\tif (!file) {\n\t\t\tconsole.warn(\"No file\");\n\t\t\treturn;\n\t\t}\n\t\tconst new_url = window.URL.createObjectURL(file);\n\t\timg.src = new_url;\n\t\timg.parentNode;\n\t\timg.parentElement\n\t\t\t?.querySelectorAll(\"source\")\n\t\t\t.forEach((e) => e.parentNode?.removeChild(e));\n\t\timg.style.aspectRatio = \"1\";\n\t}\n}\n"],
5
- "mappings": "AAAA,SAAS,kBAAkB;AAE3B,MAAO,0BAAwC,WAAW;AAAA,EAGzD,eAAe;AALhB;AAME,QAAI,MAAM,KAAK,QAAQ,cAAc,KAAK;AAC1C,QAAI,CAAC,KAAK;AACT,YAAM,SAAS,cAAc,KAAK;AAClC,UAAI,aAAa,SAAS,2BAA2B;AACrD,iBAAK,QACH,cAAc,0BAA0B,MAD1C,mBAEG,YAAY;AAAA,IAChB;AACA,WAAO,IAAI,gBAAgB,IAAI,GAAG;AAClC,UAAM,QAAO,gBAAK,QAAQ,cAAc,OAAO,MAAlC,mBAAqC,UAArC,mBAA6C;AAC1D,QAAI,CAAC,MAAM;AACV,cAAQ,KAAK,SAAS;AACtB;AAAA,IACD;AACA,UAAM,UAAU,OAAO,IAAI,gBAAgB,IAAI;AAC/C,QAAI,MAAM;AACV,QAAI;AACJ,cAAI,kBAAJ,mBACG,iBAAiB,UAClB,QAAQ,CAAC,MAAG;AAzBhB,UAAAA;AAyBmB,cAAAA,MAAA,EAAE,eAAF,gBAAAA,IAAc,YAAY;AAAA;AAC3C,QAAI,MAAM,cAAc;AAAA,EACzB;AACD;",
6
- "names": ["_a"]
7
- }
@@ -1,78 +0,0 @@
1
- import { Controller } from "stimulus";
2
- import TurndownService from "turndown";
3
- import objectPath from "object-path";
4
- const turndownService = new TurndownService();
5
- class jdd_table_paste_stimulus_default extends Controller {
6
- connect() {
7
- this.element.addEventListener("click", async () => {
8
- const clipboardContents = await navigator.clipboard.read();
9
- for (const item of clipboardContents) {
10
- if (!item.types.includes("text/html")) {
11
- alert(
12
- "Nie mo\u017Cna skopiowa\u0107 tabeli - nie znaleziono danych HTML"
13
- );
14
- return;
15
- }
16
- const blob = await item.getType("text/html");
17
- const html = await blob.text();
18
- const div = document.createElement("div");
19
- div.innerHTML = html;
20
- const table = div.querySelector("table");
21
- if (!table) {
22
- alert("No table in clipboard");
23
- }
24
- const rows = Array.from(
25
- (table == null ? void 0 : table.querySelectorAll("tr")) || []
26
- ).map((tr) => {
27
- const cells = Array.from(tr.querySelectorAll("td"));
28
- return {
29
- type: "row",
30
- cells: cells.map(
31
- (cell) => turndownService.turndown(cell)
32
- )
33
- };
34
- });
35
- const form = this.element.closest("form");
36
- const json_textarea = document.getElementById(
37
- "component-debugger-json-textarea"
38
- );
39
- if (!json_textarea) {
40
- console.error(
41
- "Could not find json textarea with the jdd state"
42
- );
43
- return;
44
- }
45
- if (!form) {
46
- throw new Error("Not inside a form");
47
- }
48
- const handler = () => {
49
- document.removeEventListener("turbo:morph", handler);
50
- const state = JSON.parse(json_textarea.value);
51
- objectPath.set(state, this.argpathValue, {
52
- rows
53
- });
54
- json_textarea.childNodes[0].textContent = JSON.stringify(state);
55
- setTimeout(() => {
56
- const submitter_button = document.createElement("button");
57
- submitter_button.setAttribute(
58
- "formaction",
59
- "./?action=replace_state&action_args=W10="
60
- );
61
- form.appendChild(submitter_button);
62
- form.requestSubmit(submitter_button);
63
- submitter_button.remove();
64
- }, 0);
65
- };
66
- document.addEventListener("turbo:morph", handler);
67
- form.requestSubmit();
68
- }
69
- });
70
- }
71
- }
72
- jdd_table_paste_stimulus_default.values = {
73
- argpath: String
74
- };
75
- export {
76
- jdd_table_paste_stimulus_default as default
77
- };
78
- //# sourceMappingURL=jdd-table-paste.stimulus.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/controllers/jdd-table-paste.stimulus.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/consistent-type-assertions */\n/* eslint-disable no-await-in-loop */\n/* eslint-disable @typescript-eslint/no-misused-promises */\nimport { Controller } from \"stimulus\";\nimport TurndownService from \"turndown\";\nimport objectPath from \"object-path\";\n\nconst turndownService = new TurndownService();\n\nexport default class extends Controller<HTMLButtonElement> {\n\tdeclare argpathValue: string;\n\tstatic values = {\n\t\targpath: String,\n\t};\n\n\tconnect() {\n\t\tthis.element.addEventListener(\"click\", async () => {\n\t\t\tconst clipboardContents = await navigator.clipboard.read();\n\t\t\tfor (const item of clipboardContents) {\n\t\t\t\tif (!item.types.includes(\"text/html\")) {\n\t\t\t\t\talert(\n\t\t\t\t\t\t\"Nie mo\u017Cna skopiowa\u0107 tabeli - nie znaleziono danych HTML\"\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst blob = await item.getType(\"text/html\");\n\t\t\t\tconst html = await blob.text();\n\t\t\t\tconst div = document.createElement(\"div\");\n\t\t\t\tdiv.innerHTML = html;\n\t\t\t\tconst table = div.querySelector(\"table\");\n\t\t\t\tif (!table) {\n\t\t\t\t\talert(\"No table in clipboard\");\n\t\t\t\t}\n\t\t\t\tconst rows = Array.from(\n\t\t\t\t\ttable?.querySelectorAll(\"tr\") || []\n\t\t\t\t).map((tr) => {\n\t\t\t\t\tconst cells = Array.from(tr.querySelectorAll(\"td\"));\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"row\",\n\t\t\t\t\t\tcells: cells.map((cell) =>\n\t\t\t\t\t\t\tturndownService.turndown(cell)\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tconst form = this.element.closest(\"form\");\n\t\t\t\tconst json_textarea = document.getElementById(\n\t\t\t\t\t\"component-debugger-json-textarea\"\n\t\t\t\t) as HTMLTextAreaElement;\n\t\t\t\tif (!json_textarea) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\"Could not find json textarea with the jdd state\"\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!form) {\n\t\t\t\t\tthrow new Error(\"Not inside a form\");\n\t\t\t\t}\n\t\t\t\tconst handler = () => {\n\t\t\t\t\tdocument.removeEventListener(\"turbo:morph\", handler);\n\t\t\t\t\tconst state = JSON.parse(json_textarea.value) as unknown;\n\t\t\t\t\tobjectPath.set(state as object, this.argpathValue, {\n\t\t\t\t\t\trows,\n\t\t\t\t\t});\n\n\t\t\t\t\tjson_textarea.childNodes[0]!.textContent =\n\t\t\t\t\t\tJSON.stringify(state);\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t// async in order to give a chance for UI state to update after changing the iframe value\n\t\t\t\t\t\tconst submitter_button =\n\t\t\t\t\t\t\tdocument.createElement(\"button\");\n\t\t\t\t\t\tsubmitter_button.setAttribute(\n\t\t\t\t\t\t\t\"formaction\",\n\t\t\t\t\t\t\t\"./?action=replace_state&action_args=W10=\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\tform.appendChild(submitter_button);\n\t\t\t\t\t\tform.requestSubmit(submitter_button);\n\t\t\t\t\t\tsubmitter_button.remove();\n\t\t\t\t\t}, 0);\n\t\t\t\t};\n\n\t\t\t\tdocument.addEventListener(\"turbo:morph\", handler);\n\t\t\t\tform.requestSubmit(); // to get the newest json first, there may be some\n\t\t\t\t// unsent changes\n\t\t\t}\n\t\t});\n\t}\n}\n"],
5
- "mappings": "AAIA,SAAS,kBAAkB;AAC3B,OAAO,qBAAqB;AAC5B,OAAO,gBAAgB;AAEvB,MAAM,kBAAkB,IAAI,gBAAgB;AAE5C,MAAO,yCAAsB,WAA8B;AAAA,EAM1D,UAAU;AACT,SAAK,QAAQ,iBAAiB,SAAS,YAAY;AAClD,YAAM,oBAAoB,MAAM,UAAU,UAAU,KAAK;AACzD,iBAAW,QAAQ,mBAAmB;AACrC,YAAI,CAAC,KAAK,MAAM,SAAS,WAAW,GAAG;AACtC;AAAA,YACC;AAAA,UACD;AACA;AAAA,QACD;AACA,cAAM,OAAO,MAAM,KAAK,QAAQ,WAAW;AAC3C,cAAM,OAAO,MAAM,KAAK,KAAK;AAC7B,cAAM,MAAM,SAAS,cAAc,KAAK;AACxC,YAAI,YAAY;AAChB,cAAM,QAAQ,IAAI,cAAc,OAAO;AACvC,YAAI,CAAC,OAAO;AACX,gBAAM,uBAAuB;AAAA,QAC9B;AACA,cAAM,OAAO,MAAM;AAAA,WAClB,+BAAO,iBAAiB,UAAS,CAAC;AAAA,QACnC,EAAE,IAAI,CAAC,OAAO;AACb,gBAAM,QAAQ,MAAM,KAAK,GAAG,iBAAiB,IAAI,CAAC;AAClD,iBAAO;AAAA,YACN,MAAM;AAAA,YACN,OAAO,MAAM;AAAA,cAAI,CAAC,SACjB,gBAAgB,SAAS,IAAI;AAAA,YAC9B;AAAA,UACD;AAAA,QACD,CAAC;AAED,cAAM,OAAO,KAAK,QAAQ,QAAQ,MAAM;AACxC,cAAM,gBAAgB,SAAS;AAAA,UAC9B;AAAA,QACD;AACA,YAAI,CAAC,eAAe;AACnB,kBAAQ;AAAA,YACP;AAAA,UACD;AACA;AAAA,QACD;AACA,YAAI,CAAC,MAAM;AACV,gBAAM,IAAI,MAAM,mBAAmB;AAAA,QACpC;AACA,cAAM,UAAU,MAAM;AACrB,mBAAS,oBAAoB,eAAe,OAAO;AACnD,gBAAM,QAAQ,KAAK,MAAM,cAAc,KAAK;AAC5C,qBAAW,IAAI,OAAiB,KAAK,cAAc;AAAA,YAClD;AAAA,UACD,CAAC;AAED,wBAAc,WAAW,GAAI,cAC5B,KAAK,UAAU,KAAK;AACrB,qBAAW,MAAM;AAEhB,kBAAM,mBACL,SAAS,cAAc,QAAQ;AAChC,6BAAiB;AAAA,cAChB;AAAA,cACA;AAAA,YACD;AACA,iBAAK,YAAY,gBAAgB;AACjC,iBAAK,cAAc,gBAAgB;AACnC,6BAAiB,OAAO;AAAA,UACzB,GAAG,CAAC;AAAA,QACL;AAEA,iBAAS,iBAAiB,eAAe,OAAO;AAChD,aAAK,cAAc;AAAA,MAEpB;AAAA,IACD,CAAC;AAAA,EACF;AACD;AA9EO,iCAEC,SAAS;AAAA,EACf,SAAS;AACV;",
6
- "names": []
7
- }
@@ -1,114 +0,0 @@
1
- import { Controller } from "stimulus";
2
- const JS_ID = "codemirror-js";
3
- const JS_PATH = "/dist/codemirror.js";
4
- const JS_MODE_ID = "codemirror-js-mode-js";
5
- const JS_MODE_PATH = "/dist/codemirror-javascript-mode.js";
6
- const CSS_ID = "codemirror-css";
7
- const CSS_PATH = "/dist/codemirror.css";
8
- class JSONEditor extends Controller {
9
- constructor() {
10
- super(...arguments);
11
- this.saving = false;
12
- }
13
- addCSS() {
14
- const tag = document.querySelector(`head #${CSS_ID}`);
15
- if (!tag) {
16
- const link = document.createElement("link");
17
- link.setAttribute("rel", "stylesheet");
18
- link.setAttribute("type", "text/css");
19
- link.setAttribute("id", CSS_ID);
20
- link.setAttribute("href", CSS_PATH);
21
- document.head.appendChild(link);
22
- }
23
- }
24
- async addJS(js_id, js_path) {
25
- return new Promise((resolve, reject) => {
26
- const once_loaded = (e) => {
27
- e.target.setAttribute("loaded", "true");
28
- resolve();
29
- };
30
- try {
31
- const tag = document.querySelector(`head #${js_id}`);
32
- if (!tag) {
33
- const script = document.createElement("script");
34
- script.setAttribute("id", js_id);
35
- script.setAttribute("src", js_path);
36
- script.addEventListener("load", once_loaded);
37
- document.head.appendChild(script);
38
- } else {
39
- if (tag.getAttribute("loaded") == "true") {
40
- resolve();
41
- } else {
42
- tag.addEventListener("load", once_loaded);
43
- }
44
- }
45
- } catch (e) {
46
- reject(e);
47
- }
48
- });
49
- }
50
- async connect() {
51
- var _a, _b;
52
- if ((_a = this.element.parentNode) == null ? void 0 : _a.querySelector(".CodeMirror")) {
53
- return;
54
- }
55
- this.addCSS();
56
- await this.addJS(JS_ID, JS_PATH);
57
- await this.addJS(JS_MODE_ID, JS_MODE_PATH);
58
- this.cm = CodeMirror.fromTextArea(this.element, {
59
- mode: {
60
- name: "javascript",
61
- json: true
62
- },
63
- theme: "default",
64
- addModeClass: true,
65
- lineWrapping: true
66
- });
67
- this.cm.on("change", () => {
68
- this.saving = true;
69
- this.element.innerHTML = this.cm.getValue().replace("<", "&lt;");
70
- this.saving = false;
71
- });
72
- this.cm.getWrapperElement().setAttribute("data-turbo-permanent", "");
73
- const observer = new MutationObserver((mutation) => {
74
- console.log("DETECTED TEXTAREA MUTATION CHANGE!", mutation);
75
- if (!this.saving) {
76
- if (this.cm.getValue() != this.element.innerHTML) {
77
- console.log(
78
- "SETTING CM VALUE TO",
79
- this.element.innerHTML.slice(0, 100)
80
- );
81
- this.cm.setValue(this.element.innerHTML);
82
- }
83
- }
84
- });
85
- observer.observe(this.element, {
86
- characterData: true,
87
- subtree: true
88
- });
89
- this.element.addEventListener("change", () => {
90
- console.log("DETECTED TEXTAREA CHANGE!");
91
- if (!this.saving) {
92
- if (this.cm.getValue() != this.element.innerHTML) {
93
- console.log(
94
- "SETTING CM VALUE TO",
95
- this.element.innerHTML.slice(0, 100)
96
- );
97
- this.cm.setValue(this.element.innerHTML);
98
- }
99
- }
100
- });
101
- (_b = this.element.closest("details")) == null ? void 0 : _b.addEventListener("toggle", (event) => {
102
- if (event.target.open) {
103
- this.cm.refresh();
104
- }
105
- });
106
- }
107
- async disconnect() {
108
- console.log("DISCONNECTING JSON EDITOR");
109
- }
110
- }
111
- export {
112
- JSONEditor as default
113
- };
114
- //# sourceMappingURL=json-editor.stimulus.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/controllers/json-editor.stimulus.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { Controller } from \"stimulus\";\n\nconst JS_ID = \"codemirror-js\";\nconst JS_PATH = \"/dist/codemirror.js\";\n\nconst JS_MODE_ID = \"codemirror-js-mode-js\";\nconst JS_MODE_PATH = \"/dist/codemirror-javascript-mode.js\";\n\nconst CSS_ID = \"codemirror-css\";\nconst CSS_PATH = \"/dist/codemirror.css\";\n\ndeclare const CodeMirror: any;\n\nexport default class JSONEditor extends Controller<HTMLTextAreaElement> {\n\tcm: any;\n\tsaving = 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\", CSS_PATH);\n\t\t\tdocument.head.appendChild(link);\n\t\t}\n\t}\n\n\tasync addJS(js_id: string, js_path: string) {\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\", js_path);\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\tasync connect() {\n\t\tif (this.element.parentNode?.querySelector(\".CodeMirror\")) {\n\t\t\t//already loaded, quit;\n\t\t\treturn;\n\t\t}\n\t\tthis.addCSS();\n\t\tawait this.addJS(JS_ID, JS_PATH);\n\t\tawait this.addJS(JS_MODE_ID, JS_MODE_PATH);\n\t\tthis.cm = CodeMirror.fromTextArea(this.element, {\n\t\t\tmode: {\n\t\t\t\tname: \"javascript\",\n\t\t\t\tjson: true,\n\t\t\t},\n\t\t\ttheme: \"default\",\n\t\t\taddModeClass: true,\n\t\t\tlineWrapping: true,\n\t\t});\n\t\tthis.cm.on(\"change\", () => {\n\t\t\tthis.saving = true;\n\t\t\tthis.element.innerHTML = this.cm.getValue().replace(\"<\", \"&lt;\");\n\t\t\tthis.saving = false;\n\t\t});\n\t\t// to prevent morhping from removing the element\n\t\tthis.cm.getWrapperElement().setAttribute(\"data-turbo-permanent\", \"\");\n\t\tconst observer = new MutationObserver((mutation) => {\n\t\t\tconsole.log(\"DETECTED TEXTAREA MUTATION CHANGE!\", mutation);\n\t\t\tif (!this.saving) {\n\t\t\t\tif (this.cm.getValue() != this.element.innerHTML) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\"SETTING CM VALUE TO\",\n\t\t\t\t\t\tthis.element.innerHTML.slice(0, 100)\n\t\t\t\t\t);\n\t\t\t\t\tthis.cm.setValue(this.element.innerHTML);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tobserver.observe(this.element, {\n\t\t\tcharacterData: true,\n\t\t\tsubtree: true,\n\t\t});\n\n\t\tthis.element.addEventListener(\"change\", () => {\n\t\t\tconsole.log(\"DETECTED TEXTAREA CHANGE!\");\n\t\t\tif (!this.saving) {\n\t\t\t\tif (this.cm.getValue() != this.element.innerHTML) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\"SETTING CM VALUE TO\",\n\t\t\t\t\t\tthis.element.innerHTML.slice(0, 100)\n\t\t\t\t\t);\n\t\t\t\t\tthis.cm.setValue(this.element.innerHTML);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.element\n\t\t\t.closest(\"details\")\n\t\t\t?.addEventListener(\"toggle\", (event: MouseEvent) => {\n\t\t\t\tif ((event.target as HTMLDetailsElement).open) {\n\t\t\t\t\tthis.cm.refresh();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tasync disconnect() {\n\t\tconsole.log(\"DISCONNECTING JSON EDITOR\");\n\t}\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }