@cocoar/vue-page-builder 2.19.0 → 3.0.0

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 (202) hide show
  1. package/IDP_INTEGRATION.md +350 -0
  2. package/README.md +498 -169
  3. package/dist/BuilderElementCodeDialog-DXGNzleE.js +64 -0
  4. package/dist/BuilderExpressionDialog-yIfwYgXD.js +61 -0
  5. package/dist/BuilderLogicPanel-C9urz5Cd.js +68 -0
  6. package/dist/BuilderPageRootCodeDialog-CQsg_ozW.js +61 -0
  7. package/dist/CoarPageBuilder.vue.d.ts +71 -1
  8. package/dist/CoarPageBuilder.vue.d.ts.map +1 -1
  9. package/dist/CoarPageRenderer.vue.d.ts +36 -1
  10. package/dist/CoarPageRenderer.vue.d.ts.map +1 -1
  11. package/dist/PageNode.vue.d.ts +9 -1
  12. package/dist/PageNode.vue.d.ts.map +1 -1
  13. package/dist/VisualMarkupInspector-CmAOc-CH.js +54 -0
  14. package/dist/_plugin-vue_export-helper-BTgDAbhb.js +8 -0
  15. package/dist/actionValues.d.ts +21 -0
  16. package/dist/actionValues.d.ts.map +1 -0
  17. package/dist/assets/pageScriptRuntime.worker-Cll8Lm_I.js +25 -0
  18. package/dist/builder/BuilderCanvas.vue.d.ts +31 -1
  19. package/dist/builder/BuilderCanvas.vue.d.ts.map +1 -1
  20. package/dist/builder/BuilderCanvasNode.vue.d.ts.map +1 -1
  21. package/dist/builder/BuilderCompositionsPanel.vue.d.ts +3 -0
  22. package/dist/builder/BuilderCompositionsPanel.vue.d.ts.map +1 -0
  23. package/dist/builder/BuilderElementCodeDialog.vue.d.ts +14 -0
  24. package/dist/builder/BuilderElementCodeDialog.vue.d.ts.map +1 -0
  25. package/dist/builder/BuilderExpressionDialog.vue.d.ts +11 -0
  26. package/dist/builder/BuilderExpressionDialog.vue.d.ts.map +1 -0
  27. package/dist/builder/BuilderFxButton.vue.d.ts +28 -0
  28. package/dist/builder/BuilderFxButton.vue.d.ts.map +1 -0
  29. package/dist/builder/BuilderLogicPanel.vue.d.ts +3 -0
  30. package/dist/builder/BuilderLogicPanel.vue.d.ts.map +1 -0
  31. package/dist/builder/BuilderOutline.vue.d.ts.map +1 -1
  32. package/dist/builder/BuilderOutlineNode.vue.d.ts.map +1 -1
  33. package/dist/builder/BuilderPageRootCodeDialog.vue.d.ts +13 -0
  34. package/dist/builder/BuilderPageRootCodeDialog.vue.d.ts.map +1 -0
  35. package/dist/builder/BuilderPalette.vue.d.ts +3 -0
  36. package/dist/builder/BuilderPalette.vue.d.ts.map +1 -0
  37. package/dist/builder/BuilderPropsPanel.vue.d.ts.map +1 -1
  38. package/dist/builder/BuilderTranslationsPanel.vue.d.ts +6 -0
  39. package/dist/builder/BuilderTranslationsPanel.vue.d.ts.map +1 -0
  40. package/dist/builder/boxSides.d.ts +30 -0
  41. package/dist/builder/boxSides.d.ts.map +1 -0
  42. package/dist/builder/builderContext.d.ts +46 -4
  43. package/dist/builder/builderContext.d.ts.map +1 -1
  44. package/dist/builder/expressionAuthoring.d.ts +7 -0
  45. package/dist/builder/expressionAuthoring.d.ts.map +1 -0
  46. package/dist/builder/nodeDefaults.d.ts +10 -5
  47. package/dist/builder/nodeDefaults.d.ts.map +1 -1
  48. package/dist/builder/pageCodeAuthoring.d.ts +11 -0
  49. package/dist/builder/pageCodeAuthoring.d.ts.map +1 -0
  50. package/dist/builder/props/ActionPropsEditor.vue.d.ts +9 -0
  51. package/dist/builder/props/ActionPropsEditor.vue.d.ts.map +1 -0
  52. package/dist/builder/props/BuilderViewportControl.vue.d.ts +23 -0
  53. package/dist/builder/props/BuilderViewportControl.vue.d.ts.map +1 -0
  54. package/dist/builder/props/BuilderZoomControl.vue.d.ts +24 -0
  55. package/dist/builder/props/BuilderZoomControl.vue.d.ts.map +1 -0
  56. package/dist/builder/props/CompoundLengthProperty.vue.d.ts +20 -0
  57. package/dist/builder/props/CompoundLengthProperty.vue.d.ts.map +1 -0
  58. package/dist/builder/props/StyleProps.vue.d.ts +1 -0
  59. package/dist/builder/props/StyleProps.vue.d.ts.map +1 -1
  60. package/dist/builder/schemaMigrateV1.d.ts +7 -0
  61. package/dist/builder/schemaMigrateV1.d.ts.map +1 -1
  62. package/dist/builder/schemaNormalize.d.ts.map +1 -1
  63. package/dist/builder/{useSchemaValidation.d.ts → useAuthoringFindings.d.ts} +8 -8
  64. package/dist/builder/useAuthoringFindings.d.ts.map +1 -0
  65. package/dist/builder/useBuilderDnd.d.ts +8 -1
  66. package/dist/builder/useBuilderDnd.d.ts.map +1 -1
  67. package/dist/builder/useCanvasZoom.d.ts +50 -0
  68. package/dist/builder/useCanvasZoom.d.ts.map +1 -0
  69. package/dist/builder/usePageBuilder.d.ts +2 -0
  70. package/dist/builder/usePageBuilder.d.ts.map +1 -1
  71. package/dist/builder/usePageCompositions.d.ts +71 -0
  72. package/dist/builder/usePageCompositions.d.ts.map +1 -0
  73. package/dist/builderContext-B3rX2dxZ.js +4 -0
  74. package/dist/compositions.d.ts +79 -0
  75. package/dist/compositions.d.ts.map +1 -0
  76. package/dist/conditions.d.ts +8 -0
  77. package/dist/conditions.d.ts.map +1 -0
  78. package/dist/context.d.ts +17 -3
  79. package/dist/context.d.ts.map +1 -1
  80. package/dist/documentValidation.d.ts +12 -0
  81. package/dist/documentValidation.d.ts.map +1 -0
  82. package/dist/elements/builtins.d.ts.map +1 -1
  83. package/dist/elements/button/ButtonInspector.vue.d.ts.map +1 -1
  84. package/dist/elements/button/ButtonRenderer.vue.d.ts.map +1 -1
  85. package/dist/elements/button/index.d.ts +2 -2
  86. package/dist/elements/button/index.d.ts.map +1 -1
  87. package/dist/elements/card/CardInspector.vue.d.ts.map +1 -1
  88. package/dist/elements/card/index.d.ts.map +1 -1
  89. package/dist/elements/checkbox/CheckboxDefaultInput.vue.d.ts.map +1 -1
  90. package/dist/elements/checkbox/CheckboxInspector.vue.d.ts.map +1 -1
  91. package/dist/elements/checkbox/CheckboxRenderer.vue.d.ts.map +1 -1
  92. package/dist/elements/checkbox/index.d.ts.map +1 -1
  93. package/dist/elements/date-input/DateInputDefaultInput.vue.d.ts.map +1 -1
  94. package/dist/elements/date-input/DateInputInspector.vue.d.ts.map +1 -1
  95. package/dist/elements/date-input/index.d.ts.map +1 -1
  96. package/dist/elements/datetime-input/DateTimeInputDefaultInput.vue.d.ts.map +1 -1
  97. package/dist/elements/datetime-input/DateTimeInputInspector.vue.d.ts.map +1 -1
  98. package/dist/elements/datetime-input/index.d.ts.map +1 -1
  99. package/dist/elements/feedback/FeedbackInspector.vue.d.ts +8 -0
  100. package/dist/elements/feedback/FeedbackInspector.vue.d.ts.map +1 -0
  101. package/dist/elements/feedback/FeedbackPreview.vue.d.ts +7 -0
  102. package/dist/elements/feedback/FeedbackPreview.vue.d.ts.map +1 -0
  103. package/dist/elements/{stack/StackInspector.vue.d.ts → feedback/FeedbackRenderer.vue.d.ts} +3 -4
  104. package/dist/elements/feedback/FeedbackRenderer.vue.d.ts.map +1 -0
  105. package/dist/elements/feedback/index.d.ts +6 -0
  106. package/dist/elements/feedback/index.d.ts.map +1 -0
  107. package/dist/elements/heading/HeadingInspector.vue.d.ts.map +1 -1
  108. package/dist/elements/heading/index.d.ts.map +1 -1
  109. package/dist/elements/image/ImageInspector.vue.d.ts.map +1 -1
  110. package/dist/elements/image/index.d.ts.map +1 -1
  111. package/dist/elements/link/LinkInspector.vue.d.ts +1 -1
  112. package/dist/elements/link/LinkInspector.vue.d.ts.map +1 -1
  113. package/dist/elements/link/index.d.ts +1 -2
  114. package/dist/elements/link/index.d.ts.map +1 -1
  115. package/dist/elements/multi-select/MultiSelectDefaultInput.vue.d.ts.map +1 -1
  116. package/dist/elements/multi-select/MultiSelectInspector.vue.d.ts.map +1 -1
  117. package/dist/elements/multi-select/index.d.ts.map +1 -1
  118. package/dist/elements/note/NoteInspector.vue.d.ts.map +1 -1
  119. package/dist/elements/number-input/NumberInputDefaultInput.vue.d.ts.map +1 -1
  120. package/dist/elements/number-input/NumberInputInspector.vue.d.ts.map +1 -1
  121. package/dist/elements/number-input/index.d.ts.map +1 -1
  122. package/dist/elements/otp-input/OtpInputInspector.vue.d.ts.map +1 -1
  123. package/dist/elements/otp-input/index.d.ts.map +1 -1
  124. package/dist/elements/paragraph/index.d.ts.map +1 -1
  125. package/dist/elements/password-input/PasswordInputInspector.vue.d.ts.map +1 -1
  126. package/dist/elements/password-input/index.d.ts.map +1 -1
  127. package/dist/elements/previewUtils.d.ts.map +1 -1
  128. package/dist/elements/radio-group/RadioGroupDefaultInput.vue.d.ts.map +1 -1
  129. package/dist/elements/radio-group/RadioGroupInspector.vue.d.ts.map +1 -1
  130. package/dist/elements/radio-group/index.d.ts.map +1 -1
  131. package/dist/elements/registry.d.ts +265 -2
  132. package/dist/elements/registry.d.ts.map +1 -1
  133. package/dist/elements/repeat/RepeatInspector.vue.d.ts +8 -0
  134. package/dist/elements/repeat/RepeatInspector.vue.d.ts.map +1 -0
  135. package/dist/elements/repeat/RepeatRenderer.vue.d.ts +29 -0
  136. package/dist/elements/repeat/RepeatRenderer.vue.d.ts.map +1 -0
  137. package/dist/elements/repeat/index.d.ts +10 -0
  138. package/dist/elements/repeat/index.d.ts.map +1 -0
  139. package/dist/elements/section/SectionInspector.vue.d.ts.map +1 -1
  140. package/dist/elements/section/index.d.ts.map +1 -1
  141. package/dist/elements/select/SelectDefaultInput.vue.d.ts.map +1 -1
  142. package/dist/elements/select/SelectInspector.vue.d.ts.map +1 -1
  143. package/dist/elements/select/index.d.ts.map +1 -1
  144. package/dist/elements/spacer/SpacerInspector.vue.d.ts.map +1 -1
  145. package/dist/elements/stack/StackRenderer.vue.d.ts.map +1 -1
  146. package/dist/elements/stack/index.d.ts.map +1 -1
  147. package/dist/elements/switch/SwitchDefaultInput.vue.d.ts.map +1 -1
  148. package/dist/elements/switch/SwitchInspector.vue.d.ts.map +1 -1
  149. package/dist/elements/switch/index.d.ts.map +1 -1
  150. package/dist/elements/text-input/TextInputInspector.vue.d.ts.map +1 -1
  151. package/dist/elements/text-input/index.d.ts.map +1 -1
  152. package/dist/elements/usePageElement.d.ts +6 -2
  153. package/dist/elements/usePageElement.d.ts.map +1 -1
  154. package/dist/elements/visual-markup/VisualMarkupInspector.vue.d.ts +10 -0
  155. package/dist/elements/visual-markup/VisualMarkupInspector.vue.d.ts.map +1 -0
  156. package/dist/elements/visual-markup/VisualMarkupPreview.vue.d.ts +7 -0
  157. package/dist/elements/visual-markup/VisualMarkupPreview.vue.d.ts.map +1 -0
  158. package/dist/elements/visual-markup/VisualMarkupRenderer.vue.d.ts +7 -0
  159. package/dist/elements/visual-markup/VisualMarkupRenderer.vue.d.ts.map +1 -0
  160. package/dist/elements/visual-markup/index.d.ts +6 -0
  161. package/dist/elements/visual-markup/index.d.ts.map +1 -0
  162. package/dist/elements/visual-markup/visualDocument.d.ts +13 -0
  163. package/dist/elements/visual-markup/visualDocument.d.ts.map +1 -0
  164. package/dist/expressionAuthoring-7iAyadA3.js +74 -0
  165. package/dist/index.css +1 -1
  166. package/dist/index.d.ts +32 -2
  167. package/dist/index.d.ts.map +1 -1
  168. package/dist/index.js +8571 -3448
  169. package/dist/pageCode-echPQdna.js +455 -0
  170. package/dist/pageCode.d.ts +101 -0
  171. package/dist/pageCode.d.ts.map +1 -0
  172. package/dist/pageCodeAuthoring-C8grEAUf.js +123 -0
  173. package/dist/responsive.d.ts +7 -0
  174. package/dist/responsive.d.ts.map +1 -0
  175. package/dist/runtime/PageRuntimeHost.d.ts +57 -0
  176. package/dist/runtime/PageRuntimeHost.d.ts.map +1 -0
  177. package/dist/runtime/PageScriptRuntime.d.ts +62 -0
  178. package/dist/runtime/PageScriptRuntime.d.ts.map +1 -0
  179. package/dist/runtime/pageScriptRuntime.worker.d.ts +1 -0
  180. package/dist/runtime/pageScriptRuntime.worker.d.ts.map +1 -0
  181. package/dist/runtime/runtimeProtocol.d.ts +150 -0
  182. package/dist/runtime/runtimeProtocol.d.ts.map +1 -0
  183. package/dist/runtime/usePageCodeRuntime.d.ts +32 -0
  184. package/dist/runtime/usePageCodeRuntime.d.ts.map +1 -0
  185. package/dist/runtime-worker.js +240 -0
  186. package/dist/runtimeBindings.d.ts +32 -0
  187. package/dist/runtimeBindings.d.ts.map +1 -0
  188. package/dist/runtimeExpressions.d.ts +16 -0
  189. package/dist/runtimeExpressions.d.ts.map +1 -0
  190. package/dist/runtimeProtocol-Bg1C-O0c.js +36 -0
  191. package/dist/runtimeWorkerEntry.d.ts +2 -0
  192. package/dist/runtimeWorkerEntry.d.ts.map +1 -0
  193. package/dist/schema.d.ts +298 -31
  194. package/dist/schema.d.ts.map +1 -1
  195. package/dist/styleMapping.d.ts +7 -0
  196. package/dist/styleMapping.d.ts.map +1 -1
  197. package/dist/translations.d.ts +8 -0
  198. package/dist/translations.d.ts.map +1 -0
  199. package/dist/visualDocument-DKjWBfpW.js +139 -0
  200. package/package.json +24 -6
  201. package/dist/builder/useSchemaValidation.d.ts.map +0 -1
  202. package/dist/elements/stack/StackInspector.vue.d.ts.map +0 -1
@@ -0,0 +1,455 @@
1
+ //#region src/pageCode.ts
2
+ var e = "definePage({\n state: {},\n\n compute({ elements, fields, form, state, context, resources, viewport }) {\n // Configure existing elements here. Structure stays in the visual builder.\n },\n\n actions: {},\n})", t = "definePageState({ // @locked @slot:state\n counter: 0,\n}) // @locked", n = "definePageRoot({ // @locked\n compute(page, runtime) { // @locked\n // Properties Panel values // @locked @quick:start\n // Custom code (overrides values above) // @locked @quick:end @slot:compute\n // Configure the existing page root. Structure stays in the visual builder.\n }, // @locked\n}) // @locked", r = "defineElement({ // @locked\n compute(element, page) { // @locked\n // Properties Panel values // @locked @quick:start\n // Custom code (overrides values above) // @locked @quick:end @slot:compute\n // Configure this element. Page inputs live on page.*.\n }, // @locked\n actions: { // @locked\n async click(element, page, action) { // @locked @slot:click\n\n }, // @locked\n }, // @locked\n}) // @locked", i = (e) => `element-binding:${e}`, a = (e) => `page-root-binding:${e}`, o = (e) => `element-action:${e}`, s = (e) => `__element:${e}:click`, c = new Set([
3
+ "__proto__",
4
+ "prototype",
5
+ "constructor"
6
+ ]);
7
+ function l(e) {
8
+ if (typeof e != "object" || !e) return e;
9
+ if (Array.isArray(e)) return e.map((e) => l(e));
10
+ let t = Object.create(null);
11
+ for (let [n, r] of Object.entries(e)) c.has(n) || (t[n] = l(r));
12
+ return t;
13
+ }
14
+ function u(e) {
15
+ let t = (e.split(/[^A-Za-z0-9_$]+/).filter(Boolean).map((e, t) => t === 0 ? e : `${e.slice(0, 1).toUpperCase()}${e.slice(1)}`).join("") || "element").replace(/^[^A-Za-z_$]/, (e) => `_${e}`);
16
+ return /^(?:await|break|case|catch|class|const|continue|debugger|default|delete|do|else|export|extends|false|finally|for|function|if|import|in|instanceof|let|new|null|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/.test(t) ? `_${t}` : t;
17
+ }
18
+ function d(e, t) {
19
+ let n = 0, r = null, i = !1, a = !1, o = !1;
20
+ for (let s = t; s < e.length; s++) {
21
+ let t = e[s], c = e[s + 1];
22
+ if (a) {
23
+ t === "\n" && (a = !1);
24
+ continue;
25
+ }
26
+ if (o) {
27
+ t === "*" && c === "/" && (o = !1, s++);
28
+ continue;
29
+ }
30
+ if (r) {
31
+ if (i) {
32
+ i = !1;
33
+ continue;
34
+ }
35
+ if (t === "\\") {
36
+ i = !0;
37
+ continue;
38
+ }
39
+ t === r && (r = null);
40
+ continue;
41
+ }
42
+ if (t === "/" && c === "/") {
43
+ a = !0, s++;
44
+ continue;
45
+ }
46
+ if (t === "/" && c === "*") {
47
+ o = !0, s++;
48
+ continue;
49
+ }
50
+ if (t === "'" || t === "\"" || t === "`") {
51
+ r = t;
52
+ continue;
53
+ }
54
+ if (t === "{") n++;
55
+ else if (t === "}" && --n === 0) return s;
56
+ }
57
+ return -1;
58
+ }
59
+ function f(e, t) {
60
+ let n = e.replace(/\r\n/g, "\n").split("\n");
61
+ for (; n.length && !n[0].trim();) n.shift();
62
+ for (; n.length && !n.at(-1)?.trim();) n.pop();
63
+ let r = n.filter((e) => e.trim()), i = r.length ? Math.min(...r.map((e) => e.match(/^\s*/)?.[0].length ?? 0)) : 0;
64
+ return n.map((e) => `${t}${e.slice(i)}`).join("\n");
65
+ }
66
+ function p(e, t) {
67
+ let n = RegExp(`\\b(?:async\\s+)?${t}\\s*\\([^)]*\\)\\s*\\{`).exec(e);
68
+ if (!n) return "";
69
+ let r = e.indexOf("{", n.index + n[0].lastIndexOf("{")), i = d(e, r);
70
+ return i < 0 ? "" : e.slice(r + 1, i);
71
+ }
72
+ function m(e, t) {
73
+ let n = e.replace(/\r\n/g, "\n").split("\n"), r = n.findIndex((e) => RegExp(`//\\s*@locked\\b[^\\n]*?@slot:${t}\\b`).test(e));
74
+ if (r < 0) return;
75
+ let i = r + 1;
76
+ for (; i < n.length && !/\/\/\s*@locked\b/.test(n[i]);) i++;
77
+ return n.slice(r + 1, i).join("\n");
78
+ }
79
+ var h = /^(props|style|validation)\.([A-Za-z_$][\w$]*)$/;
80
+ function g(e, t) {
81
+ let n = JSON.stringify(t);
82
+ if (n === void 0) throw TypeError(`Quick Property "${e}" must be JSON-safe.`);
83
+ return `@quick:${encodeURIComponent(e)} @value:${encodeURIComponent(n)}`;
84
+ }
85
+ function _(e, t, n = "element") {
86
+ let r = h.exec(e);
87
+ if (!r) throw TypeError(`Unsupported Quick Property path "${e}".`);
88
+ let [, i, a] = r, o = JSON.stringify(t);
89
+ if (o === void 0) throw TypeError(`Quick Property "${e}" must be JSON-safe.`);
90
+ let s = t && typeof t == "object" && !Array.isArray(t) ? t : void 0, c = s?.source === "translation" && typeof s.key == "string" ? `i18n.text(${JSON.stringify(s.key)}, ${s.params === void 0 ? "undefined" : JSON.stringify(s.params)}, ${s.fallback === void 0 ? "undefined" : JSON.stringify(s.fallback)})` : o;
91
+ if (n === "page" && i !== "style") throw TypeError(`Page Root Quick Properties support style.* only, got "${e}".`);
92
+ return ` ${i === "validation" ? `element.validation = { ...(element.validation || {}), ${a}: ${c} };` : `${n}.${i}.${a} = ${c};`} // @locked ${g(e, t)}`;
93
+ }
94
+ function v(e) {
95
+ return e.replace(/\r\n/g, "\n").split("\n").filter((e) => /\/\/\s*@locked\b[^\n]*@quick:[^\s]+\s+@value:[^\s]+/.test(e));
96
+ }
97
+ function y(e) {
98
+ let t = Object.create(null);
99
+ for (let n of v(e ?? "")) {
100
+ let e = /@quick:([^\s]+)\s+@value:([^\s]+)/.exec(n);
101
+ if (e) try {
102
+ let n = decodeURIComponent(e[1]);
103
+ if (!h.test(n)) continue;
104
+ t[n] = JSON.parse(decodeURIComponent(e[2]));
105
+ } catch {}
106
+ }
107
+ return t;
108
+ }
109
+ function b(e, t, n, r, i) {
110
+ if (!h.test(t)) throw TypeError(`Unsupported Quick Property path "${t}".`);
111
+ let a = e.replace(/\r\n/g, "\n").split("\n"), o = encodeURIComponent(t), s = a.findIndex((e) => e.includes(`@quick:${o} `));
112
+ if (s >= 0 && a.splice(s, 1), n !== void 0) {
113
+ let e = a.findIndex((e) => /@quick:end\b/.test(e));
114
+ if (e < 0) throw Error(`${i} is missing its Quick Properties boundary.`);
115
+ a.splice(e, 0, _(t, n, r));
116
+ }
117
+ let c = a.findIndex((e) => /@quick:start\b/.test(e)), l = a.findIndex((e) => /@quick:end\b/.test(e));
118
+ if (c >= 0 && l > c) {
119
+ let e = a.slice(c + 1, l).sort((e, t) => {
120
+ let n = /@quick:([^\s]+)/.exec(e)?.[1] ?? "", r = /@quick:([^\s]+)/.exec(t)?.[1] ?? "";
121
+ return n.localeCompare(r);
122
+ });
123
+ a.splice(c + 1, l - c - 1, ...e);
124
+ }
125
+ return a.join("\n");
126
+ }
127
+ function x(e, t, n) {
128
+ return b(D(e), t, n, "element", "Element Code");
129
+ }
130
+ function S(e, t, n) {
131
+ return b(E(e), t, n, "page", "Page Root Code");
132
+ }
133
+ function C(e, t) {
134
+ let n = e.replace(/\bself\./g, "element.");
135
+ n = n.replace(/\belement\.state\b/g, "page.state").replace(/\belement\.fields\b/g, "page.fields").replace(/\belement\.form\b/g, "page.form").replace(/\belement\.context\b/g, "page.context").replace(/\belement\.resources\b/g, "page.resources").replace(/\belement\.viewport\b/g, "page.viewport"), t && (n = n.replace(/\belement\.payload\b/g, "action.payload"));
136
+ let r = [
137
+ "state",
138
+ "fields",
139
+ "form",
140
+ "context",
141
+ "resources",
142
+ "viewport"
143
+ ].filter((e) => RegExp(`\\b${e}\\b`).test(n)), i = [];
144
+ return r.length > 0 && i.push(`const { ${r.join(", ")} } = page;`), t && /\bpayload\b/.test(n) && i.push("const { payload } = action;"), i.length > 0 ? `${i.join("\n")}\n${n}` : n;
145
+ }
146
+ function w(e, t) {
147
+ let n = e.replace(/\belement\.state\b/g, "page.state").replace(/\belement\.fields\b/g, "page.fields").replace(/\belement\.form\b/g, "page.form").replace(/\belement\.context\b/g, "page.context").replace(/\belement\.resources\b/g, "page.resources").replace(/\belement\.viewport\b/g, "page.viewport");
148
+ return t && (n = n.replace(/\belement\.payload\b/g, "action.payload")), n;
149
+ }
150
+ function T(e) {
151
+ let n = e?.trim() || t;
152
+ if (/\/\/\s*@locked\b/.test(n)) return n;
153
+ let r = n.indexOf("definePageState"), i = n.indexOf("{", Math.max(0, r)), a = i >= 0 ? d(n, i) : -1;
154
+ return `definePageState({ // @locked @slot:state\n${f(i >= 0 && a > i ? n.slice(i + 1, a) : "", " ")}\n}) // @locked`;
155
+ }
156
+ function E(e) {
157
+ let t = e?.trim() || n, r = /\/\/\s*@locked\b/.test(t) && /\bcompute\s*\(\s*page\s*,\s*runtime\s*\)/.test(t);
158
+ if (r && /@quick:start\b/.test(t) && /@quick:end\b/.test(t)) return t;
159
+ let i = r ? m(t, "compute") ?? "" : p(t, "compute"), a = v(t).join("\n");
160
+ return `definePageRoot({ // @locked
161
+ compute(page, runtime) { // @locked
162
+ // Properties Panel values // @locked @quick:start
163
+ ${a ? `${a}\n` : ""} // Custom code (overrides values above) // @locked @quick:end @slot:compute
164
+ ${f(i, " ")}
165
+ }, // @locked
166
+ }) // @locked`;
167
+ }
168
+ function D(e) {
169
+ let t = e?.trim() || r, n = /\/\/\s*@locked\b/.test(t);
170
+ if (n && /\bcompute\s*\(\s*element\s*,\s*page\s*\)/.test(t) && /\bclick\s*\(\s*element\s*,\s*page\s*,\s*action\s*\)/.test(t) && /@quick:start\b/.test(t) && /@quick:end\b/.test(t)) return t;
171
+ let i = /\bcompute\s*\(\s*\{/.test(t) || /\bclick\s*\(\s*\{/.test(t), a = n ? m(t, "compute") ?? "" : p(t, "compute"), o = n ? m(t, "click") ?? "" : p(t, "click"), s = f(i ? C(a, !1) : w(a, !1), " "), c = f(i ? C(o, !0) : w(o, !0), " "), l = v(t).join("\n");
172
+ return `defineElement({ // @locked
173
+ compute(element, page) { // @locked
174
+ // Properties Panel values // @locked @quick:start
175
+ ${l ? `${l}\n` : ""} // Custom code (overrides values above) // @locked @quick:end @slot:compute
176
+ ${s}
177
+ }, // @locked
178
+ actions: { // @locked
179
+ async click(element, page, action) { // @locked @slot:click
180
+ ${c}
181
+ }, // @locked
182
+ }, // @locked
183
+ }) // @locked`;
184
+ }
185
+ function O(e) {
186
+ let t = m(e, "click");
187
+ return t === void 0 ? /\bclick\s*\([^)]*\)\s*\{/.test(e) : t.trim().length > 0;
188
+ }
189
+ function k(e) {
190
+ let t = Object.create(null), n = Object.create(null), r = /* @__PURE__ */ new Set(), i = (e) => {
191
+ let a = e.type === "page" ? "page" : e.name || u(e.id), o = a, s = 2;
192
+ for (; r.has(o);) o = `${a}${s++}`;
193
+ r.add(o), n[o] = e.id, t[o] = e.type === "page" ? {
194
+ id: e.id,
195
+ type: e.type,
196
+ name: "page",
197
+ style: l(e.style ?? {}),
198
+ responsive: l(e.responsive ?? {}),
199
+ props: {},
200
+ validation: null,
201
+ visibleWhen: null,
202
+ bindings: {},
203
+ enterSubmits: !!e.enterSubmits
204
+ } : {
205
+ id: e.id,
206
+ type: e.type,
207
+ name: e.name ?? o,
208
+ props: l(e.props ?? {}),
209
+ style: l(e.style ?? {}),
210
+ responsive: l(e.responsive ?? {}),
211
+ validation: l(e.validation ?? null),
212
+ visibleWhen: l(e.visibleWhen ?? null),
213
+ bindings: l(e.bindings ?? {}),
214
+ defaultValue: l(e.defaultValue)
215
+ }, "children" in e && Array.isArray(e.children) && e.children.forEach(i);
216
+ };
217
+ return i(e), {
218
+ elements: t,
219
+ nodeIds: n
220
+ };
221
+ }
222
+ function A(e) {
223
+ if (!(!e || typeof e != "object" || Array.isArray(e))) return l(e);
224
+ }
225
+ function j(e, t) {
226
+ let n = A(e) ?? {}, r = A(n.elements) ?? {}, i = Object.create(null);
227
+ for (let [e, n] of Object.entries(t.nodeIds)) {
228
+ let t = A(r[e]);
229
+ if (!t) continue;
230
+ let a = {}, o = A(t.props), s = A(t.style), c = A(t.responsive), u = A(t.bindings);
231
+ o && (a.props = o), s && (a.style = s), c && (a.responsive = c), u && (a.bindings = u), "defaultValue" in t && (a.defaultValue = l(t.defaultValue)), a.validation = t.validation === null ? null : A(t.validation), a.visibleWhen = t.visibleWhen === null ? null : A(t.visibleWhen), typeof t.enterSubmits == "boolean" && (a.enterSubmits = t.enterSubmits), i[n] = a;
232
+ }
233
+ return {
234
+ nodes: i,
235
+ state: A(n.state) ?? {},
236
+ actionIds: Array.isArray(n.actionIds) ? n.actionIds.filter((e) => typeof e == "string") : []
237
+ };
238
+ }
239
+ function M(e, t) {
240
+ if (!t) return e;
241
+ let n = (e) => {
242
+ let r = t.nodes[e.id], i = "children" in e && Array.isArray(e.children) ? e.children.map(n) : void 0;
243
+ if (e.type === "page") {
244
+ let t = e;
245
+ return {
246
+ ...t,
247
+ ...r?.style ? { style: l(r.style) } : {},
248
+ ...r?.responsive ? { responsive: l(r.responsive) } : {},
249
+ ...typeof r?.enterSubmits == "boolean" ? { enterSubmits: r.enterSubmits } : {},
250
+ children: i ?? t.children
251
+ };
252
+ }
253
+ return {
254
+ ...e,
255
+ ...r?.props ? { props: l(r.props) } : {},
256
+ ...r?.style ? { style: l(r.style) } : {},
257
+ ...r?.responsive ? { responsive: l(r.responsive) } : {},
258
+ ...r && "validation" in r ? { validation: r.validation ?? void 0 } : {},
259
+ ...r && "visibleWhen" in r ? { visibleWhen: r.visibleWhen ?? void 0 } : {},
260
+ ...r?.bindings ? { bindings: l(r.bindings) } : {},
261
+ ...r && "defaultValue" in r ? { defaultValue: l(r.defaultValue) } : {},
262
+ ...i ? { children: i } : {}
263
+ };
264
+ };
265
+ return n(e);
266
+ }
267
+ function N(t) {
268
+ return `async (input, capabilities) => {
269
+ const forbidden = new Set(['__proto__', 'prototype', 'constructor']);
270
+ const clone = (value) => {
271
+ if (value === undefined || value === null || typeof value !== 'object') return value;
272
+ if (Array.isArray(value)) return value.map(clone);
273
+ const result = Object.create(null);
274
+ for (const key of Object.keys(value)) {
275
+ if (!forbidden.has(key)) result[key] = clone(value[key]);
276
+ }
277
+ return result;
278
+ };
279
+ const i18n = Object.freeze({
280
+ text: (key, params, fallback) => ({ source: 'translation', key, ...(params ? { params } : {}), ...(fallback === undefined ? {} : { fallback }) }),
281
+ });
282
+ const definePage = (definition) => definition;
283
+ const definition = (${t || e}\n);
284
+ if (!definition || typeof definition !== 'object') throw new TypeError('Page Code must call definePage({...}).');
285
+ const state = Object.assign(clone(definition.state || {}), clone(input.state || {}));
286
+ const elements = clone(input.elements || {});
287
+ const scope = {
288
+ elements,
289
+ fields: input.fields || {},
290
+ form: input.form || {},
291
+ state,
292
+ context: input.context || {},
293
+ resources: input.resources || {},
294
+ viewport: input.viewport || {},
295
+ payload: input.payload || {},
296
+ };
297
+ for (const name of Object.keys(capabilities || {})) scope[name] = capabilities[name];
298
+ const actions = definition.actions || {};
299
+ if (input.kind === 'action') {
300
+ const action = actions[input.actionId];
301
+ if (typeof action !== 'function') throw new Error('Unknown Page Code action "' + input.actionId + '".');
302
+ await action(scope);
303
+ }
304
+ if (typeof definition.compute === 'function') await definition.compute(scope);
305
+ return { elements, state, actionIds: Object.keys(actions) };
306
+ }`;
307
+ }
308
+ function P(e) {
309
+ return `(input) => {
310
+ const definePageState = (value) => value;
311
+ const value = (${e || t}\n);
312
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
313
+ throw new TypeError('Page State must call definePageState({...}).');
314
+ }
315
+ return value;
316
+ }`;
317
+ }
318
+ function F(e, t, n) {
319
+ let i = O(e), a = !/\bcompute\s*\(\s*element\s*,\s*page\s*\)/.test(e);
320
+ return `(scope) => {
321
+ const clone = (value) => {
322
+ if (value === undefined || value === null || typeof value !== 'object') return value;
323
+ if (Array.isArray(value)) return value.map(clone);
324
+ const result = Object.create(null);
325
+ for (const key of Object.keys(value)) {
326
+ if (key !== '__proto__' && key !== 'prototype' && key !== 'constructor') result[key] = clone(value[key]);
327
+ }
328
+ return result;
329
+ };
330
+ const i18n = Object.freeze({
331
+ text: (key, params, fallback) => ({ source: 'translation', key, ...(params ? { params } : {}), ...(fallback === undefined ? {} : { fallback }) }),
332
+ });
333
+ const defineElement = (definition) => definition;
334
+ const definition = (${e || r}\n);
335
+ if (!definition || typeof definition !== 'object') throw new TypeError('Element Code must call defineElement({...}).');
336
+ const self = clone(scope.elements[${JSON.stringify(t)}]);
337
+ if (!self) throw new Error('Element ${t.replaceAll("'", "\\'")} is not available.');
338
+ if (typeof definition.compute === 'function') {
339
+ const element = Object.assign({}, self);
340
+ const page = {
341
+ state: scope.state || {},
342
+ fields: scope.fields || {},
343
+ form: scope.form || {},
344
+ context: scope.context || {},
345
+ resources: scope.resources || {},
346
+ viewport: scope.viewport || {},
347
+ locale: scope.locale,
348
+ };
349
+ let computedElement = element;
350
+ if (${JSON.stringify(a)}) {
351
+ computedElement = Object.assign({}, element, page, { self, elements: scope.elements || {} });
352
+ definition.compute(computedElement);
353
+ } else {
354
+ definition.compute(element, page);
355
+ }
356
+ for (const key of ['props', 'style', 'responsive', 'validation', 'visibleWhen', 'bindings', 'defaultValue']) {
357
+ if (key in computedElement) self[key] = computedElement[key];
358
+ }
359
+ }
360
+ if (${JSON.stringify(i)} && definition.actions && typeof definition.actions.click === 'function') {
361
+ self.props = self.props || {};
362
+ self.props.action = ${JSON.stringify(n)};
363
+ }
364
+ return self;
365
+ }`;
366
+ }
367
+ function I(e) {
368
+ return `(scope) => {
369
+ const clone = (value) => {
370
+ if (value === undefined || value === null || typeof value !== 'object') return value;
371
+ if (Array.isArray(value)) return value.map(clone);
372
+ const result = Object.create(null);
373
+ for (const key of Object.keys(value)) {
374
+ if (key !== '__proto__' && key !== 'prototype' && key !== 'constructor') result[key] = clone(value[key]);
375
+ }
376
+ return result;
377
+ };
378
+ const definePageRoot = (definition) => definition;
379
+ const definition = (${e || n}\n);
380
+ if (!definition || typeof definition !== 'object') throw new TypeError('Page Root Code must call definePageRoot({...}).');
381
+ const current = clone(scope.elements.page);
382
+ if (!current) throw new Error('Page root is not available.');
383
+ const page = {
384
+ id: current.id,
385
+ type: current.type,
386
+ name: current.name,
387
+ style: clone(current.style || {}),
388
+ responsive: clone(current.responsive || {}),
389
+ enterSubmits: !!current.enterSubmits,
390
+ };
391
+ const runtime = {
392
+ state: scope.state || {},
393
+ fields: scope.fields || {},
394
+ form: scope.form || {},
395
+ context: scope.context || {},
396
+ resources: scope.resources || {},
397
+ viewport: scope.viewport || {},
398
+ locale: scope.locale,
399
+ };
400
+ if (typeof definition.compute === 'function') definition.compute(page, runtime);
401
+ return {
402
+ id: current.id,
403
+ type: current.type,
404
+ name: current.name,
405
+ style: page.style,
406
+ responsive: page.responsive,
407
+ enterSubmits: page.enterSubmits,
408
+ };
409
+ }`;
410
+ }
411
+ function L(e, t) {
412
+ let n = !/\b(?:async\s+)?click\s*\(\s*element\s*,\s*page\s*,\s*action\s*\)/.test(e);
413
+ return `async (input, capabilities) => {
414
+ const clone = (value) => {
415
+ if (value === undefined || value === null || typeof value !== 'object') return value;
416
+ if (Array.isArray(value)) return value.map(clone);
417
+ const result = Object.create(null);
418
+ for (const key of Object.keys(value)) {
419
+ if (key !== '__proto__' && key !== 'prototype' && key !== 'constructor') result[key] = clone(value[key]);
420
+ }
421
+ return result;
422
+ };
423
+ const i18n = Object.freeze({
424
+ text: (key, params, fallback) => ({ source: 'translation', key, ...(params ? { params } : {}), ...(fallback === undefined ? {} : { fallback }) }),
425
+ });
426
+ const defineElement = (definition) => definition;
427
+ const definition = (${e || r}\n);
428
+ const action = definition && definition.actions && definition.actions[input.actionName];
429
+ if (typeof action !== 'function') throw new Error('Unknown element action "' + input.actionName + '".');
430
+ const self = clone(input.elements[${JSON.stringify(t)}]);
431
+ if (!self) throw new Error('Element ${t.replaceAll("'", "\\'")} is not available.');
432
+ const element = Object.assign({}, self);
433
+ const page = {
434
+ state: clone(input.state || {}),
435
+ fields: input.fields || {},
436
+ form: input.form || {},
437
+ context: input.context || {},
438
+ resources: input.resources || {},
439
+ viewport: input.viewport || {},
440
+ locale: input.locale,
441
+ };
442
+ const actionContext = { payload: input.payload || {} };
443
+ for (const name of Object.keys(capabilities || {})) page[name] = capabilities[name];
444
+ if (${JSON.stringify(n)}) {
445
+ const legacy = Object.assign({}, element, page, actionContext, { self, elements: input.elements || {} });
446
+ for (const name of Object.keys(capabilities || {})) legacy[name] = capabilities[name];
447
+ await action(legacy);
448
+ } else {
449
+ await action(element, page, actionContext);
450
+ }
451
+ return { state: page.state };
452
+ }`;
453
+ }
454
+ //#endregion
455
+ export { S as C, x as S, N as _, M as a, P as b, T as c, L as d, i as f, j as g, F as h, t as i, k as l, O as m, e as n, D as o, s as p, n as r, E as s, r as t, o as u, a as v, y as x, I as y };
@@ -0,0 +1,101 @@
1
+ import { ElementProps, FieldValidation, NodeStyle, PageNode, ResponsiveNodeStyles, PropertyBinding, VisibleWhen } from './schema';
2
+ export declare const DEFAULT_PAGE_CODE = "definePage({\n state: {},\n\n compute({ elements, fields, form, state, context, resources, viewport }) {\n // Configure existing elements here. Structure stays in the visual builder.\n },\n\n actions: {},\n})";
3
+ export declare const DEFAULT_PAGE_STATE_CODE = "definePageState({ // @locked @slot:state\n counter: 0,\n}) // @locked";
4
+ export declare const DEFAULT_PAGE_ROOT_CODE = "definePageRoot({ // @locked\n compute(page, runtime) { // @locked\n // Properties Panel values // @locked @quick:start\n // Custom code (overrides values above) // @locked @quick:end @slot:compute\n // Configure the existing page root. Structure stays in the visual builder.\n }, // @locked\n}) // @locked";
5
+ export declare const DEFAULT_ELEMENT_CODE = "defineElement({ // @locked\n compute(element, page) { // @locked\n // Properties Panel values // @locked @quick:start\n // Custom code (overrides values above) // @locked @quick:end @slot:compute\n // Configure this element. Page inputs live on page.*.\n }, // @locked\n actions: { // @locked\n async click(element, page, action) { // @locked @slot:click\n\n }, // @locked\n }, // @locked\n}) // @locked";
6
+ export declare const elementBindingId: (nodeId: string) => string;
7
+ export declare const pageRootBindingId: (nodeId: string) => string;
8
+ export declare const elementActionDefinitionId: (nodeId: string) => string;
9
+ export declare const elementClickActionId: (nodeId: string) => string;
10
+ export interface PageCodeElementDraft {
11
+ /** Informational only. Runtime application never trusts these fields. */
12
+ readonly id: string;
13
+ readonly type: string;
14
+ readonly name: string;
15
+ props: ElementProps;
16
+ style: NodeStyle;
17
+ responsive: ResponsiveNodeStyles;
18
+ validation: FieldValidation | null;
19
+ visibleWhen: VisibleWhen | null;
20
+ bindings: Record<string, PropertyBinding>;
21
+ defaultValue?: unknown;
22
+ enterSubmits?: boolean;
23
+ }
24
+ export interface PageCodeDraftSet {
25
+ elements: Record<string, PageCodeElementDraft>;
26
+ /** Stable mapping retained outside the sandbox; authored code cannot change it. */
27
+ nodeIds: Record<string, string>;
28
+ }
29
+ export interface PageCodeRuntimeValues {
30
+ nodes: Readonly<Record<string, Partial<PageCodeElementDraft>>>;
31
+ state: Readonly<Record<string, unknown>>;
32
+ actionIds: readonly string[];
33
+ }
34
+ export interface PageCodeRuntimeInput {
35
+ kind: 'compute' | 'action';
36
+ elements: Record<string, PageCodeElementDraft>;
37
+ state?: Record<string, unknown>;
38
+ fields: Record<string, unknown>;
39
+ form: {
40
+ valid: boolean;
41
+ dirty: boolean;
42
+ validating: boolean;
43
+ submitting: boolean;
44
+ };
45
+ context?: Record<string, unknown>;
46
+ resources?: Record<string, unknown>;
47
+ viewport?: {
48
+ width: number;
49
+ breakpoint: string;
50
+ };
51
+ locale?: string;
52
+ actionId?: string;
53
+ payload?: Record<string, unknown>;
54
+ }
55
+ /**
56
+ * Reads only deterministic Properties-Panel assignments, never arbitrary
57
+ * customer code. The metadata format is identical for element and page root
58
+ * code, so this serves both.
59
+ */
60
+ export declare function readElementQuickProperties(source?: string): Record<string, unknown>;
61
+ /** Adds, replaces, or removes one machine-owned assignment without parsing custom code. */
62
+ export declare function setElementQuickProperty(source: string | undefined, path: string, value: unknown): string;
63
+ /**
64
+ * Page-root counterpart. The root draft exposes `style` only, so `props.*` and
65
+ * `validation.*` paths are rejected rather than silently written.
66
+ */
67
+ export declare function setPageRootQuickProperty(source: string | undefined, path: string, value: unknown): string;
68
+ /** Converts legacy free-form state source into the constrained persisted template. */
69
+ export declare function constrainPageStateCode(source?: string): string;
70
+ /** Converts Page Root Code into one constrained reactive compute slot. */
71
+ export declare function constrainPageRootCode(source?: string): string;
72
+ /**
73
+ * Converts the original free-form prototype into fixed compute/click slots.
74
+ * Once markers exist, the source round-trips unchanged through Constrained Mode.
75
+ */
76
+ export declare function constrainElementCode(source?: string): string;
77
+ export declare function elementCodeHasClickAction(source: string): boolean;
78
+ /** Creates mutable configuration drafts without exposing tree structure. */
79
+ export declare function createPageCodeDrafts(schema: PageNode): PageCodeDraftSet;
80
+ /**
81
+ * Converts untrusted sandbox output into node-id keyed configuration patches.
82
+ * Identity and structure are selected exclusively from the host-retained map.
83
+ */
84
+ export declare function normalizePageCodeOutput(output: unknown, drafts: PageCodeDraftSet): PageCodeRuntimeValues;
85
+ /** Applies one already-sanitized atomic result while preserving tree identity. */
86
+ export declare function applyPageCodeValues(schema: PageNode, values?: PageCodeRuntimeValues): PageNode;
87
+ /**
88
+ * Host-generated SES script. Page source is a JavaScript expression returning
89
+ * `definePage({ state, compute, actions })`; capabilities are available only
90
+ * as properties of the scope when the host grants their endowment object.
91
+ */
92
+ export declare function pageCodeRuntimeSource(source: string): string;
93
+ /** Evaluates only the page-authored initial state declaration. */
94
+ export declare function pageStateRuntimeSource(source: string): string;
95
+ /** Pure reactive binding. Property reads on the supplied scope are tracked by the Worker. */
96
+ export declare function elementComputeRuntimeSource(source: string, elementName: string, clickActionId: string): string;
97
+ /** Pure reactive binding for the page root's controlled presentation draft. */
98
+ export declare function pageRootComputeRuntimeSource(source: string): string;
99
+ /** Async action wrapper. Only returned shared state crosses back to the host. */
100
+ export declare function elementActionRuntimeSource(source: string, elementName: string): string;
101
+ //# sourceMappingURL=pageCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageCode.d.ts","sourceRoot":"","sources":["../src/pageCode.ts"],"names":[],"mappings":"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"}