@sealcode/jdd-editor 0.2.4 → 0.2.7

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 (39) hide show
  1. package/@types/inputs/component-input-code.d.ts +5 -0
  2. package/@types/inputs/component-input-enum.d.ts +3 -2
  3. package/assets/styles/atom-one-light.css +72 -0
  4. package/assets/styles/components.jdd-page.css +13 -6
  5. package/dist/src/component-preview-actions.js +1 -3
  6. package/dist/src/component-preview-actions.js.map +2 -2
  7. package/dist/src/components.sreact.js +5 -5
  8. package/dist/src/components.sreact.js.map +2 -2
  9. package/dist/src/inputs/component-input-code.js +23 -0
  10. package/dist/src/inputs/component-input-code.js.map +7 -0
  11. package/dist/src/inputs/component-input-color.js.map +1 -1
  12. package/dist/src/inputs/component-input-enum.js +8 -7
  13. package/dist/src/inputs/component-input-enum.js.map +2 -2
  14. package/dist/src/inputs/component-input-image.js.map +1 -1
  15. package/dist/src/inputs/component-input-list.js.map +1 -1
  16. package/dist/src/inputs/component-input-single-reference.js +5 -5
  17. package/dist/src/inputs/component-input-single-reference.js.map +2 -2
  18. package/dist/src/inputs/component-input-structured.js.map +2 -2
  19. package/dist/src/inputs/component-input-table.js +44 -44
  20. package/dist/src/inputs/component-input-table.js.map +2 -2
  21. package/dist/src/inputs/component-input.js +13 -3
  22. package/dist/src/inputs/component-input.js.map +2 -2
  23. package/dist/src/jdd-creator.js.map +1 -1
  24. package/dist/src/jdd-page.js +14 -8
  25. package/dist/src/jdd-page.js.map +2 -2
  26. package/package.json +6 -4
  27. package/src/component-preview-actions.ts +2 -3
  28. package/src/components.sreact.ts +9 -8
  29. package/src/inputs/component-input-code.ts +24 -0
  30. package/src/inputs/component-input-color.ts +1 -1
  31. package/src/inputs/component-input-enum.ts +12 -8
  32. package/src/inputs/component-input-image.ts +1 -1
  33. package/src/inputs/component-input-list.ts +2 -2
  34. package/src/inputs/component-input-single-reference.ts +8 -7
  35. package/src/inputs/component-input-structured.ts +2 -2
  36. package/src/inputs/component-input-table.ts +127 -127
  37. package/src/inputs/component-input.ts +15 -4
  38. package/src/jdd-creator.ts +1 -1
  39. package/src/jdd-page.ts +22 -13
@@ -0,0 +1,5 @@
1
+ export declare function ComponentInputCode({ language, value, arg_path, }: {
2
+ value: string;
3
+ language: string;
4
+ arg_path: string[];
5
+ }): JSX.Element;
@@ -1,8 +1,9 @@
1
- import type { Enum } from "@sealcode/jdd";
2
- export declare function ComponentInputEnum<State, S extends string, T extends Enum<S>>({ arg_path, arg, value, onchange, }: {
1
+ import type { Enum, JDDContext } from "@sealcode/jdd";
2
+ export declare function ComponentInputEnum<State, S extends string, T extends Enum<S>>({ arg_path, arg, value, onchange, jdd_context, }: {
3
3
  state: State;
4
4
  arg_path: string[];
5
5
  arg: T;
6
6
  value: string;
7
7
  onchange?: string;
8
+ jdd_context: JDDContext;
8
9
  }): string;
@@ -0,0 +1,72 @@
1
+ /*Stylesheet from https://github.com/highlightjs/highlight.js*/
2
+ pre code.hljs {
3
+ display: block;
4
+ overflow-x: auto;
5
+ padding: 1em;
6
+ }
7
+ code.hljs {
8
+ padding: 3px 5px;
9
+ }
10
+ .hljs {
11
+ color: #383a42;
12
+ background: #fafafa;
13
+ }
14
+ .hljs-comment,
15
+ .hljs-quote {
16
+ color: #a0a1a7;
17
+ font-style: italic;
18
+ }
19
+ .hljs-doctag,
20
+ .hljs-formula,
21
+ .hljs-keyword {
22
+ color: #a626a4;
23
+ }
24
+ .hljs-deletion,
25
+ .hljs-name,
26
+ .hljs-section,
27
+ .hljs-selector-tag,
28
+ .hljs-subst {
29
+ color: #e45649;
30
+ }
31
+ .hljs-literal {
32
+ color: #0184bb;
33
+ }
34
+ .hljs-addition,
35
+ .hljs-attribute,
36
+ .hljs-meta .hljs-string,
37
+ .hljs-regexp,
38
+ .hljs-string {
39
+ color: #50a14f;
40
+ }
41
+ .hljs-attr,
42
+ .hljs-number,
43
+ .hljs-selector-attr,
44
+ .hljs-selector-class,
45
+ .hljs-selector-pseudo,
46
+ .hljs-template-variable,
47
+ .hljs-type,
48
+ .hljs-variable {
49
+ color: #986801;
50
+ }
51
+ .hljs-bullet,
52
+ .hljs-link,
53
+ .hljs-meta,
54
+ .hljs-selector-id,
55
+ .hljs-symbol,
56
+ .hljs-title {
57
+ color: #4078f2;
58
+ }
59
+ .hljs-built_in,
60
+ .hljs-class .hljs-title,
61
+ .hljs-title.class_ {
62
+ color: #c18401;
63
+ }
64
+ .hljs-emphasis {
65
+ font-style: italic;
66
+ }
67
+ .hljs-strong {
68
+ font-weight: 700;
69
+ }
70
+ .hljs-link {
71
+ text-decoration: underline;
72
+ }
@@ -41,7 +41,9 @@ body.jdd-editor {
41
41
  overflow-x: auto;
42
42
  }
43
43
 
44
- transition: transform 200ms, opacity 200ms;
44
+ transition:
45
+ transform 200ms,
46
+ opacity 200ms;
45
47
  &.restarting {
46
48
  transform: scale(0.99);
47
49
  opacity: 0.6;
@@ -122,12 +124,15 @@ body.jdd-editor {
122
124
  padding: 10px;
123
125
  background-color: color-mix(in srgb, var(--color) 10%, white);
124
126
  color: color-mix(in srgb, var(--color) 31%, black);
125
- animation: notification-pop 400ms, fade-out 800ms;
126
- animation-timing-function: cubic-bezier(0.68, -0.55, 0.27, 1.55),
127
- linear;
127
+ animation:
128
+ notification-pop 400ms,
129
+ fade-out 800ms;
130
+ animation-timing-function:
131
+ cubic-bezier(0.68, -0.55, 0.27, 1.55), linear;
128
132
  animation-delay: 0ms, 2000ms;
129
133
  animation-fill-mode: forwards, both;
130
- box-shadow: rgba(0, 0, 0, 0.16) 0px 3px 6px,
134
+ box-shadow:
135
+ rgba(0, 0, 0, 0.16) 0px 3px 6px,
131
136
  rgba(0, 0, 0, 0.23) 0px 3px 6px;
132
137
  }
133
138
  }
@@ -278,7 +283,9 @@ body.jdd-editor {
278
283
  container-type: inline-size;
279
284
 
280
285
  * {
281
- transition: all 150ms, outline 0ms;
286
+ transition:
287
+ all 150ms,
288
+ outline 0ms;
282
289
  }
283
290
 
284
291
  fieldset {
@@ -193,9 +193,7 @@ const ComponentPreviewActions = {
193
193
  if (type == "header") {
194
194
  row = {
195
195
  type: "header",
196
- header_content: await argument.header_type.getExampleValue(
197
- jdd_context
198
- )
196
+ header_content: await argument.header_type.getExampleValue(jdd_context)
199
197
  };
200
198
  } else {
201
199
  const cells = [];
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/component-preview-actions.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/consistent-type-assertions */\nimport type { Registry, TableData } from \"@sealcode/jdd\";\nimport { List, makeSimpleEnglishJDDContext, Table } from \"@sealcode/jdd\";\nimport { isTableData, isTableRegularRow } from \"@sealcode/jdd\";\nimport objectPath from \"object-path\";\nimport type { JDDPageState } from \"./jdd-page.js\";\nimport type {\n\tStatefulPageAction,\n\tStatefulPageActionArgument,\n} from \"@sealcode/sealgen\";\nimport type JDDPage from \"./jdd-page.js\";\n\nfunction moveElement<T>(\n\tarray: Array<T>,\n\tfromIndex: number,\n\ttoIndex: number\n): Array<T> {\n\tconst element = array.splice(fromIndex, 1)[0];\n\tarray.splice(toIndex, 0, element as T);\n\treturn array;\n}\n\nexport function getComponentData(\n\tstate: JDDPageState,\n\targ_path: string[],\n\tregistry: Registry\n) {\n\tconst index_arg = arg_path[1];\n\tif (!index_arg) {\n\t\tthrow new Error(\"Missing component index in arg path\");\n\t}\n\tconst component_index = parseInt(index_arg);\n\tconst component_args = state.components[component_index]?.args || {};\n\tconst component_name =\n\t\tstate.components[component_index]?.component_name || \"\";\n\tconst component = registry.get(component_name);\n\tconst arg_path_within_component = arg_path.slice(3); // remove \"components\" and the index of the component and \"args\"\n\n\tconst [argument, , argument_value] = component?.getArgumentAtPath(\n\t\tmakeSimpleEnglishJDDContext({ registry }),\n\t\targ_path_within_component,\n\t\tcomponent_args\n\t) || [null, null, null];\n\n\treturn {\n\t\tcomponent_index,\n\t\tcomponent_args,\n\t\tcomponent_name,\n\t\tcomponent,\n\t\targument,\n\t\targument_value,\n\t\targ_path_within_component,\n\t};\n}\n\nexport const ComponentPreviewActions = (<const>{\n\tadd_array_item: async ({\n\t\tctx,\n\t\tstate,\n\t\targs: [arg_path],\n\t\tpage,\n\t}: StatefulPageActionArgument<JDDPageState, [string[]]>) => {\n\t\tconst {\n\t\t\tcomponent_name,\n\t\t\tcomponent,\n\t\t\targument,\n\t\t\targ_path_within_component,\n\t\t\targument_value,\n\t\t} = getComponentData(state, arg_path, (page as JDDPage).registry);\n\t\tif (!component) {\n\t\t\tconsole.error(\"unknown component: \", component_name);\n\t\t\treturn state;\n\t\t}\n\t\tif (!argument) {\n\t\t\tconsole.error(\n\t\t\t\t\"Didn't find a list argument at this path\",\n\t\t\t\targ_path_within_component\n\t\t\t);\n\t\t\tconsole.debug(\"Found this instead:\", argument);\n\t\t\treturn state;\n\t\t}\n\t\tif (!(argument instanceof List)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Expected argument in path ${arg_path.join(\n\t\t\t\t\t\".\"\n\t\t\t\t)} to be an instance of List`\n\t\t\t);\n\t\t}\n\t\tobjectPath.insert(\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\tawait argument.item_type.getExampleValue(\n\t\t\t\t(page as JDDPage).makeJDDContext(ctx)\n\t\t\t),\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tArray.isArray(argument_value) ? argument_value.length : 0\n\t\t);\n\t\treturn state;\n\t},\n\n\tremove_array_item: ({\n\t\tstate,\n\t\targs: [arg_path, index_to_remove],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[], number]\n\t>): JDDPageState => {\n\t\tobjectPath.del(state, [...arg_path, index_to_remove]);\n\t\treturn state;\n\t},\n\n\tmove_array_item_up: async ({\n\t\tstate,\n\t\targs: [arg_path, element_index],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[], number]\n\t>): Promise<JDDPageState> => {\n\t\tconst array_values = objectPath.get(state, arg_path) as unknown[];\n\t\tconst curr = array_values[element_index];\n\t\tconst prev = array_values[element_index - 1];\n\t\tif (!prev || !curr) {\n\t\t\tthrow new Error(\"No element at such index or cannot move it up\");\n\t\t}\n\t\t[array_values[element_index - 1], array_values[element_index]] = [\n\t\t\tcurr,\n\t\t\tprev,\n\t\t];\n\t\treturn state;\n\t},\n\n\tmove_array_item_down: async ({\n\t\tstate,\n\t\targs: [arg_path, element_index],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[], number]\n\t>): Promise<JDDPageState> => {\n\t\tconst array_values = objectPath.get(state, arg_path) as unknown[];\n\t\tconst curr = array_values[element_index];\n\t\tconst next = array_values[element_index + 1];\n\t\tif (!next || !curr) {\n\t\t\tthrow new Error(\"No element at such index or cannot move it up\");\n\t\t}\n\t\t[array_values[element_index], array_values[element_index + 1]] = [\n\t\t\tnext,\n\t\t\tcurr,\n\t\t];\n\t\treturn state;\n\t},\n\n\tchange_component: async ({\n\t\tctx,\n\t\tinputs,\n\t\tstate,\n\t\tpage,\n\t}: StatefulPageActionArgument<JDDPageState, []>): Promise<JDDPageState> => {\n\t\tconst component_name = inputs.component;\n\t\tif (!component_name || typeof component_name !== \"string\") {\n\t\t\tthrow new Error(\n\t\t\t\t\"Missing input: 'component' for action change_component. It should contain the name of the new component type\"\n\t\t\t);\n\t\t}\n\t\tconst component = (page as JDDPage).registry.get(component_name);\n\t\tif (!component) {\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown or disallowed component name: ${component_name}`\n\t\t\t);\n\t\t}\n\t\treturn {\n\t\t\t...state,\n\t\t\tcomponents: [\n\t\t\t\t{\n\t\t\t\t\tcomponent_name: component_name,\n\t\t\t\t\targs:\n\t\t\t\t\t\t(await component?.getExampleValues(\n\t\t\t\t\t\t\t(page as JDDPage).makeJDDContext(ctx)\n\t\t\t\t\t\t)) || {},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\n\trandomize_args: async ({\n\t\tctx,\n\t\tstate,\n\t\tpage,\n\t\targs: [component_index_str],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string]\n\t>): Promise<JDDPageState> => {\n\t\tconst { component_index, component } = getComponentData(\n\t\t\tstate,\n\t\t\t[\"components\", component_index_str],\n\t\t\t(page as JDDPage).registry\n\t\t);\n\n\t\tconst component_data = state.components[component_index];\n\t\tif (!component_data) {\n\t\t\tthrow new Error(\"Missing component data\");\n\t\t}\n\t\tcomponent_data.args =\n\t\t\t(await component?.getExampleValues(\n\t\t\t\t(page as JDDPage).makeJDDContext(ctx)\n\t\t\t)) || {};\n\t\treturn {\n\t\t\t...state,\n\t\t};\n\t},\n\n\tadd_table_row: async ({\n\t\tctx,\n\t\tstate,\n\t\tpage,\n\t\targs: [arg_path, columns, type = \"row\"],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[], number, \"header\" | \"row\" | undefined]\n\t>) => {\n\t\tconst jdd_context = (page as JDDPage).makeJDDContext(ctx);\n\t\tconst { component_args, argument } = getComponentData(\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\t(page as JDDPage).registry\n\t\t);\n\t\tlet row;\n\n\t\tif (!argument) {\n\t\t\tconsole.error(\"Unknown component at path\", arg_path);\n\t\t\treturn state;\n\t\t}\n\t\tif (!(argument instanceof Table)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Expected argument at path ${arg_path.join(\n\t\t\t\t\t\".\"\n\t\t\t\t)} to be of type Table`\n\t\t\t);\n\t\t}\n\t\tif (type == \"header\") {\n\t\t\trow = {\n\t\t\t\ttype: \"header\",\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\theader_content: await argument.header_type.getExampleValue(\n\t\t\t\t\tjdd_context\n\t\t\t\t),\n\t\t\t};\n\t\t} else {\n\t\t\tconst cells = [];\n\t\t\tfor (let i = 0; i < columns; i++) {\n\t\t\t\tcells.push(\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\tawait argument.cell_type.getExampleValue(jdd_context)\n\t\t\t\t);\n\t\t\t}\n\t\t\trow = { type: \"row\", cells };\n\t\t}\n\t\tobjectPath.push(state, [...arg_path, \"rows\"], row);\n\t\treturn state;\n\t},\n\n\tadd_table_column: async ({\n\t\tctx,\n\t\tstate,\n\t\tpage,\n\t\targs: [arg_path],\n\t}: StatefulPageActionArgument<JDDPageState, [string[]]>) => {\n\t\tconst { argument } = getComponentData(\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\t(page as JDDPage).registry\n\t\t) as unknown as {\n\t\t\targument: Table<unknown, unknown>;\n\t\t};\n\t\tif (!argument) {\n\t\t\tconsole.error(\"Unknown component at path\", arg_path);\n\t\t\treturn state;\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst tableData: TableData<unknown, unknown> = objectPath.get(\n\t\t\tstate,\n\t\t\targ_path\n\t\t);\n\t\tif (!isTableData(tableData)) {\n\t\t\tthrow new Error(\"wrong table data\");\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-for-in-array\n\t\tfor (const i in tableData.rows) {\n\t\t\tconst row = tableData.rows[i];\n\t\t\tif (isTableRegularRow(row)) {\n\t\t\t\trow.cells.push(\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\tawait argument.cell_type.getExampleValue(\n\t\t\t\t\t\t(page as JDDPage).makeJDDContext(ctx)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tobjectPath.set(state, arg_path, tableData);\n\t\tconsole.log(\"NEW STATE AFTER ADDING THE COLUN\");\n\t\tconsole.dir(state, { depth: 10 });\n\t\treturn state;\n\t},\n\n\tremove_table_column: ({\n\t\tstate,\n\t\targs: [arg_path, column_index_to_remove],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[], number]\n\t>): JDDPageState => {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst tableData: TableData<unknown, unknown> = objectPath.get(\n\t\t\tstate,\n\t\t\targ_path\n\t\t);\n\t\tif (!isTableData(tableData)) {\n\t\t\tthrow new Error(\"wrong table data\");\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-for-in-array\n\t\tfor (const i in tableData.rows) {\n\t\t\tconst row = tableData.rows[i];\n\t\t\tif (isTableRegularRow(row)) {\n\t\t\t\trow.cells = row.cells.filter(\n\t\t\t\t\t(_, i) => i != column_index_to_remove\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tobjectPath.set(state, arg_path, tableData);\n\t\treturn state;\n\t},\n\n\tremove_table_row: ({\n\t\tstate,\n\t\targs: [arg_path, row_index],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[], number]\n\t>): JDDPageState => {\n\t\tobjectPath.del(state, [...arg_path, \"rows\", row_index]);\n\t\treturn state;\n\t},\n\n\tmove_table_column_right: ({\n\t\tstate,\n\t\tpage,\n\t\targs: [arg_path, column_index],\n\t}: StatefulPageActionArgument<JDDPageState, [string[], number]>) => {\n\t\tconst { component_args } = getComponentData(\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\t(page as JDDPage).registry\n\t\t);\n\n\t\tconst last_path_element = arg_path.at(-1);\n\t\tif (!last_path_element) {\n\t\t\tthrow new Error(\"arg path is empty\");\n\t\t}\n\t\tconst data = objectPath.get<unknown>(\n\t\t\tcomponent_args,\n\t\t\tlast_path_element,\n\t\t\t\"\"\n\t\t);\n\t\tif (!isTableData(data)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Expected arg value for a table to be properly shaped\"\n\t\t\t);\n\t\t}\n\t\tfor (const row of data.rows) {\n\t\t\tif (row.type == \"row\") {\n\t\t\t\tmoveElement(row.cells, column_index, column_index + 1);\n\t\t\t}\n\t\t}\n\t\tobjectPath.set(state, [...arg_path, \"rows\"], data.rows);\n\t\treturn state;\n\t},\n\n\tmove_table_row_down: ({\n\t\tstate,\n\t\tpage,\n\t\targs: [arg_path, row_index],\n\t}: StatefulPageActionArgument<JDDPageState, [string[], number]>) => {\n\t\tconst { component_args } = getComponentData(\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\t(page as JDDPage).registry\n\t\t);\n\t\tconst last_path_element = arg_path.at(-1);\n\t\tif (!last_path_element) {\n\t\t\tthrow new Error(\"arg path is empty\");\n\t\t}\n\t\tconst data = objectPath.get<unknown>(\n\t\t\tcomponent_args,\n\t\t\tlast_path_element,\n\t\t\t\"\"\n\t\t);\n\t\tif (!isTableData(data)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Expected arg value for a table to be properly shaped\"\n\t\t\t);\n\t\t}\n\t\tmoveElement(data.rows, row_index, row_index + 1);\n\t\tobjectPath.set(state, [...arg_path, \"rows\"], data.rows);\n\t\treturn state;\n\t},\n\n\tchange_size: ({\n\t\tstate,\n\t\tinputs,\n\t}: StatefulPageActionArgument<JDDPageState>) => {\n\t\treturn {\n\t\t\t...state,\n\t\t\tpreview_size: inputs.size,\n\t\t};\n\t},\n\n\tadd_component: async ({\n\t\tctx,\n\t\tstate,\n\t\tinputs,\n\t\tpage,\n\t}: StatefulPageActionArgument<JDDPageState, []>): Promise<JDDPageState> => {\n\t\tconst component_name = inputs.component;\n\t\tif (!component_name) {\n\t\t\tthrow new Error(\"Missing component name\");\n\t\t}\n\t\tconst component = (page as JDDPage).registry.get(component_name);\n\n\t\treturn {\n\t\t\t...state,\n\t\t\tcomponents: [\n\t\t\t\t...state.components,\n\t\t\t\t{\n\t\t\t\t\tcomponent_name: component_name,\n\t\t\t\t\targs:\n\t\t\t\t\t\t(await component?.getExampleValues(\n\t\t\t\t\t\t\t(page as JDDPage).makeJDDContext(ctx)\n\t\t\t\t\t\t)) || {},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\n\tremove_component: async ({\n\t\tstate,\n\t\targs: [component_index],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[number]\n\t>): Promise<JDDPageState> => {\n\t\tconst newComponentState = [...state.components];\n\t\tnewComponentState.splice(component_index, 1);\n\t\treturn {\n\t\t\t...state,\n\t\t\tcomponents: newComponentState,\n\t\t};\n\t},\n\n\tmove_component_up: async ({\n\t\tstate,\n\t\targs: [component_index],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[number]\n\t>): Promise<JDDPageState> => {\n\t\tconst newComps = [...state.components];\n\t\tconst prev = newComps[component_index - 1];\n\t\tconst curr = newComps[component_index];\n\t\tif (!prev || !curr) {\n\t\t\tthrow new Error(\"No component at such index or cannot move it up\");\n\t\t}\n\t\t[newComps[component_index], newComps[component_index - 1]] = [\n\t\t\tprev,\n\t\t\tcurr,\n\t\t];\n\t\treturn { ...state, components: newComps };\n\t},\n\n\tmove_component_down: async ({\n\t\tstate,\n\t\targs: [component_index],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[number]\n\t>): Promise<JDDPageState> => {\n\t\tconst newComps = [...state.components];\n\t\tconst next = newComps[component_index + 1];\n\t\tconst curr = newComps[component_index];\n\t\tif (!next || !curr) {\n\t\t\tthrow new Error(\"No component at such index or cannot move it up\");\n\t\t}\n\t\t[newComps[component_index], newComps[component_index + 1]] = [\n\t\t\tnext,\n\t\t\tcurr,\n\t\t];\n\t\treturn { ...state, components: newComps };\n\t},\n\n\tremove_file: async ({\n\t\tstate,\n\t\targs: [arg_path],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[]]\n\t>): Promise<JDDPageState> => {\n\t\tobjectPath.set(state, arg_path, null);\n\t\treturn state;\n\t},\n\n\treplace_state: async ({\n\t\tctx,\n\t\tstate,\n\t\tinputs,\n\t\tpage,\n\t}: StatefulPageActionArgument<JDDPageState>): Promise<JDDPageState> => {\n\t\tconst new_state = (await (page as JDDPage).deserializeState(\n\t\t\tctx,\n\t\t\tinputs[\"state_override\"] || \"{}\"\n\t\t)) as JDDPageState;\n\t\treturn {\n\t\t\t...new_state,\n\t\t\tpreview_size: state.preview_size,\n\t\t};\n\t},\n}) as Record<string, StatefulPageAction<JDDPageState>>;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/consistent-type-assertions */\nimport type { Registry, TableData } from \"@sealcode/jdd\";\nimport { List, makeSimpleEnglishJDDContext, Table } from \"@sealcode/jdd\";\nimport { isTableData, isTableRegularRow } from \"@sealcode/jdd\";\nimport objectPath from \"object-path\";\nimport type { JDDPageState } from \"./jdd-page.js\";\nimport type {\n\tStatefulPageAction,\n\tStatefulPageActionArgument,\n} from \"@sealcode/sealgen\";\nimport type JDDPage from \"./jdd-page.js\";\n\nfunction moveElement<T>(\n\tarray: Array<T>,\n\tfromIndex: number,\n\ttoIndex: number\n): Array<T> {\n\tconst element = array.splice(fromIndex, 1)[0];\n\tarray.splice(toIndex, 0, element as T);\n\treturn array;\n}\n\nexport function getComponentData(\n\tstate: JDDPageState,\n\targ_path: string[],\n\tregistry: Registry\n) {\n\tconst index_arg = arg_path[1];\n\tif (!index_arg) {\n\t\tthrow new Error(\"Missing component index in arg path\");\n\t}\n\tconst component_index = parseInt(index_arg);\n\tconst component_args = state.components[component_index]?.args || {};\n\tconst component_name =\n\t\tstate.components[component_index]?.component_name || \"\";\n\tconst component = registry.get(component_name);\n\tconst arg_path_within_component = arg_path.slice(3); // remove \"components\" and the index of the component and \"args\"\n\n\tconst [argument, , argument_value] = component?.getArgumentAtPath(\n\t\tmakeSimpleEnglishJDDContext({ registry }),\n\t\targ_path_within_component,\n\t\tcomponent_args\n\t) || [null, null, null];\n\n\treturn {\n\t\tcomponent_index,\n\t\tcomponent_args,\n\t\tcomponent_name,\n\t\tcomponent,\n\t\targument,\n\t\targument_value,\n\t\targ_path_within_component,\n\t};\n}\n\nexport const ComponentPreviewActions = (<const>{\n\tadd_array_item: async ({\n\t\tctx,\n\t\tstate,\n\t\targs: [arg_path],\n\t\tpage,\n\t}: StatefulPageActionArgument<JDDPageState, [string[]]>) => {\n\t\tconst {\n\t\t\tcomponent_name,\n\t\t\tcomponent,\n\t\t\targument,\n\t\t\targ_path_within_component,\n\t\t\targument_value,\n\t\t} = getComponentData(state, arg_path, (page as JDDPage).registry);\n\t\tif (!component) {\n\t\t\tconsole.error(\"unknown component: \", component_name);\n\t\t\treturn state;\n\t\t}\n\t\tif (!argument) {\n\t\t\tconsole.error(\n\t\t\t\t\"Didn't find a list argument at this path\",\n\t\t\t\targ_path_within_component\n\t\t\t);\n\t\t\tconsole.debug(\"Found this instead:\", argument);\n\t\t\treturn state;\n\t\t}\n\t\tif (!(argument instanceof List)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Expected argument in path ${arg_path.join(\n\t\t\t\t\t\".\"\n\t\t\t\t)} to be an instance of List`\n\t\t\t);\n\t\t}\n\t\tobjectPath.insert(\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\tawait argument.item_type.getExampleValue(\n\t\t\t\t(page as JDDPage).makeJDDContext(ctx)\n\t\t\t),\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tArray.isArray(argument_value) ? argument_value.length : 0\n\t\t);\n\t\treturn state;\n\t},\n\n\tremove_array_item: ({\n\t\tstate,\n\t\targs: [arg_path, index_to_remove],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[], number]\n\t>): JDDPageState => {\n\t\tobjectPath.del(state, [...arg_path, index_to_remove]);\n\t\treturn state;\n\t},\n\n\tmove_array_item_up: async ({\n\t\tstate,\n\t\targs: [arg_path, element_index],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[], number]\n\t>): Promise<JDDPageState> => {\n\t\tconst array_values = objectPath.get(state, arg_path) as unknown[];\n\t\tconst curr = array_values[element_index];\n\t\tconst prev = array_values[element_index - 1];\n\t\tif (!prev || !curr) {\n\t\t\tthrow new Error(\"No element at such index or cannot move it up\");\n\t\t}\n\t\t[array_values[element_index - 1], array_values[element_index]] = [\n\t\t\tcurr,\n\t\t\tprev,\n\t\t];\n\t\treturn state;\n\t},\n\n\tmove_array_item_down: async ({\n\t\tstate,\n\t\targs: [arg_path, element_index],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[], number]\n\t>): Promise<JDDPageState> => {\n\t\tconst array_values = objectPath.get(state, arg_path) as unknown[];\n\t\tconst curr = array_values[element_index];\n\t\tconst next = array_values[element_index + 1];\n\t\tif (!next || !curr) {\n\t\t\tthrow new Error(\"No element at such index or cannot move it up\");\n\t\t}\n\t\t[array_values[element_index], array_values[element_index + 1]] = [\n\t\t\tnext,\n\t\t\tcurr,\n\t\t];\n\t\treturn state;\n\t},\n\n\tchange_component: async ({\n\t\tctx,\n\t\tinputs,\n\t\tstate,\n\t\tpage,\n\t}: StatefulPageActionArgument<JDDPageState, []>): Promise<JDDPageState> => {\n\t\tconst component_name = inputs.component;\n\t\tif (!component_name || typeof component_name !== \"string\") {\n\t\t\tthrow new Error(\n\t\t\t\t\"Missing input: 'component' for action change_component. It should contain the name of the new component type\"\n\t\t\t);\n\t\t}\n\t\tconst component = (page as JDDPage).registry.get(component_name);\n\t\tif (!component) {\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown or disallowed component name: ${component_name}`\n\t\t\t);\n\t\t}\n\t\treturn {\n\t\t\t...state,\n\t\t\tcomponents: [\n\t\t\t\t{\n\t\t\t\t\tcomponent_name: component_name,\n\t\t\t\t\targs:\n\t\t\t\t\t\t(await component?.getExampleValues(\n\t\t\t\t\t\t\t(page as JDDPage).makeJDDContext(ctx)\n\t\t\t\t\t\t)) || {},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\n\trandomize_args: async ({\n\t\tctx,\n\t\tstate,\n\t\tpage,\n\t\targs: [component_index_str],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string]\n\t>): Promise<JDDPageState> => {\n\t\tconst { component_index, component } = getComponentData(\n\t\t\tstate,\n\t\t\t[\"components\", component_index_str],\n\t\t\t(page as JDDPage).registry\n\t\t);\n\n\t\tconst component_data = state.components[component_index];\n\t\tif (!component_data) {\n\t\t\tthrow new Error(\"Missing component data\");\n\t\t}\n\t\tcomponent_data.args =\n\t\t\t(await component?.getExampleValues(\n\t\t\t\t(page as JDDPage).makeJDDContext(ctx)\n\t\t\t)) || {};\n\t\treturn {\n\t\t\t...state,\n\t\t};\n\t},\n\n\tadd_table_row: async ({\n\t\tctx,\n\t\tstate,\n\t\tpage,\n\t\targs: [arg_path, columns, type = \"row\"],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[], number, \"header\" | \"row\" | undefined]\n\t>) => {\n\t\tconst jdd_context = (page as JDDPage).makeJDDContext(ctx);\n\t\tconst { component_args, argument } = getComponentData(\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\t(page as JDDPage).registry\n\t\t);\n\t\tlet row;\n\n\t\tif (!argument) {\n\t\t\tconsole.error(\"Unknown component at path\", arg_path);\n\t\t\treturn state;\n\t\t}\n\t\tif (!(argument instanceof Table)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Expected argument at path ${arg_path.join(\n\t\t\t\t\t\".\"\n\t\t\t\t)} to be of type Table`\n\t\t\t);\n\t\t}\n\t\tif (type == \"header\") {\n\t\t\trow = {\n\t\t\t\ttype: \"header\",\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\theader_content:\n\t\t\t\t\tawait argument.header_type.getExampleValue(jdd_context),\n\t\t\t};\n\t\t} else {\n\t\t\tconst cells = [];\n\t\t\tfor (let i = 0; i < columns; i++) {\n\t\t\t\tcells.push(\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\tawait argument.cell_type.getExampleValue(jdd_context)\n\t\t\t\t);\n\t\t\t}\n\t\t\trow = { type: \"row\", cells };\n\t\t}\n\t\tobjectPath.push(state, [...arg_path, \"rows\"], row);\n\t\treturn state;\n\t},\n\n\tadd_table_column: async ({\n\t\tctx,\n\t\tstate,\n\t\tpage,\n\t\targs: [arg_path],\n\t}: StatefulPageActionArgument<JDDPageState, [string[]]>) => {\n\t\tconst { argument } = getComponentData(\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\t(page as JDDPage).registry\n\t\t) as unknown as {\n\t\t\targument: Table<unknown, unknown>;\n\t\t};\n\t\tif (!argument) {\n\t\t\tconsole.error(\"Unknown component at path\", arg_path);\n\t\t\treturn state;\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst tableData: TableData<unknown, unknown> = objectPath.get(\n\t\t\tstate,\n\t\t\targ_path\n\t\t);\n\t\tif (!isTableData(tableData)) {\n\t\t\tthrow new Error(\"wrong table data\");\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-for-in-array\n\t\tfor (const i in tableData.rows) {\n\t\t\tconst row = tableData.rows[i];\n\t\t\tif (isTableRegularRow(row)) {\n\t\t\t\trow.cells.push(\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\tawait argument.cell_type.getExampleValue(\n\t\t\t\t\t\t(page as JDDPage).makeJDDContext(ctx)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tobjectPath.set(state, arg_path, tableData);\n\t\tconsole.log(\"NEW STATE AFTER ADDING THE COLUN\");\n\t\tconsole.dir(state, { depth: 10 });\n\t\treturn state;\n\t},\n\n\tremove_table_column: ({\n\t\tstate,\n\t\targs: [arg_path, column_index_to_remove],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[], number]\n\t>): JDDPageState => {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst tableData: TableData<unknown, unknown> = objectPath.get(\n\t\t\tstate,\n\t\t\targ_path\n\t\t);\n\t\tif (!isTableData(tableData)) {\n\t\t\tthrow new Error(\"wrong table data\");\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-for-in-array\n\t\tfor (const i in tableData.rows) {\n\t\t\tconst row = tableData.rows[i];\n\t\t\tif (isTableRegularRow(row)) {\n\t\t\t\trow.cells = row.cells.filter(\n\t\t\t\t\t(_, i) => i != column_index_to_remove\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tobjectPath.set(state, arg_path, tableData);\n\t\treturn state;\n\t},\n\n\tremove_table_row: ({\n\t\tstate,\n\t\targs: [arg_path, row_index],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[], number]\n\t>): JDDPageState => {\n\t\tobjectPath.del(state, [...arg_path, \"rows\", row_index]);\n\t\treturn state;\n\t},\n\n\tmove_table_column_right: ({\n\t\tstate,\n\t\tpage,\n\t\targs: [arg_path, column_index],\n\t}: StatefulPageActionArgument<JDDPageState, [string[], number]>) => {\n\t\tconst { component_args } = getComponentData(\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\t(page as JDDPage).registry\n\t\t);\n\n\t\tconst last_path_element = arg_path.at(-1);\n\t\tif (!last_path_element) {\n\t\t\tthrow new Error(\"arg path is empty\");\n\t\t}\n\t\tconst data = objectPath.get<unknown>(\n\t\t\tcomponent_args,\n\t\t\tlast_path_element,\n\t\t\t\"\"\n\t\t);\n\t\tif (!isTableData(data)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Expected arg value for a table to be properly shaped\"\n\t\t\t);\n\t\t}\n\t\tfor (const row of data.rows) {\n\t\t\tif (row.type == \"row\") {\n\t\t\t\tmoveElement(row.cells, column_index, column_index + 1);\n\t\t\t}\n\t\t}\n\t\tobjectPath.set(state, [...arg_path, \"rows\"], data.rows);\n\t\treturn state;\n\t},\n\n\tmove_table_row_down: ({\n\t\tstate,\n\t\tpage,\n\t\targs: [arg_path, row_index],\n\t}: StatefulPageActionArgument<JDDPageState, [string[], number]>) => {\n\t\tconst { component_args } = getComponentData(\n\t\t\tstate,\n\t\t\targ_path,\n\t\t\t(page as JDDPage).registry\n\t\t);\n\t\tconst last_path_element = arg_path.at(-1);\n\t\tif (!last_path_element) {\n\t\t\tthrow new Error(\"arg path is empty\");\n\t\t}\n\t\tconst data = objectPath.get<unknown>(\n\t\t\tcomponent_args,\n\t\t\tlast_path_element,\n\t\t\t\"\"\n\t\t);\n\t\tif (!isTableData(data)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Expected arg value for a table to be properly shaped\"\n\t\t\t);\n\t\t}\n\t\tmoveElement(data.rows, row_index, row_index + 1);\n\t\tobjectPath.set(state, [...arg_path, \"rows\"], data.rows);\n\t\treturn state;\n\t},\n\n\tchange_size: ({\n\t\tstate,\n\t\tinputs,\n\t}: StatefulPageActionArgument<JDDPageState>) => {\n\t\treturn {\n\t\t\t...state,\n\t\t\tpreview_size: inputs.size,\n\t\t};\n\t},\n\n\tadd_component: async ({\n\t\tctx,\n\t\tstate,\n\t\tinputs,\n\t\tpage,\n\t}: StatefulPageActionArgument<JDDPageState, []>): Promise<JDDPageState> => {\n\t\tconst component_name = inputs.component;\n\t\tif (!component_name) {\n\t\t\tthrow new Error(\"Missing component name\");\n\t\t}\n\t\tconst component = (page as JDDPage).registry.get(component_name);\n\n\t\treturn {\n\t\t\t...state,\n\t\t\tcomponents: [\n\t\t\t\t...state.components,\n\t\t\t\t{\n\t\t\t\t\tcomponent_name: component_name,\n\t\t\t\t\targs:\n\t\t\t\t\t\t(await component?.getExampleValues(\n\t\t\t\t\t\t\t(page as JDDPage).makeJDDContext(ctx)\n\t\t\t\t\t\t)) || {},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\n\tremove_component: async ({\n\t\tstate,\n\t\targs: [component_index],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[number]\n\t>): Promise<JDDPageState> => {\n\t\tconst newComponentState = [...state.components];\n\t\tnewComponentState.splice(component_index, 1);\n\t\treturn {\n\t\t\t...state,\n\t\t\tcomponents: newComponentState,\n\t\t};\n\t},\n\n\tmove_component_up: async ({\n\t\tstate,\n\t\targs: [component_index],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[number]\n\t>): Promise<JDDPageState> => {\n\t\tconst newComps = [...state.components];\n\t\tconst prev = newComps[component_index - 1];\n\t\tconst curr = newComps[component_index];\n\t\tif (!prev || !curr) {\n\t\t\tthrow new Error(\"No component at such index or cannot move it up\");\n\t\t}\n\t\t[newComps[component_index], newComps[component_index - 1]] = [\n\t\t\tprev,\n\t\t\tcurr,\n\t\t];\n\t\treturn { ...state, components: newComps };\n\t},\n\n\tmove_component_down: async ({\n\t\tstate,\n\t\targs: [component_index],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[number]\n\t>): Promise<JDDPageState> => {\n\t\tconst newComps = [...state.components];\n\t\tconst next = newComps[component_index + 1];\n\t\tconst curr = newComps[component_index];\n\t\tif (!next || !curr) {\n\t\t\tthrow new Error(\"No component at such index or cannot move it up\");\n\t\t}\n\t\t[newComps[component_index], newComps[component_index + 1]] = [\n\t\t\tnext,\n\t\t\tcurr,\n\t\t];\n\t\treturn { ...state, components: newComps };\n\t},\n\n\tremove_file: async ({\n\t\tstate,\n\t\targs: [arg_path],\n\t}: StatefulPageActionArgument<\n\t\tJDDPageState,\n\t\t[string[]]\n\t>): Promise<JDDPageState> => {\n\t\tobjectPath.set(state, arg_path, null);\n\t\treturn state;\n\t},\n\n\treplace_state: async ({\n\t\tctx,\n\t\tstate,\n\t\tinputs,\n\t\tpage,\n\t}: StatefulPageActionArgument<JDDPageState>): Promise<JDDPageState> => {\n\t\tconst new_state = (await (page as JDDPage).deserializeState(\n\t\t\tctx,\n\t\t\tinputs[\"state_override\"] || \"{}\"\n\t\t)) as JDDPageState;\n\t\treturn {\n\t\t\t...new_state,\n\t\t\tpreview_size: state.preview_size,\n\t\t};\n\t},\n}) as Record<string, StatefulPageAction<JDDPageState>>;\n"],
5
+ "mappings": "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",
6
6
  "names": ["i"]
7
7
  }
@@ -24,11 +24,11 @@ class JDDDebugger extends JDDPage {
24
24
  ([name]) => {
25
25
  var _a;
26
26
  return `<option
27
- value="${name}"
28
- ${name == ((_a = state.components[0]) == null ? void 0 : _a.component_name) ? "selected" : ""}
29
- >
30
- ${name}
31
- </option>`;
27
+ value="${name}"
28
+ ${name == ((_a = state.components[0]) == null ? void 0 : _a.component_name) ? "selected" : ""}
29
+ >
30
+ ${name}
31
+ </option>`;
32
32
  }
33
33
  ).join("")}
34
34
  </select>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/components.sreact.ts"],
4
- "sourcesContent": ["import { documentContainerFromParsed, JDD } from \"@sealcode/jdd\";\nimport type { Context } from \"koa\";\nimport type { Templatable } from \"tempstream\";\nimport { tempstream } from \"tempstream\";\nimport type { Stringifiable } from \"tempstream/@types/stringify.js\";\nimport { ComponentPreviewActions } from \"./component-preview-actions.js\";\nimport type { JDDPageState } from \"./jdd-page.js\";\nimport JDDPage from \"./jdd-page.js\";\n\nexport class JDDDebugger extends JDDPage {\n\trenderParameterButtons(state: JDDPageState): Stringifiable {\n\t\tconst all_components = super.getRegistryComponents();\n\t\tif (!state.components[0]) {\n\t\t\tconsole.error(\"No components are present in state.components\");\n\t\t}\n\t\treturn /* HTML */ `<div>\n\t\t\t<input type=\"submit\" value=\"Preview\" />\n\t\t\t<select\n\t\t\t\tname=\"component\"\n\t\t\t\tonchange=\"${this.makeActionCallback(\"change_component\")}\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t>\n\t\t\t\t${Object.entries(all_components)\n\t\t\t\t\t.map(\n\t\t\t\t\t\t([name]) => /* HTML */ `<option\n\t\t\t\t\t\t\tvalue=\"${name}\"\n\t\t\t\t\t\t\t${name == state.components[0]?.component_name\n\t\t\t\t\t\t\t\t? \"selected\"\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${name}\n\t\t\t\t\t\t</option>`\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\")}\n\t\t\t</select>\n\t\t\t<noscript>\n\t\t\t\t${this.makeActionButton(state, \"change_component\")}\n\t\t\t</noscript>\n\t\t\t${this.makeActionButton(state, \"randomize_args\", \"0\")}\n\t\t</div>`;\n\t}\n\tactions = ComponentPreviewActions;\n\n\tasync getInitialState(ctx: Context) {\n\t\tconst initial_state = {\n\t\t\tcomponents: [],\n\t\t};\n\t\treturn initial_state;\n\t}\n\n\twrapInLayout(\n\t\tctx: Context,\n\t\tcontent: Templatable,\n\t\tstate: JDDPageState\n\t): Templatable {\n\t\tconst jdd_context = this.makeJDDContext(ctx);\n\t\tconst jdd = new JDD(\n\t\t\tthis.registry,\n\t\t\tjdd_context,\n\t\t\tdocumentContainerFromParsed(state.components)\n\t\t);\n\t\tconst css_clumps = [\"jdd-page\", ...jdd.getAllCSSClumps()];\n\t\treturn this.html({\n\t\t\tctx,\n\t\t\ttitle: \"Components\",\n\t\t\tbody: content,\n\t\t\tdescription: \"\",\n\t\t\tcss_clumps,\n\t\t\thtmlOptions: {\n\t\t\t\tmorphing: true,\n\t\t\t\tpreserveScroll: true,\n\t\t\t\tautoRefreshCSS: true,\n\t\t\t\tshowBanner: false,\n\t\t\t\tnavbar: () => ``,\n\t\t\t\tbodyClasses: [\"jdd-editor\"],\n\t\t\t\tshowBottomNavbar: false,\n\t\t\t\tshowFooter: false,\n\t\t\t\tloadHamburgerMenu: false,\n\t\t\t\tloadSearchModal: false,\n\t\t\t},\n\t\t\tmakeHead: (...args: unknown[]) =>\n\t\t\t\ttempstream`${this.defaultHead(\n\t\t\t\t\t...args\n\t\t\t\t)}${jdd.renderEarlyAssets()}`,\n\t\t});\n\t}\n\n\tcontainerSizes = [\"320\", \"600\", \"800\", \"1024\", \"1300\", \"1920\"];\n}\n"],
5
- "mappings": "AAAA,SAAS,6BAA6B,WAAW;AAGjD,SAAS,kBAAkB;AAE3B,SAAS,+BAA+B;AAExC,OAAO,aAAa;AAEb,MAAM,oBAAoB,QAAQ;AAAA,EAAlC;AAAA;AAgCN,mBAAU;AA8CV,0BAAiB,CAAC,OAAO,OAAO,OAAO,QAAQ,QAAQ,MAAM;AAAA;AAAA,EA7E7D,uBAAuB,OAAoC;AAC1D,UAAM,iBAAiB,MAAM,sBAAsB;AACnD,QAAI,CAAC,MAAM,WAAW,IAAI;AACzB,cAAQ,MAAM,+CAA+C;AAAA,IAC9D;AACA,WAAkB;AAAA;AAAA;AAAA;AAAA,gBAIJ,KAAK,mBAAmB,kBAAkB;AAAA;AAAA;AAAA,MAGpD,OAAO,QAAQ,cAAc,EAC7B;AAAA,MACA,CAAC,CAAC,IAAI,MAAG;AAxBf;AAwB6B;AAAA,gBACb;AAAA,SACP,UAAQ,WAAM,WAAW,OAAjB,mBAAqB,kBAC5B,aACA;AAAA;AAAA,SAED;AAAA;AAAA;AAAA,IAEJ,EACC,KAAK,EAAE;AAAA;AAAA;AAAA,MAGP,KAAK,iBAAiB,OAAO,kBAAkB;AAAA;AAAA,KAEhD,KAAK,iBAAiB,OAAO,kBAAkB,GAAG;AAAA;AAAA,EAEtD;AAAA,EAGA,MAAM,gBAAgB,KAAc;AACnC,UAAM,gBAAgB;AAAA,MACrB,YAAY,CAAC;AAAA,IACd;AACA,WAAO;AAAA,EACR;AAAA,EAEA,aACC,KACA,SACA,OACc;AACd,UAAM,cAAc,KAAK,eAAe,GAAG;AAC3C,UAAM,MAAM,IAAI;AAAA,MACf,KAAK;AAAA,MACL;AAAA,MACA,4BAA4B,MAAM,UAAU;AAAA,IAC7C;AACA,UAAM,aAAa,CAAC,YAAY,GAAG,IAAI,gBAAgB,CAAC;AACxD,WAAO,KAAK,KAAK;AAAA,MAChB;AAAA,MACA,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,MACb;AAAA,MACA,aAAa;AAAA,QACZ,UAAU;AAAA,QACV,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,aAAa,CAAC,YAAY;AAAA,QAC1B,kBAAkB;AAAA,QAClB,YAAY;AAAA,QACZ,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,MAClB;AAAA,MACA,UAAU,IAAI,SACb,aAAa,KAAK;AAAA,QACjB,GAAG;AAAA,MACJ,IAAI,IAAI,kBAAkB;AAAA,IAC5B,CAAC;AAAA,EACF;AAGD;",
4
+ "sourcesContent": ["import { documentContainerFromParsed, JDD } from \"@sealcode/jdd\";\nimport type { Context } from \"koa\";\nimport type { Templatable } from \"tempstream\";\nimport { tempstream } from \"tempstream\";\nimport type { Stringifiable } from \"tempstream/@types/stringify.js\";\nimport { ComponentPreviewActions } from \"./component-preview-actions.js\";\nimport type { JDDPageState } from \"./jdd-page.js\";\nimport JDDPage from \"./jdd-page.js\";\n\nexport class JDDDebugger extends JDDPage {\n\trenderParameterButtons(state: JDDPageState): Stringifiable {\n\t\tconst all_components = super.getRegistryComponents();\n\t\tif (!state.components[0]) {\n\t\t\tconsole.error(\"No components are present in state.components\");\n\t\t}\n\t\treturn /* HTML */ `<div>\n\t\t\t<input type=\"submit\" value=\"Preview\" />\n\t\t\t<select\n\t\t\t\tname=\"component\"\n\t\t\t\tonchange=\"${this.makeActionCallback(\"change_component\")}\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t>\n\t\t\t\t${Object.entries(all_components)\n\t\t\t\t\t.map(\n\t\t\t\t\t\t([name]) =>\n\t\t\t\t\t\t\t/* HTML */ `<option\n\t\t\t\t\t\t\t\tvalue=\"${name}\"\n\t\t\t\t\t\t\t\t${name == state.components[0]?.component_name\n\t\t\t\t\t\t\t\t\t? \"selected\"\n\t\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t${name}\n\t\t\t\t\t\t\t</option>`\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\")}\n\t\t\t</select>\n\t\t\t<noscript>\n\t\t\t\t${this.makeActionButton(state, \"change_component\")}\n\t\t\t</noscript>\n\t\t\t${this.makeActionButton(state, \"randomize_args\", \"0\")}\n\t\t</div>`;\n\t}\n\tactions = ComponentPreviewActions;\n\n\tasync getInitialState(ctx: Context) {\n\t\tconst initial_state = {\n\t\t\tcomponents: [],\n\t\t};\n\t\treturn initial_state;\n\t}\n\n\twrapInLayout(\n\t\tctx: Context,\n\t\tcontent: Templatable,\n\t\tstate: JDDPageState\n\t): Templatable {\n\t\tconst jdd_context = this.makeJDDContext(ctx);\n\t\tconst jdd = new JDD(\n\t\t\tthis.registry,\n\t\t\tjdd_context,\n\t\t\tdocumentContainerFromParsed(state.components)\n\t\t);\n\t\tconst css_clumps = [\"jdd-page\", ...jdd.getAllCSSClumps()];\n\t\treturn this.html({\n\t\t\tctx,\n\t\t\ttitle: \"Components\",\n\t\t\tbody: content,\n\t\t\tdescription: \"\",\n\t\t\tcss_clumps,\n\t\t\thtmlOptions: {\n\t\t\t\tmorphing: true,\n\t\t\t\tpreserveScroll: true,\n\t\t\t\tautoRefreshCSS: true,\n\t\t\t\tshowBanner: false,\n\t\t\t\tnavbar: () => ``,\n\t\t\t\tbodyClasses: [\"jdd-editor\"],\n\t\t\t\tshowBottomNavbar: false,\n\t\t\t\tshowFooter: false,\n\t\t\t\tloadHamburgerMenu: false,\n\t\t\t\tloadSearchModal: false,\n\t\t\t},\n\t\t\tmakeHead: (...args: unknown[]) =>\n\t\t\t\ttempstream`${this.defaultHead(\n\t\t\t\t\t...args\n\t\t\t\t)}${jdd.renderEarlyAssets()}`,\n\t\t});\n\t}\n\n\tcontainerSizes = [\"320\", \"600\", \"800\", \"1024\", \"1300\", \"1920\"];\n}\n"],
5
+ "mappings": "AAAA,SAAS,6BAA6B,WAAW;AAGjD,SAAS,kBAAkB;AAE3B,SAAS,+BAA+B;AAExC,OAAO,aAAa;AAEb,MAAM,oBAAoB,QAAQ;AAAA,EAAlC;AAAA;AAiCN,mBAAU;AA8CV,0BAAiB,CAAC,OAAO,OAAO,OAAO,QAAQ,QAAQ,MAAM;AAAA;AAAA,EA9E7D,uBAAuB,OAAoC;AAC1D,UAAM,iBAAiB,MAAM,sBAAsB;AACnD,QAAI,CAAC,MAAM,WAAW,IAAI;AACzB,cAAQ,MAAM,+CAA+C;AAAA,IAC9D;AACA,WAAkB;AAAA;AAAA;AAAA;AAAA,gBAIJ,KAAK,mBAAmB,kBAAkB;AAAA;AAAA;AAAA,MAGpD,OAAO,QAAQ,cAAc,EAC7B;AAAA,MACA,CAAC,CAAC,IAAI,MAAG;AAxBf;AAyBkB;AAAA,iBACD;AAAA,UACP,UAAQ,WAAM,WAAW,OAAjB,mBAAqB,kBAC5B,aACA;AAAA;AAAA,UAED;AAAA;AAAA;AAAA,IAEL,EACC,KAAK,EAAE;AAAA;AAAA;AAAA,MAGP,KAAK,iBAAiB,OAAO,kBAAkB;AAAA;AAAA,KAEhD,KAAK,iBAAiB,OAAO,kBAAkB,GAAG;AAAA;AAAA,EAEtD;AAAA,EAGA,MAAM,gBAAgB,KAAc;AACnC,UAAM,gBAAgB;AAAA,MACrB,YAAY,CAAC;AAAA,IACd;AACA,WAAO;AAAA,EACR;AAAA,EAEA,aACC,KACA,SACA,OACc;AACd,UAAM,cAAc,KAAK,eAAe,GAAG;AAC3C,UAAM,MAAM,IAAI;AAAA,MACf,KAAK;AAAA,MACL;AAAA,MACA,4BAA4B,MAAM,UAAU;AAAA,IAC7C;AACA,UAAM,aAAa,CAAC,YAAY,GAAG,IAAI,gBAAgB,CAAC;AACxD,WAAO,KAAK,KAAK;AAAA,MAChB;AAAA,MACA,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,MACb;AAAA,MACA,aAAa;AAAA,QACZ,UAAU;AAAA,QACV,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,aAAa,CAAC,YAAY;AAAA,QAC1B,kBAAkB;AAAA,QAClB,YAAY;AAAA,QACZ,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,MAClB;AAAA,MACA,UAAU,IAAI,SACb,aAAa,KAAK;AAAA,QACjB,GAAG;AAAA,MACJ,IAAI,IAAI,kBAAkB;AAAA,IAC5B,CAAC;AAAA,EACF;AAGD;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,23 @@
1
+ import { tempstream } from "tempstream";
2
+ import { printArgPath } from "./print-arg-path.js";
3
+ function ComponentInputCode({
4
+ language,
5
+ value,
6
+ arg_path
7
+ }) {
8
+ return tempstream`<div class="monaco-wrapper">
9
+ <div data-controller="monaco" data-language="${language}">
10
+ <textarea
11
+ data-monaco-target="textarea"
12
+ name="$${printArgPath(arg_path)}"
13
+ style="display: none"
14
+ >
15
+ ${value}
16
+ </textarea>
17
+ </div>
18
+ </div>`;
19
+ }
20
+ export {
21
+ ComponentInputCode
22
+ };
23
+ //# sourceMappingURL=component-input-code.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 class=\"monaco-wrapper\">\n\t\t<div data-controller=\"monaco\" data-language=\"${language}\">\n\t\t\t<textarea\n\t\t\t\tdata-monaco-target=\"textarea\"\n\t\t\t\tname=\"$${printArgPath(arg_path)}\"\n\t\t\t\tstyle=\"display: none\"\n\t\t\t>\n${value}\n </textarea>\n\t\t</div>\n\t</div>`;\n}\n"],
5
+ "mappings": "AAAA,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAEtB,SAAS,mBAAmB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AACD,GAIgB;AACf,SAAO;AAAA,iDACyC;AAAA;AAAA;AAAA,aAGpC,aAAa,QAAQ;AAAA;AAAA;AAAA,EAGhC;AAAA;AAAA;AAAA;AAIF;",
6
+ "names": []
7
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/inputs/component-input-color.ts"],
4
- "sourcesContent": ["import type { Context } from \"koa\";\nimport type { Color, JDDContext } from \"@sealcode/jdd\";\nimport type { StatefulPage } from \"@sealcode/sealgen\";\nimport type { ComponentPreviewActions } from \"../component-preview-actions.js\";\nimport type { JDDPageState } from \"../jdd-page.js\";\nimport { tempstream } from \"tempstream\";\nimport { printArgPath } from \"./print-arg-path.js\";\nimport { htmlEscape } from \"escape-goat\";\n\nexport function ComponentInputColor<State extends JDDPageState>({\n\targ_path,\n\tvalue,\n\tonchange,\n}: {\n\tstate: State;\n\targ_path: string[];\n\targ: Color;\n\tvalue: string | null;\n\tpage: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;\n\tctx: Context;\n\tonchange?: string;\n\tmakeJDDContext: (ctx: Context) => JDDContext;\n}): JSX.Element {\n\treturn tempstream/* HTML */ `<div style=\"margin-bottom: 10px\">\n\t\t<div>\n\t\t\t<label>\n\t\t\t\t${arg_path.at(-1) || \"\"}\n\t\t\t\t<input\n\t\t\t\t\ttype=\"color\"\n\t\t\t\t\tname=\"${`$${printArgPath(arg_path)}`}\"\n\t\t\t\t\tvalue=\"${htmlEscape(value || \"#000000\")}\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tonchange=\"${onchange || \"\"}\"\n\t\t\t\t/>\n\t\t\t</label>\n\t\t</div>\n\t</div>`;\n}\n"],
4
+ "sourcesContent": ["import type { Context } from \"koa\";\nimport type { Color, JDDContext } from \"@sealcode/jdd\";\nimport type { StatefulPage } from \"@sealcode/sealgen\";\nimport type { ComponentPreviewActions } from \"../component-preview-actions.js\";\nimport type { JDDPageState } from \"../jdd-page.js\";\nimport { tempstream } from \"tempstream\";\nimport { printArgPath } from \"./print-arg-path.js\";\nimport { htmlEscape } from \"escape-goat\";\n\nexport function ComponentInputColor<State extends JDDPageState>({\n\targ_path,\n\tvalue,\n\tonchange,\n}: {\n\tstate: State;\n\targ_path: string[];\n\targ: Color;\n\tvalue: string | null;\n\tpage: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;\n\tctx: Context;\n\tonchange?: string;\n\tmakeJDDContext: (ctx: Context) => JDDContext;\n}): JSX.Element {\n\treturn tempstream /* HTML */ `<div style=\"margin-bottom: 10px\">\n\t\t<div>\n\t\t\t<label>\n\t\t\t\t${arg_path.at(-1) || \"\"}\n\t\t\t\t<input\n\t\t\t\t\ttype=\"color\"\n\t\t\t\t\tname=\"${`$${printArgPath(arg_path)}`}\"\n\t\t\t\t\tvalue=\"${htmlEscape(value || \"#000000\")}\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tonchange=\"${onchange || \"\"}\"\n\t\t\t\t/>\n\t\t\t</label>\n\t\t</div>\n\t</div>`;\n}\n"],
5
5
  "mappings": "AAKA,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAEpB,SAAS,oBAAgD;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AACD,GASgB;AACf,SAAO;AAAA;AAAA;AAAA,MAGF,SAAS,GAAG,EAAE,KAAK;AAAA;AAAA;AAAA,aAGZ,IAAI,aAAa,QAAQ;AAAA,cACxB,WAAW,SAAS,SAAS;AAAA;AAAA,iBAE1B,YAAY;AAAA;AAAA;AAAA;AAAA;AAK7B;",
6
6
  "names": []
7
7
  }
@@ -3,7 +3,8 @@ function ComponentInputEnum({
3
3
  arg_path,
4
4
  arg,
5
5
  value,
6
- onchange
6
+ onchange,
7
+ jdd_context
7
8
  }) {
8
9
  return `<div id=${`component-input-enum-${arg_path.join("-")}`}>
9
10
  <label>
@@ -12,13 +13,13 @@ function ComponentInputEnum({
12
13
  name="${`$${printArgPath(arg_path)}`}"
13
14
  onchange="${onchange || ""}"
14
15
  >
15
- ${arg.values.map(
16
+ ${arg.getValues(jdd_context).map(
16
17
  (v) => `<option
17
- value="${v}"
18
- ${value == v ? "selected" : ""}
19
- >
20
- ${v}
21
- </option>`
18
+ value="${v}"
19
+ ${value == v ? "selected" : ""}
20
+ >
21
+ ${v}
22
+ </option>`
22
23
  ).join("")}
23
24
  </select>
24
25
  </label>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/inputs/component-input-enum.ts"],
4
- "sourcesContent": ["import type { Enum } from \"@sealcode/jdd\";\nimport { printArgPath } from \"./print-arg-path.js\";\n\nexport function ComponentInputEnum<State, S extends string, T extends Enum<S>>({\n\targ_path,\n\targ,\n\tvalue,\n\tonchange,\n}: {\n\tstate: State;\n\targ_path: string[];\n\targ: T;\n\tvalue: string;\n\tonchange?: string;\n}) {\n\treturn /* HTML */ `<div id=${`component-input-enum-${arg_path.join(\"-\")}`}>\n\t\t<label>\n\t\t\t${arg_path.at(-1) || \"\"}\n\t\t\t<select\n\t\t\t\tname=\"${`$${printArgPath(arg_path)}`}\"\n\t\t\t\tonchange=\"${onchange || \"\"}\"\n\t\t\t>\n\t\t\t\t${arg.values\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(v: S) => /* HTML */ `<option\n\t\t\t\t\t\t\tvalue=\"${v}\"\n\t\t\t\t\t\t\t${value == v ? \"selected\" : \"\"}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${v}\n\t\t\t\t\t\t</option>`\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\")}\n\t\t\t</select>\n\t\t</label>\n\t</div>`;\n}\n"],
5
- "mappings": "AACA,SAAS,oBAAoB;AAEtB,SAAS,mBAA+D;AAAA,EAC9E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAMG;AACF,SAAkB,WAAW,wBAAwB,SAAS,KAAK,GAAG;AAAA;AAAA,KAElE,SAAS,GAAG,EAAE,KAAK;AAAA;AAAA,YAEZ,IAAI,aAAa,QAAQ;AAAA,gBACrB,YAAY;AAAA;AAAA,MAEtB,IAAI,OACJ;AAAA,IACA,CAAC,MAAoB;AAAA,gBACX;AAAA,SACP,SAAS,IAAI,aAAa;AAAA;AAAA,SAE1B;AAAA;AAAA,EAEJ,EACC,KAAK,EAAE;AAAA;AAAA;AAAA;AAIb;",
4
+ "sourcesContent": ["import type { Enum, JDDContext } from \"@sealcode/jdd\";\nimport { printArgPath } from \"./print-arg-path.js\";\n\nexport function ComponentInputEnum<State, S extends string, T extends Enum<S>>({\n\targ_path,\n\targ,\n\tvalue,\n\tonchange,\n\tjdd_context,\n}: {\n\tstate: State;\n\targ_path: string[];\n\targ: T;\n\tvalue: string;\n\tonchange?: string;\n\tjdd_context: JDDContext;\n}) {\n\treturn /* HTML */ `<div id=${`component-input-enum-${arg_path.join(\"-\")}`}>\n\t\t<label>\n\t\t\t${arg_path.at(-1) || \"\"}\n\t\t\t<select\n\t\t\t\tname=\"${`$${printArgPath(arg_path)}`}\"\n\t\t\t\tonchange=\"${onchange || \"\"}\"\n\t\t\t>\n\t\t\t\t${arg\n\t\t\t\t\t.getValues(jdd_context)\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(v: S) =>\n\t\t\t\t\t\t\t/* HTML */ `<option\n\t\t\t\t\t\t\t\tvalue=\"${v}\"\n\t\t\t\t\t\t\t\t${value == v ? \"selected\" : \"\"}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t${v}\n\t\t\t\t\t\t\t</option>`\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\")}\n\t\t\t</select>\n\t\t</label>\n\t</div>`;\n}\n"],
5
+ "mappings": "AACA,SAAS,oBAAoB;AAEtB,SAAS,mBAA+D;AAAA,EAC9E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAOG;AACF,SAAkB,WAAW,wBAAwB,SAAS,KAAK,GAAG;AAAA;AAAA,KAElE,SAAS,GAAG,EAAE,KAAK;AAAA;AAAA,YAEZ,IAAI,aAAa,QAAQ;AAAA,gBACrB,YAAY;AAAA;AAAA,MAEtB,IACA,UAAU,WAAW,EACrB;AAAA,IACA,CAAC,MACW;AAAA,iBACD;AAAA,UACP,SAAS,IAAI,aAAa;AAAA;AAAA,UAE1B;AAAA;AAAA,EAEL,EACC,KAAK,EAAE;AAAA;AAAA;AAAA;AAIb;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/inputs/component-input-image.ts"],
4
- "sourcesContent": ["import type { Context } from \"koa\";\nimport type { FilePointer } from \"@sealcode/file-manager\";\nimport type { Image, JDDContext } from \"@sealcode/jdd\";\nimport type { StatefulPage } from \"@sealcode/sealgen\";\nimport type { ComponentPreviewActions } from \"../component-preview-actions.js\";\nimport type { JDDPageState } from \"../jdd-page.js\";\nimport { tempstream } from \"tempstream\";\nimport { printArgPath } from \"./print-arg-path.js\";\nimport { htmlEscape } from \"escape-goat\";\n\nexport function ComponentInputImage<State extends JDDPageState>({\n\targ_path,\n\targ,\n\tvalue,\n\tctx,\n\tpage,\n\tstate,\n\tmakeJDDContext,\n}: {\n\tstate: State;\n\targ_path: string[];\n\targ: Image;\n\tvalue: FilePointer | null;\n\tpage: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;\n\tctx: Context;\n\tmakeJDDContext: (ctx: Context) => JDDContext;\n}): JSX.Element {\n\tconst jdd_context = makeJDDContext(ctx);\n\treturn tempstream/* HTML */ `<div style=\"margin-bottom: 10px\">\n\t\t<label\n\t\t\tstyle=\"display: flex; align-items: center; column-gap: 10px;\"\n\t\t\tdata-controller=\"input-image-preview\"\n\t\t>\n\t\t\t${arg_path.at(-1) || \"\"}\n\t\t\t<div class=\"image-preview-container\">\n\t\t\t\t${value &&\n\t\t\t\tjdd_context.render_image(value, {\n\t\t\t\t\tcontainer: {\n\t\t\t\t\t\twidth: 40,\n\t\t\t\t\t\theight: 40,\n\t\t\t\t\t\tobjectFit: \"cover\",\n\t\t\t\t\t},\n\t\t\t\t\tcrop: { width: 40, height: 40 },\n\t\t\t\t\tstyle: \"height: 40px; width: 40px;\",\n\t\t\t\t\talt: \"\",\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\tname=\"${`$${printArgPath(arg_path)}.new`}\"\n\t\t\t\tvalue=\"\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tdata-action=\"change->input-image-preview#handleChange\"\n\t\t\t\t${arg.hasParent(\"list\") ? \"multiple\" : \"\"}\n\t\t\t/>\n\t\t</label>\n\t\t<div>\n\t\t\t<input\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"${`$${printArgPath(arg_path)}.old`}\"\n\t\t\t\tvalue=\"${htmlEscape(value?.token || \"\")}\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t/>\n\t\t</div>\n\t\t${page.makeActionButton(\n\t\t\tstate,\n\t\t\t{\n\t\t\t\taction: \"remove_file\",\n\t\t\t\tlabel: \"\u274C\",\n\t\t\t},\n\t\t\targ_path\n\t\t)}\n\t</div>`;\n}\n"],
4
+ "sourcesContent": ["import type { Context } from \"koa\";\nimport type { FilePointer } from \"@sealcode/file-manager\";\nimport type { Image, JDDContext } from \"@sealcode/jdd\";\nimport type { StatefulPage } from \"@sealcode/sealgen\";\nimport type { ComponentPreviewActions } from \"../component-preview-actions.js\";\nimport type { JDDPageState } from \"../jdd-page.js\";\nimport { tempstream } from \"tempstream\";\nimport { printArgPath } from \"./print-arg-path.js\";\nimport { htmlEscape } from \"escape-goat\";\n\nexport function ComponentInputImage<State extends JDDPageState>({\n\targ_path,\n\targ,\n\tvalue,\n\tctx,\n\tpage,\n\tstate,\n\tmakeJDDContext,\n}: {\n\tstate: State;\n\targ_path: string[];\n\targ: Image;\n\tvalue: FilePointer | null;\n\tpage: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;\n\tctx: Context;\n\tmakeJDDContext: (ctx: Context) => JDDContext;\n}): JSX.Element {\n\tconst jdd_context = makeJDDContext(ctx);\n\treturn tempstream /* HTML */ `<div style=\"margin-bottom: 10px\">\n\t\t<label\n\t\t\tstyle=\"display: flex; align-items: center; column-gap: 10px;\"\n\t\t\tdata-controller=\"input-image-preview\"\n\t\t>\n\t\t\t${arg_path.at(-1) || \"\"}\n\t\t\t<div class=\"image-preview-container\">\n\t\t\t\t${value &&\n\t\t\t\tjdd_context.render_image(value, {\n\t\t\t\t\tcontainer: {\n\t\t\t\t\t\twidth: 40,\n\t\t\t\t\t\theight: 40,\n\t\t\t\t\t\tobjectFit: \"cover\",\n\t\t\t\t\t},\n\t\t\t\t\tcrop: { width: 40, height: 40 },\n\t\t\t\t\tstyle: \"height: 40px; width: 40px;\",\n\t\t\t\t\talt: \"\",\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\tname=\"${`$${printArgPath(arg_path)}.new`}\"\n\t\t\t\tvalue=\"\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tdata-action=\"change->input-image-preview#handleChange\"\n\t\t\t\t${arg.hasParent(\"list\") ? \"multiple\" : \"\"}\n\t\t\t/>\n\t\t</label>\n\t\t<div>\n\t\t\t<input\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"${`$${printArgPath(arg_path)}.old`}\"\n\t\t\t\tvalue=\"${htmlEscape(value?.token || \"\")}\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t/>\n\t\t</div>\n\t\t${page.makeActionButton(\n\t\t\tstate,\n\t\t\t{\n\t\t\t\taction: \"remove_file\",\n\t\t\t\tlabel: \"\u274C\",\n\t\t\t},\n\t\t\targ_path\n\t\t)}\n\t</div>`;\n}\n"],
5
5
  "mappings": "AAMA,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAEpB,SAAS,oBAAgD;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAQgB;AACf,QAAM,cAAc,eAAe,GAAG;AACtC,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,KAKH,SAAS,GAAG,EAAE,KAAK;AAAA;AAAA,MAElB,SACF,YAAY,aAAa,OAAO;AAAA,IAC/B,WAAW;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAW;AAAA,IACZ;AAAA,IACA,MAAM,EAAE,OAAO,IAAI,QAAQ,GAAG;AAAA,IAC9B,OAAO;AAAA,IACP,KAAK;AAAA,EACN,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,YAKO,IAAI,aAAa,QAAQ;AAAA;AAAA;AAAA;AAAA,MAI/B,IAAI,UAAU,MAAM,IAAI,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAM/B,IAAI,aAAa,QAAQ;AAAA,aACxB,YAAW,+BAAO,UAAS,EAAE;AAAA;AAAA;AAAA;AAAA,IAItC,KAAK;AAAA,IACN;AAAA,IACA;AAAA,MACC,QAAQ;AAAA,MACR,OAAO;AAAA,IACR;AAAA,IACA;AAAA,EACD;AAAA;AAEF;",
6
6
  "names": []
7
7
  }
@@ -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 { ComponentArgument, JDDContext, List } 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\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}): 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})}\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"],
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport type { Context } from \"koa\";\nimport type { ComponentArgument, JDDContext, List } 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\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}): 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})}\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
5
  "mappings": "AAKA,SAAS,sBAAsB;AAE/B,SAAS,kBAAkB;AAE3B,eAAsB,mBAGpB;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,KACG;AACJ,GAUoB;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,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
  }
@@ -14,11 +14,11 @@ async function ComponentInputSingleReference({
14
14
  <select name="${`$${printArgPath(arg_path)}`}" onchange="${onchange || ""}">
15
15
  ${values.sort((v1, v2) => v1.label > v2.label ? 1 : -1).map(
16
16
  (v) => `<option
17
- value="${v.value}"
18
- ${value == v.value ? "selected" : ""}
19
- >
20
- ${v.label}
21
- </option>`
17
+ value="${v.value}"
18
+ ${value == v.value ? "selected" : ""}
19
+ >
20
+ ${v.label}
21
+ </option>`
22
22
  ).join("")}
23
23
  </select>
24
24
  </label>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/inputs/component-input-single-reference.ts"],
4
- "sourcesContent": ["import type { Context } from \"koa\";\nimport type { JDDContext, SingleReference } from \"@sealcode/jdd\";\nimport { printArgPath } from \"./print-arg-path.js\";\n\nexport async function ComponentInputSingleReference<\n\tState,\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tT extends SingleReference<any>\n>({\n\tctx,\n\targ_path,\n\targ,\n\tvalue,\n\tonchange,\n\tmakeJDDContext,\n}: {\n\tctx: Context;\n\tstate: State;\n\targ_path: string[];\n\targ: T;\n\tvalue: string;\n\tonchange?: string;\n\tmakeJDDContext: (ctx: Context) => JDDContext;\n}): Promise<string> {\n\tconst values = await arg.getValues(makeJDDContext(ctx));\n\tconst ret = `<div>\n\t\t\t<label>\n\t\t\t\t${arg_path.at(-1) || \"\"}\n\t\t\t\t<select name=\"${`$${printArgPath(arg_path)}`}\" onchange=\"${onchange || \"\"}\">\n\t\t\t\t\t${values\n\t\t\t\t\t\t.sort((v1, v2) => (v1.label > v2.label ? 1 : -1))\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(v) => /* HTML */ `<option\n\t\t\t\t\t\t\t\tvalue=\"${v.value}\"\n\t\t\t\t\t\t\t\t${value == v.value ? \"selected\" : \"\"}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t${v.label}\n\t\t\t\t\t\t\t</option>`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join(\"\")}\n\t\t\t\t</select>\n\t\t\t</label>\n\t\t</div>`;\n\treturn ret;\n}\n"],
5
- "mappings": "AAEA,SAAS,oBAAoB;AAE7B,eAAsB,8BAIpB;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAQoB;AACnB,QAAM,SAAS,MAAM,IAAI,UAAU,eAAe,GAAG,CAAC;AACtD,QAAM,MAAM;AAAA;AAAA,MAEP,SAAS,GAAG,EAAE,KAAK;AAAA,oBACL,IAAI,aAAa,QAAQ,kBAAkB,YAAY;AAAA,OACpE,OACA,KAAK,CAAC,IAAI,OAAQ,GAAG,QAAQ,GAAG,QAAQ,IAAI,EAAG,EAC/C;AAAA,IACA,CAAC,MAAiB;AAAA,iBACR,EAAE;AAAA,UACT,SAAS,EAAE,QAAQ,aAAa;AAAA;AAAA,UAEhC,EAAE;AAAA;AAAA,EAEN,EACC,KAAK,EAAE;AAAA;AAAA;AAAA;AAIb,SAAO;AACR;",
4
+ "sourcesContent": ["import type { Context } from \"koa\";\nimport type { JDDContext, SingleReference } from \"@sealcode/jdd\";\nimport { printArgPath } from \"./print-arg-path.js\";\n\nexport async function ComponentInputSingleReference<\n\tState,\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tT extends SingleReference<any>,\n>({\n\tctx,\n\targ_path,\n\targ,\n\tvalue,\n\tonchange,\n\tmakeJDDContext,\n}: {\n\tctx: Context;\n\tstate: State;\n\targ_path: string[];\n\targ: T;\n\tvalue: string;\n\tonchange?: string;\n\tmakeJDDContext: (ctx: Context) => JDDContext;\n}): Promise<string> {\n\tconst values = await arg.getValues(makeJDDContext(ctx));\n\tconst ret = `<div>\n\t\t\t<label>\n\t\t\t\t${arg_path.at(-1) || \"\"}\n\t\t\t\t<select name=\"${`$${printArgPath(arg_path)}`}\" onchange=\"${onchange || \"\"}\">\n\t\t\t\t\t${values\n\t\t\t\t\t\t.sort((v1, v2) => (v1.label > v2.label ? 1 : -1))\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(v) =>\n\t\t\t\t\t\t\t\t/* HTML */ `<option\n\t\t\t\t\t\t\t\t\tvalue=\"${v.value}\"\n\t\t\t\t\t\t\t\t\t${value == v.value ? \"selected\" : \"\"}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t${v.label}\n\t\t\t\t\t\t\t\t</option>`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join(\"\")}\n\t\t\t\t</select>\n\t\t\t</label>\n\t\t</div>`;\n\treturn ret;\n}\n"],
5
+ "mappings": "AAEA,SAAS,oBAAoB;AAE7B,eAAsB,8BAIpB;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAQoB;AACnB,QAAM,SAAS,MAAM,IAAI,UAAU,eAAe,GAAG,CAAC;AACtD,QAAM,MAAM;AAAA;AAAA,MAEP,SAAS,GAAG,EAAE,KAAK;AAAA,oBACL,IAAI,aAAa,QAAQ,kBAAkB,YAAY;AAAA,OACpE,OACA,KAAK,CAAC,IAAI,OAAQ,GAAG,QAAQ,GAAG,QAAQ,IAAI,EAAG,EAC/C;AAAA,IACA,CAAC,MACW;AAAA,kBACD,EAAE;AAAA,WACT,SAAS,EAAE,QAAQ,aAAa;AAAA;AAAA,WAEhC,EAAE;AAAA;AAAA,EAEP,EACC,KAAK,EAAE;AAAA;AAAA;AAAA;AAIb,SAAO;AACR;",
6
6
  "names": []
7
7
  }
@@ -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 );\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,EACC;AAAA,OAIM;AAEP,SAAS,sBAAsB;AAI/B,eAAsB,yBAIpB;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,KACG;AACJ,GASG;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,EACH;AAEJ,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,GAAG;AAAA,QACJ,CAAC;AAAA;AAED,eAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD,GACC,KAAK,EAAE;AAAA;AAEX;",
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,EACC;AAAA,OAIM;AAEP,SAAS,sBAAsB;AAI/B,eAAsB,yBAIpB;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,KACG;AACJ,GASG;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,GAAG;AAAA,QACJ,CAAC;AAAA;AAED,eAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD,GACC,KAAK,EAAE;AAAA;AAEX;",
6
6
  "names": []
7
7
  }