@sealcode/jdd-editor 0.2.14 → 0.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nyc_output/51efb67f-ce86-4cce-8246-d293600e6ff2.json +1 -0
- package/.nyc_output/processinfo/0553c492-d66d-4588-be20-d4a284e17ff7.json +1 -0
- package/.nyc_output/processinfo/15c7e9a9-1ea9-4c86-8310-45fa6fc6e38b.json +1 -0
- package/.nyc_output/processinfo/51efb67f-ce86-4cce-8246-d293600e6ff2.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/.xunit +1 -1
- package/@types/components.sreact.d.ts +1 -1
- package/@types/controllers/code-snippet.stimulus.d.ts +6 -0
- package/@types/controllers/json-editor.stimulus.d.ts +0 -1
- package/@types/inputs/component-input-code-with-custom-language.d.ts +7 -0
- package/@types/inputs/component-input-code.d.ts +3 -1
- package/@types/inputs/component-input-list.d.ts +3 -2
- package/@types/inputs/component-input-structured.d.ts +3 -2
- package/@types/inputs/component-input-table.d.ts +3 -2
- package/@types/inputs/component-input.d.ts +3 -2
- package/@types/jdd-creator.d.ts +2 -2
- package/@types/jdd-page.d.ts +4 -2
- package/assets/styles/components.jdd-page.css +5 -2
- package/coverage/clover.xml +173 -170
- package/dist/src/controllers/code-snippet.stimulus.js +12 -0
- package/dist/src/controllers/code-snippet.stimulus.js.map +7 -0
- package/dist/src/controllers/exportable-textarea.stimulus.js +0 -1
- package/dist/src/controllers/exportable-textarea.stimulus.js.map +2 -2
- package/dist/src/controllers/json-editor.stimulus.js +0 -3
- package/dist/src/controllers/json-editor.stimulus.js.map +2 -2
- package/dist/src/edit-jdd-field.js +3 -5
- package/dist/src/edit-jdd-field.js.map +2 -2
- package/dist/src/inputs/component-input-code-with-custom-language.js +41 -0
- package/dist/src/inputs/component-input-code-with-custom-language.js.map +7 -0
- package/dist/src/inputs/component-input-code.js +22 -11
- package/dist/src/inputs/component-input-code.js.map +2 -2
- package/dist/src/inputs/component-input-list.js +3 -1
- package/dist/src/inputs/component-input-list.js.map +2 -2
- package/dist/src/inputs/component-input-structured.js +2 -0
- package/dist/src/inputs/component-input-structured.js.map +2 -2
- package/dist/src/inputs/component-input-table.js +6 -3
- package/dist/src/inputs/component-input-table.js.map +2 -2
- package/dist/src/inputs/component-input.js +22 -6
- package/dist/src/inputs/component-input.js.map +2 -2
- package/dist/src/jdd-page.js +24 -12
- package/dist/src/jdd-page.js.map +2 -2
- package/package.json +2 -2
- package/src/controllers/code-snippet.stimulus.ts +12 -0
- package/src/controllers/exportable-textarea.stimulus.ts +0 -1
- package/src/controllers/json-editor.stimulus.ts +0 -4
- package/src/edit-jdd-field.ts +3 -5
- package/src/inputs/component-input-code-with-custom-language.ts +44 -0
- package/src/inputs/component-input-code.ts +23 -10
- package/src/inputs/component-input-list.ts +9 -1
- package/src/inputs/component-input-structured.ts +4 -0
- package/src/inputs/component-input-table.ts +5 -1
- package/src/inputs/component-input.ts +31 -1
- package/src/jdd-page.ts +31 -13
- package/.nyc_output/b318e449-cc0d-49b3-8647-15d9173f5905.json +0 -1
- package/.nyc_output/processinfo/65a49023-1c6a-4217-ab3e-89a09cde8bfc.json +0 -1
- package/.nyc_output/processinfo/b318e449-cc0d-49b3-8647-15d9173f5905.json +0 -1
- package/.nyc_output/processinfo/be222db4-3db9-4c08-a4b5-58673c1c7c29.json +0 -1
- /package/.nyc_output/{65a49023-1c6a-4217-ab3e-89a09cde8bfc.json → 0553c492-d66d-4588-be20-d4a284e17ff7.json} +0 -0
- /package/.nyc_output/{be222db4-3db9-4c08-a4b5-58673c1c7c29.json → 15c7e9a9-1ea9-4c86-8310-45fa6fc6e38b.json} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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\tgetSessionStorageKey() {\n\t\tconst page_url = document.location.pathname;\n\t\treturn `jdd-editor-autosave__${page_url}`;\n\t}\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\tresetValue() {\n\t\tsessionStorage.setItem(\n\t\t\tthis.getSessionStorageKey(),\n\t\t\tthis.element.innerHTML\n\t\t);\n\t\tif (!this.saving) {\n\t\t\tif (this.cm.getValue() != this.element.innerHTML) {\n\t\t\t\tthis.cm.setValue(this.element.innerHTML);\n\t\t\t}\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\tconst autosave = sessionStorage.getItem(this.getSessionStorageKey());\n\t\tif (autosave) {\n\t\t\tthis.element.innerHTML = autosave;\n\t\t\tconst action = this.element.form?.getAttribute(\"action\");\n\t\t\tif (!action) return;\n\n\t\t\tthis.element.form?.setAttribute(\n\t\t\t\t\"action\",\n\t\t\t\t\"./?action=replace_state&action_args=W10%3D\"\n\t\t\t);\n\t\t\tthis.element.form?.requestSubmit();\n\t\t\tthis.element.form?.setAttribute(\"action\", action);\n\t\t}\n\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(\"<\", \"<\");\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\tthis.resetValue();\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\tthis.resetValue();\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
|
|
5
|
-
"mappings": "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
|
|
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\tgetSessionStorageKey() {\n\t\tconst page_url = document.location.pathname;\n\t\treturn `jdd-editor-autosave__${page_url}`;\n\t}\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\tresetValue() {\n\t\tsessionStorage.setItem(\n\t\t\tthis.getSessionStorageKey(),\n\t\t\tthis.element.innerHTML\n\t\t);\n\t\tif (!this.saving) {\n\t\t\tif (this.cm.getValue() != this.element.innerHTML) {\n\t\t\t\tthis.cm.setValue(this.element.innerHTML);\n\t\t\t}\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\tconst autosave = sessionStorage.getItem(this.getSessionStorageKey());\n\t\tif (autosave) {\n\t\t\tthis.element.innerHTML = autosave;\n\t\t\tconst action = this.element.form?.getAttribute(\"action\");\n\t\t\tif (!action) return;\n\n\t\t\tthis.element.form?.setAttribute(\n\t\t\t\t\"action\",\n\t\t\t\t\"./?action=replace_state&action_args=W10%3D\"\n\t\t\t);\n\t\t\tthis.element.form?.requestSubmit();\n\t\t\tthis.element.form?.setAttribute(\"action\", action);\n\t\t}\n\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(\"<\", \"<\");\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\tthis.resetValue();\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\tthis.resetValue();\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"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -42,11 +42,9 @@ class EditJDDField extends JDDCreator {
|
|
|
42
42
|
await item.save(ctx.$context);
|
|
43
43
|
ctx.type = "html";
|
|
44
44
|
ctx.status = 422;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
state.messages.push("Saved!");
|
|
49
|
-
ctx.body = this.render(ctx, state);
|
|
45
|
+
ctx.body = this.renderWithMessages(ctx, state, [
|
|
46
|
+
{ type: "success", content: "Saved!" }
|
|
47
|
+
]);
|
|
50
48
|
});
|
|
51
49
|
}
|
|
52
50
|
async renderHeader(_ctx, _item) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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\
|
|
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,
|
|
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\tctx.body = this.renderWithMessages(ctx, state, [\n\t\t\t\t{ type: \"success\", content: \"Saved!\" },\n\t\t\t]);\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,OAAO,KAAK,mBAAmB,KAAK,OAAO;AAAA,QAC9C,EAAE,MAAM,WAAW,SAAS,SAAS;AAAA,MACtC,CAAC;AAAA,IACF,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
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { tempstream } from "tempstream";
|
|
2
|
+
import { printArgPath } from "./print-arg-path.js";
|
|
3
|
+
import { is, predicates } from "@sealcode/ts-predicates";
|
|
4
|
+
function ComponentInputCodeWithCustomLanguage({
|
|
5
|
+
language,
|
|
6
|
+
code,
|
|
7
|
+
arg_path,
|
|
8
|
+
component
|
|
9
|
+
}) {
|
|
10
|
+
return tempstream`<div
|
|
11
|
+
id="monaco__${arg_path.join("_")}__for__${component.name}"
|
|
12
|
+
>
|
|
13
|
+
<div data-controller="monaco" data-turbo-permanent="true">
|
|
14
|
+
<input
|
|
15
|
+
data-monaco-target="languageInput"
|
|
16
|
+
data-action="monaco#languageChange"
|
|
17
|
+
type="text"
|
|
18
|
+
name="${`$${printArgPath(arg_path)}`}[language]"
|
|
19
|
+
value="${is(language, predicates.string) ? language : ""}"
|
|
20
|
+
size="40"
|
|
21
|
+
/>
|
|
22
|
+
<div class="monaco-wrapper">
|
|
23
|
+
<textarea
|
|
24
|
+
data-monaco-target="textarea"
|
|
25
|
+
name="$${printArgPath(arg_path)}[code]"
|
|
26
|
+
style="display: none"
|
|
27
|
+
>
|
|
28
|
+
${code}</textarea
|
|
29
|
+
>
|
|
30
|
+
<div
|
|
31
|
+
data-monaco-target="wrapper"
|
|
32
|
+
data-language="${language}"
|
|
33
|
+
></div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>`;
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
ComponentInputCodeWithCustomLanguage
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=component-input-code-with-custom-language.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/inputs/component-input-code-with-custom-language.ts"],
|
|
4
|
+
"sourcesContent": ["import { tempstream } from \"tempstream\";\nimport { printArgPath } from \"./print-arg-path.js\";\nimport { is, predicates } from \"@sealcode/ts-predicates\";\nimport { Component } from \"@sealcode/jdd\";\n\nexport function ComponentInputCodeWithCustomLanguage({\n\tlanguage,\n\tcode,\n\targ_path,\n\tcomponent,\n}: {\n\tcode: string;\n\tlanguage: string;\n\targ_path: string[];\n\tcomponent: Component;\n}): JSX.Element {\n\treturn tempstream /* HTML */ `<div\n\t\tid=\"monaco__${arg_path.join(\"_\")}__for__${component.name}\"\n\t>\n\t\t<div data-controller=\"monaco\" data-turbo-permanent=\"true\">\n\t\t\t<input\n\t\t\t\tdata-monaco-target=\"languageInput\"\n\t\t\t\tdata-action=\"monaco#languageChange\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tname=\"${`$${printArgPath(arg_path)}`}[language]\"\n\t\t\t\tvalue=\"${is(language, predicates.string) ? language : \"\"}\"\n\t\t\t\tsize=\"40\"\n\t\t\t/>\n\t\t\t<div class=\"monaco-wrapper\">\n\t\t\t\t<textarea\n\t\t\t\t\tdata-monaco-target=\"textarea\"\n\t\t\t\t\tname=\"$${printArgPath(arg_path)}[code]\"\n\t\t\t\t\tstyle=\"display: none\"\n\t\t\t\t>\n${code}</textarea\n\t\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tdata-monaco-target=\"wrapper\"\n\t\t\t\t\tdata-language=\"${language}\"\n\t\t\t\t></div>\n\t\t\t</div>\n\t\t</div>\n\t</div>`;\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAC7B,SAAS,IAAI,kBAAkB;AAGxB,SAAS,qCAAqC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAKgB;AACf,SAAO;AAAA,gBACQ,SAAS,KAAK,GAAG,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAO1C,IAAI,aAAa,QAAQ;AAAA,aACxB,GAAG,UAAU,WAAW,MAAM,IAAI,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAM5C,aAAa,QAAQ;AAAA;AAAA;AAAA,EAGjC;AAAA;AAAA;AAAA;AAAA,sBAIoB;AAAA;AAAA;AAAA;AAAA;AAKtB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -3,19 +3,30 @@ import { printArgPath } from "./print-arg-path.js";
|
|
|
3
3
|
function ComponentInputCode({
|
|
4
4
|
language,
|
|
5
5
|
value,
|
|
6
|
-
arg_path
|
|
6
|
+
arg_path,
|
|
7
|
+
component
|
|
7
8
|
}) {
|
|
8
|
-
return tempstream`<div
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
return tempstream`<div
|
|
10
|
+
id="monaco__${arg_path.join("_")}__for__${component.name}"
|
|
11
|
+
>
|
|
12
|
+
<div data-controller="monaco">
|
|
13
|
+
<div class="monaco-wrapper">
|
|
14
|
+
<textarea
|
|
15
|
+
data-monaco-target="textarea"
|
|
16
|
+
name="$${printArgPath(arg_path)}"
|
|
17
|
+
style="display: none"
|
|
18
|
+
>
|
|
19
|
+
${value}</textarea
|
|
20
|
+
>
|
|
21
|
+
<div
|
|
22
|
+
data-monaco-target="wrapper"
|
|
23
|
+
data-language="${language}"
|
|
24
|
+
data-turbo-permanent="true"
|
|
25
|
+
id="${arg_path.join("_")}"
|
|
26
|
+
></div>
|
|
27
|
+
</div>
|
|
17
28
|
</div>
|
|
18
|
-
</div
|
|
29
|
+
</div> `;
|
|
19
30
|
}
|
|
20
31
|
export {
|
|
21
32
|
ComponentInputCode
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/inputs/component-input-code.ts"],
|
|
4
|
-
"sourcesContent": ["import { tempstream } from \"tempstream\";\nimport { printArgPath } from \"./print-arg-path.js\";\n\nexport function ComponentInputCode({\n\tlanguage,\n\tvalue,\n\targ_path,\n}: {\n\tvalue: string;\n\tlanguage: string;\n\targ_path: string[];\n}): JSX.Element {\n\treturn tempstream /* HTML */ `<div
|
|
5
|
-
"mappings": "AAAA,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;
|
|
4
|
+
"sourcesContent": ["import { tempstream } from \"tempstream\";\nimport { printArgPath } from \"./print-arg-path.js\";\nimport { Component } from \"@sealcode/jdd\";\n\nexport function ComponentInputCode({\n\tlanguage,\n\tvalue,\n\targ_path,\n\tcomponent,\n}: {\n\tvalue: string;\n\tlanguage: string;\n\targ_path: string[];\n\tcomponent: Component;\n}): JSX.Element {\n\treturn tempstream /* HTML */ `<div\n\t\tid=\"monaco__${arg_path.join(\"_\")}__for__${component.name}\"\n\t>\n\t\t<div data-controller=\"monaco\">\n\t\t\t<div class=\"monaco-wrapper\">\n\t\t\t\t<textarea\n\t\t\t\t\tdata-monaco-target=\"textarea\"\n\t\t\t\t\tname=\"$${printArgPath(arg_path)}\"\n\t\t\t\t\tstyle=\"display: none\"\n\t\t\t\t>\n${value}</textarea\n\t\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tdata-monaco-target=\"wrapper\"\n\t\t\t\t\tdata-language=\"${language}\"\n\t\t\t\t\tdata-turbo-permanent=\"true\"\n\t\t\t\t\tid=\"${arg_path.join(\"_\")}\"\n\t\t\t\t></div>\n\t\t\t</div>\n\t\t</div>\n\t</div> `;\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAGtB,SAAS,mBAAmB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAKgB;AACf,SAAO;AAAA,gBACQ,SAAS,KAAK,GAAG,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMxC,aAAa,QAAQ;AAAA;AAAA;AAAA,EAGjC;AAAA;AAAA;AAAA;AAAA,sBAIoB;AAAA;AAAA,WAEX,SAAS,KAAK,GAAG;AAAA;AAAA;AAAA;AAAA;AAK5B;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -8,6 +8,7 @@ async function ComponentInputList({
|
|
|
8
8
|
value,
|
|
9
9
|
page,
|
|
10
10
|
makeJDDContext,
|
|
11
|
+
component,
|
|
11
12
|
...rest
|
|
12
13
|
}) {
|
|
13
14
|
if (!value) {
|
|
@@ -27,7 +28,8 @@ async function ComponentInputList({
|
|
|
27
28
|
arg: arg.item_type,
|
|
28
29
|
value: value2,
|
|
29
30
|
page,
|
|
30
|
-
makeJDDContext
|
|
31
|
+
makeJDDContext,
|
|
32
|
+
component
|
|
31
33
|
})}
|
|
32
34
|
${page.makeActionButton(
|
|
33
35
|
state,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/inputs/component-input-list.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport type { Context } from \"koa\";\nimport type {
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport type { Context } from \"koa\";\nimport type {\n\tComponent,\n\tComponentArgument,\n\tJDDContext,\n\tList,\n} from \"@sealcode/jdd\";\nimport type { JDDPageState } from \"../jdd-page.js\";\nimport type { StatefulPage } from \"@sealcode/sealgen\";\nimport { ComponentInput } from \"./component-input.js\";\nimport type { ComponentPreviewActions } from \"../component-preview-actions.js\";\nimport { tempstream } from \"tempstream\";\n\nexport async function ComponentInputList<\n\tState extends JDDPageState,\n\tT extends ComponentArgument<unknown>,\n>({\n\tstate,\n\tctx,\n\targ_path,\n\targ,\n\tvalue,\n\tpage,\n\tmakeJDDContext,\n\tcomponent,\n\t...rest\n}: {\n\tstate: State;\n\tctx: Context;\n\targ_path: string[];\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\targ: List<T, any>;\n\tvalue: T[];\n\tpage: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;\n\tmakeJDDContext: (ctx: Context) => JDDContext;\n\tmakeAssetURL: (asset: string) => string;\n\tcomponent: Component;\n}): Promise<string> {\n\tif (!value) {\n\t\tvalue = [];\n\t}\n\treturn tempstream /* HTML */ `<fieldset\n\t\tid=\"${`component-input-list-${arg_path.join(\"-\")}`}\"\n\t>\n\t\t<legend>${arg_path.at(-1)!}</legend>\n\t\t${value.map(\n\t\t\t(value, i, all_values) =>\n\t\t\t\ttempstream`<div style=\"display: flex\">\n\t\t\t\t\t${ComponentInput({\n\t\t\t\t\t\t...rest,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\targ_path: [...arg_path, i.toString()],\n\t\t\t\t\t\targ: arg.item_type,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tpage,\n\t\t\t\t\t\tmakeJDDContext,\n\t\t\t\t\t\tcomponent,\n\t\t\t\t\t})}\n\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taction: \"move_array_item_down\",\n\t\t\t\t\t\t\tlabel: \"\u2193\",\n\t\t\t\t\t\t\tdisabled: i == all_values.length - 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t\targ_path,\n\t\t\t\t\t\ti\n\t\t\t\t\t)}\n\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taction: \"move_array_item_up\",\n\t\t\t\t\t\t\tlabel: \"\u2191\",\n\t\t\t\t\t\t\tdisabled: i == 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t\targ_path,\n\t\t\t\t\t\ti\n\t\t\t\t\t)}\n\n\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t{ action: \"remove_array_item\", label: \"\u274C\" },\n\t\t\t\t\t\targ_path,\n\t\t\t\t\t\ti\n\t\t\t\t\t)}\n\t\t\t\t</div>`\n\t\t)}\n\t\t${page.makeActionButton(\n\t\t\tstate,\n\t\t\t{\n\t\t\t\taction: \"add_array_item\",\n\t\t\t\tlabel: \"\u2795\",\n\t\t\t},\n\t\t\targ_path\n\t\t)}\n\t</fieldset>`;\n}\n"],
|
|
5
|
+
"mappings": "AAUA,SAAS,sBAAsB;AAE/B,SAAS,kBAAkB;AAE3B,eAAsB,mBAGpB;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,KACG;AACJ,GAWoB;AACnB,MAAI,CAAC,OAAO;AACX,YAAQ,CAAC;AAAA,EACV;AACA,SAAO;AAAA,QACA,wBAAwB,SAAS,KAAK,GAAG;AAAA;AAAA,YAErC,SAAS,GAAG,EAAE;AAAA,IACtB,MAAM;AAAA,IACP,CAACA,QAAO,GAAG,eACV;AAAA,OACG,eAAe;AAAA,MAChB,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA,UAAU,CAAC,GAAG,UAAU,EAAE,SAAS,CAAC;AAAA,MACpC,KAAK,IAAI;AAAA,MACT,OAAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,OACC,KAAK;AAAA,MACN;AAAA,MACA;AAAA,QACC,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,UAAU,KAAK,WAAW,SAAS;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,OACE,KAAK;AAAA,MACN;AAAA,MACA;AAAA,QACC,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,UAAU,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA;AAAA,OAEE,KAAK;AAAA,MACN;AAAA,MACA,EAAE,QAAQ,qBAAqB,OAAO,SAAI;AAAA,MAC1C;AAAA,MACA;AAAA,IACD;AAAA;AAAA,EAEH;AAAA,IACE,KAAK;AAAA,IACN;AAAA,IACA;AAAA,MACC,QAAQ;AAAA,MACR,OAAO;AAAA,IACR;AAAA,IACA;AAAA,EACD;AAAA;AAEF;",
|
|
6
6
|
"names": ["value"]
|
|
7
7
|
}
|
|
@@ -10,6 +10,7 @@ async function ComponentInputStructured({
|
|
|
10
10
|
value,
|
|
11
11
|
page,
|
|
12
12
|
makeJDDContext,
|
|
13
|
+
component,
|
|
13
14
|
...rest
|
|
14
15
|
}) {
|
|
15
16
|
const structure = arg instanceof Structured ? arg.structure : arg.getStructure(
|
|
@@ -34,6 +35,7 @@ async function ComponentInputStructured({
|
|
|
34
35
|
value: value[inner_arg_name],
|
|
35
36
|
page,
|
|
36
37
|
makeJDDContext,
|
|
38
|
+
component,
|
|
37
39
|
...rest
|
|
38
40
|
})}
|
|
39
41
|
</div>`;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/inputs/component-input-structured.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Context } from \"koa\";\nimport {\n\tStructured,\n\ttype ComponentArgument,\n\ttype JDDContext,\n\ttype NestedComponent,\n} from \"@sealcode/jdd\";\nimport type { StatefulPage } from \"@sealcode/sealgen\";\nimport { ComponentInput } from \"./component-input.js\";\nimport type { JDDPageState } from \"../jdd-page.js\";\nimport type { ComponentPreviewActions } from \"../component-preview-actions.js\";\n\nexport async function ComponentInputStructured<\n\tT extends\n\t\t| Structured<Record<string, ComponentArgument<unknown>>>\n\t\t| NestedComponent,\n>({\n\tstate,\n\tctx,\n\targ_path,\n\targ,\n\tvalue,\n\tpage,\n\tmakeJDDContext,\n\t...rest\n}: {\n\tstate: JDDPageState;\n\tctx: Context;\n\targ_path: string[];\n\targ: T;\n\tvalue: Record<string, unknown>;\n\tpage: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;\n\tmakeJDDContext: (ctx: Context) => JDDContext;\n\tmakeAssetURL: (asset: string) => string;\n}) {\n\tconst structure =\n\t\targ instanceof Structured\n\t\t\t? arg.structure\n\t\t\t: arg.getStructure(\n\t\t\t\t\tmakeJDDContext(ctx).registry,\n\t\t\t\t\t(value.component_name as string) ||\n\t\t\t\t\t\t(Object.keys(\n\t\t\t\t\t\t\tmakeJDDContext(ctx).registry.getAll()\n\t\t\t\t\t\t)[0] as string)\n\t\t\t\t);\n\n\treturn /* HTML */ `<fieldset\n\t\tid=\"${`component-input-structured-${arg_path.join(\"-\")}`}\"\n\t>\n\t\t<legend>${arg_path.at(-1) || \"\"}</legend>\n\t\t${(\n\t\t\tawait Promise.all(\n\t\t\t\tObject.entries(structure).map(\n\t\t\t\t\tasync ([inner_arg_name, inner_arg]) => {\n\t\t\t\t\t\tconst ret = `<div>\n\t\t\t\t\t\t${await ComponentInput({\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\targ_path: [...arg_path, inner_arg_name],\n\t\t\t\t\t\t\targ: inner_arg,\n\t\t\t\t\t\t\tvalue: value[inner_arg_name],\n\t\t\t\t\t\t\tpage,\n\t\t\t\t\t\t\tmakeJDDContext,\n\t\t\t\t\t\t\t...rest,\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>`;\n\t\t\t\t\t\treturn ret;\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t)\n\t\t).join(\"\")}\n\t</fieldset>`;\n}\n"],
|
|
5
|
-
"mappings": "AACA;AAAA,
|
|
4
|
+
"sourcesContent": ["import type { Context } from \"koa\";\nimport {\n\tComponent,\n\tStructured,\n\ttype ComponentArgument,\n\ttype JDDContext,\n\ttype NestedComponent,\n} from \"@sealcode/jdd\";\nimport type { StatefulPage } from \"@sealcode/sealgen\";\nimport { ComponentInput } from \"./component-input.js\";\nimport type { JDDPageState } from \"../jdd-page.js\";\nimport type { ComponentPreviewActions } from \"../component-preview-actions.js\";\n\nexport async function ComponentInputStructured<\n\tT extends\n\t\t| Structured<Record<string, ComponentArgument<unknown>>>\n\t\t| NestedComponent,\n>({\n\tstate,\n\tctx,\n\targ_path,\n\targ,\n\tvalue,\n\tpage,\n\tmakeJDDContext,\n\tcomponent,\n\t...rest\n}: {\n\tstate: JDDPageState;\n\tctx: Context;\n\targ_path: string[];\n\targ: T;\n\tvalue: Record<string, unknown>;\n\tpage: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;\n\tmakeJDDContext: (ctx: Context) => JDDContext;\n\tmakeAssetURL: (asset: string) => string;\n\tcomponent: Component;\n}) {\n\tconst structure =\n\t\targ instanceof Structured\n\t\t\t? arg.structure\n\t\t\t: arg.getStructure(\n\t\t\t\t\tmakeJDDContext(ctx).registry,\n\t\t\t\t\t(value.component_name as string) ||\n\t\t\t\t\t\t(Object.keys(\n\t\t\t\t\t\t\tmakeJDDContext(ctx).registry.getAll()\n\t\t\t\t\t\t)[0] as string)\n\t\t\t\t);\n\n\treturn /* HTML */ `<fieldset\n\t\tid=\"${`component-input-structured-${arg_path.join(\"-\")}`}\"\n\t>\n\t\t<legend>${arg_path.at(-1) || \"\"}</legend>\n\t\t${(\n\t\t\tawait Promise.all(\n\t\t\t\tObject.entries(structure).map(\n\t\t\t\t\tasync ([inner_arg_name, inner_arg]) => {\n\t\t\t\t\t\tconst ret = `<div>\n\t\t\t\t\t\t${await ComponentInput({\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\targ_path: [...arg_path, inner_arg_name],\n\t\t\t\t\t\t\targ: inner_arg,\n\t\t\t\t\t\t\tvalue: value[inner_arg_name],\n\t\t\t\t\t\t\tpage,\n\t\t\t\t\t\t\tmakeJDDContext,\n\t\t\t\t\t\t\tcomponent,\n\t\t\t\t\t\t\t...rest,\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>`;\n\t\t\t\t\t\treturn ret;\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t)\n\t\t).join(\"\")}\n\t</fieldset>`;\n}\n"],
|
|
5
|
+
"mappings": "AACA;AAAA,EAEC;AAAA,OAIM;AAEP,SAAS,sBAAsB;AAI/B,eAAsB,yBAIpB;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,KACG;AACJ,GAUG;AACF,QAAM,YACL,eAAe,aACZ,IAAI,YACJ,IAAI;AAAA,IACJ,eAAe,GAAG,EAAE;AAAA,IACnB,MAAM,kBACL,OAAO;AAAA,MACP,eAAe,GAAG,EAAE,SAAS,OAAO;AAAA,IACrC,EAAE;AAAA,EACJ;AAEH,SAAkB;AAAA,QACX,8BAA8B,SAAS,KAAK,GAAG;AAAA;AAAA,YAE3C,SAAS,GAAG,EAAE,KAAK;AAAA,KAE5B,MAAM,QAAQ;AAAA,IACb,OAAO,QAAQ,SAAS,EAAE;AAAA,MACzB,OAAO,CAAC,gBAAgB,SAAS,MAAM;AACtC,cAAM,MAAM;AAAA,QACV,MAAM,eAAe;AAAA,UACtB;AAAA,UACA;AAAA,UACA,UAAU,CAAC,GAAG,UAAU,cAAc;AAAA,UACtC,KAAK;AAAA,UACL,OAAO,MAAM;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA,GAAG;AAAA,QACJ,CAAC;AAAA;AAED,eAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD,GACC,KAAK,EAAE;AAAA;AAEX;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -10,7 +10,8 @@ async function ComponentInputTable({
|
|
|
10
10
|
value,
|
|
11
11
|
page,
|
|
12
12
|
makeJDDContext,
|
|
13
|
-
makeAssetURL
|
|
13
|
+
makeAssetURL,
|
|
14
|
+
component
|
|
14
15
|
}) {
|
|
15
16
|
if (!value) {
|
|
16
17
|
value = await arg.getEmptyValue(makeJDDContext(ctx));
|
|
@@ -130,7 +131,8 @@ async function ComponentInputTable({
|
|
|
130
131
|
value: row.header_content,
|
|
131
132
|
page,
|
|
132
133
|
makeJDDContext,
|
|
133
|
-
makeAssetURL
|
|
134
|
+
makeAssetURL,
|
|
135
|
+
component
|
|
134
136
|
})}
|
|
135
137
|
</th>` : row.cells.map(
|
|
136
138
|
(cell, cell_index) => tempstream`<td>
|
|
@@ -148,7 +150,8 @@ async function ComponentInputTable({
|
|
|
148
150
|
value: cell,
|
|
149
151
|
page,
|
|
150
152
|
makeJDDContext,
|
|
151
|
-
makeAssetURL
|
|
153
|
+
makeAssetURL,
|
|
154
|
+
component
|
|
152
155
|
})}
|
|
153
156
|
</td>`
|
|
154
157
|
)}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/inputs/component-input-table.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport type { JDDContext, Table, TableData } from \"@sealcode/jdd\";\nimport { Markdown } from \"@sealcode/jdd\";\nimport { isTableHeader } from \"@sealcode/jdd\";\nimport type { StatefulPage } from \"@sealcode/sealgen\";\nimport type { Context } from \"koa\";\nimport { tempstream } from \"tempstream\";\nimport { ComponentInput } from \"./component-input.js\";\nimport type { ComponentPreviewActions } from \"../component-preview-actions.js\";\nimport type { JDDPageState } from \"../jdd-page.js\";\n\nexport async function ComponentInputTable<\n\tState extends JDDPageState,\n\tCellType,\n\tHeaderType,\n>({\n\tstate,\n\targ_path,\n\tctx,\n\targ,\n\tvalue,\n\tpage,\n\tmakeJDDContext,\n\tmakeAssetURL,\n}: {\n\tstate: State;\n\tctx: Context;\n\targ_path: string[];\n\targ: Table<CellType, HeaderType>;\n\tvalue: TableData<CellType, HeaderType>;\n\tpage: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;\n\tmakeJDDContext: (ctx: Context) => JDDContext;\n\tmakeAssetURL: (asset: string) => string;\n}): Promise<string> {\n\tif (!value) {\n\t\tvalue = await arg.getEmptyValue(makeJDDContext(ctx));\n\t}\n\n\tconst show_paste =\n\t\targ.cell_type instanceof Markdown &&\n\t\targ.header_type instanceof Markdown;\n\n\treturn tempstream /* HTML */ `<fieldset>\n\t\t<legend>${arg_path.at(-1)!}</legend>\n\t\t<div>\n\t\t\t${show_paste\n\t\t\t\t? /* HTML */ `<input\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvalue=\"paste\"\n\t\t\t\t\t\tplaceholder=\"paste table here\"\n\t\t\t\t\t\tdata-jdd-table-paste-argpath-value=\"${arg_path.join(\n\t\t\t\t\t\t\t\".\"\n\t\t\t\t\t\t)}\"\n\t\t\t\t\t\tdata-controller=\"jdd-table-paste\"\n\t\t\t\t\t/>`\n\t\t\t\t: \"\"}\n\t\t\t<table\n\t\t\t\tclass=\"jdd-component-input--table\"\n\t\t\t\tstyle=\"position: relative; /* necessary for sticky th*/\"\n\t\t\t>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t${[...Array(arg.getColumnsCount(value)).keys()]\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(column_index) =>\n\t\t\t\t\t\t\t\t\t/* HTML */ `<th\n\t\t\t\t\t\t\t\t\t\tclass=\"sticky sticky--top subdued\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\taction: \"remove_table_column\",\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Remove column\",\n\t\t\t\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"icons/table-delete-column.svg\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\targ_path,\n\t\t\t\t\t\t\t\t\t\t\tcolumn_index\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t${column_index >=\n\t\t\t\t\t\t\t\t\t\targ.getColumnsCount(value) - 1\n\t\t\t\t\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t\t\t\t\t: page.makeActionButton(\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taction: \"move_table_column_right\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Move column to the right\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"icons/table-move-column-right.svg\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\targ_path,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn_index\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</th>`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join(\"\")}\n\t\t\t\t\t</tr>\n\t\t\t\t\t${value.rows.map(\n\t\t\t\t\t\t(row, row_index) =>\n\t\t\t\t\t\t\ttempstream /* HTML */ `<tr>\n\t\t\t\t\t\t\t\t<td class=\"sticky sticky--left subdued\">\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle=\"display: flex; flex-flow: column; row-gap: 5px;\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\taction: \"remove_table_row\",\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Remove row\",\n\t\t\t\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"icons/table-delete-row.svg\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\targ_path,\n\t\t\t\t\t\t\t\t\t\t\trow_index\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\taction: \"move_table_row_down\",\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Move this row down\",\n\t\t\t\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"icons/table-move-row-down.svg\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\targ_path,\n\t\t\t\t\t\t\t\t\t\t\trow_index\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t${isTableHeader(row)\n\t\t\t\t\t\t\t\t\t? /* HTML */ tempstream`<th\n\t\t\t\t\t\t\t\t\t\tcolspan=\"${arg.getColumnsCount(value).toString()}\"\n\t\t\t\t\t\t\t\t >\n\t\t\t\t\t\t\t\t\t\t${ComponentInput({\n\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t\t\t\t\targ_path: [\n\t\t\t\t\t\t\t\t\t\t\t\t...arg_path,\n\t\t\t\t\t\t\t\t\t\t\t\t\"rows\",\n\t\t\t\t\t\t\t\t\t\t\t\trow_index.toString(),\n\t\t\t\t\t\t\t\t\t\t\t\t\"header_content\",\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\targ: arg.header_type,\n\t\t\t\t\t\t\t\t\t\t\tvalue: row.header_content,\n\t\t\t\t\t\t\t\t\t\t\tpage,\n\t\t\t\t\t\t\t\t\t\t\tmakeJDDContext,\n\t\t\t\t\t\t\t\t\t\t\tmakeAssetURL,\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t </th>`\n\t\t\t\t\t\t\t\t\t: row.cells.map(\n\t\t\t\t\t\t\t\t\t\t\t(cell, cell_index) =>\n\t\t\t\t\t\t\t\t\t\t\t\ttempstream /* HTML */ `<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t${ComponentInput({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\targ_path: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...arg_path,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"rows\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow_index.toString(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cells\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcell_index.toString(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\targ: arg.cell_type,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: cell,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpage,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmakeJDDContext,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmakeAssetURL,\n\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t</td>`\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t${row_index == 0\n\t\t\t\t\t\t\t\t\t? /* HTML */ `<td\n\t\t\t\t\t\t\t\t\t\t\tclass=\"subdued\"\n\t\t\t\t\t\t\t\t\t\t\trowspan=\"${value.rows.length.toString()}\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\taction: \"add_table_column\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Add column\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"icons/table-add-column-right.svg\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\targ_path\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</td>`\n\t\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t\t</tr>`\n\t\t\t\t\t)}\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td\n\t\t\t\t\t\t\tclass=\"subdued\"\n\t\t\t\t\t\t\tcolspan=\"{(arg.getColumnsCount(value)\"\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t\t1).toString()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\taction: \"add_table_row\",\n\t\t\t\t\t\t\t\t\tlabel: \"Add table row\",\n\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\"icons/table-add-row-below.svg\"\n\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\targ_path,\n\t\t\t\t\t\t\t\targ.getColumnsCount(value),\n\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\taction: \"add_table_row\",\n\t\t\t\t\t\t\t\t\tlabel: \"Add table header\",\n\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\"icons/table-add-column-header-below.svg\"\n\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\targ_path,\n\t\t\t\t\t\t\t\targ.getColumnsCount(value),\n\t\t\t\t\t\t\t\t\"header\"\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t</fieldset>`;\n}\n"],
|
|
5
|
-
"mappings": "AAEA,SAAS,gBAAgB;AACzB,SAAS,qBAAqB;AAG9B,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAI/B,eAAsB,oBAIpB;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport type { Component, JDDContext, Table, TableData } from \"@sealcode/jdd\";\nimport { Markdown } from \"@sealcode/jdd\";\nimport { isTableHeader } from \"@sealcode/jdd\";\nimport type { StatefulPage } from \"@sealcode/sealgen\";\nimport type { Context } from \"koa\";\nimport { tempstream } from \"tempstream\";\nimport { ComponentInput } from \"./component-input.js\";\nimport type { ComponentPreviewActions } from \"../component-preview-actions.js\";\nimport type { JDDPageState } from \"../jdd-page.js\";\n\nexport async function ComponentInputTable<\n\tState extends JDDPageState,\n\tCellType,\n\tHeaderType,\n>({\n\tstate,\n\targ_path,\n\tctx,\n\targ,\n\tvalue,\n\tpage,\n\tmakeJDDContext,\n\tmakeAssetURL,\n\tcomponent,\n}: {\n\tstate: State;\n\tctx: Context;\n\targ_path: string[];\n\targ: Table<CellType, HeaderType>;\n\tvalue: TableData<CellType, HeaderType>;\n\tpage: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;\n\tmakeJDDContext: (ctx: Context) => JDDContext;\n\tmakeAssetURL: (asset: string) => string;\n\tcomponent: Component;\n}): Promise<string> {\n\tif (!value) {\n\t\tvalue = await arg.getEmptyValue(makeJDDContext(ctx));\n\t}\n\n\tconst show_paste =\n\t\targ.cell_type instanceof Markdown &&\n\t\targ.header_type instanceof Markdown;\n\n\treturn tempstream /* HTML */ `<fieldset>\n\t\t<legend>${arg_path.at(-1)!}</legend>\n\t\t<div>\n\t\t\t${show_paste\n\t\t\t\t? /* HTML */ `<input\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvalue=\"paste\"\n\t\t\t\t\t\tplaceholder=\"paste table here\"\n\t\t\t\t\t\tdata-jdd-table-paste-argpath-value=\"${arg_path.join(\n\t\t\t\t\t\t\t\".\"\n\t\t\t\t\t\t)}\"\n\t\t\t\t\t\tdata-controller=\"jdd-table-paste\"\n\t\t\t\t\t/>`\n\t\t\t\t: \"\"}\n\t\t\t<table\n\t\t\t\tclass=\"jdd-component-input--table\"\n\t\t\t\tstyle=\"position: relative; /* necessary for sticky th*/\"\n\t\t\t>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t${[...Array(arg.getColumnsCount(value)).keys()]\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(column_index) =>\n\t\t\t\t\t\t\t\t\t/* HTML */ `<th\n\t\t\t\t\t\t\t\t\t\tclass=\"sticky sticky--top subdued\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\taction: \"remove_table_column\",\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Remove column\",\n\t\t\t\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"icons/table-delete-column.svg\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\targ_path,\n\t\t\t\t\t\t\t\t\t\t\tcolumn_index\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t${column_index >=\n\t\t\t\t\t\t\t\t\t\targ.getColumnsCount(value) - 1\n\t\t\t\t\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t\t\t\t\t: page.makeActionButton(\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taction: \"move_table_column_right\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Move column to the right\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"icons/table-move-column-right.svg\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\targ_path,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn_index\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</th>`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join(\"\")}\n\t\t\t\t\t</tr>\n\t\t\t\t\t${value.rows.map(\n\t\t\t\t\t\t(row, row_index) =>\n\t\t\t\t\t\t\ttempstream /* HTML */ `<tr>\n\t\t\t\t\t\t\t\t<td class=\"sticky sticky--left subdued\">\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle=\"display: flex; flex-flow: column; row-gap: 5px;\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\taction: \"remove_table_row\",\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Remove row\",\n\t\t\t\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"icons/table-delete-row.svg\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\targ_path,\n\t\t\t\t\t\t\t\t\t\t\trow_index\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\taction: \"move_table_row_down\",\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Move this row down\",\n\t\t\t\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"icons/table-move-row-down.svg\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\targ_path,\n\t\t\t\t\t\t\t\t\t\t\trow_index\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t${isTableHeader(row)\n\t\t\t\t\t\t\t\t\t? /* HTML */ tempstream`<th\n\t\t\t\t\t\t\t\t\t\tcolspan=\"${arg.getColumnsCount(value).toString()}\"\n\t\t\t\t\t\t\t\t >\n\t\t\t\t\t\t\t\t\t\t${ComponentInput({\n\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t\t\t\t\targ_path: [\n\t\t\t\t\t\t\t\t\t\t\t\t...arg_path,\n\t\t\t\t\t\t\t\t\t\t\t\t\"rows\",\n\t\t\t\t\t\t\t\t\t\t\t\trow_index.toString(),\n\t\t\t\t\t\t\t\t\t\t\t\t\"header_content\",\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\targ: arg.header_type,\n\t\t\t\t\t\t\t\t\t\t\tvalue: row.header_content,\n\t\t\t\t\t\t\t\t\t\t\tpage,\n\t\t\t\t\t\t\t\t\t\t\tmakeJDDContext,\n\t\t\t\t\t\t\t\t\t\t\tmakeAssetURL,\n\t\t\t\t\t\t\t\t\t\t\tcomponent,\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t </th>`\n\t\t\t\t\t\t\t\t\t: row.cells.map(\n\t\t\t\t\t\t\t\t\t\t\t(cell, cell_index) =>\n\t\t\t\t\t\t\t\t\t\t\t\ttempstream /* HTML */ `<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t${ComponentInput({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\targ_path: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...arg_path,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"rows\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow_index.toString(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cells\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcell_index.toString(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\targ: arg.cell_type,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: cell,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpage,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmakeJDDContext,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmakeAssetURL,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent,\n\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t</td>`\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t${row_index == 0\n\t\t\t\t\t\t\t\t\t? /* HTML */ `<td\n\t\t\t\t\t\t\t\t\t\t\tclass=\"subdued\"\n\t\t\t\t\t\t\t\t\t\t\trowspan=\"${value.rows.length.toString()}\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\taction: \"add_table_column\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Add column\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"icons/table-add-column-right.svg\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\targ_path\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</td>`\n\t\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t\t</tr>`\n\t\t\t\t\t)}\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td\n\t\t\t\t\t\t\tclass=\"subdued\"\n\t\t\t\t\t\t\tcolspan=\"{(arg.getColumnsCount(value)\"\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t\t1).toString()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\taction: \"add_table_row\",\n\t\t\t\t\t\t\t\t\tlabel: \"Add table row\",\n\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\"icons/table-add-row-below.svg\"\n\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\targ_path,\n\t\t\t\t\t\t\t\targ.getColumnsCount(value),\n\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t${page.makeActionButton(\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\taction: \"add_table_row\",\n\t\t\t\t\t\t\t\t\tlabel: \"Add table header\",\n\t\t\t\t\t\t\t\t\tcontent: /* HTML */ `<img\n\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\tsrc=\"${makeAssetURL(\n\t\t\t\t\t\t\t\t\t\t\t\"icons/table-add-column-header-below.svg\"\n\t\t\t\t\t\t\t\t\t\t)}\"\n\t\t\t\t\t\t\t\t\t/>`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\targ_path,\n\t\t\t\t\t\t\t\targ.getColumnsCount(value),\n\t\t\t\t\t\t\t\t\"header\"\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t</fieldset>`;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -8,7 +8,8 @@ import {
|
|
|
8
8
|
NestedComponent,
|
|
9
9
|
SingleReference,
|
|
10
10
|
Structured,
|
|
11
|
-
Table
|
|
11
|
+
Table,
|
|
12
|
+
CodeWithCustomLanguage
|
|
12
13
|
} from "@sealcode/jdd";
|
|
13
14
|
import { is, predicates } from "@sealcode/ts-predicates";
|
|
14
15
|
import { htmlEscape } from "escape-goat";
|
|
@@ -23,6 +24,7 @@ import { ComponentInputSingleReference } from "./component-input-single-referenc
|
|
|
23
24
|
import { ComponentInputStructured } from "./component-input-structured.js";
|
|
24
25
|
import { ComponentInputTable } from "./component-input-table.js";
|
|
25
26
|
import { printArgPath } from "./print-arg-path.js";
|
|
27
|
+
import { ComponentInputCodeWithCustomLanguage } from "./component-input-code-with-custom-language.js";
|
|
26
28
|
const actionName = "Components";
|
|
27
29
|
const absoluteUrlPattern = "http(s?)(://)((www.)?)(([^.]+).)?([a-zA-z0-9-_]+)";
|
|
28
30
|
async function ComponentInput({
|
|
@@ -33,7 +35,8 @@ async function ComponentInput({
|
|
|
33
35
|
value,
|
|
34
36
|
page,
|
|
35
37
|
makeJDDContext,
|
|
36
|
-
makeAssetURL
|
|
38
|
+
makeAssetURL,
|
|
39
|
+
component
|
|
37
40
|
}) {
|
|
38
41
|
if (value === void 0) {
|
|
39
42
|
value = await arg.getEmptyValue(makeJDDContext(ctx));
|
|
@@ -59,7 +62,8 @@ async function ComponentInput({
|
|
|
59
62
|
value,
|
|
60
63
|
page,
|
|
61
64
|
makeJDDContext,
|
|
62
|
-
makeAssetURL
|
|
65
|
+
makeAssetURL,
|
|
66
|
+
component
|
|
63
67
|
});
|
|
64
68
|
}
|
|
65
69
|
if (arg instanceof ComponentArguments.Boolean) {
|
|
@@ -68,6 +72,15 @@ async function ComponentInput({
|
|
|
68
72
|
const argType = arg.getTypeName();
|
|
69
73
|
const isUrlAbsolute = arg instanceof ComponentArguments.URL && arg.urlType === "absolute";
|
|
70
74
|
const inputType = isUrlAbsolute ? "url" : "text";
|
|
75
|
+
if (arg instanceof CodeWithCustomLanguage) {
|
|
76
|
+
const valueCasted = value;
|
|
77
|
+
return ComponentInputCodeWithCustomLanguage({
|
|
78
|
+
language: valueCasted.language,
|
|
79
|
+
code: is(valueCasted.code, predicates.string) ? valueCasted.code : "",
|
|
80
|
+
arg_path,
|
|
81
|
+
component
|
|
82
|
+
});
|
|
83
|
+
}
|
|
71
84
|
if (arg instanceof Structured || arg instanceof NestedComponent) {
|
|
72
85
|
return ComponentInputStructured({
|
|
73
86
|
ctx,
|
|
@@ -77,7 +90,8 @@ async function ComponentInput({
|
|
|
77
90
|
value,
|
|
78
91
|
page,
|
|
79
92
|
makeJDDContext,
|
|
80
|
-
makeAssetURL
|
|
93
|
+
makeAssetURL,
|
|
94
|
+
component
|
|
81
95
|
});
|
|
82
96
|
}
|
|
83
97
|
if (arg instanceof SingleReference) {
|
|
@@ -121,14 +135,16 @@ async function ComponentInput({
|
|
|
121
135
|
value,
|
|
122
136
|
page,
|
|
123
137
|
makeJDDContext,
|
|
124
|
-
makeAssetURL
|
|
138
|
+
makeAssetURL,
|
|
139
|
+
component
|
|
125
140
|
});
|
|
126
141
|
}
|
|
127
142
|
if (arg instanceof Code) {
|
|
128
143
|
return ComponentInputCode({
|
|
129
144
|
language: arg.language,
|
|
130
145
|
value: is(value, predicates.string) ? value : "",
|
|
131
|
-
arg_path
|
|
146
|
+
arg_path,
|
|
147
|
+
component
|
|
132
148
|
});
|
|
133
149
|
}
|
|
134
150
|
const inputElement = () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/inputs/component-input.ts"],
|
|
4
|
-
"sourcesContent": ["import type { FilePointer } from \"@sealcode/file-manager\";\nimport type {
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import type { FilePointer } from \"@sealcode/file-manager\";\nimport type {\n\tComponent,\n\tComponentArgument,\n\tJDDContext,\n\tTableData,\n} from \"@sealcode/jdd\";\nimport {\n\tCode,\n\tColor,\n\tComponentArguments,\n\tEnum,\n\tImage,\n\tList,\n\tNestedComponent,\n\tSingleReference,\n\tStructured,\n\tTable,\n\tCodeWithCustomLanguage,\n} from \"@sealcode/jdd\";\nimport type { StatefulPage } from \"@sealcode/sealgen\";\nimport { is, predicates } from \"@sealcode/ts-predicates\";\nimport { htmlEscape } from \"escape-goat\";\nimport type { Context } from \"koa\";\nimport { tempstream } from \"tempstream\";\nimport type { ComponentPreviewActions } from \"../component-preview-actions.js\";\nimport type { JDDPageState } from \"../jdd-page.js\";\nimport { ComponentCheckbox } from \"./component-input-boolean.js\";\nimport { ComponentInputCode } from \"./component-input-code.js\";\nimport { ComponentInputColor } from \"./component-input-color.js\";\nimport { ComponentInputEnum } from \"./component-input-enum.js\";\nimport { ComponentInputImage } from \"./component-input-image.js\";\nimport { ComponentInputList } from \"./component-input-list.js\";\nimport { ComponentInputSingleReference } from \"./component-input-single-reference.js\";\nimport { ComponentInputStructured } from \"./component-input-structured.js\";\nimport { ComponentInputTable } from \"./component-input-table.js\";\nimport { printArgPath } from \"./print-arg-path.js\";\n\nimport { ComponentInputCodeWithCustomLanguage } from \"./component-input-code-with-custom-language.js\";\n\nexport const actionName = \"Components\";\nconst absoluteUrlPattern = \"http(s?)(://)((www.)?)(([^.]+).)?([a-zA-z0-9-_]+)\";\n\nexport async function ComponentInput<State extends JDDPageState, T>({\n\tctx,\n\tstate,\n\targ_path,\n\targ,\n\tvalue,\n\tpage,\n\tmakeJDDContext,\n\tmakeAssetURL,\n\tcomponent,\n}: {\n\tstate: State;\n\tctx: Context;\n\targ_path: string[];\n\targ: ComponentArgument<T>;\n\tvalue: T;\n\tpage: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;\n\tmakeJDDContext: (ctx: Context) => JDDContext;\n\tmakeAssetURL: (asset: string) => string;\n\tcomponent: Component;\n}): Promise<string> {\n\tif (value === undefined) {\n\t\tvalue = await arg.getEmptyValue(makeJDDContext(ctx));\n\t}\n\tif (arg instanceof Color) {\n\t\treturn ComponentInputColor({\n\t\t\tctx,\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\targ,\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tvalue: value as string,\n\t\t\tpage,\n\t\t\tonchange: page.rerender(),\n\t\t\tmakeJDDContext,\n\t\t});\n\t}\n\tif (arg instanceof List) {\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn ComponentInputList({\n\t\t\tctx,\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\targ,\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tvalue: value as T[],\n\t\t\tpage,\n\t\t\tmakeJDDContext,\n\t\t\tmakeAssetURL,\n\t\t\tcomponent,\n\t\t});\n\t}\n\n\tif (arg instanceof ComponentArguments.Boolean) {\n\t\treturn ComponentCheckbox({ arg_path, arg, value: value as boolean });\n\t}\n\n\tconst argType = arg.getTypeName();\n\tconst isUrlAbsolute =\n\t\targ instanceof ComponentArguments.URL && arg.urlType === \"absolute\";\n\tconst inputType = isUrlAbsolute ? \"url\" : \"text\";\n\n\tif (arg instanceof CodeWithCustomLanguage) {\n\t\tconst valueCasted = value as {\n\t\t\tlanguage: string;\n\t\t\tcode: string;\n\t\t};\n\n\t\treturn ComponentInputCodeWithCustomLanguage({\n\t\t\tlanguage: valueCasted.language,\n\t\t\tcode: is(valueCasted.code, predicates.string)\n\t\t\t\t? valueCasted.code\n\t\t\t\t: \"\",\n\t\t\targ_path,\n\t\t\tcomponent,\n\t\t});\n\t}\n\n\tif (arg instanceof Structured || arg instanceof NestedComponent) {\n\t\treturn ComponentInputStructured({\n\t\t\tctx,\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\targ,\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tvalue: value as Record<string, unknown>,\n\t\t\tpage,\n\t\t\tmakeJDDContext,\n\t\t\tmakeAssetURL,\n\t\t\tcomponent,\n\t\t});\n\t}\n\n\tif (arg instanceof SingleReference) {\n\t\treturn ComponentInputSingleReference({\n\t\t\tctx,\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\targ,\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tvalue: value as string,\n\t\t\tonchange: page.rerender(),\n\t\t\tmakeJDDContext,\n\t\t});\n\t}\n\n\tif (arg instanceof Enum) {\n\t\treturn ComponentInputEnum({\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\targ,\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tvalue: value as string,\n\t\t\tonchange: page.rerender(),\n\t\t\tjdd_context: makeJDDContext(ctx),\n\t\t});\n\t}\n\n\tif (arg instanceof Image) {\n\t\treturn ComponentInputImage({\n\t\t\tctx,\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\targ,\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tvalue: value as FilePointer,\n\t\t\tpage,\n\t\t\tmakeJDDContext,\n\t\t});\n\t}\n\n\tif (arg instanceof Table) {\n\t\treturn ComponentInputTable({\n\t\t\tctx,\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\targ,\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tvalue: value as TableData<unknown, unknown>,\n\t\t\tpage,\n\t\t\tmakeJDDContext,\n\t\t\tmakeAssetURL,\n\t\t\tcomponent,\n\t\t});\n\t}\n\n\tif (arg instanceof Code) {\n\t\treturn ComponentInputCode({\n\t\t\tlanguage: arg.language,\n\t\t\tvalue: is(value, predicates.string) ? value : \"\",\n\t\t\targ_path,\n\t\t\tcomponent,\n\t\t});\n\t}\n\n\tconst inputElement = () => {\n\t\tif (arg instanceof ComponentArguments.Number) {\n\t\t\treturn tempstream /* HTML */ ` <input\n\t\t\t\ttype=\"number\"\n\t\t\t\tname=\"${`$${printArgPath(arg_path)}`}\"\n\t\t\t\tvalue=\"${htmlEscape((value || \"\").toString())}\"\n\t\t\t\tmin=\"${arg.min || \"\"}\"\n\t\t\t\tmax=\"${arg.max || \"\"}\"\n\t\t\t\tstep=\"${arg.step || \"\"}\"\n\t\t\t/>`;\n\t\t} else if (arg instanceof ComponentArguments.URL) {\n\t\t\treturn tempstream /* HTML */ ` <input\n\t\t\t\ttype=\"${isUrlAbsolute ? \"url\" : \"text\"}\"\n\t\t\t\tname=\"${`$${printArgPath(arg_path)}`}\"\n\t\t\t\tvalue=\"${htmlEscape((value || \"\").toString())}\"\n\t\t\t\tsize=\"40\"\n\t\t\t\t${isUrlAbsolute ? `pattern=\"${absoluteUrlPattern}\"` : \"\"}\n\t\t\t/>`;\n\t\t} else {\n\t\t\treturn tempstream /* HTML */ ` <input\n\t\t\t\ttype=\"${inputType}\"\n\t\t\t\tname=\"${`$${printArgPath(arg_path)}`}\"\n\t\t\t\tvalue=\"${is(value, predicates.string) ? htmlEscape(value) : \"\"}\"\n\t\t\t\tsize=\"40\"\n\t\t\t\t${isUrlAbsolute ? `pattern=\"${absoluteUrlPattern}\"` : \"\"}\n\t\t\t/>`;\n\t\t}\n\t};\n\n\treturn /* HTML */ `<div>\n\t\t<label>\n\t\t\t${arg_path.at(-1) || \"\"}\n\t\t\t${argType == \"markdown\"\n\t\t\t\t? /* HTML */ `<div class=\"grow-wrap\">\n\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\tname=\"${`$${printArgPath(arg_path)}`}\"\n\t\t\t\t\t\t\tonblur=\"${page.rerender()}\"\n\t\t\t\t\t\t\tcols=\"40\"\n\t\t\t\t\t\t\tdata-controller=\"markdown-textarea submit-on-input\"\n\t\t\t\t\t\t\tdata-action=\"autogrow-textarea#autogrow blur->autogrow-textarea#autogrow resize->autogrow-textarea#autogrow submit-on-input#sendValues focus->submit-on-input#makePermanent blur->submit-on-input#makeNotPermanent\"\n\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t>\n${is(value, predicates.string) ? value : \"\"}</textarea\n\t\t\t\t\t\t>\n\t\t\t\t\t</div>`\n\t\t\t\t: await inputElement()}\n\t\t</label>\n\t</div>`;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/src/jdd-page.js
CHANGED
|
@@ -122,7 +122,8 @@ class JDDPage extends StatefulPage {
|
|
|
122
122
|
value: args[arg_name] === void 0 || ((_a = component.getArguments()[arg_name]) == null ? void 0 : _a.isEmpty(args[arg_name])) ? await arg.getExampleValue(jdd_context) : args[arg_name],
|
|
123
123
|
page: this,
|
|
124
124
|
makeJDDContext: this.makeJDDContext,
|
|
125
|
-
makeAssetURL: this.makeAssetURL
|
|
125
|
+
makeAssetURL: this.makeAssetURL,
|
|
126
|
+
component
|
|
126
127
|
});
|
|
127
128
|
}
|
|
128
129
|
)}
|
|
@@ -207,16 +208,6 @@ class JDDPage extends StatefulPage {
|
|
|
207
208
|
renderPreParameterButtons(_ctx, _state) {
|
|
208
209
|
return "";
|
|
209
210
|
}
|
|
210
|
-
renderMessages(_ctx, state) {
|
|
211
|
-
return `<ul
|
|
212
|
-
class="jdd-editor__messages"
|
|
213
|
-
data-controller="toast"
|
|
214
|
-
>
|
|
215
|
-
${(state.messages || []).map(
|
|
216
|
-
(e) => `<li class="jdd-editor__message">${e}</li>`
|
|
217
|
-
)}
|
|
218
|
-
</ul>`;
|
|
219
|
-
}
|
|
220
211
|
async render(ctx, state) {
|
|
221
212
|
return tempstream`<div
|
|
222
213
|
class="${["two-column", "component-debugger", ...this.classes].join(" ")}"
|
|
@@ -227,7 +218,11 @@ class JDDPage extends StatefulPage {
|
|
|
227
218
|
<div class="component-arguments" id="component-arguments">
|
|
228
219
|
${this.renderPreParameterButtons(ctx, state)}
|
|
229
220
|
${this.renderParameterButtons(state)}
|
|
230
|
-
|
|
221
|
+
<ul
|
|
222
|
+
id="jdd-editor-messages"
|
|
223
|
+
class="jdd-editor__messages"
|
|
224
|
+
data-controller="toast"
|
|
225
|
+
></ul>
|
|
231
226
|
${state.components.map(
|
|
232
227
|
(component, component_index) => this.renderComponentBlock(
|
|
233
228
|
ctx,
|
|
@@ -378,6 +373,23 @@ class JDDPage extends StatefulPage {
|
|
|
378
373
|
</div>
|
|
379
374
|
</div>`;
|
|
380
375
|
}
|
|
376
|
+
async renderWithMessages(ctx, state, messages) {
|
|
377
|
+
return tempstream`${this.render(ctx, state)}
|
|
378
|
+
${messages.map(
|
|
379
|
+
({ type, content }) => `<turbo-stream
|
|
380
|
+
action="append"
|
|
381
|
+
target="jdd-editor-messages"
|
|
382
|
+
>
|
|
383
|
+
<template>
|
|
384
|
+
<div
|
|
385
|
+
class="jdd-editor__message jdd-editor__message--${type}"
|
|
386
|
+
>
|
|
387
|
+
${content}
|
|
388
|
+
</div>
|
|
389
|
+
</template>
|
|
390
|
+
</turbo-stream>`
|
|
391
|
+
).join("")}`;
|
|
392
|
+
}
|
|
381
393
|
}
|
|
382
394
|
export {
|
|
383
395
|
actionName,
|