@jxsuite/studio 1.1.0 → 1.2.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.
- package/dist/iframe-entry.js +139 -17
- package/dist/iframe-entry.js.map +7 -6
- package/dist/studio.js +22601 -22425
- package/dist/studio.js.map +52 -52
- package/package.json +8 -8
- package/src/canvas/iframe-entry.ts +17 -1
- package/src/canvas/iframe-host.ts +62 -1
- package/src/canvas/iframe-protocol.ts +13 -0
- package/src/canvas/iframe-render.ts +35 -14
- package/src/canvas/site-style-css.ts +121 -0
- package/src/panels/style-panel.ts +52 -22
- package/src/panels/tab-bar.ts +39 -4
- package/src/settings/css-vars-editor.ts +122 -4
- package/src/studio.ts +7 -0
- package/src/tabs/tab.ts +7 -0
- package/src/utils/canvas-media.ts +23 -0
package/dist/iframe-entry.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/canvas/iframe-channel.ts", "../../../node_modules/@vue/shared/dist/shared.esm-bundler.js", "../../../node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js", "../../runtime/src/expression.ts", "../../schema/src/guards.ts", "../../runtime/src/statements.ts", "../../runtime/src/runtime.ts", "../src/canvas/path-mapping.ts", "../src/canvas/iframe-render.ts", "../src/utils/geometry.ts", "../src/state.ts", "../src/canvas/iframe-insert.ts", "../src/editor/inline-format.ts", "../src/editor/inline-edit.ts", "../src/canvas/iframe-interaction.ts", "../src/canvas/iframe-drop.ts", "../src/editor/inline-link.ts", "../src/utils/edit-display.ts", "../src/canvas/iframe-inline-edit.ts", "../src/canvas/iframe-slash.ts", "../src/canvas/iframe-keys.ts", "../../collab/src/ops.ts", "../src/utils/strip-events.ts", "../src/canvas/iframe-subtree.ts", "../src/canvas/iframe-patch.ts", "../src/utils/preview-format.ts", "../src/canvas/iframe-eval.ts", "../src/canvas/serialize-scope.ts", "../src/canvas/iframe-entry.ts"],
|
|
3
|
+
"sources": ["../src/canvas/iframe-channel.ts", "../../../node_modules/@vue/shared/dist/shared.esm-bundler.js", "../../../node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js", "../../runtime/src/expression.ts", "../../schema/src/guards.ts", "../../runtime/src/statements.ts", "../../runtime/src/runtime.ts", "../src/canvas/path-mapping.ts", "../src/canvas/site-style-css.ts", "../src/canvas/iframe-render.ts", "../src/utils/geometry.ts", "../src/state.ts", "../src/canvas/iframe-insert.ts", "../src/editor/inline-format.ts", "../src/editor/inline-edit.ts", "../src/canvas/iframe-interaction.ts", "../src/canvas/iframe-drop.ts", "../src/editor/inline-link.ts", "../src/utils/edit-display.ts", "../src/canvas/iframe-inline-edit.ts", "../src/canvas/iframe-slash.ts", "../src/canvas/iframe-keys.ts", "../../collab/src/ops.ts", "../src/utils/strip-events.ts", "../src/canvas/iframe-subtree.ts", "../src/canvas/iframe-patch.ts", "../src/utils/preview-format.ts", "../src/canvas/iframe-eval.ts", "../src/canvas/serialize-scope.ts", "../src/canvas/iframe-entry.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/// <reference lib=\"dom\" />\n/**\n * IframeChannel — the typed message boundary between the editor (parent) and the canvas iframe.\n *\n * Per the migration's cross-origin bridge decision, the parent never touches the iframe's\n * `contentDocument`; everything (render commands, patches, geometry, selection, hit-tests) crosses\n * as serializable messages through this one interface. Phases 1+ instantiate it with concrete\n * message unions (`ParentToIframe`/`IframeToParent`); this module owns only the transport contract\n * plus an in-memory `fakeChannelPair` so cross-frame logic is unit-testable without a live iframe.\n */\n\n/**\n * A typed, bidirectional message channel. `TOut` is what this side sends; `TIn` is what it\n * receives. Implementations: a real `postMessage` channel over an `<iframe>` (added with the iframe\n * host), and {@link fakeChannelPair} for tests.\n */\nexport interface IframeChannel<TOut, TIn> {\n /** Send a message to the other side. */\n post: (message: TOut) => void;\n /** Subscribe to messages from the other side. Returns an unsubscribe function. */\n onMessage: (handler: (message: TIn) => void) => () => void;\n /** Detach all handlers and release the transport. */\n dispose: () => void;\n}\n\n/** Envelope key that tags every cross-frame message so foreign `message` events are ignored. */\nconst ENVELOPE = \"jx:canvas\";\n\ninterface PostMessageTarget {\n postMessage: (message: unknown, targetOrigin: string) => void;\n}\n\ninterface MessageSource {\n addEventListener: (type: \"message\", listener: (event: MessageEvent) => void) => void;\n removeEventListener: (type: \"message\", listener: (event: MessageEvent) => void) => void;\n}\n\n/**\n * A real `IframeChannel` over `window.postMessage`. Outbound messages are wrapped in an envelope\n * tagged with a shared `token`; inbound messages are dropped unless their `event.origin` matches\n * `acceptOrigin` (pass `\"*\"` to skip the origin check) AND they carry the same token. This is the\n * origin + secret-token authentication that keeps other local pages from driving the canvas.\n *\n * Parent side: `target` = the iframe's `contentWindow`, `source` = `window`, origins = the iframe\n * origin. Iframe side: `target` = `window.parent`, `source` = `window`, origins = the editor\n * origin.\n */\nexport function postMessageChannel<TOut, TIn>(opts: {\n target: PostMessageTarget;\n source: MessageSource;\n targetOrigin: string;\n acceptOrigin: string;\n token: string;\n}): IframeChannel<TOut, TIn> {\n const { target, source, targetOrigin, acceptOrigin, token } = opts;\n const handlers = new Set<(message: TIn) => void>();\n\n const listener = (event: MessageEvent) => {\n if (acceptOrigin !== \"*\" && event.origin !== acceptOrigin) {\n return;\n }\n const data = event.data as { [ENVELOPE]?: string; payload?: TIn } | null;\n if (!data || typeof data !== \"object\" || data[ENVELOPE] !== token) {\n return;\n }\n for (const handler of handlers) {\n handler(data.payload as TIn);\n }\n };\n source.addEventListener(\"message\", listener);\n\n return {\n dispose() {\n handlers.clear();\n source.removeEventListener(\"message\", listener);\n },\n onMessage(handler) {\n handlers.add(handler);\n return () => handlers.delete(handler);\n },\n post(message) {\n target.postMessage({ [ENVELOPE]: token, payload: message }, targetOrigin);\n },\n };\n}\n\n/**\n * Two in-memory channels wired to each other for tests. A message `parent.post(x)` is delivered to\n * the `iframe` side's handlers (and vice versa) only when `flush()` is called — so tests drive the\n * inherently-async postMessage ordering deterministically. Messages posted _during_ a flush are\n * queued for the next flush, never delivered re-entrantly.\n */\nexport function fakeChannelPair<ParentOut, IframeOut>(): {\n parent: IframeChannel<ParentOut, IframeOut>;\n iframe: IframeChannel<IframeOut, ParentOut>;\n flush: () => void;\n /** Number of messages waiting to be delivered (both directions). */\n pending: () => number;\n} {\n let toIframe: ParentOut[] = [];\n let toParent: IframeOut[] = [];\n const iframeHandlers = new Set<(m: ParentOut) => void>();\n const parentHandlers = new Set<(m: IframeOut) => void>();\n\n const parent: IframeChannel<ParentOut, IframeOut> = {\n dispose() {\n parentHandlers.clear();\n },\n onMessage(handler) {\n parentHandlers.add(handler);\n return () => parentHandlers.delete(handler);\n },\n post(message) {\n toIframe.push(message);\n },\n };\n\n const iframe: IframeChannel<IframeOut, ParentOut> = {\n dispose() {\n iframeHandlers.clear();\n },\n onMessage(handler) {\n iframeHandlers.add(handler);\n return () => iframeHandlers.delete(handler);\n },\n post(message) {\n toParent.push(message);\n },\n };\n\n function flush() {\n const forIframe = toIframe;\n const forParent = toParent;\n toIframe = [];\n toParent = [];\n for (const message of forIframe) {\n for (const handler of iframeHandlers) {\n handler(message);\n }\n }\n for (const message of forParent) {\n for (const handler of parentHandlers) {\n handler(message);\n }\n }\n }\n\n return {\n flush,\n iframe,\n parent,\n pending: () => toIframe.length + toParent.length,\n };\n}\n",
|
|
6
6
|
"/**\n* @vue/shared v3.5.40\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str) {\n const map = /* @__PURE__ */ Object.create(null);\n for (const key of str.split(\",\")) map[key] = 1;\n return (val) => val in map;\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-\\w/g;\nconst camelize = cacheStringFunction(\n (str) => {\n return str.replace(camelizeRE, (c) => c.slice(1).toUpperCase());\n }\n);\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction(\n (str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n }\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](...arg);\n }\n};\nconst def = (obj, key, value, writable = false) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n writable,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\nfunction genCacheKey(source, options) {\n return source + JSON.stringify(\n options,\n (_, val) => typeof val === \"function\" ? val.toString() : val\n );\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"CACHED\": -1,\n \"-1\": \"CACHED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `CACHED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n start = Math.max(0, Math.min(start, source.length));\n end = Math.max(0, Math.min(end, source.length));\n if (start > end) return \"\";\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n if (!styles) return \"\";\n if (isString(styles)) return styles;\n let ret = \"\";\n for (const key in styles) {\n const value = styles[key];\n if (isString(value) || typeof value === \"number\") {\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props) return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nconst isKnownMathMLAttr = /* @__PURE__ */ makeMap(\n `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^(?:-?>)+|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n let prev;\n do {\n prev = src;\n src = src.replace(commentStripRE, \"\");\n } while (src !== prev);\n return src;\n}\nconst cssVarNameEscapeSymbolsRE = /[ !\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~]/g;\nfunction getEscapedCssVarName(key, doubleEscape) {\n return key.replace(\n cssVarNameEscapeSymbolsRE,\n (s) => doubleEscape ? s === '\"' ? '\\\\\\\\\\\\\"' : `\\\\\\\\${s}` : `\\\\${s}`\n );\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length) return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b) return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n return !!(val && val[\"__v_isRef\"] === true);\n};\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (isRef(val)) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nfunction normalizeCssVarValue(value) {\n if (value == null) {\n return \"initial\";\n }\n if (typeof value === \"string\") {\n return value === \"\" ? \" \" : value;\n }\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n console.warn(\n \"[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:\",\n value\n );\n }\n }\n return String(value);\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, cssVarNameEscapeSymbolsRE, def, escapeHtml, escapeHtmlComment, extend, genCacheKey, genPropsAccessExp, generateCodeFrame, getEscapedCssVarName, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownMathMLAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeCssVarValue, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n",
|
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
"/// <reference lib=\"dom\" />\n/**\n * Jx Declarative Expression Engine (spec §19)\n *\n * Shared module used by both runtime (evaluateExpression) and compiler (compileExpression).\n *\n * @module expression\n */\n\nimport type { JxExpressionNode, JxExpressionOperand } from \"@jxsuite/schema/types\";\nimport type { JxScope } from \"./types.ts\";\n\n/** The runtime's expression node — the schema's expression model. */\nexport type ExpressionNode = JxExpressionNode;\nexport type ExpressionOperand = JxExpressionOperand;\n\n/** The `$map` iteration context object stored in scope during mapped rendering. */\ninterface ScopeMapCtx {\n item?: unknown;\n index?: number;\n [key: string]: unknown;\n}\n\n/** View the scope's `$map` iteration context, if present. */\nfunction scopeMap(state: JxScope): ScopeMapCtx | undefined {\n const map = state.$map;\n return map && typeof map === \"object\" ? (map as ScopeMapCtx) : undefined;\n}\n\ninterface CompileOpts {\n statePrefix?: string;\n eventParam?: string;\n /**\n * Parameter-name order per named-formula state key, used by `call` sites to map positional\n * argument lists onto the emitted formula functions' named-args object.\n */\n formulaParams?: Record<string, string[]>;\n}\n\nconst MUTATING_OPS = new Set([\n \"=\",\n \"+=\",\n \"-=\",\n \"*=\",\n \"/=\",\n \"push\",\n \"pop\",\n \"shift\",\n \"unshift\",\n \"splice\",\n]);\nconst UNARY_OPS = new Set([\"!\", \"-\"]);\nconst BINARY_OPS = new Set([\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \"%\",\n \"===\",\n \"!==\",\n \"<\",\n \"<=\",\n \">\",\n \">=\",\n \"&&\",\n \"||\",\n \"??\",\n]);\nconst ASSIGNMENT_OPS = new Set([\"=\", \"+=\", \"-=\", \"*=\", \"/=\"]);\nconst ARRAY_METHOD_OPS = new Set([\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"]);\nconst AGGREGATE_OPS = new Set([\"reduce\", \"map\", \"filter\"]);\nconst CONDITIONAL_OPS = new Set([\"?:\", \"switch\"]);\n\n/**\n * Pure standard-library method operators (spec §19.4d): genuine `String.prototype` /\n * `Array.prototype` / `Number.prototype` methods that never mutate their receiver — the ES2023\n * change-by-copy family stands in where mutation would otherwise occur (`toSorted`, not `sort`).\n * Receiver in `target`; `value` carries the argument (bare scalar) or argument list (array), the\n * splice precedent. No token is invented.\n */\nexport const PURE_METHOD_OPS = new Set([\n // Array.prototype (and the String.prototype homonyms: includes/indexOf/slice/at/concat)\n \"includes\",\n \"indexOf\",\n \"lastIndexOf\",\n \"join\",\n \"slice\",\n \"concat\",\n \"at\",\n \"flat\",\n \"toSorted\",\n \"toReversed\",\n \"toSpliced\",\n \"with\",\n // String.prototype\n \"toUpperCase\",\n \"toLowerCase\",\n \"trim\",\n \"trimStart\",\n \"trimEnd\",\n \"split\",\n \"startsWith\",\n \"endsWith\",\n \"padStart\",\n \"padEnd\",\n \"replaceAll\",\n \"repeat\",\n \"charAt\",\n \"normalize\",\n \"toLocaleUpperCase\",\n \"toLocaleLowerCase\",\n // Number.prototype\n \"toFixed\",\n \"toPrecision\",\n \"toLocaleString\",\n]);\n\nexport const BLESSED_OPERATORS = new Set([\n ...MUTATING_OPS,\n ...UNARY_OPS,\n ...BINARY_OPS,\n ...AGGREGATE_OPS,\n ...CONDITIONAL_OPS,\n ...PURE_METHOD_OPS,\n \"call\",\n]);\n\n/**\n * Pure globals a `call` node may target through the `window#/` scheme (spec §19.4c). Every entry is\n * a genuine ECMAScript or WHATWG standard-library function with no side effects; anything off this\n * list is a compile-time error, keeping formula purity decidable.\n */\nexport const BLESSED_GLOBALS = new Set([\n // Global functions\n \"isNaN\",\n \"isFinite\",\n \"parseFloat\",\n \"parseInt\",\n \"encodeURIComponent\",\n \"decodeURIComponent\",\n \"structuredClone\",\n // Math\n \"Math/abs\",\n \"Math/ceil\",\n \"Math/floor\",\n \"Math/round\",\n \"Math/trunc\",\n \"Math/sign\",\n \"Math/sqrt\",\n \"Math/cbrt\",\n \"Math/pow\",\n \"Math/exp\",\n \"Math/log\",\n \"Math/log2\",\n \"Math/log10\",\n \"Math/min\",\n \"Math/max\",\n \"Math/hypot\",\n // Number\n \"Number/isInteger\",\n \"Number/isFinite\",\n \"Number/isNaN\",\n \"Number/parseFloat\",\n \"Number/parseInt\",\n // JSON\n \"JSON/parse\",\n \"JSON/stringify\",\n // Object\n \"Object/keys\",\n \"Object/values\",\n \"Object/entries\",\n \"Object/fromEntries\",\n // Array\n \"Array/from\",\n \"Array/isArray\",\n \"Array/of\",\n // String\n \"String/fromCharCode\",\n \"String/fromCodePoint\",\n // Intl (synthetic helpers — see BLESSED_HELPERS; Intl formatters are constructors,\n // So the plain-function call shape wraps construct-then-format)\n \"Intl/formatNumber\",\n \"Intl/formatDate\",\n \"Intl/formatRelativeTime\",\n]);\n\n/**\n * Synthetic blessed helpers (spec §19.4c): pure functions that have no direct `window` global\n * because the underlying standard-library API is a constructor. The interpreter dispatches to\n * these; the compiler emits the equivalent inline construct-then-format expression.\n */\nconst BLESSED_HELPERS: Record<string, (...a: unknown[]) => unknown> = {\n \"Intl/formatDate\": (value, locale, options) =>\n new Intl.DateTimeFormat(\n locale as string | undefined,\n options as Intl.DateTimeFormatOptions | undefined,\n ).format(new Date(value as string | number | Date)),\n \"Intl/formatNumber\": (value, locale, options) =>\n new Intl.NumberFormat(\n locale as string | undefined,\n options as Intl.NumberFormatOptions | undefined,\n ).format(value as number),\n \"Intl/formatRelativeTime\": (value, unit, locale, options) =>\n new Intl.RelativeTimeFormat(\n locale as string | undefined,\n options as Intl.RelativeTimeFormatOptions | undefined,\n ).format(value as number, unit as Intl.RelativeTimeFormatUnit),\n};\n\n/** Whether a `window#/…` callee ref is on the blessed pure-globals list. */\nexport function isBlessedGlobal(ref: string): boolean {\n return ref.startsWith(\"window#/\") && BLESSED_GLOBALS.has(ref.slice(\"window#/\".length));\n}\n\n/**\n * @param {string} op\n * @returns {boolean}\n */\nexport function isMutating(op: string) {\n return MUTATING_OPS.has(op);\n}\n\n// ─── Runtime Evaluation ──────────────────────────────────────────────────────\n\ninterface IterCtx {\n acc?: unknown;\n item?: unknown;\n index?: number;\n /** Named-formula arguments bound for the current `call` body ($args/<name> refs). */\n args?: Record<string, unknown>;\n /** Call-nesting depth; capped at MAX_CALL_DEPTH to bound recursive formulas. */\n callDepth?: number;\n}\n\n/** Recursion bound for `call` chains (formula → formula), mirroring MAX_REPORT_DEPTH. */\nexport const MAX_CALL_DEPTH = 64;\n\n/**\n * Editor-mode evaluation trace (spec §19.9). When passed, every node and operand reports its\n * evaluated value keyed by its path within the expression tree, and the branch-selecting operators\n * (`?:`, `switch` — plus the eager `&&`/`||`/`??`) yield values for ALL branches so a visual editor\n * can badge every node. Absent (production), evaluation is untouched.\n */\nexport interface ExpressionTrace {\n report: (path: (string | number)[], value: unknown) => void;\n /** Current node path — internal; leave unset at the call boundary. */\n path?: (string | number)[];\n /** Recursion depth — internal; reporting stops beyond MAX_REPORT_DEPTH. */\n depth?: number;\n}\n\n/** Reporting recursion bound: branch-forcing removes natural exit conditions, so cap the walk. */\nexport const MAX_REPORT_DEPTH = 64;\n\n/** Derive the trace for a child operand at path segment(s) `seg`; undefined once capped. */\nfunction subTrace(\n trace: ExpressionTrace | undefined,\n seg: string | number | (string | number)[],\n): ExpressionTrace | undefined {\n if (!trace) {\n return undefined;\n }\n const depth = (trace.depth ?? 0) + 1;\n if (depth > MAX_REPORT_DEPTH) {\n return undefined;\n }\n return {\n depth,\n path: [...(trace.path ?? []), ...(Array.isArray(seg) ? seg : [seg])],\n report: trace.report,\n };\n}\n\n/** Resolve an operand to its runtime value. */\nfunction resolveOperand(\n operand: unknown,\n state: JxScope,\n event: Event | null,\n iterCtx?: IterCtx,\n trace?: ExpressionTrace,\n): unknown {\n if (operand === null || operand === undefined) {\n return operand;\n }\n\n // Nested expression node\n if (typeof operand === \"object\" && !Array.isArray(operand) && \"operator\" in operand) {\n return evaluateExpression(operand as ExpressionNode, state, event, iterCtx, trace);\n }\n\n // $ref pointer\n if (typeof operand === \"object\" && !Array.isArray(operand) && \"$ref\" in operand) {\n const resolved = resolveExprRef((operand as { $ref: string }).$ref, state, event, iterCtx);\n trace?.report(trace.path ?? [], resolved);\n return resolved;\n }\n\n // Array of operands (e.g., splice args)\n if (Array.isArray(operand)) {\n return operand.map((o: unknown, i: number) =>\n resolveOperand(o, state, event, iterCtx, subTrace(trace, i)),\n );\n }\n\n // Literal\n trace?.report(trace.path ?? [], operand);\n return operand;\n}\n\n/** Resolve a $ref string within expression context. */\nfunction resolveExprRef(ref: string, state: JxScope, event: Event | null, iterCtx?: IterCtx) {\n if (ref === \"$reduce/acc\") {\n return iterCtx?.acc;\n }\n if (ref.startsWith(\"$reduce/\")) {\n return iterCtx?.acc;\n }\n if (ref.startsWith(\"$args/\")) {\n const parts = ref.slice(\"$args/\".length).split(\"/\");\n const base = iterCtx?.args?.[parts[0]!];\n return parts.length > 1 ? getPath(base, parts.slice(1).join(\"/\")) : base;\n }\n if (ref.startsWith(\"event#/\")) {\n const path = ref.slice(\"event#/\".length);\n return getPath(event, path);\n }\n if (ref.startsWith(\"$map/\")) {\n const parts = ref.split(\"/\");\n const [, key] = parts;\n let base;\n const map = scopeMap(state);\n if (key === \"item\") {\n base = iterCtx?.item ?? map?.item ?? state[\"$map/item\"];\n } else if (key === \"index\") {\n base = iterCtx?.index ?? map?.index ?? state[\"$map/index\"];\n } else {\n base = map?.[key!] ?? state[`$map/${key}`];\n }\n return parts.length > 2 ? getPath(base, parts.slice(2).join(\"/\")) : base;\n }\n if (ref.startsWith(\"#/state/\")) {\n const sub = ref.slice(\"#/state/\".length);\n const slash = sub.indexOf(\"/\");\n if (slash === -1) {\n return state[sub];\n }\n return getPath(state[sub.slice(0, slash)], sub.slice(slash + 1));\n }\n if (ref.startsWith(\"parent#/\")) {\n return state[ref.slice(\"parent#/\".length)];\n }\n if (ref.startsWith(\"window#/\")) {\n return getPath(globalThis.window, ref.slice(\"window#/\".length));\n }\n if (ref.startsWith(\"document#/\")) {\n return getPath(globalThis.document, ref.slice(\"document#/\".length));\n }\n return state[ref] ?? null;\n}\n\n/** Resolve a $ref to a writable location — returns { obj, key } for assignment. */\nfunction resolveWritableRef(\n ref: string,\n state: JxScope,\n _event: Event | null,\n iterCtx?: IterCtx,\n): { obj: JxScope; key: string } {\n if (ref.startsWith(\"$map/\")) {\n const parts = ref.split(\"/\");\n const [, key] = parts;\n let base;\n const map = scopeMap(state);\n if (key === \"item\") {\n base = iterCtx?.item ?? map?.item ?? state[\"$map/item\"];\n } else if (key === \"index\") {\n base = iterCtx?.index ?? map?.index ?? state[\"$map/index\"];\n } else {\n base = map?.[key!] ?? state[`$map/${key}`];\n }\n if (parts.length > 2) {\n const pathParts = parts.slice(2);\n const lastKey = pathParts.pop();\n const obj = pathParts.length > 0 ? getPath(base, pathParts.join(\"/\")) : base;\n return { key: lastKey as string, obj: obj as JxScope };\n }\n return {\n key: key === \"item\" ? \"$map/item\" : \"$map/index\",\n obj: scopeMap(state) ?? state,\n };\n }\n if (ref.startsWith(\"#/state/\")) {\n const sub = ref.slice(\"#/state/\".length);\n const slash = sub.indexOf(\"/\");\n if (slash === -1) {\n return { key: sub, obj: state };\n }\n const parts = sub.split(\"/\");\n const lastKey = parts.pop();\n let obj = state;\n // Pointer paths address objects by construction (validated by the schema).\n for (const p of parts) {\n obj = obj[p] as JxScope;\n }\n return { key: lastKey as string, obj };\n }\n return { key: ref, obj: state };\n}\n\n/** Evaluate an expression node at runtime. */\nexport function evaluateExpression(\n node: ExpressionNode,\n state: JxScope,\n event: Event | null,\n iterCtx?: IterCtx,\n trace?: ExpressionTrace,\n): unknown {\n const result = evaluateNode(node, state, event, iterCtx, trace);\n trace?.report(trace.path ?? [], result);\n return result;\n}\n\nfunction evaluateNode(\n node: ExpressionNode,\n state: JxScope,\n event: Event | null,\n iterCtx?: IterCtx,\n trace?: ExpressionTrace,\n): unknown {\n const { operator, target, value, initial } = node;\n\n if (!BLESSED_OPERATORS.has(operator)) {\n throw new Error(`$expression: unknown operator \"${operator}\"`);\n }\n\n // ─── Unary ───\n if (UNARY_OPS.has(operator) && !(\"value\" in node)) {\n const operand: unknown = resolveOperand(\n target,\n state,\n event,\n iterCtx,\n subTrace(trace, \"target\"),\n );\n if (operator === \"!\") {\n return !operand;\n }\n if (operator === \"-\") {\n return -(operand as number);\n }\n }\n\n // ─── Call (spec §19.4c) ───\n if (operator === \"call\") {\n const calleeRef = (target as { $ref?: string } | null)?.$ref;\n if (typeof calleeRef !== \"string\") {\n throw new TypeError(\"$expression: call target must be a $ref pointer\");\n }\n const callDepth = (iterCtx?.callDepth ?? 0) + 1;\n if (callDepth > MAX_CALL_DEPTH) {\n throw new Error(`$expression: call depth exceeded (${MAX_CALL_DEPTH})`);\n }\n const argValues = Array.isArray(value)\n ? value.map((o: unknown, i: number) =>\n resolveOperand(o, state, event, iterCtx, subTrace(trace, [\"value\", i])),\n )\n : [];\n\n // Blessed pure global via the window#/ scheme (Math.max, JSON.parse, …).\n if (calleeRef.startsWith(\"window#/\")) {\n if (!isBlessedGlobal(calleeRef)) {\n throw new Error(`$expression: \"${calleeRef}\" is not a blessed pure global`);\n }\n const globalPath = calleeRef.slice(\"window#/\".length);\n const helper = BLESSED_HELPERS[globalPath];\n if (helper) {\n return helper(...argValues);\n }\n const fn = getPath(globalThis.window, globalPath) as (...a: unknown[]) => unknown;\n const lastSlash = globalPath.lastIndexOf(\"/\");\n const thisArg =\n lastSlash === -1\n ? globalThis.window\n : getPath(globalThis.window, globalPath.slice(0, lastSlash));\n return fn.apply(thisArg, argValues);\n }\n\n const callee = resolveExprRef(calleeRef, state, event, iterCtx);\n // A scope callable (buildScope lowers parameterized formula entries to functions).\n if (typeof callee === \"function\") {\n return (callee as (...a: unknown[]) => unknown)(...argValues);\n }\n // A raw named-formula def (standalone evaluation, e.g. editor preview).\n if (callee && typeof callee === \"object\" && \"$expression\" in callee) {\n const def = callee as { $expression: ExpressionNode; parameters?: unknown[] };\n const args: Record<string, unknown> = {};\n for (const [i, p] of (def.parameters ?? []).entries()) {\n const name = typeof p === \"string\" ? p : ((p as { name?: string } | null)?.name ?? \"\");\n if (!name) {\n continue;\n }\n args[name] =\n argValues[i] === undefined && typeof p === \"object\" && p !== null && \"default\" in p\n ? (p as { default?: unknown }).default\n : argValues[i];\n }\n // The callee body's node paths are its own tree, not the call site's — no trace inside.\n return evaluateExpression(def.$expression, state, event, { args, callDepth });\n }\n throw new TypeError(`$expression: call target \"${calleeRef}\" is not callable`);\n }\n\n // ─── Conditional (pure) ───\n if (CONDITIONAL_OPS.has(operator)) {\n if (operator === \"?:\") {\n const test = resolveOperand(target, state, event, iterCtx, subTrace(trace, \"target\"));\n if (trace) {\n // Editor mode: evaluate both branches so each carries a live value.\n const consequent = resolveOperand(value, state, event, iterCtx, subTrace(trace, \"value\"));\n const alternate = resolveOperand(\n initial,\n state,\n event,\n iterCtx,\n subTrace(trace, \"initial\"),\n );\n return test ? consequent : alternate;\n }\n return test\n ? resolveOperand(value, state, event, iterCtx)\n : resolveOperand(initial, state, event, iterCtx);\n }\n // Switch — value-keyed selection; discriminant matched against case keys by string form.\n const discriminant = resolveOperand(target, state, event, iterCtx, subTrace(trace, \"target\"));\n const key = String(discriminant);\n const cases = node.cases ?? {};\n const matched = Object.hasOwn(cases, key);\n if (trace) {\n let result: unknown;\n for (const [k, caseOperand] of Object.entries(cases)) {\n const v = resolveOperand(caseOperand, state, event, iterCtx, subTrace(trace, [\"cases\", k]));\n if (k === key) {\n result = v;\n }\n }\n const fallback = resolveOperand(\n node.default,\n state,\n event,\n iterCtx,\n subTrace(trace, \"default\"),\n );\n return matched ? result : fallback;\n }\n return matched\n ? resolveOperand(cases[key], state, event, iterCtx)\n : resolveOperand(node.default, state, event, iterCtx);\n }\n\n // ─── Binary (pure) ───\n if (BINARY_OPS.has(operator)) {\n const left = resolveOperand(\n target,\n state,\n event,\n iterCtx,\n subTrace(trace, \"target\"),\n ) as number & string;\n const right = resolveOperand(value, state, event, iterCtx, subTrace(trace, \"value\")) as number &\n string;\n switch (operator) {\n case \"+\": {\n return left + right;\n }\n case \"-\": {\n return left - right;\n }\n case \"*\": {\n return left * right;\n }\n case \"/\": {\n return left / right;\n }\n case \"%\": {\n return left % right;\n }\n case \"===\": {\n return left === right;\n }\n case \"!==\": {\n return left !== right;\n }\n case \"<\": {\n return left < right;\n }\n case \"<=\": {\n return left <= right;\n }\n case \">\": {\n return left > right;\n }\n case \">=\": {\n return left >= right;\n }\n case \"&&\": {\n return left && right;\n }\n case \"||\": {\n return left || right;\n }\n case \"??\": {\n return (left as unknown) ?? (right as unknown);\n }\n default: {\n break;\n }\n }\n }\n\n // ─── Assignment ───\n if (ASSIGNMENT_OPS.has(operator)) {\n const rhs = resolveOperand(value, state, event, iterCtx, subTrace(trace, \"value\")) as number;\n const { obj, key } = resolveWritableRef(\n (target as { $ref: string }).$ref,\n state,\n event,\n iterCtx,\n );\n switch (operator) {\n case \"=\": {\n obj[key] = rhs;\n break;\n }\n case \"+=\": {\n const current = obj[key] as number;\n obj[key] = current + rhs;\n break;\n }\n case \"-=\": {\n const current = obj[key] as number;\n obj[key] = current - rhs;\n break;\n }\n case \"*=\": {\n const current = obj[key] as number;\n obj[key] = current * rhs;\n break;\n }\n case \"/=\": {\n const current = obj[key] as number;\n obj[key] = current / rhs;\n break;\n }\n default: {\n break;\n }\n }\n return;\n }\n\n // ─── Array methods ───\n if (ARRAY_METHOD_OPS.has(operator)) {\n const arr: unknown[] = resolveOperand(\n target,\n state,\n event,\n iterCtx,\n subTrace(trace, \"target\"),\n ) as unknown[];\n switch (operator) {\n case \"push\": {\n return arr.push(resolveOperand(value, state, event, iterCtx, subTrace(trace, \"value\")));\n }\n case \"unshift\": {\n return arr.unshift(resolveOperand(value, state, event, iterCtx, subTrace(trace, \"value\")));\n }\n case \"pop\": {\n return arr.pop();\n }\n case \"shift\": {\n return arr.shift();\n }\n case \"splice\": {\n const args: unknown[] = resolveOperand(\n value,\n state,\n event,\n iterCtx,\n subTrace(trace, \"value\"),\n ) as unknown[];\n return (arr.splice as (...a: unknown[]) => unknown[])(...args);\n }\n default: {\n break;\n }\n }\n }\n\n // ─── Pure standard-library methods (spec §19.4d) ───\n if (PURE_METHOD_OPS.has(operator)) {\n const receiver = resolveOperand(target, state, event, iterCtx, subTrace(trace, \"target\"));\n const args =\n value === undefined\n ? []\n : Array.isArray(value)\n ? (resolveOperand(value, state, event, iterCtx, subTrace(trace, \"value\")) as unknown[])\n : [resolveOperand(value, state, event, iterCtx, subTrace(trace, \"value\"))];\n const method = (receiver as Record<string, unknown> | null | undefined)?.[operator];\n if (typeof method !== \"function\") {\n // Null-safe, like path reads: a missing receiver or method yields undefined, not a throw.\n return undefined;\n }\n return (method as (...a: unknown[]) => unknown).apply(receiver, args);\n }\n\n // ─── Aggregates (pure) ───\n if (AGGREGATE_OPS.has(operator)) {\n const arr: unknown[] = resolveOperand(\n target,\n state,\n event,\n iterCtx,\n subTrace(trace, \"target\"),\n ) as unknown[];\n // Trace only the first iteration's per-item expression — one sample badge per node,\n // Not one report per array element.\n if (operator === \"reduce\") {\n let acc: unknown = resolveOperand(initial, state, event, iterCtx, subTrace(trace, \"initial\"));\n for (const [index, item] of arr.entries()) {\n acc = evaluateExpression(\n value as ExpressionNode,\n state,\n event,\n { acc, index, item },\n index === 0 ? subTrace(trace, \"value\") : undefined,\n );\n }\n return acc;\n }\n if (operator === \"map\") {\n return arr.map((item: unknown, index: number) =>\n evaluateExpression(\n value as ExpressionNode,\n state,\n event,\n { ...iterCtx, index, item },\n index === 0 ? subTrace(trace, \"value\") : undefined,\n ),\n );\n }\n if (operator === \"filter\") {\n return arr.filter((item: unknown, index: number) =>\n evaluateExpression(\n value as ExpressionNode,\n state,\n event,\n { ...iterCtx, index, item },\n index === 0 ? subTrace(trace, \"value\") : undefined,\n ),\n );\n }\n }\n\n return undefined;\n}\n\n// ─── Compiler: Expression → JS Source ────────────────────────────────────────\n\n/** Compile an operand to a JS source string. */\nfunction compileOperand(operand: unknown, opts: CompileOpts): string {\n if (operand === null) {\n return \"null\";\n }\n if (operand === undefined) {\n return \"undefined\";\n }\n\n // Nested expression node\n if (typeof operand === \"object\" && !Array.isArray(operand) && \"operator\" in operand) {\n return compileExpression(operand as ExpressionNode, opts);\n }\n\n // $ref pointer\n if (typeof operand === \"object\" && !Array.isArray(operand) && \"$ref\" in operand) {\n return compileRef((operand as { $ref: string }).$ref, opts);\n }\n\n // Array of operands\n if (Array.isArray(operand)) {\n return operand.map((o: unknown) => compileOperand(o, opts)).join(\", \");\n }\n\n // Literal\n return JSON.stringify(operand);\n}\n\n/**\n * The module-scope function name a named formula compiles to. Shared by call-site emission here and\n * the declaration emission in the compiler targets.\n *\n * @param {string} key\n * @returns {string}\n */\nexport function formulaFnName(key: string) {\n return `_fx_${key.replaceAll(/[^A-Za-z0-9_$]/g, \"_\")}`;\n}\n\n/**\n * Compile a $ref to its JS equivalent.\n *\n * @param {string} ref\n * @param {CompileOpts} opts\n * @returns {string}\n */\nfunction compileRef(ref: string, opts: CompileOpts) {\n const s = opts.statePrefix ?? \"state\";\n const e = opts.eventParam ?? \"event\";\n\n if (ref === \"$reduce/acc\") {\n return \"_acc\";\n }\n if (ref.startsWith(\"$reduce/\")) {\n return \"_acc\";\n }\n if (ref.startsWith(\"$args/\")) {\n const parts = ref.slice(\"$args/\".length).split(\"/\");\n return `_args${parts.map((p) => `[${JSON.stringify(p)}]`).join(\"\")}`;\n }\n\n if (ref.startsWith(\"event#/\")) {\n const path = ref.slice(\"event#/\".length);\n return `${e}.${path.replaceAll(\"/\", \".\")}`;\n }\n\n if (ref.startsWith(\"$map/\")) {\n const parts = ref.split(\"/\");\n const [, key] = parts;\n if (key === \"item\") {\n return parts.length > 2 ? `_item.${parts.slice(2).join(\".\")}` : \"_item\";\n }\n if (key === \"index\") {\n return \"_index\";\n }\n return `_${key}`;\n }\n\n if (ref.startsWith(\"#/state/\")) {\n const path = ref.slice(\"#/state/\".length);\n return `${s}.${path.replaceAll(\"/\", \".\")}`;\n }\n\n if (ref.startsWith(\"parent#/\")) {\n return `${s}.${ref.slice(\"parent#/\".length)}`;\n }\n if (ref.startsWith(\"window#/\")) {\n return `window.${ref.slice(\"window#/\".length).replaceAll(\"/\", \".\")}`;\n }\n if (ref.startsWith(\"document#/\")) {\n return `document.${ref.slice(\"document#/\".length).replaceAll(\"/\", \".\")}`;\n }\n\n return `${s}.${ref}`;\n}\n\n/** Compile a writable $ref target to its JS equivalent (for LHS of assignment). */\nfunction compileTarget(target: unknown, opts: CompileOpts): string {\n if (typeof target === \"object\" && target !== null && \"$ref\" in target) {\n return compileRef((target as { $ref: string }).$ref, opts);\n }\n return compileOperand(target, opts);\n}\n\n/**\n * Compile an expression node to a JS source string. Returns a statement for mutating ops, a value\n * expression for pure ops.\n *\n * @param {ExpressionNode} node\n * @param {CompileOpts} [opts]\n * @returns {string}\n */\n/**\n * Emit the inline JS for a synthetic blessed helper (see BLESSED_HELPERS), or null for ordinary\n * globals that compile to a plain `window.<path>` call.\n *\n * @param {string} path - The `window#/`-stripped callee path (e.g. \"Intl/formatNumber\")\n * @param {string[]} args - Already-compiled argument expressions\n * @returns {string | null}\n */\nfunction compileHelperCall(path: string, args: string[]): string | null {\n const a = (i: number) => args[i] ?? \"undefined\";\n switch (path) {\n case \"Intl/formatNumber\": {\n return `new Intl.NumberFormat(${a(1)}, ${a(2)}).format(${a(0)})`;\n }\n case \"Intl/formatDate\": {\n return `new Intl.DateTimeFormat(${a(1)}, ${a(2)}).format(new Date(${a(0)}))`;\n }\n case \"Intl/formatRelativeTime\": {\n return `new Intl.RelativeTimeFormat(${a(2)}, ${a(3)}).format(${a(0)}, ${a(1)})`;\n }\n default: {\n return null;\n }\n }\n}\n\nexport function compileExpression(node: ExpressionNode, opts: CompileOpts = {}): string {\n const { operator, target, value, initial } = node;\n\n // ─── Unary ───\n if (UNARY_OPS.has(operator) && !(\"value\" in node)) {\n const operand: string = compileOperand(target, opts);\n if (operator === \"!\") {\n return `!(${operand})`;\n }\n if (operator === \"-\") {\n return `-(${operand})`;\n }\n }\n\n // ─── Call (spec §19.4c) ───\n if (operator === \"call\") {\n const calleeRef = (target as { $ref?: string } | null)?.$ref ?? \"\";\n const args = Array.isArray(value) ? value.map((o: unknown) => compileOperand(o, opts)) : [];\n if (calleeRef.startsWith(\"window#/\")) {\n if (!isBlessedGlobal(calleeRef)) {\n throw new Error(`$expression: \"${calleeRef}\" is not a blessed pure global`);\n }\n const helperJs = compileHelperCall(calleeRef.slice(\"window#/\".length), args);\n if (helperJs) {\n return helperJs;\n }\n return `window.${calleeRef.slice(\"window#/\".length).replaceAll(\"/\", \".\")}(${args.join(\", \")})`;\n }\n if (calleeRef.startsWith(\"#/state/\")) {\n const key = calleeRef.slice(\"#/state/\".length);\n const params = opts.formulaParams?.[key];\n if (params) {\n const named = params\n .map((p, i) => `${JSON.stringify(p)}: ${args[i] ?? \"undefined\"}`)\n .join(\", \");\n return `${formulaFnName(key)}(${opts.statePrefix ?? \"state\"}, { ${named} })`;\n }\n }\n // Fallback: the scope member itself is callable.\n return `${compileRef(calleeRef, opts)}(${args.join(\", \")})`;\n }\n\n // ─── Conditional (pure) ───\n if (CONDITIONAL_OPS.has(operator)) {\n if (operator === \"?:\") {\n const test: string = compileOperand(target, opts);\n const consequent: string = compileOperand(value, opts);\n const alternate: string = compileOperand(initial, opts);\n return `(${test} ? ${consequent} : ${alternate})`;\n }\n // Switch — bind the discriminant's string form once, then chain strict-equality tests.\n const discriminant: string = compileOperand(target, opts);\n const chain = Object.entries(node.cases ?? {})\n .map(([k, v]) => `_d === ${JSON.stringify(k)} ? ${compileOperand(v, opts)} : `)\n .join(\"\");\n const fallback = \"default\" in node ? compileOperand(node.default, opts) : \"undefined\";\n return `((_d) => ${chain}${fallback})(String(${discriminant}))`;\n }\n\n // ─── Binary (pure) ───\n if (BINARY_OPS.has(operator)) {\n const left: string = compileOperand(target, opts);\n const right: string = compileOperand(value, opts);\n return `(${left} ${operator} ${right})`;\n }\n\n // ─── Assignment ───\n if (ASSIGNMENT_OPS.has(operator)) {\n const lhs: string = compileTarget(target, opts);\n const rhs: string = compileOperand(value, opts);\n return `${lhs} ${operator} ${rhs}`;\n }\n\n // ─── Array methods ───\n if (ARRAY_METHOD_OPS.has(operator)) {\n const arr: string = compileTarget(target, opts);\n switch (operator) {\n case \"push\": {\n return `${arr}.push(${compileOperand(value, opts)})`;\n }\n case \"unshift\": {\n return `${arr}.unshift(${compileOperand(value, opts)})`;\n }\n case \"pop\": {\n return `${arr}.pop()`;\n }\n case \"shift\": {\n return `${arr}.shift()`;\n }\n case \"splice\": {\n const args: string = Array.isArray(value)\n ? value.map((o: unknown) => compileOperand(o, opts)).join(\", \")\n : compileOperand(value, opts);\n return `${arr}.splice(${args})`;\n }\n default: {\n break;\n }\n }\n }\n\n // ─── Pure standard-library methods (spec §19.4d) ───\n if (PURE_METHOD_OPS.has(operator)) {\n const receiver: string = compileOperand(target, opts);\n const args: string =\n value === undefined\n ? \"\"\n : Array.isArray(value)\n ? value.map((o: unknown) => compileOperand(o, opts)).join(\", \")\n : compileOperand(value, opts);\n // ?.method?.() matches the interpreter: missing receiver or method yields undefined.\n return `(${receiver})?.${operator}?.(${args})`;\n }\n\n // ─── Aggregates (pure) ───\n if (AGGREGATE_OPS.has(operator)) {\n const arr: string = compileOperand(target, opts);\n const itemExpr: string = compileExpression(value as ExpressionNode, opts);\n if (operator === \"reduce\") {\n const seed: string = compileOperand(initial, opts);\n return `${arr}.reduce((_acc, _item, _index) => ${itemExpr}, ${seed})`;\n }\n if (operator === \"map\") {\n return `${arr}.map((_item, _index) => ${itemExpr})`;\n }\n if (operator === \"filter\") {\n return `${arr}.filter((_item, _index) => ${itemExpr})`;\n }\n }\n\n return \"undefined\";\n}\n\n// ─── Utilities ───────────────────────────────────────────────────────────────\n\n/** Resolve a dotted/slashed path on an object. */\nfunction getPath(obj: unknown, path: string): unknown {\n let current: unknown = obj;\n for (const k of path.split(/[./]/)) {\n current = (current as Record<string, unknown>)?.[k];\n }\n return current;\n}\n\n// ─── Statement-Engine Surface (spec §20) ─────────────────────────────────────\n\n/**\n * Evaluate a bare operand (pointer, literal, or nested node) outside a node position — used by\n * statement execution (spec §20) for `if` tests and `$switch` discriminants.\n */\nexport function evaluateOperand(\n operand: unknown,\n state: JxScope,\n event: Event | null,\n iterCtx?: IterCtx,\n): unknown {\n return resolveOperand(operand, state, event, iterCtx);\n}\n\n/** Compile a bare operand to JS source — the statement compiler's counterpart to evaluateOperand. */\nexport function compileOperandSource(operand: unknown, opts: CompileOpts = {}): string {\n return compileOperand(operand, opts);\n}\n\nexport type { CompileOpts, IterCtx };\n",
|
|
9
9
|
"/**\n * Type predicate guards for the Jx document model.\n *\n * These narrow `unknown`/union-typed values to precise domain types so call sites get real property\n * checking instead of casts. Every guard mirrors the runtime's actual detection logic (see\n * buildScope's five-shape algorithm in the runtime).\n */\n\nimport type {\n JsonObject,\n JsonValue,\n JxClassDef,\n JxElement,\n JxEventBinding,\n JxExpressionDef,\n JxFunctionDef,\n JxMappedArray,\n JxMutableNode,\n JxPrototypeDef,\n JxRef,\n JxServerFnDef,\n JxStatement,\n JxStateObject,\n JxStyle,\n} from \"../types\";\n\n// ─── JSON shape guards ──────────────────────────────────────────────────────────\n\n/** A plain object: not null, not an array. The base check for all object-shaped defs. */\nexport function isJsonObject(value: unknown): value is JsonObject {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n// ─── Binding guards ─────────────────────────────────────────────────────────────\n\n/** A `{ $ref: \"#/...\" }` JSON Pointer reference. */\nexport function isRef(value: unknown): value is JxRef {\n return isJsonObject(value) && typeof value.$ref === \"string\";\n}\n\n// ─── State definition guards (the five-shape algorithm) ────────────────────────\n\n/** Shape 4: a function declaration — `{ $prototype: \"Function\", body | $src }`. */\nexport function isFunctionDef(value: unknown): value is JxFunctionDef {\n return isJsonObject(value) && value.$prototype === \"Function\";\n}\n\n/** Shape 5: a declarative expression entry — `{ $expression: { operator, target } }`. */\nexport function isExpressionDef(value: unknown): value is JxExpressionDef {\n return isJsonObject(value) && isJsonObject(value.$expression);\n}\n\n/**\n * Shape 5 with `parameters`: a named formula — a pure, reusable computation invoked via the `call`\n * operator rather than lowered to a computed value.\n */\nexport function isNamedFormulaDef(\n value: unknown,\n): value is JxExpressionDef & { parameters: unknown[] } {\n return isExpressionDef(value) && Array.isArray(value.parameters) && value.parameters.length > 0;\n}\n\n/**\n * Shape 4 with a structured body: a Function entry whose `body` is a statement array (spec §20)\n * rather than opaque JS source.\n */\nexport function hasStructuredBody(\n value: unknown,\n): value is JxFunctionDef & { body: JxStatement[] } {\n return isFunctionDef(value) && Array.isArray(value.body);\n}\n\n/** A non-Function `$prototype` instance (Request, Storage, ContentCollection, classes, …). */\nexport function isPrototypeDef(value: unknown): value is JxPrototypeDef {\n return (\n isJsonObject(value) && typeof value.$prototype === \"string\" && value.$prototype !== \"Function\"\n );\n}\n\n/** A `timing: \"server\"` function proxy (no `$prototype`, external `$src`/`$export`). */\nexport function isServerFnDef(value: unknown): value is JxServerFnDef {\n return (\n isJsonObject(value) &&\n value.timing === \"server\" &&\n typeof value.$src === \"string\" &&\n typeof value.$export === \"string\" &&\n !value.$prototype\n );\n}\n\n/** Shape 2: an expanded signal — an object carrying a `default` value. */\nexport function isExpandedSignal(value: unknown): value is JxStateObject & { default: JsonValue } {\n return isJsonObject(value) && !value.$prototype && !value.$expression && \"default\" in value;\n}\n\n/**\n * Schema-only keywords used to detect pure type definitions (Shape 2b). An object with ONLY these\n * keys and no `default` is a type def, not a signal.\n */\nexport const SCHEMA_KEYWORDS: ReadonlySet<string> = new Set([\n \"type\",\n \"enum\",\n \"minimum\",\n \"maximum\",\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n \"items\",\n \"properties\",\n \"required\",\n \"description\",\n \"title\",\n \"$comment\",\n]);\n\n/** Shape 2b: a pure type definition — every key is a JSON Schema keyword. */\nexport function isSchemaOnlyDef(value: unknown): value is JxStateObject {\n if (!isJsonObject(value)) {\n return false;\n }\n for (const k of Object.keys(value)) {\n if (!SCHEMA_KEYWORDS.has(k)) {\n return false;\n }\n }\n return true;\n}\n\n/** True when an object carries at least one JSON Schema keyword. */\nexport function hasSchemaKeywords(value: unknown): value is JxStateObject {\n if (!isJsonObject(value)) {\n return false;\n }\n for (const k of Object.keys(value)) {\n if (SCHEMA_KEYWORDS.has(k)) {\n return true;\n }\n }\n return false;\n}\n\n// ─── Document structure guards ──────────────────────────────────────────────────\n\n/** A mapped (repeater) children object — `{ $prototype: \"Array\", items, map }`. */\nexport function isMappedArray(value: unknown): value is JxMappedArray {\n return isJsonObject(value) && value.$prototype === \"Array\";\n}\n\n/**\n * Whether a node's `children` holds at least one mapped array — either as the bare whole-children\n * slot (legacy) or as a member of the children array. Used by renderers and the compiler to decide\n * if a children list needs inline repeater expansion.\n */\nexport function childrenContainArray(children?: unknown): boolean {\n if (isMappedArray(children)) {\n return true;\n }\n return Array.isArray(children) && children.some((c) => isMappedArray(c));\n}\n\n/** A .class.json schema-defined class document — `{ $prototype: \"Class\" }`. */\nexport function isClassDef(value: unknown): value is JxClassDef {\n return isJsonObject(value) && value.$prototype === \"Class\";\n}\n\n/** An element-shaped node object (vs. a bare string/number child). */\nexport function isNodeObject(value: unknown): value is JxMutableNode & JxElement {\n return isJsonObject(value);\n}\n\n/** A `${...}` template-expression string. */\nexport function isTemplateString(value?: unknown): value is string {\n return typeof value === \"string\" && value.includes(\"${\");\n}\n\n// ─── Style guards & accessors ───────────────────────────────────────────────────\n\n/** A nested style object (selector/media block), as opposed to a scalar CSS value. */\nexport function isNestedStyle(value: string | number | JxStyle | undefined): value is JxStyle {\n return typeof value === \"object\" && value !== null;\n}\n\n/** Read a nested style block (`:hover`, `@--md`, `& > li`, …), if present. */\nexport function getNestedStyle(style: JxStyle | undefined, key: string): JxStyle | undefined {\n const value = style?.[key];\n return isNestedStyle(value) ? value : undefined;\n}\n\n/** Read a nested style block, creating an empty one in place when absent or scalar. */\nexport function ensureNestedStyle(style: JxStyle, key: string): JxStyle {\n const existing = style[key];\n if (isNestedStyle(existing)) {\n return existing;\n }\n const created: JxStyle = {};\n style[key] = created;\n return created;\n}\n\n// ─── Event binding guards ───────────────────────────────────────────────────────\n\n/**\n * The value of an `on*` document key: a `$ref`, an inline function declaration, or a declarative\n * expression.\n */\nexport function isEventBinding(value: unknown): value is JxEventBinding {\n return isRef(value) || isFunctionDef(value) || isExpressionDef(value);\n}\n\n/** Read the event binding stored under an `on*` key of a node, if there is one. */\nexport function getEventBinding(\n node: JxMutableNode | JxElement,\n key: string,\n): JxEventBinding | undefined {\n const value = node[key];\n return isEventBinding(value) ? value : undefined;\n}\n\n// ─── Parameter helpers ──────────────────────────────────────────────────────────\n\n/** Resolve `parameters` entries (bare strings or CEM objects) to their names. */\nexport function paramNames(parameters: JxFunctionDef[\"parameters\"]): string[] {\n if (!parameters) {\n return [];\n }\n return parameters.map((p) => (typeof p === \"string\" ? p : p.name));\n}\n",
|
|
10
10
|
"/// <reference lib=\"dom\" />\n/**\n * Jx Statement Engine (spec §20) — structured function bodies.\n *\n * A Function entry's `body` may be a statement array instead of opaque JS source. This module is\n * the statements counterpart to expression.ts, with the same dual shape: `runStatements`\n * (interpreter) and `compileStatements` (JS emitter), shared by the runtime and every compiler\n * target. Statement kinds reuse web-platform names only: bare expression nodes (§19), the JSON\n * Schema `if`/`then`/`else` triple, `$switch`/`cases` in statement position, and WHATWG's\n * `dispatchEvent` with `CustomEventInit` members.\n */\n\nimport {\n compileExpression,\n compileOperandSource,\n evaluateExpression,\n evaluateOperand,\n} from \"./expression.ts\";\n\nimport type { JxStatement } from \"@jxsuite/schema/types\";\nimport type { CompileOpts, ExpressionNode, IterCtx } from \"./expression.ts\";\nimport type { JxScope } from \"./types.ts\";\n\ninterface RunOpts {\n /** Named-formula-style arguments bound for $args/<name> refs in the body. */\n args?: Record<string, unknown>;\n /** Dispatch target for dispatchEvent statements; defaults to event?.currentTarget. */\n target?: EventTarget | null;\n}\n\nfunction statementKind(statement: JxStatement): \"expression\" | \"if\" | \"switch\" | \"dispatch\" {\n if (\"operator\" in statement) {\n return \"expression\";\n }\n if (\"if\" in statement) {\n return \"if\";\n }\n if (\"$switch\" in statement) {\n return \"switch\";\n }\n return \"dispatch\";\n}\n\n/**\n * Execute a statement list sequentially against the reactive scope. A statement whose value is a\n * thenable is awaited before the next runs (ECMA async/await semantics); purely synchronous bodies\n * complete synchronously before the returned promise settles.\n */\nexport async function runStatements(\n statements: JxStatement[],\n state: JxScope,\n event: Event | null,\n opts: RunOpts = {},\n): Promise<void> {\n const iterCtx: IterCtx | undefined = opts.args ? { args: opts.args } : undefined;\n for (const statement of statements) {\n switch (statementKind(statement)) {\n case \"expression\": {\n const result = evaluateExpression(statement as ExpressionNode, state, event, iterCtx);\n if (result && typeof (result as PromiseLike<unknown>).then === \"function\") {\n await (result as PromiseLike<unknown>);\n }\n break;\n }\n case \"if\": {\n const branch = statement as { if: unknown; then: JxStatement[]; else?: JxStatement[] };\n const taken = evaluateOperand(branch.if, state, event, iterCtx) ? branch.then : branch.else;\n if (Array.isArray(taken)) {\n await runStatements(taken, state, event, opts);\n }\n break;\n }\n case \"switch\": {\n const branch = statement as {\n $switch: unknown;\n cases: Record<string, JxStatement[]>;\n default?: JxStatement[];\n };\n const key = String(evaluateOperand(branch.$switch, state, event, iterCtx));\n const cases = branch.cases ?? {};\n const taken = Object.hasOwn(cases, key) ? cases[key] : branch.default;\n if (Array.isArray(taken)) {\n await runStatements(taken, state, event, opts);\n }\n break;\n }\n case \"dispatch\": {\n const dispatch = statement as {\n dispatchEvent: string;\n detail?: unknown;\n bubbles?: boolean;\n composed?: boolean;\n };\n const target = opts.target ?? event?.currentTarget;\n if (!target) {\n break;\n }\n const init: CustomEventInit = {};\n if (\"detail\" in dispatch) {\n init.detail = evaluateOperand(dispatch.detail, state, event, iterCtx);\n }\n if (dispatch.bubbles !== undefined) {\n init.bubbles = dispatch.bubbles;\n }\n if (dispatch.composed !== undefined) {\n init.composed = dispatch.composed;\n }\n target.dispatchEvent(new CustomEvent(dispatch.dispatchEvent, init));\n break;\n }\n default: {\n break;\n }\n }\n }\n}\n\ninterface StatementCompileOpts extends CompileOpts {\n /** JS expression for the dispatchEvent target; defaults to `(event && event.currentTarget)`. */\n dispatchTarget?: string;\n /** Indentation prefix for emitted lines. */\n indent?: string;\n}\n\n/**\n * Compile a statement list to a JS statement block (no surrounding braces). Mirrors `runStatements`\n * exactly; each statement kind lowers to its genuine ECMAScript form — expression statements,\n * `if`/`else`, `switch` over the discriminant's string form, and `dispatchEvent(new\n * CustomEvent(...))`.\n */\nexport function compileStatements(\n statements: JxStatement[],\n opts: StatementCompileOpts = {},\n): string {\n const indent = opts.indent ?? \"\";\n const lines: string[] = [];\n for (const statement of statements) {\n switch (statementKind(statement)) {\n case \"expression\": {\n lines.push(`${indent}${compileExpression(statement as ExpressionNode, opts)};`);\n break;\n }\n case \"if\": {\n const branch = statement as { if: unknown; then: JxStatement[]; else?: JxStatement[] };\n const test = compileOperandSource(branch.if, opts);\n const inner = { ...opts, indent: `${indent} ` };\n lines.push(`${indent}if (${test}) {`, compileStatements(branch.then ?? [], inner));\n if (branch.else) {\n lines.push(`${indent}} else {`, compileStatements(branch.else, inner));\n }\n lines.push(`${indent}}`);\n break;\n }\n case \"switch\": {\n const branch = statement as {\n $switch: unknown;\n cases: Record<string, JxStatement[]>;\n default?: JxStatement[];\n };\n const disc = compileOperandSource(branch.$switch, opts);\n const inner = { ...opts, indent: `${indent} ` };\n lines.push(`${indent}switch (String(${disc})) {`);\n for (const [key, caseStatements] of Object.entries(branch.cases ?? {})) {\n lines.push(\n `${indent} case ${JSON.stringify(key)}: {`,\n compileStatements(caseStatements, inner),\n `${indent} break;`,\n `${indent} }`,\n );\n }\n if (branch.default) {\n lines.push(\n `${indent} default: {`,\n compileStatements(branch.default, inner),\n `${indent} }`,\n );\n }\n lines.push(`${indent}}`);\n break;\n }\n case \"dispatch\": {\n const dispatch = statement as {\n dispatchEvent: string;\n detail?: unknown;\n bubbles?: boolean;\n composed?: boolean;\n };\n const eventName = opts.eventParam ?? \"event\";\n const target = opts.dispatchTarget ?? `(${eventName} && ${eventName}.currentTarget)`;\n const init: string[] = [];\n if (\"detail\" in dispatch) {\n init.push(`detail: ${compileOperandSource(dispatch.detail, opts)}`);\n }\n if (dispatch.bubbles !== undefined) {\n init.push(`bubbles: ${JSON.stringify(dispatch.bubbles)}`);\n }\n if (dispatch.composed !== undefined) {\n init.push(`composed: ${JSON.stringify(dispatch.composed)}`);\n }\n const initSource = init.length > 0 ? `, { ${init.join(\", \")} }` : \"\";\n lines.push(\n `${indent}${target}?.dispatchEvent(new CustomEvent(${JSON.stringify(dispatch.dispatchEvent)}${initSource}));`,\n );\n break;\n }\n default: {\n break;\n }\n }\n }\n return lines.join(\"\\n\");\n}\n",
|
|
11
|
-
"/// <reference lib=\"dom\" />\n/**\n * Jx — JSON-native reactive web component runtime\n * @version 3.0.0\n * @license MIT\n *\n * Four-step pipeline:\n * 1. resolve — fetch JSON source (or accept raw object)\n * 2. buildScope — state detection + reactive proxy construction\n * 3. render — walk resolved tree, build DOM, wire reactive effects\n * 4. output — append to target\n *\n * @module jx\n */\n\nimport {\n computed,\n effect,\n effectScope,\n isRef,\n onEffectCleanup,\n reactive,\n ref,\n toRaw,\n} from \"@vue/reactivity\";\nimport { evaluateExpression, isMutating } from \"./expression.ts\";\nimport type { DynamicClass, JxEventHandler, JxPath, JxRenderOptions, JxScope } from \"./types.ts\";\nimport {\n hasStructuredBody,\n isExpressionDef,\n isFunctionDef,\n isJsonObject,\n isMappedArray,\n isNamedFormulaDef,\n isPrototypeDef,\n isRef as isRefValue,\n isServerFnDef,\n paramNames,\n} from \"@jxsuite/schema/guards\";\nimport { runStatements } from \"./statements.ts\";\nimport type {\n JxAttributeValue,\n JxClassDef,\n JxDocument,\n JxElement,\n JxFunctionDef,\n JxHeadEntry,\n JxMappedArray,\n JxPrototypeDef,\n JxRef,\n JxServerFnDef,\n JxStyle,\n} from \"@jxsuite/schema/types\";\nimport type { Ref } from \"@vue/reactivity\";\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\n/**\n * Mount a Jx document into a DOM container.\n *\n * @example\n * import { Jx } from \"@jxsuite/runtime\";\n * const state = await Jx(\"./counter.json\", document.getElementById(\"app\"));\n *\n * @param {string | JxDocument} source - Path to .json file, URL, or raw document object\n * @param {HTMLElement} [target] Default is `document.body`\n * @param {JxRenderOptions} [options]\n * @returns {Promise<JxScope>} Resolves with the live component scope (state reactive\n * proxy)\n */\nexport async function Jx(\n source: string | JxDocument,\n target: HTMLElement = document.body,\n options?: JxRenderOptions,\n) {\n const base = typeof source === \"string\" ? new URL(source, location.href).href : location.href;\n const doc = await resolve(source);\n\n // Register custom elements declared in $elements (depth-first)\n if (doc.$elements) {\n await registerElements(doc.$elements, base);\n }\n\n // Inject <head> elements declared in $head (link, meta, script, etc.)\n if (doc.$head) {\n injectHead(doc.$head, base);\n }\n\n if (doc.$media) {\n _rootMedia = doc.$media;\n }\n\n const state = await buildScope(doc, {}, base);\n target.append(renderNode(doc, state, options));\n if (typeof state.onMount === \"function\") {\n (state.onMount as (s: JxScope) => unknown)(state);\n }\n return state;\n}\n\n// ─── Step 1: Resolve ──────────────────────────────────────────────────────────\n\nconst _resolveCache = new Map<string, Promise<JxDocument>>();\n\nexport async function resolve(source: string | JxDocument): Promise<JxDocument> {\n if (typeof source !== \"string\") {\n return source;\n }\n if (_resolveCache.has(source)) {\n return _resolveCache.get(source)!;\n }\n const p = fetch(source).then((res) => {\n if (!res.ok) {\n throw new Error(`Jx: failed to fetch ${source} (${res.status})`);\n }\n // Trust boundary: fetched sources are Jx documents by contract.\n return res.json() as Promise<JxDocument>;\n });\n _resolveCache.set(source, p);\n return p;\n}\n\n// ─── Step 2: Build scope ──────────────────────────────────────────────────────\n\n/** JSON Schema keywords used to identify pure type definitions (Shape 2b). */\nconst SCHEMA_KEYWORDS = new Set([\n \"type\",\n \"properties\",\n \"items\",\n \"enum\",\n \"minimum\",\n \"maximum\",\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"required\",\n \"examples\",\n]);\n\n/** /** @type {{ skip: boolean }} */\nconst _serverFnConfig = { skip: false };\n/** Set to true to suppress timing: \"server\" resolution (used by Studio edit mode). */\nexport function setSkipServerFunctions(v: boolean) {\n _serverFnConfig.skip = v;\n}\n\n// ─── Dev-proxy auth token (Studio cross-origin canvas) ────────────────────────\n// The Studio canvas iframe is served from a token-gated loopback origin (createProjectServer): its\n// POST /__jx_resolve__ + /__jx_server__ routes 403 without ?token=<rpcToken>. The iframe boot reads\n// The token from its URL and calls setResolveToken so these dev-proxy fetches authenticate. Unset by\n// Default, leaving production + same-origin dev untouched (bare path, no query appended).\nlet _resolveToken: string | null = null;\nexport function setResolveToken(token: string | null) {\n _resolveToken = token || null;\n}\n/** Append the dev-proxy auth token to a privileged resolve path when one is configured. */\nfunction resolveProxyPath(path: string): string {\n return _resolveToken ? `${path}?token=${encodeURIComponent(_resolveToken)}` : path;\n}\n\n/** @deprecated No longer needed — ContentCollection/ContentEntry resolve via generic class path */\nexport function setSkipContentResolution(_v: boolean) {\n // No-op retained for API compatibility\n}\n\n/**\n * Observe runtime-created reactive values: runs `fn` immediately inside a reactive effect and\n * re-runs it whenever a tracked value changes; returns a disposer. Dep tracking in @vue/reactivity\n * is per module INSTANCE, so an effect created from another copy of the package (e.g. the studio's\n * own pin) can never track a ref/reactive created here — consumers that want to observe\n * runtime-resolved scope values (the Studio canvas iframe's dataScope re-post) must use this.\n *\n * @param {() => void} fn - Read the reactive values to observe inside this callback.\n * @returns {() => void} Disposer — stops the effect and its scope.\n */\nexport function observeScope(fn: () => void): () => void {\n const scope = effectScope(true);\n scope.run(() => {\n effect(fn);\n });\n return () => scope.stop();\n}\n\n/**\n * Run `fn` inside a detached reactive scope of THIS module's reactivity instance, returning its\n * result plus a disposer that stops every effect `fn` created. Callers that render via\n * {@link renderNode} and later tear the render down (the Studio canvas full render and its surgical\n * subtree re-renders) MUST use this instead of their own effectScope: scope collection is per\n * vue-reactivity module instance, so a scope from another copy of the package collects NOTHING and\n * its stop() silently leaks every binding effect of the superseded render.\n *\n * @param {() => T} fn - Work that may create reactive effects (typically a renderNode call).\n * @returns {{ result: T; stop: () => void }} The callback result and the scope disposer.\n */\nexport function runScoped<T>(fn: () => T): { result: T; stop: () => void } {\n const scope = effectScope(true);\n try {\n const result = scope.run(fn) as T;\n return { result, stop: () => scope.stop() };\n } catch (error) {\n // A throwing fn would otherwise leak the effects it created before failing.\n scope.stop();\n throw error;\n }\n}\n\n/**\n * Studio-canvas viewport-unit transpose. The canvas iframe is sized to its document's height, so\n * any viewport unit (`vh`/`vw`/`vmin`/`vmax`/`svh`/…) — which resolves against the iframe ELEMENT —\n * would feed back into an ever-growing height. When this is on, the runtime transposes them to\n * CONTAINER units (`cqh`/`cqw`/…) that resolve against the canvas's fixed-size query container (see\n * `canvas.html`): a predictable, feedback-free stand-in for the viewport. Off (the default) leaves\n * CSS untouched for real production rendering.\n */\nlet _canvasViewportTranspose = false;\nexport function setCanvasViewportTranspose(on: boolean) {\n _canvasViewportTranspose = on;\n}\n\nconst VIEWPORT_UNIT_RE = /(-?\\d*\\.?\\d+)(?:s|l|d)?v(h|w|min|max|i|b)\\b/gi;\nconst VIEWPORT_UNIT_MAP: Record<string, string> = {\n b: \"cqb\",\n h: \"cqh\",\n i: \"cqi\",\n max: \"cqmax\",\n min: \"cqmin\",\n w: \"cqw\",\n};\n\n/**\n * Transpose CSS viewport units → container-query units in a value string, but only when the\n * studio-canvas flag is set (otherwise the value is returned untouched). `100vh` → `100cqh`,\n * `50svw` → `50cqw`, `10vmin` → `10cqmin`, etc.\n */\nexport function transposeCanvasUnits(value: string): string {\n if (!_canvasViewportTranspose || !value.includes(\"v\")) {\n return value;\n }\n return value.replace(\n VIEWPORT_UNIT_RE,\n (_m, num: string, dim: string) => `${num}${VIEWPORT_UNIT_MAP[dim.toLowerCase()] ?? `cq${dim}`}`,\n );\n}\n\n/**\n * Studio-canvas anchor de-linking. In the editor canvas a rendered `<a href>` would navigate the\n * iframe when clicked, fighting element selection. When this is on, the runtime stamps the value on\n * `data-jx-href` instead of `href` so the anchor is inert (selectable, not a live link) while the\n * original target stays recoverable for richer link handling later. Off (the default) leaves\n * production rendering untouched; the studio sets it for design/edit (not preview — see\n * iframe-render).\n */\nlet _canvasDelinkAnchors = false;\nexport function setCanvasDelinkAnchors(on: boolean) {\n _canvasDelinkAnchors = on;\n}\n\n/** The attribute name to stamp `key` on `el` under — `href` → `data-jx-href` on de-linked anchors. */\nfunction canvasAttrName(el: HTMLElement, key: string): string {\n if (_canvasDelinkAnchors && key === \"href\" && (el.tagName === \"A\" || el.tagName === \"AREA\")) {\n return \"data-jx-href\";\n }\n return key;\n}\n\n/**\n * Studio-canvas prop-binding markers. When on, `bindProperty` stamps `data-jx-bound-prop=\"<key>\"`\n * on elements whose `textContent` is an invertible single-key state binding — the pure template\n * `\"${state.key}\"` or `{ \"$ref\": \"#/state/key\" }`. The studio canvas uses the marker to offer\n * inline editing of component-instance prop values; the rendered text must BE the prop value\n * verbatim, so mixed templates and deep paths are never stamped. Off (the default) leaves\n * production rendering untouched; the studio sets it for design/edit (not preview — see\n * iframe-render).\n */\nlet _stampPropBindings = false;\nexport function setStampPropBindings(on: boolean) {\n _stampPropBindings = on;\n}\n\n/** The single invertible template form: the whole string is exactly one `${state.key}` access. */\nconst PURE_STATE_TEMPLATE = /^\\s*\\$\\{\\s*state\\.(\\w+)\\s*\\}\\s*$/;\n\n/** The state key of an invertible `textContent` binding, or null (mixed template, deep path). */\nfunction boundPropKey(key: string, val: unknown, state: JxScope): string | null {\n if (!_stampPropBindings || key !== \"textContent\") {\n return null;\n }\n let sub: string | null = null;\n if (isRefObj(val)) {\n if (!val.$ref.startsWith(\"#/state/\")) {\n return null;\n }\n const rest = val.$ref.slice(\"#/state/\".length);\n sub = rest && !rest.includes(\"/\") ? rest : null;\n } else if (typeof val === \"string\") {\n sub = PURE_STATE_TEMPLATE.exec(val)?.[1] ?? null;\n }\n if (!sub) {\n return null;\n }\n // Only plain writable data entries are per-instance props. Computed/signal entries live as refs\n // In the raw scope (auto-unwrapped by the reactive proxy), and function/object entries (handlers,\n // $prototype instances) are not prop-overridable either — an instance $props write against any of\n // Them would clobber the definition's behavior, so their bindings are never marked editable.\n const stored = (toRaw(state) as Record<string, unknown>)[sub];\n if (isRef(stored) || typeof stored === \"function\") {\n return null;\n }\n if (typeof stored === \"object\" && stored !== null) {\n return null;\n }\n return sub;\n}\n\n/**\n * Build the reactive scope (state) from the document using the five-shape detection algorithm.\n *\n * @param {JxDocument} doc\n * @param {JxScope} [parentScope] Default is `{}`\n * @param {string} [base] Base URL for resolving $src imports. Default is `location.href`\n * @returns {Promise<JxScope>} Reactive proxy (state)\n */\nexport async function buildScope(\n doc: JxDocument,\n parentScope: JxScope = {},\n base: string = location.href,\n) {\n const raw: JxScope = {};\n\n // Merge parent scope properties\n for (const [key, val] of Object.entries(parentScope)) {\n raw[key] = val;\n }\n\n const defs = doc.state ?? {};\n\n // Pass 0: resolve bare $prototype names via import map\n const imports = doc.imports ?? {};\n for (const [, def] of Object.entries(defs)) {\n if (isPrototypeDef(def) && !def.$src) {\n const mapped = imports[def.$prototype];\n if (mapped) {\n if (!mapped.endsWith(\".class.json\")) {\n console.warn(\n `Jx: import \"${def.$prototype}\" must map to a .class.json path, got \"${mapped}\"`,\n );\n continue;\n }\n def.$src = mapped;\n }\n }\n }\n\n // First pass: collect naked values, expanded defaults, plain objects\n for (const [key, def] of Object.entries(defs)) {\n // 1. String value\n if (typeof def === \"string\") {\n if (!def.includes(\"${\")) {\n raw[key] = def;\n } // Shape 1: naked string\n continue; // Template strings handled in second pass\n }\n\n // 2. Number, boolean, null\n if (typeof def === \"number\" || typeof def === \"boolean\" || def === null) {\n raw[key] = def;\n continue;\n }\n\n // 3. Array\n if (Array.isArray(def)) {\n raw[key] = def;\n continue;\n }\n\n // 4. Object\n if (typeof def === \"object\") {\n if (def.$prototype) {\n continue;\n } // Handled in later passes\n if (isExpressionDef(def)) {\n continue;\n } // Handled in pass 2.5\n if (isServerFnDef(def)) {\n continue;\n } // Handled in fifth pass\n if (\"default\" in def) {\n raw[key] = def.default;\n continue;\n } // Shape 2: expanded signal\n if (hasSchemaKeywords(def)) {\n continue;\n } // Shape 2b: pure type def\n raw[key] = def; // Shape 1: plain object\n }\n }\n\n // Wrap in Vue reactive proxy — deep reactivity from this point on\n const state = reactive(raw);\n\n // Second pass: template strings → computed\n for (const [key, def] of Object.entries(defs)) {\n if (typeof def === \"string\" && def.includes(\"${\")) {\n state[key] = computed(() => evaluateTemplate(def, state));\n }\n }\n\n // Pass 2.5: $expression entries (Shape 5)\n for (const [key, def] of Object.entries(defs)) {\n if (isExpressionDef(def)) {\n const node = def.$expression;\n if (isNamedFormulaDef(def)) {\n // A named formula: callable with positional args mapped onto its declared parameters.\n const params = def.parameters as (string | { name?: string; default?: unknown })[];\n state[key] = (...argValues: unknown[]) => {\n const args: Record<string, unknown> = {};\n for (const [i, p] of params.entries()) {\n const name = typeof p === \"string\" ? p : (p?.name ?? \"\");\n if (!name) {\n continue;\n }\n args[name] =\n argValues[i] === undefined && typeof p === \"object\" && p !== null && \"default\" in p\n ? p.default\n : argValues[i];\n }\n return evaluateExpression(node, state, null, { args });\n };\n } else if (isMutating(node.operator)) {\n const handler: JxEventHandler = (s, event) => evaluateExpression(node, s, event);\n state[key] = handler;\n } else {\n state[key] = computed(() => evaluateExpression(node, state, null));\n }\n }\n }\n\n // Third pass: $prototype: \"Function\" entries\n for (const [key, def] of Object.entries(defs)) {\n if (hasStructuredBody(def)) {\n // Structured body (spec §20): with parameters → a callable mapping positional args onto\n // $args names (invoked via the call operator); without → an event handler.\n const { body } = def;\n if (Array.isArray(def.parameters) && def.parameters.length > 0) {\n const params = def.parameters as (string | { name?: string; default?: unknown })[];\n state[key] = (...argValues: unknown[]) => {\n const args: Record<string, unknown> = {};\n for (const [i, p] of params.entries()) {\n const name = typeof p === \"string\" ? p : (p?.name ?? \"\");\n if (!name) {\n continue;\n }\n args[name] =\n argValues[i] === undefined && typeof p === \"object\" && p !== null && \"default\" in p\n ? p.default\n : argValues[i];\n }\n return runStatements(body, state, null, { args });\n };\n } else {\n const handler: JxEventHandler = (s, event) => {\n void runStatements(body, s, event ?? null);\n };\n state[key] = handler;\n }\n } else if (isFunctionDef(def)) {\n state[key] = await resolveFunction(def, state, key, base);\n }\n }\n\n // Fourth pass: other $prototype entries (Request, Set, Map, etc.)\n for (const [key, def] of Object.entries(defs)) {\n if (isPrototypeDef(def)) {\n state[key] = await resolvePrototype(def, state, key, base);\n }\n }\n\n // Fifth pass: timing: \"server\" entries (dev mode — execute client-side, boundary unenforced)\n if (!_serverFnConfig.skip) {\n for (const [key, def] of Object.entries(defs)) {\n if (isServerFnDef(def)) {\n state[key] = await resolveServerFunction(def, state, key, base);\n }\n }\n }\n\n if (doc.$media) {\n state[\"$media\"] = doc.$media;\n } else if (!state[\"$media\"] && Object.keys(_rootMedia).length > 0) {\n state[\"$media\"] = _rootMedia;\n }\n\n return state;\n}\n\n/**\n * Check whether an object contains any JSON Schema keywords. Used to discriminate Shape 2b (pure\n * type definition) from Shape 1 (naked object).\n *\n * @param {JxScope} obj\n * @returns {boolean}\n */\nfunction hasSchemaKeywords(obj: object) {\n for (const k of Object.keys(obj)) {\n if (SCHEMA_KEYWORDS.has(k)) {\n return true;\n }\n }\n return false;\n}\nexport { hasSchemaKeywords };\n\n/**\n * Evaluate a template string in the context of state and optional $map. Templates use\n * `state.varName` and `$map.item` syntax.\n *\n * @param {string} str\n * @param {JxScope} state\n * @returns {string}\n */\nfunction evaluateTemplate(str: string, state: JxScope): string {\n const $map = state?.$map as { item?: unknown; index?: number } | undefined;\n const fn = new Function(\"state\", \"$map\", \"item\", \"index\", `return \\`${str}\\``) as (\n state: JxScope,\n $map: unknown,\n item: unknown,\n index: number | undefined,\n ) => string;\n return fn(state, $map, $map?.item, $map?.index);\n}\n\n// ─── Step 2b: Function resolution (Shape 4) ─────────────────────────────────\n\n/** Shape of a dynamically imported module: named exports plus an optional default. */\ntype ImportedModule = Record<string, unknown> & { default?: Record<string, unknown> };\n\n/** Minimal contract an externally-imported resolver class may implement. */\ninterface ExternalClassInstance {\n value?: unknown;\n resolve?: () => unknown;\n subscribe?: (cb: (newVal: unknown) => void) => void;\n}\n\n/** Module cache for $src imports (shared with external class resolution). */\nconst _moduleCache = new Map<string, ImportedModule>();\n\n/**\n * Resolve a $prototype: \"Function\" entry into a function or computed.\n *\n * Functions receive state as their first parameter at call time. Functions with a return statement\n * in their body are wrapped in computed() for reactive evaluation.\n *\n * @param {JxFunctionDef} def - State entry with $prototype: \"Function\"\n * @param {JxScope} state - Reactive scope proxy\n * @param {string} key - Def key name\n * @param {string} [base] - Base URL for resolving $src imports\n * @returns {Promise<unknown>}\n */\nasync function resolveFunction(def: JxFunctionDef, state: JxScope, key: string, base?: string) {\n if (def.body && def.$src) {\n throw new Error(`Jx: '${key}' declares both body and $src — these are mutually exclusive`);\n }\n if (!def.body && !def.$src) {\n const params = resolveParamNames(def);\n const noop = new Function(...params, \"\");\n Object.defineProperty(noop, \"name\", {\n configurable: true,\n value: def.name ?? key,\n });\n return noop;\n }\n\n let fn: ((...args: unknown[]) => unknown) | undefined;\n\n if (typeof def.body === \"string\") {\n const params = resolveParamNames(def);\n fn = new Function(...params, def.body) as (...args: unknown[]) => unknown;\n Object.defineProperty(fn, \"name\", {\n configurable: true,\n value: def.name ?? key,\n });\n } else {\n // $src: dynamic import (the body/$src dichotomy was validated above)\n const src = def.$src;\n if (!src) {\n throw new Error(`Jx: '${key}' has neither body nor $src`);\n }\n const exportName = def.$export ?? key;\n let mod: ImportedModule;\n if (_moduleCache.has(src)) {\n mod = _moduleCache.get(src)!;\n } else {\n if (base) {\n const resolvedSrc = new URL(src, base).href;\n try {\n mod = (await import(resolvedSrc)) as ImportedModule;\n } catch {\n mod = (await import(src)) as ImportedModule;\n }\n } else {\n mod = (await import(src)) as ImportedModule;\n }\n _moduleCache.set(src, mod);\n }\n const candidate = mod[exportName] ?? mod.default?.[exportName];\n if (typeof candidate !== \"function\") {\n throw new TypeError(`Jx: export \"${exportName}\" not found or not a function in \"${src}\"`);\n }\n fn = candidate as (...args: unknown[]) => unknown;\n }\n\n // Detect computed: body contains a return statement, or $src function introspection.\n // Functions with parameters (event handlers, callbacks) are never computed.\n const hasParams = (def.parameters ?? def.arguments ?? []).length > 0;\n let isComputed = false;\n if (!hasParams) {\n if (typeof def.body === \"string\") {\n isComputed = /\\breturn\\b/.test(def.body);\n } else if (fn) {\n isComputed = fn.length <= 1 && /\\breturn\\b/.test(fn.toString());\n }\n }\n if (isComputed) {\n return computed(() => fn(state));\n }\n\n return fn;\n}\n\n// ─── Step 3: Render ───────────────────────────────────────────────────────────\n\n/**\n * Extract parameter names from a function definition. Supports both legacy \"arguments\" (string\n * array) and CEM-compatible \"parameters\" (object array). Always ensures \"state\" is the first\n * parameter.\n *\n * @param {JxFunctionDef | JxPrototypeDef} def\n * @returns {string[]}\n */\nfunction resolveParamNames(def: JxFunctionDef | JxPrototypeDef) {\n const names = def.parameters ? paramNames(def.parameters) : (def.arguments ?? []);\n return names.length > 0 && names[0] === \"state\" ? names : [\"state\", ...names];\n}\n\n/**\n * Reserved Jx keys — never set as DOM properties.\n *\n * @type {Set<string>}\n */\nexport const RESERVED_KEYS = new Set([\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"state\",\n \"$ref\",\n \"$props\",\n \"$elements\",\n \"$title\",\n \"$description\",\n \"$switch\",\n \"$prototype\",\n \"$src\",\n \"$export\",\n \"$media\",\n \"$map\",\n \"timing\",\n \"default\",\n \"description\",\n \"body\",\n \"parameters\",\n \"arguments\",\n \"name\",\n \"tagName\",\n \"children\",\n \"style\",\n \"attributes\",\n \"items\",\n \"map\",\n \"filter\",\n \"sort\",\n \"cases\",\n \"observedAttributes\",\n]);\n\n/**\n * Recursively render a Jx element definition into a DOM element.\n *\n * @param {JxElement | string | number | boolean} def\n * @param {JxScope} state - Reactive scope proxy (or child scope via Object.create)\n * @param {JxRenderOptions} [options]\n * @returns {HTMLElement | Text}\n */\nexport function renderNode(\n def: JxElement | string | number | boolean,\n state: JxScope,\n options?: JxRenderOptions,\n): HTMLElement | Text {\n const path = options?._path ?? [];\n\n // Text node children: bare strings/numbers/booleans produce DOM Text nodes\n if (typeof def === \"string\" || typeof def === \"number\" || typeof def === \"boolean\") {\n const textNode = document.createTextNode(String(def));\n if (typeof def === \"string\" && isTemplateString(def)) {\n effect(() => {\n textNode.textContent = evaluateTemplate(def, state);\n });\n }\n return textNode;\n }\n\n // Extend scope with any $-prefixed local bindings declared on this node\n let localState: JxScope = state;\n for (const [key, val] of Object.entries(def)) {\n if (key.startsWith(\"$\") && !RESERVED_KEYS.has(key)) {\n if (localState === state) {\n localState = Object.create(state) as JxScope;\n }\n localState[key] = isRefObj(val) ? resolveRef(val.$ref, state) : val;\n }\n }\n\n // Custom element with $props: set JS properties on the element instance\n const tagName = def.tagName ?? \"div\";\n const isCustomEl = tagName.includes(\"-\") && customElements.get(tagName);\n\n if (def.$props && isCustomEl) {\n return renderCustomElementWithProps(def, localState, options, path);\n }\n\n if (def.$props) {\n const { $props: _$props, ...rest } = def;\n return renderNode(rest, mergeProps(def, localState), options);\n }\n if (def.$switch) {\n return renderSwitch(def, localState, options);\n }\n\n const el = document.createElement(tagName);\n\n if (options?.onNodeCreated) {\n options.onNodeCreated(el, path, def, localState);\n }\n\n applyProperties(el, def, localState);\n applyStyle(\n el,\n def.style ?? {},\n (localState[\"$media\"] as Record<string, string>) ?? {},\n localState,\n );\n applyAttributes(el, def.attributes ?? {}, localState);\n\n const kids = def.children;\n if (isMappedArray(kids)) {\n // Legacy whole-children repeater: the items render directly into `el` (which keeps its own\n // TagName, e.g. <ul>), with no extra wrapper element.\n const arrOpts = options ? { ...options, _path: [...path, \"children\"] } : undefined;\n renderMappedArrayInto(el, kids, localState, arrOpts);\n } else if (Array.isArray(kids)) {\n for (let i = 0; i < kids.length; i++) {\n const child = kids[i]!;\n const childOpts = options ? { ...options, _path: [...path, \"children\", i] } : undefined;\n if (isMappedArray(child)) {\n // Array pseudo-element among siblings: expand inline, no wrapper.\n renderMappedArrayInto(el, child, localState, childOpts);\n } else {\n el.append(renderNode(child, localState, childOpts));\n }\n }\n }\n\n return el;\n}\n\n// ─── Template string utilities ────────────────────────────────────────────────\n\n/**\n * Check if a value is a template string (contains ${}).\n *\n * @param {unknown} val\n * @returns {boolean}\n */\nfunction isTemplateString(val: unknown): val is string {\n return typeof val === \"string\" && val.includes(\"${\");\n}\n\n// ─── Property / style / attribute application ─────────────────────────────────\n\n/**\n * @param {HTMLElement} el\n * @param {JxElement} def\n * @param {JxScope} state\n */\nfunction applyProperties(el: HTMLElement, def: JxElement, state: JxScope) {\n for (const [key, val] of Object.entries(def)) {\n if (RESERVED_KEYS.has(key)) {\n continue;\n }\n if (key.startsWith(\"$\")) {\n continue;\n } // Scope bindings — handled in renderNode\n\n if (key.startsWith(\"on\")) {\n // Event handler: $ref to a function\n if (isRefObj(val)) {\n const handler = resolveRef(val.$ref, state);\n if (typeof handler === \"function\") {\n const scope = state;\n const handlerFn = handler as (s: JxScope, e: Event) => unknown;\n el.addEventListener(key.slice(2), (e) => handlerFn(scope, e));\n }\n continue;\n }\n // Event handler: inline $prototype: \"Function\" with a structured body (spec §20)\n if (hasStructuredBody(val)) {\n const { body } = val;\n const scope = state;\n el.addEventListener(key.slice(2), (e) => {\n void runStatements(body, scope, e);\n });\n continue;\n }\n // Event handler: inline $prototype: \"Function\"\n if (isFunctionDef(val) && typeof val.body === \"string\") {\n const params = resolveParamNames(val);\n const fn = new Function(...params, val.body) as (s: JxScope, e: Event) => unknown;\n const scope = state;\n el.addEventListener(key.slice(2), (e) => fn(scope, e));\n continue;\n }\n // Event handler: inline $expression\n if (isExpressionDef(val)) {\n const node = val.$expression;\n const scope = state;\n el.addEventListener(key.slice(2), (e) => evaluateExpression(node, scope, e));\n continue;\n }\n }\n\n bindProperty(el, key, val, state);\n }\n}\n\n/**\n * @param {HTMLElement} el\n * @param {string} key\n * @param {unknown} val\n * @param {JxScope} state\n */\nfunction bindProperty(el: HTMLElement, key: string, val: unknown, state: JxScope) {\n const target = el as unknown as Record<string, unknown>;\n const boundProp = boundPropKey(key, val, state);\n if (boundProp) {\n el.dataset.jxBoundProp = boundProp;\n }\n if (isRefObj(val)) {\n const refVal = val as { $ref: string };\n if (key === \"id\") {\n target[key] = resolveRef(refVal.$ref, state) as string;\n return;\n }\n effect(() => {\n target[key] = resolveRef(refVal.$ref, state);\n });\n return;\n }\n\n // Universal ${} reactivity — template strings in element properties\n if (isTemplateString(val)) {\n effect(() => {\n target[key] = evaluateTemplate(val as string, state);\n });\n return;\n }\n\n target[key] = val;\n}\n\n/**\n * Apply inline styles and emit a scoped <style> block for nested CSS selectors and @custom-media\n * breakpoint rules.\n *\n * @param {HTMLElement} el\n * @param {JxStyle} styleDef\n * @param {Record<string, string>} [mediaQueries] Named breakpoints from root $media. Default is\n * `{}`\n * @param {JxScope} [state] Component scope for template string evaluation. Default is `{}`\n */\nexport function applyStyle(\n el: HTMLElement,\n styleDef: JxStyle,\n mediaQueries: Record<string, string> = {},\n state: JxScope = {},\n) {\n const nested: Record<string, JxStyle> = {};\n const media: Record<string, JxStyle> = {};\n const baseDecls: Record<string, string> = {};\n\n // Collect properties overridden by media queries so we can avoid inline styles for them\n const mediaOverriddenProps = new Set<string>();\n for (const [prop, val] of Object.entries(styleDef)) {\n if (prop.startsWith(\"@\") && val && typeof val === \"object\") {\n for (const k of Object.keys(val)) {\n if (\n !k.startsWith(\":\") &&\n !k.startsWith(\".\") &&\n !k.startsWith(\"&\") &&\n !k.startsWith(\"[\") &&\n !k.startsWith(\"@\")\n ) {\n mediaOverriddenProps.add(k);\n }\n }\n }\n }\n\n for (const [prop, val] of Object.entries(styleDef)) {\n if (val !== null && typeof val === \"object\" && !Array.isArray(val)) {\n if (prop.startsWith(\"@\")) {\n media[prop] = val;\n } else {\n nested[prop] = val;\n }\n continue;\n }\n if (prop.startsWith(\"@\") || isNestedSelector(prop)) {\n // Scalar under a selector/media key — invalid style shape, drop it.\n continue;\n }\n if (val === undefined) {\n continue;\n }\n const scalar = String(val);\n if (prop.startsWith(\"--\")) {\n if (isTemplateString(val)) {\n effect(() => {\n el.style.setProperty(prop, transposeCanvasUnits(evaluateTemplate(val, state)));\n });\n } else {\n el.style.setProperty(prop, transposeCanvasUnits(scalar));\n }\n } else if (isTemplateString(val)) {\n effect(() => {\n (el.style as unknown as Record<string, string>)[prop] = transposeCanvasUnits(\n evaluateTemplate(val, state),\n );\n });\n } else if (mediaOverriddenProps.has(prop)) {\n // Goes through toCSSText (which transposes) — don't double-transpose here.\n baseDecls[prop] = scalar;\n } else {\n (el.style as unknown as Record<string, string>)[prop] = transposeCanvasUnits(scalar);\n }\n }\n\n const hasNested = Object.keys(nested).length > 0;\n const hasMedia = Object.keys(media).length > 0;\n const hasBaseDecls = Object.keys(baseDecls).length > 0;\n if (!hasNested && !hasMedia && !hasBaseDecls) {\n return;\n }\n\n const uid = `jx-${Math.random().toString(36).slice(2, 7)}`;\n el.dataset.jx = uid;\n\n let css = \"\";\n const baseCSS = toCSSText(baseDecls);\n if (baseCSS) {\n css += `[data-jx=\"${uid}\"] { ${baseCSS} }\\n`;\n }\n\n function emitNested(scope: string, rules: JxStyle) {\n const props = toCSSText(rules);\n if (props) {\n css += `${scope} { ${props} }\\n`;\n }\n for (const [sel, sub] of Object.entries(rules)) {\n if (sub === null || typeof sub !== \"object\" || Array.isArray(sub)) {\n continue;\n }\n if (sel.startsWith(\"@\")) {\n continue;\n }\n const resolved = sel.startsWith(\"&\")\n ? sel.replace(\"&\", scope)\n : sel.startsWith(\"[\")\n ? `${scope}${sel}`\n : sel.startsWith(\":\") || sel.startsWith(\".\")\n ? `${scope}${sel}`\n : `${scope} ${sel}`;\n emitNested(resolved, sub);\n }\n }\n\n for (const [sel, rules] of Object.entries(nested)) {\n const resolved = sel.startsWith(\"&\")\n ? sel.replace(\"&\", `[data-jx=\"${uid}\"]`)\n : sel.startsWith(\"[\")\n ? `[data-jx=\"${uid}\"]${sel}`\n : sel.startsWith(\":\") || sel.startsWith(\".\")\n ? `[data-jx=\"${uid}\"]${sel}`\n : `[data-jx=\"${uid}\"] ${sel}`;\n emitNested(resolved, rules);\n }\n\n function emitMediaNested(atRule: string, parentSel: string, obj: JxStyle) {\n for (const [sel, sub] of Object.entries(obj)) {\n if (sub === null || typeof sub !== \"object\" || Array.isArray(sub)) {\n continue;\n }\n if (sel.startsWith(\"@\")) {\n continue;\n }\n const resolved = sel.startsWith(\"&\")\n ? sel.replace(\"&\", parentSel)\n : sel.startsWith(\"[\")\n ? `${parentSel}${sel}`\n : sel.startsWith(\":\") || sel.startsWith(\".\")\n ? `${parentSel}${sel}`\n : `${parentSel} ${sel}`;\n const props = toCSSText(sub);\n if (props) {\n css += `${atRule} { ${resolved} { ${props} } }\\n`;\n }\n emitMediaNested(atRule, resolved, sub);\n }\n }\n\n for (const [key, rules] of Object.entries(media)) {\n if (key === \"@--\") {\n continue;\n } // Base canvas width, not a real media query\n const atRule = key.startsWith(\"@--\")\n ? `@media ${mediaQueries[key.slice(1)] ?? key.slice(1)}`\n : key.startsWith(\"@(\")\n ? `@media ${key.slice(1)}`\n : key;\n const scope = `[data-jx=\"${uid}\"]`;\n css += `${atRule} { ${scope} { ${toCSSText(rules)} } }\\n`;\n emitMediaNested(atRule, scope, rules);\n }\n\n const tag = document.createElement(\"style\");\n tag.textContent = css;\n tag.dataset.jxOwner = uid;\n document.head.append(tag);\n elementStyleTags.set(el, tag);\n}\n\n/**\n * Scoped <style> tags emitted per element by applyStyle (latest wins). Lets callers replace an\n * element's emitted styles instead of accumulating orphaned tags.\n */\nexport const elementStyleTags = new WeakMap<HTMLElement, HTMLStyleElement>();\n\n/**\n * Re-apply an element's style definition in place: removes the previously emitted scoped <style>\n * tag (if any), clears inline styles, and applies the new definition.\n *\n * @param {HTMLElement} el\n * @param {JxStyle | undefined} styleDef\n * @param {Record<string, string>} [mediaQueries]\n * @param {JxScope} [state]\n */\nexport function reapplyStyle(\n el: HTMLElement,\n styleDef: JxStyle | undefined,\n mediaQueries: Record<string, string> = {},\n state: JxScope = {},\n) {\n const prev = elementStyleTags.get(el);\n if (prev) {\n prev.remove();\n elementStyleTags.delete(el);\n }\n el.style.cssText = \"\";\n delete el.dataset.jx;\n applyStyle(el, styleDef ?? {}, mediaQueries, state);\n}\n\n/**\n * @param {HTMLElement} el\n * @param {Record<string, import(\"@jxsuite/schema/types\").JxAttributeValue>} attrs\n * @param {JxScope} state\n */\nfunction applyAttributes(el: HTMLElement, attrs: Record<string, JxAttributeValue>, state: JxScope) {\n for (const [k, v] of Object.entries(attrs)) {\n const attr = canvasAttrName(el, k);\n if (isRefObj(v)) {\n effect(() => el.setAttribute(attr, String(resolveRef(v.$ref, state) ?? \"\")));\n } else if (isTemplateString(v)) {\n effect(() => el.setAttribute(attr, String(evaluateTemplate(v, state))));\n } else {\n el.setAttribute(attr, String(v));\n }\n }\n}\n\n// ─── Array mapping ────────────────────────────────────────────────────────────\n\n/**\n * Render a mapped array (repeater) wrapper-less: its item instances are inserted directly into\n * `parentEl`, in place, ahead of an anchor comment that marks the array's position among the\n * parent's other children. Re-renders reactively when `items` (or the filter/sort sources) change;\n * each generation's item renders live in their own detached effect scope so nested arrays and\n * template bindings are disposed — not leaked or double-fired — on the next change.\n *\n * `options._path` is the array node's own document path (`[…, \"children\", i]`, or `[…, \"children\"]`\n * for a legacy whole-children repeater); item instances render at `[…that…, \"map\", index]`.\n *\n * @param {HTMLElement} parentEl\n * @param {import(\"@jxsuite/schema/types\").JxMappedArray} arrayDef\n * @param {JxScope} state\n * @param {JxRenderOptions} [options]\n */\nfunction renderMappedArrayInto(\n parentEl: HTMLElement,\n arrayDef: JxMappedArray,\n state: JxScope,\n options?: JxRenderOptions,\n) {\n const path = options?._path ?? [];\n const anchor = document.createComment(\"jx-array\");\n parentEl.append(anchor);\n const { items: itemsSrc, map: mapDef, filter: filterRef, sort: sortRef } = arrayDef;\n\n effect(() => {\n let items: unknown = isRefObj(itemsSrc) ? resolveRef(itemsSrc.$ref, state) : itemsSrc;\n if (Array.isArray(items) && isRefObj(filterRef)) {\n const fn = resolveRef(filterRef.$ref, state);\n if (typeof fn === \"function\") {\n items = items.filter(fn as (v: unknown) => boolean);\n }\n }\n if (Array.isArray(items) && isRefObj(sortRef)) {\n const fn = resolveRef(sortRef.$ref, state);\n if (typeof fn === \"function\") {\n items = [...(items as unknown[])].toSorted(fn as (a: unknown, b: unknown) => number);\n }\n }\n if (!Array.isArray(items) || !mapDef) {\n return;\n }\n\n // Render this generation's items inside a detached scope; the cleanup (run before the next\n // Re-render and when the enclosing render scope stops) tears it down and removes its nodes.\n const scope = effectScope(true);\n const nodes: ChildNode[] = [];\n scope.run(() => {\n for (const [index, item] of (items as unknown[]).entries()) {\n const child = Object.create(state) as JxScope;\n child.$map = { index, item };\n child[\"$map/item\"] = item;\n child[\"$map/index\"] = index;\n const childOpts = options ? { ...options, _path: [...path, \"map\", index] } : undefined;\n const node = renderNode(mapDef, child, childOpts);\n anchor.before(node);\n nodes.push(node);\n }\n });\n onEffectCleanup(() => {\n scope.stop();\n for (const n of nodes) {\n n.remove();\n }\n });\n });\n}\n\n// ─── $switch ──────────────────────────────────────────────────────────────────\n\n/**\n * @param {JxElement} def\n * @param {JxScope} state\n * @param {JxRenderOptions} [options]\n * @returns {HTMLElement}\n */\nfunction renderSwitch(def: JxElement, state: JxScope, options?: JxRenderOptions) {\n const path = options?._path ?? [];\n const container = document.createElement(def.tagName ?? \"div\");\n\n if (options?.onNodeCreated) {\n options.onNodeCreated(container, path, def, state);\n }\n\n applyProperties(container, def, state);\n applyStyle(container, def.style ?? {}, (state[\"$media\"] as Record<string, string>) ?? {}, state);\n applyAttributes(container, def.attributes ?? {}, state);\n let generation = 0;\n\n effect(() => {\n container.innerHTML = \"\";\n if (!isRefObj(def.$switch)) {\n return;\n }\n const key = resolveRef(def.$switch.$ref, state) as string;\n const caseDef = def.cases?.[key];\n if (!caseDef) {\n return;\n }\n\n if (isRefObj(caseDef)) {\n // External $ref — fetch and render asynchronously\n const gen = (generation += 1);\n const { href } = new URL(caseDef.$ref, location.href);\n resolve(href)\n .then(async (doc) => {\n if (gen !== generation) {\n return;\n }\n const childScope = await buildScope(doc, {}, href);\n if (gen !== generation) {\n return;\n }\n container.innerHTML = \"\";\n const childOpts = options ? { ...options, _path: [...path, \"cases\", key] } : undefined;\n container.append(renderNode(doc, childScope, childOpts));\n })\n .catch((error: unknown) =>\n console.error(\"Jx $switch: failed to load external case\", caseDef.$ref, error),\n );\n return;\n }\n\n const childOpts = options ? { ...options, _path: [...path, \"cases\", key] } : undefined;\n container.append(renderNode(caseDef, state, childOpts));\n });\n\n return container;\n}\n\n// ─── Prototype namespaces (Shape 5) ──────────────────────────────────────────\n\n/**\n * Resolve a $prototype definition into a value for the reactive scope.\n *\n * Returns a ref() for async/persistent entries (Request, Storage, Cookie, IndexedDB), or a plain\n * value for simple entries (Set, Map, FormData, Blob).\n *\n * @param {JxPrototypeDef} def - State entry with $prototype\n * @param {JxScope} state - Reactive scope proxy\n * @param {string} key - Def key (for diagnostics)\n * @param {string} [base] - Base URL for resolving $src imports\n * @returns {Promise<unknown>}\n */\nexport async function resolvePrototype(\n def: JxPrototypeDef,\n state: JxScope,\n key: string,\n base?: string,\n) {\n // ── External class via $src ─────────────────────────────────────────────────\n if (def.$src) {\n return resolveExternalPrototype(def, state, key, base);\n }\n\n switch (def.$prototype) {\n case \"Request\": {\n const s: Ref<unknown> = ref(null);\n const debounceMs = def.debounce ?? 0;\n let debounceTimer: ReturnType<typeof setTimeout> | null = null;\n\n if (!def.manual) {\n effect(() => {\n let url: string | undefined;\n if (isTemplateString(def.url)) {\n url = evaluateTemplate(def.url, state);\n } else {\n ({ url } = def);\n }\n if (!url || url === \"undefined\" || url.includes(\"undefined\")) {\n return;\n }\n\n const controller = new AbortController();\n onEffectCleanup(() => {\n controller.abort();\n if (debounceTimer !== null) {\n clearTimeout(debounceTimer);\n }\n });\n\n const doFetch = () =>\n fetch(url, {\n method: def.method ?? \"GET\",\n signal: controller.signal,\n ...(def.headers && { headers: def.headers }),\n ...(def.body && {\n body: typeof def.body === \"object\" ? JSON.stringify(def.body) : def.body,\n }),\n })\n .then((r) => (r.ok ? r.json() : Promise.reject(r.statusText)))\n .then((d) => {\n s.value = d;\n })\n .catch((error: unknown) => {\n if (!(error instanceof Error && error.name === \"AbortError\")) {\n s.value = { error: String(error) };\n }\n });\n\n if (debounceMs > 0) {\n debounceTimer = setTimeout(doFetch, debounceMs);\n } else {\n void doFetch();\n }\n });\n }\n\n return s;\n }\n\n case \"URLSearchParams\": {\n return computed(() => {\n const p: Record<string, string> = {};\n for (const [k, v] of Object.entries(def)) {\n if (k !== \"$prototype\") {\n p[k] = (\n isRefObj(v)\n ? resolveRef(v.$ref, state)\n : isTemplateString(v)\n ? evaluateTemplate(v, state)\n : v\n ) as string;\n }\n }\n return new URLSearchParams(p).toString();\n });\n }\n\n case \"LocalStorage\":\n case \"SessionStorage\": {\n const store = def.$prototype === \"LocalStorage\" ? localStorage : sessionStorage;\n const k = def.key ?? key;\n let init: unknown;\n try {\n const s = store.getItem(k);\n init = s !== null ? (JSON.parse(s) as unknown) : (def.default ?? null);\n } catch {\n init = def.default ?? null;\n }\n const storageState: Ref<unknown> = ref(init);\n // Persist on change\n effect(() => {\n const v = storageState.value;\n if (v === null) {\n try {\n store.removeItem(k);\n } catch {}\n } else {\n try {\n store.setItem(k, JSON.stringify(v));\n } catch {}\n }\n });\n return storageState;\n }\n\n case \"Cookie\": {\n const name = def.name ?? key;\n const read = () => {\n const m = document.cookie.match(new RegExp(`(?:^|; )${name}=([^;]*)`));\n if (!m) {\n return null;\n }\n try {\n return JSON.parse(decodeURIComponent(m[1]!));\n } catch {\n return m[1];\n }\n };\n const cookieState: Ref<unknown> = ref(read() ?? def.default ?? null);\n // Persist on change\n effect(() => {\n const v = cookieState.value;\n let s = `${name}=${encodeURIComponent(JSON.stringify(v))}`;\n if (def.maxAge !== undefined) {\n s += `; Max-Age=${def.maxAge}`;\n }\n if (def.path) {\n s += `; Path=${def.path}`;\n }\n if (def.domain) {\n s += `; Domain=${def.domain}`;\n }\n if (def.secure) {\n s += `; Secure`;\n }\n if (def.sameSite) {\n s += `; SameSite=${def.sameSite}`;\n }\n // oxlint-disable-next-line unicorn/no-document-cookie -- the Cookie $prototype IS the cookie store binding\n document.cookie = s;\n });\n return cookieState;\n }\n\n case \"IndexedDB\": {\n const idbState: Ref<unknown> = ref(null);\n const {\n database,\n store,\n version = 1,\n keyPath = \"id\",\n autoIncrement = true,\n indexes = [],\n } = def;\n if (!database || !store) {\n throw new Error(`Jx: IndexedDB entry '${key}' requires database and store`);\n }\n const req = indexedDB.open(database, version);\n req.addEventListener(\"upgradeneeded\", (e) => {\n const db: IDBDatabase = (e.target as IDBOpenDBRequest).result;\n if (!db.objectStoreNames.contains(store)) {\n const os = db.createObjectStore(store, { autoIncrement, keyPath });\n for (const i of indexes) {\n os.createIndex(i.name, i.keyPath, { unique: i.unique ?? false });\n }\n }\n });\n req.addEventListener(\"success\", (e) => {\n const db: IDBDatabase = (e.target as IDBOpenDBRequest).result;\n idbState.value = {\n database,\n getStore: (mode: IDBTransactionMode = \"readwrite\") =>\n Promise.resolve(db.transaction(store, mode).objectStore(store)),\n isReady: true,\n store,\n version,\n };\n });\n req.addEventListener(\"error\", () => {\n idbState.value = { error: req.error?.message };\n });\n return idbState;\n }\n\n case \"Set\": {\n return new Set(Array.isArray(def.default) ? def.default : []);\n }\n\n case \"Map\": {\n return new Map(Object.entries(isJsonObject(def.default) ? def.default : {}));\n }\n\n case \"FormData\": {\n const fd = new FormData();\n for (const [k, v] of Object.entries(def.fields ?? {})) {\n fd.append(k, v as string);\n }\n return fd;\n }\n\n case \"Blob\": {\n return new Blob((def.parts as BlobPart[]) ?? [], {\n type: typeof def.type === \"string\" ? def.type : \"text/plain\",\n });\n }\n\n case \"ReadableStream\": {\n return null;\n }\n\n default: {\n console.warn(\n `Jx: unknown $prototype \"${def.$prototype}\" for \"${key}\". Did you mean to add '$src'?`,\n );\n return ref(null);\n }\n }\n}\n\n// ─── External class resolution ────────────────────────────────────────────────\n\n/** Reserved keys stripped from the config object passed to external class constructors. */\nconst EXTERNAL_RESERVED = new Set([\n \"$prototype\",\n \"$src\",\n \"$export\",\n \"timing\",\n \"default\",\n \"description\",\n \"body\",\n \"parameters\",\n \"arguments\",\n \"name\",\n]);\n\n/**\n * Resolve an external class prototype via $src.\n *\n * @param {JxPrototypeDef} def\n * @param {JxScope} state\n * @param {string} key\n * @param {string} [base]\n * @returns {Promise<unknown>}\n */\nasync function resolveExternalPrototype(\n def: JxPrototypeDef,\n state: JxScope,\n key: string,\n base?: string,\n) {\n const src = def.$src;\n\n // Non-Function $prototype must use .class.json as entrypoint\n if (!src || !src.endsWith(\".class.json\")) {\n throw new Error(\n `Jx: $prototype \"${def.$prototype}\" requires a .class.json $src, got \"${src}\". ` +\n `Wrap the class in a .class.json schema with $implementation.`,\n );\n }\n\n return resolveClassJson(def, state, key, base);\n}\n\n/**\n * Import a JS module and instantiate a class from it. Internal helper used by resolveClassJson for\n * $implementation.\n *\n * @param {JxScope} def - Original state entry (for config extraction)\n * @param {string} src - JS module URL to import\n * @param {string} exportName - Export name to look up\n * @param {string} [base] - Base URL for resolution\n * @returns {Promise<unknown>}\n */\nasync function importAndInstantiate(def: JxScope, src: string, exportName: string, base?: string) {\n let mod: ImportedModule;\n if (_moduleCache.has(src)) {\n mod = _moduleCache.get(src)!;\n } else {\n try {\n mod = (await import(src)) as ImportedModule;\n } catch {\n if (base) {\n const resolvedSrc = new URL(src, base).href;\n mod = (await import(resolvedSrc)) as ImportedModule;\n } else {\n throw new Error(`Failed to import \"${src}\"`);\n }\n }\n _moduleCache.set(src, mod);\n }\n\n const ExportedClass = mod[exportName] ?? mod.default?.[exportName];\n if (!ExportedClass) {\n throw new Error(`Jx: export \"${exportName}\" not found in \"${src}\"`);\n }\n if (typeof ExportedClass !== \"function\") {\n throw new TypeError(`Jx: \"${exportName}\" from \"${src}\" is not a class`);\n }\n\n const config: JxScope = {};\n for (const [k, v] of Object.entries(def)) {\n if (!EXTERNAL_RESERVED.has(k)) {\n config[k] = v;\n }\n }\n\n const Ctor = ExportedClass as new (config: JxScope) => ExternalClassInstance;\n const instance = new Ctor(config);\n\n let value: unknown;\n if (typeof instance.resolve === \"function\") {\n value = await instance.resolve();\n } else if (\"value\" in instance) {\n ({ value } = instance);\n } else {\n value = instance;\n }\n\n // Always wrap in ref for reactivity with external classes\n const s: Ref<unknown> = ref(value);\n if (typeof instance.subscribe === \"function\") {\n instance.subscribe((newVal: unknown) => {\n s.value = newVal;\n });\n }\n return s;\n}\n\n/**\n * Resolve a .class.json schema-defined class. Fetches the schema, follows $implementation if\n * hybrid, or constructs dynamically if self-contained.\n *\n * @param {JxPrototypeDef} def\n * @param {JxScope} state\n * @param {string} key\n * @param {string} [base]\n * @returns {Promise<unknown>}\n */\nasync function resolveClassJson(def: JxPrototypeDef, state: JxScope, key: string, base?: string) {\n const src = def.$src;\n if (!src) {\n throw new Error(`Jx: class entry '${key}' has no $src`);\n }\n let classDef: JxClassDef;\n\n // Bare specifiers (package references like @scope/pkg/file) can't be fetched directly —\n // Go straight to dev proxy which can resolve them via node_modules.\n const isBareSpecifier =\n !src.startsWith(\".\") &&\n !src.startsWith(\"/\") &&\n !src.startsWith(\"http\") &&\n !src.startsWith(\"file:\");\n if (isBareSpecifier) {\n return resolveViaDevProxy(def, state, key, base);\n }\n\n // Try fetching the .class.json file directly\n try {\n const url = base ? new URL(src, base).href : src;\n const res = await fetch(url);\n if (!res.ok) {\n throw new Error(`HTTP ${res.status}`);\n }\n // Trust boundary: fetched .class.json sources are class definitions by contract.\n classDef = (await res.json()) as JxClassDef;\n } catch {\n // Fall back to dev proxy (server will handle .class.json resolution)\n return resolveViaDevProxy(def, state, key, base);\n }\n\n // Hybrid mode: $implementation points to the real JS module\n if (classDef.$implementation) {\n // If the schema references $context (e.g. content types), the browser cannot provide\n // The required server-side context — go directly to dev proxy.\n const schemaStr = JSON.stringify(classDef);\n if (schemaStr.includes('\"#/$context/')) {\n return resolveViaDevProxy(def, state, key, base);\n }\n const schemaUrl = base ? new URL(src, base).href : new URL(src, location.href).href;\n const implSrc = new URL(classDef.$implementation, schemaUrl).href;\n const exportName = def.$export ?? classDef.title ?? def.$prototype;\n try {\n return await importAndInstantiate(def, implSrc, exportName, base);\n } catch {\n return resolveViaDevProxy(def, state, key, base);\n }\n }\n\n // Self-contained: construct class dynamically from schema\n const DynClass = classFromSchema(classDef);\n const config: JxScope = {};\n for (const [k, v] of Object.entries(def)) {\n if (!EXTERNAL_RESERVED.has(k)) {\n config[k] = v;\n }\n }\n const instance = new DynClass(config) as ExternalClassInstance;\n\n let value: unknown;\n if (typeof instance.resolve === \"function\") {\n value = await instance.resolve();\n } else if (\"value\" in instance) {\n ({ value } = instance);\n } else {\n value = instance;\n }\n\n // Always wrap in ref for reactivity\n const s: Ref<unknown> = ref(value);\n if (typeof instance.subscribe === \"function\") {\n instance.subscribe((newVal: unknown) => {\n s.value = newVal;\n });\n }\n return s;\n}\n\n/**\n * Dynamically construct a class from a .class.json schema definition. Browser-side: maps private\n * fields to _-prefixed public fields.\n *\n * @param {import(\"@jxsuite/schema/types\").JxClassDef} classDef\n * @returns {DynamicClass}\n */\nfunction classFromSchema(classDef: JxClassDef) {\n const fields = classDef.$defs?.fields ?? {};\n // JSON objects inherit Object.prototype.constructor — only an own object value counts.\n const rawCtor = classDef.$defs?.constructor;\n const ctor = typeof rawCtor === \"object\" ? rawCtor : undefined;\n const methods = classDef.$defs?.methods ?? {};\n\n // oxlint-disable-next-line typescript/no-extraneous-class -- methods are attached to the prototype dynamically below\n class DynClass {\n constructor(config: Record<string, unknown> = {}) {\n for (const [key, typedField] of Object.entries(fields)) {\n const id = typedField.identifier ?? key;\n const propName = typedField.access === \"private\" ? `_${id}` : id;\n if (config[id] !== undefined) {\n (this as Record<string, unknown>)[propName] = config[id];\n } else if (typedField.initializer !== undefined) {\n (this as Record<string, unknown>)[propName] = typedField.initializer;\n } else if (typedField.default !== undefined) {\n (this as Record<string, unknown>)[propName] = structuredClone(typedField.default);\n } else {\n (this as Record<string, unknown>)[propName] = null;\n }\n }\n if (ctor?.body) {\n const bodyStr = Array.isArray(ctor.body) ? ctor.body.join(\"\\n\") : ctor.body;\n (\n new Function(\"config\", bodyStr) as (\n this: unknown,\n config: Record<string, unknown>,\n ) => void\n ).call(this, config);\n }\n }\n }\n\n for (const [key, typedMethod] of Object.entries(methods)) {\n const name = typedMethod.identifier ?? key;\n const params = (typedMethod.parameters ?? []).map((p) => {\n if (p.$ref) {\n return p.$ref.split(\"/\").pop() as string;\n }\n const n = p.identifier ?? p.name;\n return typeof n === \"string\" ? n : \"arg\";\n });\n const bodyStr = Array.isArray(typedMethod.body)\n ? typedMethod.body.join(\"\\n\")\n : (typedMethod.body ?? \"\");\n\n if (typedMethod.role === \"accessor\") {\n const descriptor: PropertyDescriptor = {};\n if (typedMethod.getter) {\n descriptor.get = new Function(typedMethod.getter.body ?? \"\") as () => unknown;\n }\n if (typedMethod.setter) {\n const sp = (typedMethod.setter.parameters ?? []).map(\n (p) => p.$ref?.split(\"/\").pop() ?? \"v\",\n );\n descriptor.set = new Function(...sp, typedMethod.setter.body ?? \"\") as (v: unknown) => void;\n }\n Object.defineProperty(DynClass.prototype, name, {\n ...descriptor,\n configurable: true,\n });\n } else if (typedMethod.scope === \"static\") {\n (DynClass as unknown as DynamicClass)[name] = new Function(...params, bodyStr);\n } else {\n (DynClass as unknown as DynamicClass).prototype[name] = new Function(...params, bodyStr);\n }\n }\n\n Object.defineProperty(DynClass, \"name\", {\n configurable: true,\n value: classDef.title,\n });\n const dynCtor = DynClass as unknown as DynamicClass;\n return dynCtor;\n}\n\n/**\n * Dev-mode fallback: when an $src module cannot run in the browser, proxy the resolve() call\n * through the Jx dev server (POST /**jx_resolve**). Supports reactive template strings in config\n * values via Vue effect().\n *\n * @param {JxPrototypeDef} def\n * @param {JxScope} state\n * @param {string} key\n * @param {string} [base]\n * @returns {Promise<unknown>}\n */\nasync function resolveViaDevProxy(def: JxPrototypeDef, state: JxScope, key: string, base?: string) {\n const config: JxScope = {};\n for (const [k, v] of Object.entries(def)) {\n if (!EXTERNAL_RESERVED.has(k)) {\n config[k] = v;\n }\n }\n\n const hasTemplates = Object.values(config).some((v: unknown) => isTemplateString(v));\n\n /** @param {JxScope} resolvedConfig */\n const doResolve = (resolvedConfig: JxScope) =>\n fetch(resolveProxyPath(\"/__jx_resolve__\"), {\n body: JSON.stringify({\n $base: base,\n $export: def.$export,\n $prototype: def.$prototype,\n $src: def.$src,\n ...resolvedConfig,\n }),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"POST\",\n }).then((r) => {\n if (!r.ok) {\n throw new Error(`Jx dev proxy ${r.status} for \"${key}\"`);\n }\n return r.json();\n });\n\n // Always wrap in ref for reactivity\n const s: Ref<unknown> = ref(null);\n if (hasTemplates) {\n effect(() => {\n const resolvedConfig: JxScope = {};\n for (const [k, v] of Object.entries(config)) {\n resolvedConfig[k] = isTemplateString(v) ? evaluateTemplate(v, state) : v;\n }\n doResolve(resolvedConfig)\n .then((value: unknown) => {\n s.value = value;\n })\n .catch((error: unknown) => console.error(\"Jx dev proxy:\", error));\n });\n } else {\n doResolve(config)\n .then((value: unknown) => {\n s.value = value;\n })\n .catch((error: unknown) => console.error(\"Jx dev proxy:\", error));\n }\n return s;\n}\n\n// ─── Server function resolution (dev mode) ────────────────────────────────────\n\n/**\n * Resolve a timing: \"server\" entry in dev mode by executing the function client-side. In\n * production, the compiler replaces this with a fetch to the generated server handler.\n *\n * @param {JxScope} def\n * @param {JxScope} state\n * @param {string} key\n * @param {string} [base]\n * @returns {Promise<unknown>}\n */\nasync function resolveServerFunction(\n def: JxServerFnDef,\n state: JxScope,\n key: string,\n base?: string,\n) {\n const src = def.$src;\n const exportName = def.$export;\n\n let mod: ImportedModule;\n if (_moduleCache.has(src)) {\n mod = _moduleCache.get(src)!;\n } else {\n try {\n mod = (await import(src)) as ImportedModule;\n } catch {\n if (base) {\n try {\n const resolvedSrc = new URL(src, base).href;\n mod = (await import(resolvedSrc)) as ImportedModule;\n } catch {\n // Module cannot run in the browser — fall back to dev server proxy\n return resolveServerFunctionViaProxy(def, state, key, base);\n }\n } else {\n return resolveServerFunctionViaProxy(def, state, key, base);\n }\n }\n _moduleCache.set(src, mod);\n }\n\n const candidate = mod[exportName] ?? mod.default?.[exportName];\n if (!candidate) {\n throw new Error(`Jx: export \"${exportName}\" not found in \"${src}\" for \"${key}\"`);\n }\n if (typeof candidate !== \"function\") {\n throw new TypeError(`Jx: \"${exportName}\" from \"${src}\" is not a function`);\n }\n const fn = candidate as (args: JxScope) => Promise<unknown>;\n\n const rawArgs = def.arguments ?? {};\n const hasReactiveArg = Object.values(rawArgs).some((v: unknown) => isRefObj(v));\n const resolveArgs = () => {\n const args: JxScope = {};\n for (const [k, v] of Object.entries(rawArgs)) {\n args[k] = isRefObj(v) ? resolveRef(v.$ref, state) : v;\n }\n return args;\n };\n\n // Always wrap in ref for reactivity\n const s: Ref<unknown> = ref(null);\n if (hasReactiveArg) {\n effect(() => {\n const args = resolveArgs();\n onEffectCleanup(() => {});\n fn(args)\n .then((result: unknown) => {\n s.value = result;\n })\n .catch(() => {});\n });\n } else {\n s.value = await fn(resolveArgs());\n }\n return s;\n}\n\n/**\n * Dev-mode fallback: when a timing: \"server\" module cannot run in the browser, proxy the function\n * call through the Jx dev server (POST /**jx_server**). Supports reactive $ref arguments via Vue\n * effect().\n *\n * @param {JxScope} def\n * @param {JxScope} state\n * @param {string} key\n * @param {string} [base]\n * @returns {Promise<unknown>}\n */\nasync function resolveServerFunctionViaProxy(\n def: JxScope,\n state: JxScope,\n key: string,\n base?: string,\n) {\n const rawArgs = def.arguments ?? {};\n const hasReactiveArg = Object.values(rawArgs).some((v: unknown) => isRefObj(v));\n\n const resolveArgs = () => {\n const args: JxScope = {};\n for (const [k, v] of Object.entries(rawArgs)) {\n args[k] = isRefObj(v) ? resolveRef((v as { $ref: string }).$ref, state) : v;\n }\n return args;\n };\n\n /** @param {JxScope} args */\n const doResolve = (args: JxScope) =>\n fetch(resolveProxyPath(\"/__jx_server__\"), {\n body: JSON.stringify({\n $base: base,\n $export: def.$export,\n $src: def.$src,\n arguments: args,\n }),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"POST\",\n }).then((r) => {\n if (!r.ok) {\n throw new Error(`Jx server proxy ${r.status} for \"${key}\"`);\n }\n return r.json();\n });\n\n // Always wrap in ref for reactivity\n const s: Ref<unknown> = ref(null);\n if (hasReactiveArg) {\n effect(() => {\n const args = resolveArgs();\n onEffectCleanup(() => {});\n doResolve(args)\n .then((result: unknown) => {\n s.value = result;\n })\n .catch((error: unknown) => console.error(\"Jx server proxy:\", error));\n });\n } else {\n doResolve(resolveArgs())\n .then((result: unknown) => {\n s.value = result;\n })\n .catch((error: unknown) => console.error(\"Jx server proxy:\", error));\n }\n return s;\n}\n\n/**\n * Resolve a $ref string to a value in scope.\n *\n * With Vue reactivity, this reads directly from the reactive proxy. When called inside a effect or\n * computed, the read is tracked.\n *\n * @param {string} ref\n * @param {JxScope} state - Reactive scope proxy (or child scope)\n * @returns {unknown}\n */\nexport function resolveRef(refPath: string, state: JxScope) {\n if (typeof refPath !== \"string\") {\n return refPath;\n }\n if (refPath.startsWith(\"$map/\")) {\n const parts = refPath.split(\"/\");\n const [, key] = parts; // \"item\" or \"index\"\n const map = state.$map as Record<string, unknown> | undefined;\n const base = map?.[key!] ?? state[`$map/${key}`];\n return parts.length > 2 ? getPath(base, parts.slice(2).join(\"/\")) : base;\n }\n if (refPath.startsWith(\"#/state/\")) {\n const sub = refPath.slice(\"#/state/\".length);\n const slash = sub.indexOf(\"/\");\n if (slash === -1) {\n return state[sub];\n }\n return getPath(state[sub.slice(0, slash)], sub.slice(slash + 1));\n }\n if (refPath.startsWith(\"parent#/\")) {\n return state[refPath.slice(\"parent#/\".length)];\n }\n if (refPath.startsWith(\"window#/\")) {\n return getPath(globalThis.window, refPath.slice(\"window#/\".length));\n }\n if (refPath.startsWith(\"document#/\")) {\n return getPath(globalThis.document, refPath.slice(\"document#/\".length));\n }\n return state[refPath] ?? null;\n}\n\n// ─── Utilities ────────────────────────────────────────────────────────────────\n\n/**\n * Check if v is a Vue ref (including computed).\n *\n * @param {unknown} v\n * @returns {boolean}\n */\nexport function isSignal(v: unknown) {\n return isRef(v);\n}\n\n/**\n * @param {unknown} v\n * @returns {v is import(\"@jxsuite/schema/types\").JxRef}\n */\nfunction isRefObj(v: unknown): v is JxRef {\n return isRefValue(v);\n}\n\n/**\n * @param {string} k\n * @returns {boolean}\n */\nfunction isNestedSelector(k: string) {\n return k.startsWith(\":\") || k.startsWith(\".\") || k.startsWith(\"&\") || k.startsWith(\"[\");\n}\n\n/**\n * @param {unknown} obj\n * @param {string} path\n * @returns {unknown}\n */\nfunction getPath(obj: unknown, path: string) {\n let current: unknown = obj;\n for (const k of path.split(/[./]/)) {\n current = (current as Record<string, unknown>)?.[k];\n }\n return current;\n}\n\n/**\n * @param {JxElement} def\n * @param {JxScope} parentState\n * @returns {JxScope}\n */\nfunction mergeProps(def: JxElement, parentState: JxScope): JxScope {\n const child = Object.create(parentState) as JxScope;\n for (const [k, v] of Object.entries(def.$props ?? {})) {\n child[k] = isRefObj(v) ? resolveRef(v.$ref, parentState) : v;\n }\n return child;\n}\n\n/**\n * Convert camelCase to kebab-case.\n *\n * @param {string} s\n * @returns {string}\n */\nexport function camelToKebab(s: string) {\n return s.replaceAll(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);\n}\n\n/**\n * Convert a style rules object to a CSS text string (skipping nested selectors).\n *\n * @param {Record<string, unknown> | object} rules\n * @returns {string}\n */\nexport function toCSSText(rules: Record<string, unknown> | object) {\n return Object.entries(rules)\n .filter(([k, v]) => !isNestedSelector(k) && (v === null || typeof v !== \"object\"))\n .map(([p, v]) => `${camelToKebab(p)}: ${transposeCanvasUnits(String(v))}`)\n .join(\"; \");\n}\n\n// ─── Custom Element Registration ──────────────────────────────────────────────\n\nlet _rootMedia: Record<string, string> = {};\nconst _elementDefs = new Map();\n\n/**\n * Seed the module-level root `$media` map used as the fallback for components that declare their\n * own `@--name` style blocks but carry no own `$media` (buildScope ~279-280). `Jx()` sets this from\n * the document during a full top-level render, but the Studio iframe canvas calls `buildScope`/\n * `renderNode` directly (never `Jx()`), so without seeding it a component's `@--md` would resolve\n * to the invalid `@media md`. Callers on the direct path MUST set it (with the merged `$media`)\n * before `buildScope`, and re-set it every render so a stale map from a previous document cannot\n * leak.\n *\n * @param {Record<string, string>} map\n */\nexport function setRootMedia(map: Record<string, string>): void {\n _rootMedia = map ?? {};\n}\n\n/**\n * Resolve and register $elements entries (depth-first).\n *\n * @param {JxDocument[\"$elements\"]} elements\n * @param {string} base\n * @returns {Promise<void>}\n */\nasync function registerElements(elements: NonNullable<JxDocument[\"$elements\"]>, base: string) {\n for (const entry of elements) {\n // Bare string: npm package side-effect import (registers custom elements)\n if (typeof entry === \"string\") {\n try {\n // Bare specifiers need a URL path for the browser; the dev server resolves\n // /node_modules/<pkg> to the package entry point via exports/module/main.\n const specifier =\n entry.startsWith(\"/\") || entry.startsWith(\".\") ? entry : `/node_modules/${entry}`;\n await import(specifier);\n } catch (error) {\n console.warn(`Jx: failed to import package \"${entry}\"`, error);\n }\n continue;\n }\n if (!isRefObj(entry)) {\n continue;\n }\n const { href } = new URL(entry.$ref, base);\n const doc = await resolve(href);\n if (!doc.tagName || !doc.tagName.includes(\"-\")) {\n continue;\n }\n if (customElements.get(doc.tagName)) {\n continue;\n }\n\n // Depth-first: register sub-dependencies first\n if (doc.$elements) {\n await registerElements(doc.$elements, href);\n }\n\n await defineElement(doc, href);\n }\n}\n\n/**\n * Inject head elements from $head declarations. Each entry is { tagName, attributes } — bare npm\n * specifiers in href/src are rewritten to /node_modules/ paths for the dev server.\n *\n * @param {import(\"@jxsuite/schema/types\").JxHeadEntry[]} entries\n * @param {string} _base - Document base URL for resolving relative paths\n */\nfunction injectHead(entries: JxHeadEntry[], _base: string) {\n for (const entry of entries) {\n if (!entry || !entry.tagName) {\n continue;\n }\n const tag = entry.tagName.toLowerCase();\n const attrs = { ...entry.attributes };\n // Resolve href/src: bare npm specifiers -> /node_modules/ path\n for (const key of [\"href\", \"src\"] as const) {\n const v = attrs[key];\n if (\n typeof v === \"string\" &&\n v &&\n !v.startsWith(\"/\") &&\n !v.startsWith(\".\") &&\n !v.startsWith(\"http\")\n ) {\n attrs[key] = `/node_modules/${v}`;\n }\n }\n\n // Deduplicate: skip if an identical element already exists\n const selector = `${tag}${attrs.href ? `[href=\"${attrs.href}\"]` : \"\"}${attrs.src ? `[src=\"${attrs.src}\"]` : \"\"}`;\n if (selector !== tag && document.head.querySelector(selector)) {\n continue;\n }\n\n const el = document.createElement(tag);\n for (const [k, v] of Object.entries(attrs)) {\n el.setAttribute(k, String(v));\n }\n if (entry.textContent) {\n el.textContent = entry.textContent;\n }\n document.head.append(el);\n }\n}\n\n/**\n * Register a custom element from a Jx document.\n *\n * @param {string | JxDocument} source - URL to .json file, or raw document object\n * @param {string} [base] - Base URL for resolving $src imports\n * @returns {Promise<void>}\n */\nconst _definedSources = new Set<string>();\n\nexport async function defineElement(source: string | JxDocument, baseUrl?: string) {\n let base = baseUrl;\n let doc = source;\n if (typeof source === \"string\") {\n base = new URL(source, base ?? location.href).href;\n if (_definedSources.has(base)) {\n return;\n }\n _definedSources.add(base);\n doc = await resolve(source);\n }\n base ??= location.href;\n\n const source_: JxDocument = doc as JxDocument;\n\n const { tagName } = source_;\n if (!tagName || !tagName.includes(\"-\")) {\n throw new Error(`Jx defineElement: tagName \"${tagName}\" must contain a hyphen`);\n }\n if (customElements.get(tagName)) {\n return;\n }\n\n // Register sub-dependencies first\n if (source_.$elements) {\n await registerElements(source_.$elements, base);\n }\n\n _elementDefs.set(tagName, { base, doc: source_ });\n\n const def = source_;\n const observedAttrs = def.observedAttributes ?? [];\n\n const ElementClass = class extends HTMLElement {\n _jxInitialized = false;\n _state: JxScope | null = null;\n\n static get observedAttributes() {\n return observedAttrs;\n }\n\n async connectedCallback() {\n // An element carrying `data-jx-definition-root` IS the definition being rendered by an\n // External renderer (the studio canvas editing this component's own document) — its subtree\n // Is authored DOM, not an instantiation site. Self-initializing here would wipe that tree\n // And re-render it with default state (the \"component editor shows a live instance\" bug).\n if (this.dataset.jxDefinitionRoot !== undefined) {\n return;\n }\n if (this._jxInitialized) {\n return;\n }\n this._jxInitialized = true;\n\n const state = await buildScope(def, {}, base);\n\n // Read properties from directive encoding (markdown → data-jx-props)\n const propsAttr = this.dataset.jxProps;\n if (propsAttr) {\n try {\n const props = JSON.parse(propsAttr) as Record<string, unknown>;\n for (const [key, val] of Object.entries(props)) {\n if (key in (def.state ?? {})) {\n state[key] = val;\n }\n }\n } catch {}\n delete this.dataset.jxProps;\n }\n\n // Read literal `props.*` attributes (JSON-authored instances pass props this way; the\n // Compiler lifts them into $props at build, and this is the live-render mirror). String\n // Values only — HTML lowercases attribute names, so state keys must be lowercase to match.\n // Collect first: removing while iterating the live NamedNodeMap skips entries.\n const propAttrNames = this.getAttributeNames().filter(\n (name) => name.startsWith(\"props.\") && name.length > \"props.\".length,\n );\n for (const name of propAttrNames) {\n const key = name.slice(\"props.\".length);\n if (key in (def.state ?? {})) {\n state[key] = this.getAttribute(name);\n this.removeAttribute(name);\n }\n }\n\n // Merge $props set as JS properties by parent before connection\n for (const key of Object.keys(def.state ?? {})) {\n if (key in this && (this as Record<string, unknown>)[key] !== undefined) {\n state[key] = (this as Record<string, unknown>)[key];\n }\n }\n // Set up property getters/setters that forward into reactive state\n for (const key of Object.keys(def.state ?? {})) {\n if (!(key in HTMLElement.prototype)) {\n Object.defineProperty(this, key, {\n configurable: true,\n get: () => state[key],\n set: (v: unknown) => {\n state[key] = v;\n },\n });\n }\n }\n\n this._state = state;\n\n // Capture light DOM children (for slot distribution) before rendering\n const slottedChildren = [...this.childNodes];\n this.innerHTML = \"\";\n\n // Custom elements default to display:inline — use block so they behave as\n // Containers (matching <div> semantics). The component's own style can\n // Override this if needed.\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n\n // Render template into light DOM (once, not in effect — inner effects handle reactivity)\n applyStyle(this, def.style ?? {}, (state[\"$media\"] as Record<string, string>) ?? {}, state);\n applyAttributes(this, def.attributes ?? {}, state);\n\n const children = Array.isArray(def.children) ? def.children : [];\n for (const childDef of children) {\n this.append(renderNode(childDef, state));\n }\n\n // Slot distribution (light DOM)\n distributeSlots(this, slottedChildren);\n\n // Lifecycle: onMount\n const { onMount } = state;\n if (typeof onMount === \"function\") {\n queueMicrotask(() => (onMount as (s: JxScope) => unknown)(state));\n }\n }\n\n disconnectedCallback() {\n if (typeof this._state?.onUnmount === \"function\") {\n (this._state.onUnmount as (s: JxScope) => unknown)(this._state);\n }\n }\n\n adoptedCallback() {\n if (typeof this._state?.onAdopted === \"function\") {\n (this._state.onAdopted as (s: JxScope) => unknown)(this._state);\n }\n }\n\n attributeChangedCallback(name: string, oldVal: string | null, newVal: string | null) {\n if (!this._state || oldVal === newVal) {\n return;\n }\n const camelKey = name.replaceAll(/-([a-z])/g, (_: string, c: string) => c.toUpperCase());\n const current = this._state[camelKey];\n if (typeof current === \"number\") {\n this._state[camelKey] = Number(newVal);\n } else if (typeof current === \"boolean\") {\n this._state[camelKey] = newVal !== null && newVal !== \"false\";\n } else {\n this._state[camelKey] = newVal;\n }\n }\n };\n\n customElements.define(tagName, ElementClass);\n}\n\n/**\n * Render a registered custom element with $props (property-first interface).\n *\n * @param {JxElement} def\n * @param {JxScope} state\n * @param {JxRenderOptions} [options]\n * @param {JxPath} [path]\n * @returns {HTMLElement}\n */\nfunction renderCustomElementWithProps(\n def: JxElement,\n state: JxScope,\n options?: JxRenderOptions,\n path?: JxPath,\n) {\n const el = document.createElement(def.tagName ?? \"div\");\n\n if (options?.onNodeCreated) {\n options.onNodeCreated(el, path ?? [], def, state);\n }\n\n // Set JS properties from $props (before connection)\n for (const [key, val] of Object.entries(def.$props ?? {})) {\n if (isRefObj(val)) {\n const refVal = val;\n const resolved = resolveRef(refVal.$ref, state);\n (el as unknown as Record<string, unknown>)[key] = resolved;\n // Reactive forwarding: re-set the property when the source changes\n effect(() => {\n (el as unknown as Record<string, unknown>)[key] = resolveRef(refVal.$ref, state);\n });\n } else if (isTemplateString(val)) {\n effect(() => {\n (el as unknown as Record<string, unknown>)[key] = evaluateTemplate(val, state);\n });\n } else {\n (el as unknown as Record<string, unknown>)[key] = val;\n }\n }\n\n // Apply host-level style and attributes from the usage site\n applyStyle(el, def.style ?? {}, (state[\"$media\"] as Record<string, string>) ?? {}, state);\n applyAttributes(el, def.attributes ?? {}, state);\n\n // Append slotted children\n const children = Array.isArray(def.children) ? def.children : [];\n for (let i = 0; i < children.length; i++) {\n const childOpts = options && path ? { ...options, _path: [...path, \"children\", i] } : undefined;\n el.append(renderNode(children[i]!, state, childOpts));\n }\n\n return el;\n}\n\n/**\n * Light DOM slot distribution.\n *\n * @param {HTMLElement} host\n * @param {ChildNode[]} slottedChildren\n */\nfunction distributeSlots(host: HTMLElement, slottedChildren: ChildNode[]) {\n if (slottedChildren.length === 0) {\n return;\n }\n\n const slots = host.querySelectorAll(\"slot\");\n if (slots.length === 0) {\n return;\n }\n\n const named = new Map<string | null, ChildNode[]>();\n const unnamed: ChildNode[] = [];\n\n for (const child of slottedChildren) {\n if (child.nodeType === Node.ELEMENT_NODE && (child as Element).getAttribute(\"slot\")) {\n const name = (child as Element).getAttribute(\"slot\");\n if (!named.has(name)) {\n named.set(name, []);\n }\n (named.get(name) as ChildNode[]).push(child);\n } else {\n unnamed.push(child);\n }\n }\n\n for (const slot of slots) {\n const name = slot.getAttribute(\"name\");\n const matches = name ? (named.get(name) ?? []) : unnamed;\n if (matches.length > 0) {\n slot.innerHTML = \"\";\n for (const child of matches) {\n slot.append(child);\n }\n }\n }\n}\n",
|
|
11
|
+
"/// <reference lib=\"dom\" />\n/**\n * Jx — JSON-native reactive web component runtime\n * @version 3.0.0\n * @license MIT\n *\n * Four-step pipeline:\n * 1. resolve — fetch JSON source (or accept raw object)\n * 2. buildScope — state detection + reactive proxy construction\n * 3. render — walk resolved tree, build DOM, wire reactive effects\n * 4. output — append to target\n *\n * @module jx\n */\n\nimport {\n computed,\n effect,\n effectScope,\n isRef,\n onEffectCleanup,\n reactive,\n ref,\n toRaw,\n} from \"@vue/reactivity\";\nimport { evaluateExpression, isMutating } from \"./expression.ts\";\nimport type { DynamicClass, JxEventHandler, JxPath, JxRenderOptions, JxScope } from \"./types.ts\";\nimport {\n hasStructuredBody,\n isExpressionDef,\n isFunctionDef,\n isJsonObject,\n isMappedArray,\n isNamedFormulaDef,\n isPrototypeDef,\n isRef as isRefValue,\n isServerFnDef,\n paramNames,\n} from \"@jxsuite/schema/guards\";\nimport { runStatements } from \"./statements.ts\";\nimport type {\n JxAttributeValue,\n JxClassDef,\n JxDocument,\n JxElement,\n JxFunctionDef,\n JxHeadEntry,\n JxMappedArray,\n JxPrototypeDef,\n JxRef,\n JxServerFnDef,\n JxStyle,\n} from \"@jxsuite/schema/types\";\nimport type { Ref } from \"@vue/reactivity\";\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\n/**\n * Mount a Jx document into a DOM container.\n *\n * @example\n * import { Jx } from \"@jxsuite/runtime\";\n * const state = await Jx(\"./counter.json\", document.getElementById(\"app\"));\n *\n * @param {string | JxDocument} source - Path to .json file, URL, or raw document object\n * @param {HTMLElement} [target] Default is `document.body`\n * @param {JxRenderOptions} [options]\n * @returns {Promise<JxScope>} Resolves with the live component scope (state reactive\n * proxy)\n */\nexport async function Jx(\n source: string | JxDocument,\n target: HTMLElement = document.body,\n options?: JxRenderOptions,\n) {\n const base = typeof source === \"string\" ? new URL(source, location.href).href : location.href;\n const doc = await resolve(source);\n\n // Register custom elements declared in $elements (depth-first)\n if (doc.$elements) {\n await registerElements(doc.$elements, base);\n }\n\n // Inject <head> elements declared in $head (link, meta, script, etc.)\n if (doc.$head) {\n injectHead(doc.$head, base);\n }\n\n if (doc.$media) {\n _rootMedia = doc.$media;\n }\n\n const state = await buildScope(doc, {}, base);\n target.append(renderNode(doc, state, options));\n if (typeof state.onMount === \"function\") {\n (state.onMount as (s: JxScope) => unknown)(state);\n }\n return state;\n}\n\n// ─── Step 1: Resolve ──────────────────────────────────────────────────────────\n\nconst _resolveCache = new Map<string, Promise<JxDocument>>();\n\nexport async function resolve(source: string | JxDocument): Promise<JxDocument> {\n if (typeof source !== \"string\") {\n return source;\n }\n if (_resolveCache.has(source)) {\n return _resolveCache.get(source)!;\n }\n const p = fetch(source).then((res) => {\n if (!res.ok) {\n throw new Error(`Jx: failed to fetch ${source} (${res.status})`);\n }\n // Trust boundary: fetched sources are Jx documents by contract.\n return res.json() as Promise<JxDocument>;\n });\n _resolveCache.set(source, p);\n return p;\n}\n\n// ─── Step 2: Build scope ──────────────────────────────────────────────────────\n\n/** JSON Schema keywords used to identify pure type definitions (Shape 2b). */\nconst SCHEMA_KEYWORDS = new Set([\n \"type\",\n \"properties\",\n \"items\",\n \"enum\",\n \"minimum\",\n \"maximum\",\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"required\",\n \"examples\",\n]);\n\n/** /** @type {{ skip: boolean }} */\nconst _serverFnConfig = { skip: false };\n/** Set to true to suppress timing: \"server\" resolution (used by Studio edit mode). */\nexport function setSkipServerFunctions(v: boolean) {\n _serverFnConfig.skip = v;\n}\n\n// ─── Dev-proxy auth token (Studio cross-origin canvas) ────────────────────────\n// The Studio canvas iframe is served from a token-gated loopback origin (createProjectServer): its\n// POST /__jx_resolve__ + /__jx_server__ routes 403 without ?token=<rpcToken>. The iframe boot reads\n// The token from its URL and calls setResolveToken so these dev-proxy fetches authenticate. Unset by\n// Default, leaving production + same-origin dev untouched (bare path, no query appended).\nlet _resolveToken: string | null = null;\nexport function setResolveToken(token: string | null) {\n _resolveToken = token || null;\n}\n/** Append the dev-proxy auth token to a privileged resolve path when one is configured. */\nfunction resolveProxyPath(path: string): string {\n return _resolveToken ? `${path}?token=${encodeURIComponent(_resolveToken)}` : path;\n}\n\n/** @deprecated No longer needed — ContentCollection/ContentEntry resolve via generic class path */\nexport function setSkipContentResolution(_v: boolean) {\n // No-op retained for API compatibility\n}\n\n/**\n * Observe runtime-created reactive values: runs `fn` immediately inside a reactive effect and\n * re-runs it whenever a tracked value changes; returns a disposer. Dep tracking in @vue/reactivity\n * is per module INSTANCE, so an effect created from another copy of the package (e.g. the studio's\n * own pin) can never track a ref/reactive created here — consumers that want to observe\n * runtime-resolved scope values (the Studio canvas iframe's dataScope re-post) must use this.\n *\n * @param {() => void} fn - Read the reactive values to observe inside this callback.\n * @returns {() => void} Disposer — stops the effect and its scope.\n */\nexport function observeScope(fn: () => void): () => void {\n const scope = effectScope(true);\n scope.run(() => {\n effect(fn);\n });\n return () => scope.stop();\n}\n\n/**\n * Run `fn` inside a detached reactive scope of THIS module's reactivity instance, returning its\n * result plus a disposer that stops every effect `fn` created. Callers that render via\n * {@link renderNode} and later tear the render down (the Studio canvas full render and its surgical\n * subtree re-renders) MUST use this instead of their own effectScope: scope collection is per\n * vue-reactivity module instance, so a scope from another copy of the package collects NOTHING and\n * its stop() silently leaks every binding effect of the superseded render.\n *\n * @param {() => T} fn - Work that may create reactive effects (typically a renderNode call).\n * @returns {{ result: T; stop: () => void }} The callback result and the scope disposer.\n */\nexport function runScoped<T>(fn: () => T): { result: T; stop: () => void } {\n const scope = effectScope(true);\n try {\n const result = scope.run(fn) as T;\n return { result, stop: () => scope.stop() };\n } catch (error) {\n // A throwing fn would otherwise leak the effects it created before failing.\n scope.stop();\n throw error;\n }\n}\n\n/**\n * Studio-canvas viewport-unit transpose. The canvas iframe is sized to its document's height, so\n * any viewport unit (`vh`/`vw`/`vmin`/`vmax`/`svh`/…) — which resolves against the iframe ELEMENT —\n * would feed back into an ever-growing height. When this is on, the runtime transposes them to\n * CONTAINER units (`cqh`/`cqw`/…) that resolve against the canvas's fixed-size query container (see\n * `canvas.html`): a predictable, feedback-free stand-in for the viewport. Off (the default) leaves\n * CSS untouched for real production rendering.\n */\nlet _canvasViewportTranspose = false;\nexport function setCanvasViewportTranspose(on: boolean) {\n _canvasViewportTranspose = on;\n}\n\nconst VIEWPORT_UNIT_RE = /(-?\\d*\\.?\\d+)(?:s|l|d)?v(h|w|min|max|i|b)\\b/gi;\nconst VIEWPORT_UNIT_MAP: Record<string, string> = {\n b: \"cqb\",\n h: \"cqh\",\n i: \"cqi\",\n max: \"cqmax\",\n min: \"cqmin\",\n w: \"cqw\",\n};\n\n/**\n * Transpose CSS viewport units → container-query units in a value string, but only when the\n * studio-canvas flag is set (otherwise the value is returned untouched). `100vh` → `100cqh`,\n * `50svw` → `50cqw`, `10vmin` → `10cqmin`, etc.\n */\nexport function transposeCanvasUnits(value: string): string {\n if (!_canvasViewportTranspose || !value.includes(\"v\")) {\n return value;\n }\n return value.replace(\n VIEWPORT_UNIT_RE,\n (_m, num: string, dim: string) => `${num}${VIEWPORT_UNIT_MAP[dim.toLowerCase()] ?? `cq${dim}`}`,\n );\n}\n\n/**\n * Studio-canvas anchor de-linking. In the editor canvas a rendered `<a href>` would navigate the\n * iframe when clicked, fighting element selection. When this is on, the runtime stamps the value on\n * `data-jx-href` instead of `href` so the anchor is inert (selectable, not a live link) while the\n * original target stays recoverable for richer link handling later. Off (the default) leaves\n * production rendering untouched; the studio sets it for design/edit (not preview — see\n * iframe-render).\n */\nlet _canvasDelinkAnchors = false;\nexport function setCanvasDelinkAnchors(on: boolean) {\n _canvasDelinkAnchors = on;\n}\n\n/** The attribute name to stamp `key` on `el` under — `href` → `data-jx-href` on de-linked anchors. */\nfunction canvasAttrName(el: HTMLElement, key: string): string {\n if (_canvasDelinkAnchors && key === \"href\" && (el.tagName === \"A\" || el.tagName === \"AREA\")) {\n return \"data-jx-href\";\n }\n return key;\n}\n\n/**\n * Studio-canvas prop-binding markers. When on, `bindProperty` stamps `data-jx-bound-prop=\"<key>\"`\n * on elements whose `textContent` is an invertible single-key state binding — the pure template\n * `\"${state.key}\"` or `{ \"$ref\": \"#/state/key\" }`. The studio canvas uses the marker to offer\n * inline editing of component-instance prop values; the rendered text must BE the prop value\n * verbatim, so mixed templates and deep paths are never stamped. Off (the default) leaves\n * production rendering untouched; the studio sets it for design/edit (not preview — see\n * iframe-render).\n */\nlet _stampPropBindings = false;\nexport function setStampPropBindings(on: boolean) {\n _stampPropBindings = on;\n}\n\n/** The single invertible template form: the whole string is exactly one `${state.key}` access. */\nconst PURE_STATE_TEMPLATE = /^\\s*\\$\\{\\s*state\\.(\\w+)\\s*\\}\\s*$/;\n\n/** The state key of an invertible `textContent` binding, or null (mixed template, deep path). */\nfunction boundPropKey(key: string, val: unknown, state: JxScope): string | null {\n if (!_stampPropBindings || key !== \"textContent\") {\n return null;\n }\n let sub: string | null = null;\n if (isRefObj(val)) {\n if (!val.$ref.startsWith(\"#/state/\")) {\n return null;\n }\n const rest = val.$ref.slice(\"#/state/\".length);\n sub = rest && !rest.includes(\"/\") ? rest : null;\n } else if (typeof val === \"string\") {\n sub = PURE_STATE_TEMPLATE.exec(val)?.[1] ?? null;\n }\n if (!sub) {\n return null;\n }\n // Only plain writable data entries are per-instance props. Computed/signal entries live as refs\n // In the raw scope (auto-unwrapped by the reactive proxy), and function/object entries (handlers,\n // $prototype instances) are not prop-overridable either — an instance $props write against any of\n // Them would clobber the definition's behavior, so their bindings are never marked editable.\n const stored = (toRaw(state) as Record<string, unknown>)[sub];\n if (isRef(stored) || typeof stored === \"function\") {\n return null;\n }\n if (typeof stored === \"object\" && stored !== null) {\n return null;\n }\n return sub;\n}\n\n/**\n * Build the reactive scope (state) from the document using the five-shape detection algorithm.\n *\n * @param {JxDocument} doc\n * @param {JxScope} [parentScope] Default is `{}`\n * @param {string} [base] Base URL for resolving $src imports. Default is `location.href`\n * @returns {Promise<JxScope>} Reactive proxy (state)\n */\nexport async function buildScope(\n doc: JxDocument,\n parentScope: JxScope = {},\n base: string = location.href,\n) {\n const raw: JxScope = {};\n\n // Merge parent scope properties\n for (const [key, val] of Object.entries(parentScope)) {\n raw[key] = val;\n }\n\n const defs = doc.state ?? {};\n\n // Pass 0: resolve bare $prototype names via import map\n const imports = doc.imports ?? {};\n for (const [, def] of Object.entries(defs)) {\n if (isPrototypeDef(def) && !def.$src) {\n const mapped = imports[def.$prototype];\n if (mapped) {\n if (!mapped.endsWith(\".class.json\")) {\n console.warn(\n `Jx: import \"${def.$prototype}\" must map to a .class.json path, got \"${mapped}\"`,\n );\n continue;\n }\n def.$src = mapped;\n }\n }\n }\n\n // First pass: collect naked values, expanded defaults, plain objects\n for (const [key, def] of Object.entries(defs)) {\n // 1. String value\n if (typeof def === \"string\") {\n if (!def.includes(\"${\")) {\n raw[key] = def;\n } // Shape 1: naked string\n continue; // Template strings handled in second pass\n }\n\n // 2. Number, boolean, null\n if (typeof def === \"number\" || typeof def === \"boolean\" || def === null) {\n raw[key] = def;\n continue;\n }\n\n // 3. Array\n if (Array.isArray(def)) {\n raw[key] = def;\n continue;\n }\n\n // 4. Object\n if (typeof def === \"object\") {\n if (def.$prototype) {\n continue;\n } // Handled in later passes\n if (isExpressionDef(def)) {\n continue;\n } // Handled in pass 2.5\n if (isServerFnDef(def)) {\n continue;\n } // Handled in fifth pass\n if (\"default\" in def) {\n raw[key] = def.default;\n continue;\n } // Shape 2: expanded signal\n if (hasSchemaKeywords(def)) {\n continue;\n } // Shape 2b: pure type def\n raw[key] = def; // Shape 1: plain object\n }\n }\n\n // Wrap in Vue reactive proxy — deep reactivity from this point on\n const state = reactive(raw);\n\n // Second pass: template strings → computed\n for (const [key, def] of Object.entries(defs)) {\n if (typeof def === \"string\" && def.includes(\"${\")) {\n state[key] = computed(() => evaluateTemplate(def, state));\n }\n }\n\n // Pass 2.5: $expression entries (Shape 5)\n for (const [key, def] of Object.entries(defs)) {\n if (isExpressionDef(def)) {\n const node = def.$expression;\n if (isNamedFormulaDef(def)) {\n // A named formula: callable with positional args mapped onto its declared parameters.\n const params = def.parameters as (string | { name?: string; default?: unknown })[];\n state[key] = (...argValues: unknown[]) => {\n const args: Record<string, unknown> = {};\n for (const [i, p] of params.entries()) {\n const name = typeof p === \"string\" ? p : (p?.name ?? \"\");\n if (!name) {\n continue;\n }\n args[name] =\n argValues[i] === undefined && typeof p === \"object\" && p !== null && \"default\" in p\n ? p.default\n : argValues[i];\n }\n return evaluateExpression(node, state, null, { args });\n };\n } else if (isMutating(node.operator)) {\n const handler: JxEventHandler = (s, event) => evaluateExpression(node, s, event);\n state[key] = handler;\n } else {\n state[key] = computed(() => evaluateExpression(node, state, null));\n }\n }\n }\n\n // Third pass: $prototype: \"Function\" entries\n for (const [key, def] of Object.entries(defs)) {\n if (hasStructuredBody(def)) {\n // Structured body (spec §20): with parameters → a callable mapping positional args onto\n // $args names (invoked via the call operator); without → an event handler.\n const { body } = def;\n if (Array.isArray(def.parameters) && def.parameters.length > 0) {\n const params = def.parameters as (string | { name?: string; default?: unknown })[];\n state[key] = (...argValues: unknown[]) => {\n const args: Record<string, unknown> = {};\n for (const [i, p] of params.entries()) {\n const name = typeof p === \"string\" ? p : (p?.name ?? \"\");\n if (!name) {\n continue;\n }\n args[name] =\n argValues[i] === undefined && typeof p === \"object\" && p !== null && \"default\" in p\n ? p.default\n : argValues[i];\n }\n return runStatements(body, state, null, { args });\n };\n } else {\n const handler: JxEventHandler = (s, event) => {\n void runStatements(body, s, event ?? null);\n };\n state[key] = handler;\n }\n } else if (isFunctionDef(def)) {\n state[key] = await resolveFunction(def, state, key, base);\n }\n }\n\n // Fourth pass: other $prototype entries (Request, Set, Map, etc.)\n for (const [key, def] of Object.entries(defs)) {\n if (isPrototypeDef(def)) {\n state[key] = await resolvePrototype(def, state, key, base);\n }\n }\n\n // Fifth pass: timing: \"server\" entries (dev mode — execute client-side, boundary unenforced)\n if (!_serverFnConfig.skip) {\n for (const [key, def] of Object.entries(defs)) {\n if (isServerFnDef(def)) {\n state[key] = await resolveServerFunction(def, state, key, base);\n }\n }\n }\n\n if (doc.$media) {\n state[\"$media\"] = doc.$media;\n } else if (!state[\"$media\"] && Object.keys(_rootMedia).length > 0) {\n state[\"$media\"] = _rootMedia;\n }\n\n return state;\n}\n\n/**\n * Check whether an object contains any JSON Schema keywords. Used to discriminate Shape 2b (pure\n * type definition) from Shape 1 (naked object).\n *\n * @param {JxScope} obj\n * @returns {boolean}\n */\nfunction hasSchemaKeywords(obj: object) {\n for (const k of Object.keys(obj)) {\n if (SCHEMA_KEYWORDS.has(k)) {\n return true;\n }\n }\n return false;\n}\nexport { hasSchemaKeywords };\n\n/**\n * Evaluate a template string in the context of state and optional $map. Templates use\n * `state.varName` and `$map.item` syntax.\n *\n * @param {string} str\n * @param {JxScope} state\n * @returns {string}\n */\nfunction evaluateTemplate(str: string, state: JxScope): string {\n const $map = state?.$map as { item?: unknown; index?: number } | undefined;\n const fn = new Function(\"state\", \"$map\", \"item\", \"index\", `return \\`${str}\\``) as (\n state: JxScope,\n $map: unknown,\n item: unknown,\n index: number | undefined,\n ) => string;\n return fn(state, $map, $map?.item, $map?.index);\n}\n\n// ─── Step 2b: Function resolution (Shape 4) ─────────────────────────────────\n\n/** Shape of a dynamically imported module: named exports plus an optional default. */\ntype ImportedModule = Record<string, unknown> & { default?: Record<string, unknown> };\n\n/** Minimal contract an externally-imported resolver class may implement. */\ninterface ExternalClassInstance {\n value?: unknown;\n resolve?: () => unknown;\n subscribe?: (cb: (newVal: unknown) => void) => void;\n}\n\n/** Module cache for $src imports (shared with external class resolution). */\nconst _moduleCache = new Map<string, ImportedModule>();\n\n/**\n * Resolve a $prototype: \"Function\" entry into a function or computed.\n *\n * Functions receive state as their first parameter at call time. Functions with a return statement\n * in their body are wrapped in computed() for reactive evaluation.\n *\n * @param {JxFunctionDef} def - State entry with $prototype: \"Function\"\n * @param {JxScope} state - Reactive scope proxy\n * @param {string} key - Def key name\n * @param {string} [base] - Base URL for resolving $src imports\n * @returns {Promise<unknown>}\n */\nasync function resolveFunction(def: JxFunctionDef, state: JxScope, key: string, base?: string) {\n if (def.body && def.$src) {\n throw new Error(`Jx: '${key}' declares both body and $src — these are mutually exclusive`);\n }\n if (!def.body && !def.$src) {\n const params = resolveParamNames(def);\n const noop = new Function(...params, \"\");\n Object.defineProperty(noop, \"name\", {\n configurable: true,\n value: def.name ?? key,\n });\n return noop;\n }\n\n let fn: ((...args: unknown[]) => unknown) | undefined;\n\n if (typeof def.body === \"string\") {\n const params = resolveParamNames(def);\n fn = new Function(...params, def.body) as (...args: unknown[]) => unknown;\n Object.defineProperty(fn, \"name\", {\n configurable: true,\n value: def.name ?? key,\n });\n } else {\n // $src: dynamic import (the body/$src dichotomy was validated above)\n const src = def.$src;\n if (!src) {\n throw new Error(`Jx: '${key}' has neither body nor $src`);\n }\n const exportName = def.$export ?? key;\n let mod: ImportedModule;\n if (_moduleCache.has(src)) {\n mod = _moduleCache.get(src)!;\n } else {\n if (base) {\n const resolvedSrc = new URL(src, base).href;\n try {\n mod = (await import(resolvedSrc)) as ImportedModule;\n } catch {\n mod = (await import(src)) as ImportedModule;\n }\n } else {\n mod = (await import(src)) as ImportedModule;\n }\n _moduleCache.set(src, mod);\n }\n const candidate = mod[exportName] ?? mod.default?.[exportName];\n if (typeof candidate !== \"function\") {\n throw new TypeError(`Jx: export \"${exportName}\" not found or not a function in \"${src}\"`);\n }\n fn = candidate as (...args: unknown[]) => unknown;\n }\n\n // Detect computed: body contains a return statement, or $src function introspection.\n // Functions with parameters (event handlers, callbacks) are never computed.\n const hasParams = (def.parameters ?? def.arguments ?? []).length > 0;\n let isComputed = false;\n if (!hasParams) {\n if (typeof def.body === \"string\") {\n isComputed = /\\breturn\\b/.test(def.body);\n } else if (fn) {\n isComputed = fn.length <= 1 && /\\breturn\\b/.test(fn.toString());\n }\n }\n if (isComputed) {\n return computed(() => fn(state));\n }\n\n return fn;\n}\n\n// ─── Step 3: Render ───────────────────────────────────────────────────────────\n\n/**\n * Extract parameter names from a function definition. Supports both legacy \"arguments\" (string\n * array) and CEM-compatible \"parameters\" (object array). Always ensures \"state\" is the first\n * parameter.\n *\n * @param {JxFunctionDef | JxPrototypeDef} def\n * @returns {string[]}\n */\nfunction resolveParamNames(def: JxFunctionDef | JxPrototypeDef) {\n const names = def.parameters ? paramNames(def.parameters) : (def.arguments ?? []);\n return names.length > 0 && names[0] === \"state\" ? names : [\"state\", ...names];\n}\n\n/**\n * Reserved Jx keys — never set as DOM properties.\n *\n * @type {Set<string>}\n */\nexport const RESERVED_KEYS = new Set([\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"state\",\n \"$ref\",\n \"$props\",\n \"$elements\",\n \"$title\",\n \"$description\",\n \"$switch\",\n \"$prototype\",\n \"$src\",\n \"$export\",\n \"$media\",\n \"$map\",\n \"timing\",\n \"default\",\n \"description\",\n \"body\",\n \"parameters\",\n \"arguments\",\n \"name\",\n \"tagName\",\n \"children\",\n \"style\",\n \"attributes\",\n \"items\",\n \"map\",\n \"filter\",\n \"sort\",\n \"cases\",\n \"observedAttributes\",\n]);\n\n/**\n * Recursively render a Jx element definition into a DOM element.\n *\n * @param {JxElement | string | number | boolean} def\n * @param {JxScope} state - Reactive scope proxy (or child scope via Object.create)\n * @param {JxRenderOptions} [options]\n * @returns {HTMLElement | Text}\n */\nexport function renderNode(\n def: JxElement | string | number | boolean,\n state: JxScope,\n options?: JxRenderOptions,\n): HTMLElement | Text {\n const path = options?._path ?? [];\n\n // Text node children: bare strings/numbers/booleans produce DOM Text nodes\n if (typeof def === \"string\" || typeof def === \"number\" || typeof def === \"boolean\") {\n const textNode = document.createTextNode(String(def));\n if (typeof def === \"string\" && isTemplateString(def)) {\n effect(() => {\n textNode.textContent = evaluateTemplate(def, state);\n });\n }\n return textNode;\n }\n\n // Extend scope with any $-prefixed local bindings declared on this node\n let localState: JxScope = state;\n for (const [key, val] of Object.entries(def)) {\n if (key.startsWith(\"$\") && !RESERVED_KEYS.has(key)) {\n if (localState === state) {\n localState = Object.create(state) as JxScope;\n }\n localState[key] = isRefObj(val) ? resolveRef(val.$ref, state) : val;\n }\n }\n\n // Custom element with $props: set JS properties on the element instance\n const tagName = def.tagName ?? \"div\";\n const isCustomEl = tagName.includes(\"-\") && customElements.get(tagName);\n\n if (def.$props && isCustomEl) {\n return renderCustomElementWithProps(def, localState, options, path);\n }\n\n if (def.$props) {\n const { $props: _$props, ...rest } = def;\n return renderNode(rest, mergeProps(def, localState), options);\n }\n if (def.$switch) {\n return renderSwitch(def, localState, options);\n }\n\n const el = document.createElement(tagName);\n\n if (options?.onNodeCreated) {\n options.onNodeCreated(el, path, def, localState);\n }\n\n applyProperties(el, def, localState);\n applyStyle(\n el,\n def.style ?? {},\n (localState[\"$media\"] as Record<string, string>) ?? {},\n localState,\n );\n applyAttributes(el, def.attributes ?? {}, localState);\n\n const kids = def.children;\n if (isMappedArray(kids)) {\n // Legacy whole-children repeater: the items render directly into `el` (which keeps its own\n // TagName, e.g. <ul>), with no extra wrapper element.\n const arrOpts = options ? { ...options, _path: [...path, \"children\"] } : undefined;\n renderMappedArrayInto(el, kids, localState, arrOpts);\n } else if (Array.isArray(kids)) {\n for (let i = 0; i < kids.length; i++) {\n const child = kids[i]!;\n const childOpts = options ? { ...options, _path: [...path, \"children\", i] } : undefined;\n if (isMappedArray(child)) {\n // Array pseudo-element among siblings: expand inline, no wrapper.\n renderMappedArrayInto(el, child, localState, childOpts);\n } else {\n el.append(renderNode(child, localState, childOpts));\n }\n }\n }\n\n return el;\n}\n\n// ─── Template string utilities ────────────────────────────────────────────────\n\n/**\n * Check if a value is a template string (contains ${}).\n *\n * @param {unknown} val\n * @returns {boolean}\n */\nfunction isTemplateString(val: unknown): val is string {\n return typeof val === \"string\" && val.includes(\"${\");\n}\n\n// ─── Property / style / attribute application ─────────────────────────────────\n\n/**\n * @param {HTMLElement} el\n * @param {JxElement} def\n * @param {JxScope} state\n */\nfunction applyProperties(el: HTMLElement, def: JxElement, state: JxScope) {\n for (const [key, val] of Object.entries(def)) {\n if (RESERVED_KEYS.has(key)) {\n continue;\n }\n if (key.startsWith(\"$\")) {\n continue;\n } // Scope bindings — handled in renderNode\n\n if (key.startsWith(\"on\")) {\n // Event handler: $ref to a function\n if (isRefObj(val)) {\n const handler = resolveRef(val.$ref, state);\n if (typeof handler === \"function\") {\n const scope = state;\n const handlerFn = handler as (s: JxScope, e: Event) => unknown;\n el.addEventListener(key.slice(2), (e) => handlerFn(scope, e));\n }\n continue;\n }\n // Event handler: inline $prototype: \"Function\" with a structured body (spec §20)\n if (hasStructuredBody(val)) {\n const { body } = val;\n const scope = state;\n el.addEventListener(key.slice(2), (e) => {\n void runStatements(body, scope, e);\n });\n continue;\n }\n // Event handler: inline $prototype: \"Function\"\n if (isFunctionDef(val) && typeof val.body === \"string\") {\n const params = resolveParamNames(val);\n const fn = new Function(...params, val.body) as (s: JxScope, e: Event) => unknown;\n const scope = state;\n el.addEventListener(key.slice(2), (e) => fn(scope, e));\n continue;\n }\n // Event handler: inline $expression\n if (isExpressionDef(val)) {\n const node = val.$expression;\n const scope = state;\n el.addEventListener(key.slice(2), (e) => evaluateExpression(node, scope, e));\n continue;\n }\n }\n\n bindProperty(el, key, val, state);\n }\n}\n\n/**\n * @param {HTMLElement} el\n * @param {string} key\n * @param {unknown} val\n * @param {JxScope} state\n */\nfunction bindProperty(el: HTMLElement, key: string, val: unknown, state: JxScope) {\n const target = el as unknown as Record<string, unknown>;\n const boundProp = boundPropKey(key, val, state);\n if (boundProp) {\n el.dataset.jxBoundProp = boundProp;\n }\n if (isRefObj(val)) {\n const refVal = val as { $ref: string };\n if (key === \"id\") {\n target[key] = resolveRef(refVal.$ref, state) as string;\n return;\n }\n effect(() => {\n target[key] = resolveRef(refVal.$ref, state);\n });\n return;\n }\n\n // Universal ${} reactivity — template strings in element properties\n if (isTemplateString(val)) {\n effect(() => {\n target[key] = evaluateTemplate(val as string, state);\n });\n return;\n }\n\n target[key] = val;\n}\n\n/**\n * Apply inline styles and emit a scoped <style> block for nested CSS selectors and @custom-media\n * breakpoint rules.\n *\n * @param {HTMLElement} el\n * @param {JxStyle} styleDef\n * @param {Record<string, string>} [mediaQueries] Named breakpoints from root $media. Default is\n * `{}`\n * @param {JxScope} [state] Component scope for template string evaluation. Default is `{}`\n */\nexport function applyStyle(\n el: HTMLElement,\n styleDef: JxStyle,\n mediaQueries: Record<string, string> = {},\n state: JxScope = {},\n) {\n const nested: Record<string, JxStyle> = {};\n const media: Record<string, JxStyle> = {};\n const baseDecls: Record<string, string> = {};\n\n // Collect properties overridden by media queries so we can avoid inline styles for them\n const mediaOverriddenProps = new Set<string>();\n for (const [prop, val] of Object.entries(styleDef)) {\n if (prop.startsWith(\"@\") && val && typeof val === \"object\") {\n for (const k of Object.keys(val)) {\n if (\n !k.startsWith(\":\") &&\n !k.startsWith(\".\") &&\n !k.startsWith(\"&\") &&\n !k.startsWith(\"[\") &&\n !k.startsWith(\"@\")\n ) {\n mediaOverriddenProps.add(k);\n }\n }\n }\n }\n\n for (const [prop, val] of Object.entries(styleDef)) {\n if (val !== null && typeof val === \"object\" && !Array.isArray(val)) {\n if (prop.startsWith(\"@\")) {\n media[prop] = val;\n } else {\n nested[prop] = val;\n }\n continue;\n }\n if (prop.startsWith(\"@\") || isNestedSelector(prop)) {\n // Scalar under a selector/media key — invalid style shape, drop it.\n continue;\n }\n if (val === undefined) {\n continue;\n }\n const scalar = String(val);\n if (prop.startsWith(\"--\")) {\n if (isTemplateString(val)) {\n effect(() => {\n el.style.setProperty(prop, transposeCanvasUnits(evaluateTemplate(val, state)));\n });\n } else {\n el.style.setProperty(prop, transposeCanvasUnits(scalar));\n }\n } else if (isTemplateString(val)) {\n effect(() => {\n (el.style as unknown as Record<string, string>)[prop] = transposeCanvasUnits(\n evaluateTemplate(val, state),\n );\n });\n } else if (mediaOverriddenProps.has(prop)) {\n // Goes through toCSSText (which transposes) — don't double-transpose here.\n baseDecls[prop] = scalar;\n } else {\n (el.style as unknown as Record<string, string>)[prop] = transposeCanvasUnits(scalar);\n }\n }\n\n const hasNested = Object.keys(nested).length > 0;\n const hasMedia = Object.keys(media).length > 0;\n const hasBaseDecls = Object.keys(baseDecls).length > 0;\n if (!hasNested && !hasMedia && !hasBaseDecls) {\n return;\n }\n\n const uid = `jx-${Math.random().toString(36).slice(2, 7)}`;\n el.dataset.jx = uid;\n\n let css = \"\";\n const baseCSS = toCSSText(baseDecls);\n if (baseCSS) {\n css += `[data-jx=\"${uid}\"] { ${baseCSS} }\\n`;\n }\n\n function emitNested(scope: string, rules: JxStyle) {\n const props = toCSSText(rules);\n if (props) {\n css += `${scope} { ${props} }\\n`;\n }\n for (const [sel, sub] of Object.entries(rules)) {\n if (sub === null || typeof sub !== \"object\" || Array.isArray(sub)) {\n continue;\n }\n if (sel.startsWith(\"@\")) {\n continue;\n }\n const resolved = sel.startsWith(\"&\")\n ? sel.replace(\"&\", scope)\n : sel.startsWith(\"[\")\n ? `${scope}${sel}`\n : sel.startsWith(\":\") || sel.startsWith(\".\")\n ? `${scope}${sel}`\n : `${scope} ${sel}`;\n emitNested(resolved, sub);\n }\n }\n\n for (const [sel, rules] of Object.entries(nested)) {\n const resolved = sel.startsWith(\"&\")\n ? sel.replace(\"&\", `[data-jx=\"${uid}\"]`)\n : sel.startsWith(\"[\")\n ? `[data-jx=\"${uid}\"]${sel}`\n : sel.startsWith(\":\") || sel.startsWith(\".\")\n ? `[data-jx=\"${uid}\"]${sel}`\n : `[data-jx=\"${uid}\"] ${sel}`;\n emitNested(resolved, rules);\n }\n\n function emitMediaNested(atRule: string, parentSel: string, obj: JxStyle) {\n for (const [sel, sub] of Object.entries(obj)) {\n if (sub === null || typeof sub !== \"object\" || Array.isArray(sub)) {\n continue;\n }\n if (sel.startsWith(\"@\")) {\n continue;\n }\n const resolved = sel.startsWith(\"&\")\n ? sel.replace(\"&\", parentSel)\n : sel.startsWith(\"[\")\n ? `${parentSel}${sel}`\n : sel.startsWith(\":\") || sel.startsWith(\".\")\n ? `${parentSel}${sel}`\n : `${parentSel} ${sel}`;\n const props = toCSSText(sub);\n if (props) {\n css += `${atRule} { ${resolved} { ${props} } }\\n`;\n }\n emitMediaNested(atRule, resolved, sub);\n }\n }\n\n for (const [key, rules] of Object.entries(media)) {\n if (key === \"@--\") {\n continue;\n } // Base canvas width, not a real media query\n const query = key.startsWith(\"@--\")\n ? (mediaQueries[key.slice(1)] ?? key.slice(1))\n : key.startsWith(\"@(\")\n ? key.slice(1)\n : null;\n const atRule = query === null ? key : `@media ${query}`;\n const scope = `[data-jx=\"${uid}\"]`;\n const scheme = query === null ? null : pureSchemeOf(query);\n if (scheme) {\n // Dual-emit scheme rules: a media-guarded copy for auto plus a forced-attribute copy.\n // The forced root attribute wins over the OS preference.\n const { auto, forced } = schemeSelectors(scope, scheme);\n css += `${atRule} { ${auto} { ${toCSSText(rules)} } }\\n`;\n emitMediaNested(atRule, auto, rules);\n emitNested(forced, rules);\n } else {\n css += `${atRule} { ${scope} { ${toCSSText(rules)} } }\\n`;\n emitMediaNested(atRule, scope, rules);\n }\n }\n\n const tag = document.createElement(\"style\");\n tag.textContent = css;\n tag.dataset.jxOwner = uid;\n document.head.append(tag);\n elementStyleTags.set(el, tag);\n}\n\n/**\n * Scoped <style> tags emitted per element by applyStyle (latest wins). Lets callers replace an\n * element's emitted styles instead of accumulating orphaned tags.\n */\nexport const elementStyleTags = new WeakMap<HTMLElement, HTMLStyleElement>();\n\n/**\n * Re-apply an element's style definition in place: removes the previously emitted scoped <style>\n * tag (if any), clears inline styles, and applies the new definition.\n *\n * @param {HTMLElement} el\n * @param {JxStyle | undefined} styleDef\n * @param {Record<string, string>} [mediaQueries]\n * @param {JxScope} [state]\n */\nexport function reapplyStyle(\n el: HTMLElement,\n styleDef: JxStyle | undefined,\n mediaQueries: Record<string, string> = {},\n state: JxScope = {},\n) {\n const prev = elementStyleTags.get(el);\n if (prev) {\n prev.remove();\n elementStyleTags.delete(el);\n }\n el.style.cssText = \"\";\n delete el.dataset.jx;\n applyStyle(el, styleDef ?? {}, mediaQueries, state);\n}\n\n/**\n * @param {HTMLElement} el\n * @param {Record<string, import(\"@jxsuite/schema/types\").JxAttributeValue>} attrs\n * @param {JxScope} state\n */\nfunction applyAttributes(el: HTMLElement, attrs: Record<string, JxAttributeValue>, state: JxScope) {\n for (const [k, v] of Object.entries(attrs)) {\n const attr = canvasAttrName(el, k);\n if (isRefObj(v)) {\n effect(() => el.setAttribute(attr, String(resolveRef(v.$ref, state) ?? \"\")));\n } else if (isTemplateString(v)) {\n effect(() => el.setAttribute(attr, String(evaluateTemplate(v, state))));\n } else {\n el.setAttribute(attr, String(v));\n }\n }\n}\n\n// ─── Array mapping ────────────────────────────────────────────────────────────\n\n/**\n * Render a mapped array (repeater) wrapper-less: its item instances are inserted directly into\n * `parentEl`, in place, ahead of an anchor comment that marks the array's position among the\n * parent's other children. Re-renders reactively when `items` (or the filter/sort sources) change;\n * each generation's item renders live in their own detached effect scope so nested arrays and\n * template bindings are disposed — not leaked or double-fired — on the next change.\n *\n * `options._path` is the array node's own document path (`[…, \"children\", i]`, or `[…, \"children\"]`\n * for a legacy whole-children repeater); item instances render at `[…that…, \"map\", index]`.\n *\n * @param {HTMLElement} parentEl\n * @param {import(\"@jxsuite/schema/types\").JxMappedArray} arrayDef\n * @param {JxScope} state\n * @param {JxRenderOptions} [options]\n */\nfunction renderMappedArrayInto(\n parentEl: HTMLElement,\n arrayDef: JxMappedArray,\n state: JxScope,\n options?: JxRenderOptions,\n) {\n const path = options?._path ?? [];\n const anchor = document.createComment(\"jx-array\");\n parentEl.append(anchor);\n const { items: itemsSrc, map: mapDef, filter: filterRef, sort: sortRef } = arrayDef;\n\n effect(() => {\n let items: unknown = isRefObj(itemsSrc) ? resolveRef(itemsSrc.$ref, state) : itemsSrc;\n if (Array.isArray(items) && isRefObj(filterRef)) {\n const fn = resolveRef(filterRef.$ref, state);\n if (typeof fn === \"function\") {\n items = items.filter(fn as (v: unknown) => boolean);\n }\n }\n if (Array.isArray(items) && isRefObj(sortRef)) {\n const fn = resolveRef(sortRef.$ref, state);\n if (typeof fn === \"function\") {\n items = [...(items as unknown[])].toSorted(fn as (a: unknown, b: unknown) => number);\n }\n }\n if (!Array.isArray(items) || !mapDef) {\n return;\n }\n\n // Render this generation's items inside a detached scope; the cleanup (run before the next\n // Re-render and when the enclosing render scope stops) tears it down and removes its nodes.\n const scope = effectScope(true);\n const nodes: ChildNode[] = [];\n scope.run(() => {\n for (const [index, item] of (items as unknown[]).entries()) {\n const child = Object.create(state) as JxScope;\n child.$map = { index, item };\n child[\"$map/item\"] = item;\n child[\"$map/index\"] = index;\n const childOpts = options ? { ...options, _path: [...path, \"map\", index] } : undefined;\n const node = renderNode(mapDef, child, childOpts);\n anchor.before(node);\n nodes.push(node);\n }\n });\n onEffectCleanup(() => {\n scope.stop();\n for (const n of nodes) {\n n.remove();\n }\n });\n });\n}\n\n// ─── $switch ──────────────────────────────────────────────────────────────────\n\n/**\n * @param {JxElement} def\n * @param {JxScope} state\n * @param {JxRenderOptions} [options]\n * @returns {HTMLElement}\n */\nfunction renderSwitch(def: JxElement, state: JxScope, options?: JxRenderOptions) {\n const path = options?._path ?? [];\n const container = document.createElement(def.tagName ?? \"div\");\n\n if (options?.onNodeCreated) {\n options.onNodeCreated(container, path, def, state);\n }\n\n applyProperties(container, def, state);\n applyStyle(container, def.style ?? {}, (state[\"$media\"] as Record<string, string>) ?? {}, state);\n applyAttributes(container, def.attributes ?? {}, state);\n let generation = 0;\n\n effect(() => {\n container.innerHTML = \"\";\n if (!isRefObj(def.$switch)) {\n return;\n }\n const key = resolveRef(def.$switch.$ref, state) as string;\n const caseDef = def.cases?.[key];\n if (!caseDef) {\n return;\n }\n\n if (isRefObj(caseDef)) {\n // External $ref — fetch and render asynchronously\n const gen = (generation += 1);\n const { href } = new URL(caseDef.$ref, location.href);\n resolve(href)\n .then(async (doc) => {\n if (gen !== generation) {\n return;\n }\n const childScope = await buildScope(doc, {}, href);\n if (gen !== generation) {\n return;\n }\n container.innerHTML = \"\";\n const childOpts = options ? { ...options, _path: [...path, \"cases\", key] } : undefined;\n container.append(renderNode(doc, childScope, childOpts));\n })\n .catch((error: unknown) =>\n console.error(\"Jx $switch: failed to load external case\", caseDef.$ref, error),\n );\n return;\n }\n\n const childOpts = options ? { ...options, _path: [...path, \"cases\", key] } : undefined;\n container.append(renderNode(caseDef, state, childOpts));\n });\n\n return container;\n}\n\n// ─── Prototype namespaces (Shape 5) ──────────────────────────────────────────\n\n/**\n * Resolve a $prototype definition into a value for the reactive scope.\n *\n * Returns a ref() for async/persistent entries (Request, Storage, Cookie, IndexedDB), or a plain\n * value for simple entries (Set, Map, FormData, Blob).\n *\n * @param {JxPrototypeDef} def - State entry with $prototype\n * @param {JxScope} state - Reactive scope proxy\n * @param {string} key - Def key (for diagnostics)\n * @param {string} [base] - Base URL for resolving $src imports\n * @returns {Promise<unknown>}\n */\nexport async function resolvePrototype(\n def: JxPrototypeDef,\n state: JxScope,\n key: string,\n base?: string,\n) {\n // ── External class via $src ─────────────────────────────────────────────────\n if (def.$src) {\n return resolveExternalPrototype(def, state, key, base);\n }\n\n switch (def.$prototype) {\n case \"Request\": {\n const s: Ref<unknown> = ref(null);\n const debounceMs = def.debounce ?? 0;\n let debounceTimer: ReturnType<typeof setTimeout> | null = null;\n\n if (!def.manual) {\n effect(() => {\n let url: string | undefined;\n if (isTemplateString(def.url)) {\n url = evaluateTemplate(def.url, state);\n } else {\n ({ url } = def);\n }\n if (!url || url === \"undefined\" || url.includes(\"undefined\")) {\n return;\n }\n\n const controller = new AbortController();\n onEffectCleanup(() => {\n controller.abort();\n if (debounceTimer !== null) {\n clearTimeout(debounceTimer);\n }\n });\n\n const doFetch = () =>\n fetch(url, {\n method: def.method ?? \"GET\",\n signal: controller.signal,\n ...(def.headers && { headers: def.headers }),\n ...(def.body && {\n body: typeof def.body === \"object\" ? JSON.stringify(def.body) : def.body,\n }),\n })\n .then((r) => (r.ok ? r.json() : Promise.reject(r.statusText)))\n .then((d) => {\n s.value = d;\n })\n .catch((error: unknown) => {\n if (!(error instanceof Error && error.name === \"AbortError\")) {\n s.value = { error: String(error) };\n }\n });\n\n if (debounceMs > 0) {\n debounceTimer = setTimeout(doFetch, debounceMs);\n } else {\n void doFetch();\n }\n });\n }\n\n return s;\n }\n\n case \"URLSearchParams\": {\n return computed(() => {\n const p: Record<string, string> = {};\n for (const [k, v] of Object.entries(def)) {\n if (k !== \"$prototype\") {\n p[k] = (\n isRefObj(v)\n ? resolveRef(v.$ref, state)\n : isTemplateString(v)\n ? evaluateTemplate(v, state)\n : v\n ) as string;\n }\n }\n return new URLSearchParams(p).toString();\n });\n }\n\n case \"LocalStorage\":\n case \"SessionStorage\": {\n const store = def.$prototype === \"LocalStorage\" ? localStorage : sessionStorage;\n const k = def.key ?? key;\n let init: unknown;\n try {\n const s = store.getItem(k);\n init = s !== null ? (JSON.parse(s) as unknown) : (def.default ?? null);\n } catch {\n init = def.default ?? null;\n }\n const storageState: Ref<unknown> = ref(init);\n // Persist on change\n effect(() => {\n const v = storageState.value;\n if (v === null) {\n try {\n store.removeItem(k);\n } catch {}\n } else {\n try {\n store.setItem(k, JSON.stringify(v));\n } catch {}\n }\n });\n return storageState;\n }\n\n case \"Cookie\": {\n const name = def.name ?? key;\n const read = () => {\n const m = document.cookie.match(new RegExp(`(?:^|; )${name}=([^;]*)`));\n if (!m) {\n return null;\n }\n try {\n return JSON.parse(decodeURIComponent(m[1]!));\n } catch {\n return m[1];\n }\n };\n const cookieState: Ref<unknown> = ref(read() ?? def.default ?? null);\n // Persist on change\n effect(() => {\n const v = cookieState.value;\n let s = `${name}=${encodeURIComponent(JSON.stringify(v))}`;\n if (def.maxAge !== undefined) {\n s += `; Max-Age=${def.maxAge}`;\n }\n if (def.path) {\n s += `; Path=${def.path}`;\n }\n if (def.domain) {\n s += `; Domain=${def.domain}`;\n }\n if (def.secure) {\n s += `; Secure`;\n }\n if (def.sameSite) {\n s += `; SameSite=${def.sameSite}`;\n }\n // oxlint-disable-next-line unicorn/no-document-cookie -- the Cookie $prototype IS the cookie store binding\n document.cookie = s;\n });\n return cookieState;\n }\n\n case \"IndexedDB\": {\n const idbState: Ref<unknown> = ref(null);\n const {\n database,\n store,\n version = 1,\n keyPath = \"id\",\n autoIncrement = true,\n indexes = [],\n } = def;\n if (!database || !store) {\n throw new Error(`Jx: IndexedDB entry '${key}' requires database and store`);\n }\n const req = indexedDB.open(database, version);\n req.addEventListener(\"upgradeneeded\", (e) => {\n const db: IDBDatabase = (e.target as IDBOpenDBRequest).result;\n if (!db.objectStoreNames.contains(store)) {\n const os = db.createObjectStore(store, { autoIncrement, keyPath });\n for (const i of indexes) {\n os.createIndex(i.name, i.keyPath, { unique: i.unique ?? false });\n }\n }\n });\n req.addEventListener(\"success\", (e) => {\n const db: IDBDatabase = (e.target as IDBOpenDBRequest).result;\n idbState.value = {\n database,\n getStore: (mode: IDBTransactionMode = \"readwrite\") =>\n Promise.resolve(db.transaction(store, mode).objectStore(store)),\n isReady: true,\n store,\n version,\n };\n });\n req.addEventListener(\"error\", () => {\n idbState.value = { error: req.error?.message };\n });\n return idbState;\n }\n\n case \"Set\": {\n return new Set(Array.isArray(def.default) ? def.default : []);\n }\n\n case \"Map\": {\n return new Map(Object.entries(isJsonObject(def.default) ? def.default : {}));\n }\n\n case \"FormData\": {\n const fd = new FormData();\n for (const [k, v] of Object.entries(def.fields ?? {})) {\n fd.append(k, v as string);\n }\n return fd;\n }\n\n case \"Blob\": {\n return new Blob((def.parts as BlobPart[]) ?? [], {\n type: typeof def.type === \"string\" ? def.type : \"text/plain\",\n });\n }\n\n case \"ReadableStream\": {\n return null;\n }\n\n default: {\n console.warn(\n `Jx: unknown $prototype \"${def.$prototype}\" for \"${key}\". Did you mean to add '$src'?`,\n );\n return ref(null);\n }\n }\n}\n\n// ─── External class resolution ────────────────────────────────────────────────\n\n/** Reserved keys stripped from the config object passed to external class constructors. */\nconst EXTERNAL_RESERVED = new Set([\n \"$prototype\",\n \"$src\",\n \"$export\",\n \"timing\",\n \"default\",\n \"description\",\n \"body\",\n \"parameters\",\n \"arguments\",\n \"name\",\n]);\n\n/**\n * Resolve an external class prototype via $src.\n *\n * @param {JxPrototypeDef} def\n * @param {JxScope} state\n * @param {string} key\n * @param {string} [base]\n * @returns {Promise<unknown>}\n */\nasync function resolveExternalPrototype(\n def: JxPrototypeDef,\n state: JxScope,\n key: string,\n base?: string,\n) {\n const src = def.$src;\n\n // Non-Function $prototype must use .class.json as entrypoint\n if (!src || !src.endsWith(\".class.json\")) {\n throw new Error(\n `Jx: $prototype \"${def.$prototype}\" requires a .class.json $src, got \"${src}\". ` +\n `Wrap the class in a .class.json schema with $implementation.`,\n );\n }\n\n return resolveClassJson(def, state, key, base);\n}\n\n/**\n * Import a JS module and instantiate a class from it. Internal helper used by resolveClassJson for\n * $implementation.\n *\n * @param {JxScope} def - Original state entry (for config extraction)\n * @param {string} src - JS module URL to import\n * @param {string} exportName - Export name to look up\n * @param {string} [base] - Base URL for resolution\n * @returns {Promise<unknown>}\n */\nasync function importAndInstantiate(def: JxScope, src: string, exportName: string, base?: string) {\n let mod: ImportedModule;\n if (_moduleCache.has(src)) {\n mod = _moduleCache.get(src)!;\n } else {\n try {\n mod = (await import(src)) as ImportedModule;\n } catch {\n if (base) {\n const resolvedSrc = new URL(src, base).href;\n mod = (await import(resolvedSrc)) as ImportedModule;\n } else {\n throw new Error(`Failed to import \"${src}\"`);\n }\n }\n _moduleCache.set(src, mod);\n }\n\n const ExportedClass = mod[exportName] ?? mod.default?.[exportName];\n if (!ExportedClass) {\n throw new Error(`Jx: export \"${exportName}\" not found in \"${src}\"`);\n }\n if (typeof ExportedClass !== \"function\") {\n throw new TypeError(`Jx: \"${exportName}\" from \"${src}\" is not a class`);\n }\n\n const config: JxScope = {};\n for (const [k, v] of Object.entries(def)) {\n if (!EXTERNAL_RESERVED.has(k)) {\n config[k] = v;\n }\n }\n\n const Ctor = ExportedClass as new (config: JxScope) => ExternalClassInstance;\n const instance = new Ctor(config);\n\n let value: unknown;\n if (typeof instance.resolve === \"function\") {\n value = await instance.resolve();\n } else if (\"value\" in instance) {\n ({ value } = instance);\n } else {\n value = instance;\n }\n\n // Always wrap in ref for reactivity with external classes\n const s: Ref<unknown> = ref(value);\n if (typeof instance.subscribe === \"function\") {\n instance.subscribe((newVal: unknown) => {\n s.value = newVal;\n });\n }\n return s;\n}\n\n/**\n * Resolve a .class.json schema-defined class. Fetches the schema, follows $implementation if\n * hybrid, or constructs dynamically if self-contained.\n *\n * @param {JxPrototypeDef} def\n * @param {JxScope} state\n * @param {string} key\n * @param {string} [base]\n * @returns {Promise<unknown>}\n */\nasync function resolveClassJson(def: JxPrototypeDef, state: JxScope, key: string, base?: string) {\n const src = def.$src;\n if (!src) {\n throw new Error(`Jx: class entry '${key}' has no $src`);\n }\n let classDef: JxClassDef;\n\n // Bare specifiers (package references like @scope/pkg/file) can't be fetched directly —\n // Go straight to dev proxy which can resolve them via node_modules.\n const isBareSpecifier =\n !src.startsWith(\".\") &&\n !src.startsWith(\"/\") &&\n !src.startsWith(\"http\") &&\n !src.startsWith(\"file:\");\n if (isBareSpecifier) {\n return resolveViaDevProxy(def, state, key, base);\n }\n\n // Try fetching the .class.json file directly\n try {\n const url = base ? new URL(src, base).href : src;\n const res = await fetch(url);\n if (!res.ok) {\n throw new Error(`HTTP ${res.status}`);\n }\n // Trust boundary: fetched .class.json sources are class definitions by contract.\n classDef = (await res.json()) as JxClassDef;\n } catch {\n // Fall back to dev proxy (server will handle .class.json resolution)\n return resolveViaDevProxy(def, state, key, base);\n }\n\n // Hybrid mode: $implementation points to the real JS module\n if (classDef.$implementation) {\n // If the schema references $context (e.g. content types), the browser cannot provide\n // The required server-side context — go directly to dev proxy.\n const schemaStr = JSON.stringify(classDef);\n if (schemaStr.includes('\"#/$context/')) {\n return resolveViaDevProxy(def, state, key, base);\n }\n const schemaUrl = base ? new URL(src, base).href : new URL(src, location.href).href;\n const implSrc = new URL(classDef.$implementation, schemaUrl).href;\n const exportName = def.$export ?? classDef.title ?? def.$prototype;\n try {\n return await importAndInstantiate(def, implSrc, exportName, base);\n } catch {\n return resolveViaDevProxy(def, state, key, base);\n }\n }\n\n // Self-contained: construct class dynamically from schema\n const DynClass = classFromSchema(classDef);\n const config: JxScope = {};\n for (const [k, v] of Object.entries(def)) {\n if (!EXTERNAL_RESERVED.has(k)) {\n config[k] = v;\n }\n }\n const instance = new DynClass(config) as ExternalClassInstance;\n\n let value: unknown;\n if (typeof instance.resolve === \"function\") {\n value = await instance.resolve();\n } else if (\"value\" in instance) {\n ({ value } = instance);\n } else {\n value = instance;\n }\n\n // Always wrap in ref for reactivity\n const s: Ref<unknown> = ref(value);\n if (typeof instance.subscribe === \"function\") {\n instance.subscribe((newVal: unknown) => {\n s.value = newVal;\n });\n }\n return s;\n}\n\n/**\n * Dynamically construct a class from a .class.json schema definition. Browser-side: maps private\n * fields to _-prefixed public fields.\n *\n * @param {import(\"@jxsuite/schema/types\").JxClassDef} classDef\n * @returns {DynamicClass}\n */\nfunction classFromSchema(classDef: JxClassDef) {\n const fields = classDef.$defs?.fields ?? {};\n // JSON objects inherit Object.prototype.constructor — only an own object value counts.\n const rawCtor = classDef.$defs?.constructor;\n const ctor = typeof rawCtor === \"object\" ? rawCtor : undefined;\n const methods = classDef.$defs?.methods ?? {};\n\n // oxlint-disable-next-line typescript/no-extraneous-class -- methods are attached to the prototype dynamically below\n class DynClass {\n constructor(config: Record<string, unknown> = {}) {\n for (const [key, typedField] of Object.entries(fields)) {\n const id = typedField.identifier ?? key;\n const propName = typedField.access === \"private\" ? `_${id}` : id;\n if (config[id] !== undefined) {\n (this as Record<string, unknown>)[propName] = config[id];\n } else if (typedField.initializer !== undefined) {\n (this as Record<string, unknown>)[propName] = typedField.initializer;\n } else if (typedField.default !== undefined) {\n (this as Record<string, unknown>)[propName] = structuredClone(typedField.default);\n } else {\n (this as Record<string, unknown>)[propName] = null;\n }\n }\n if (ctor?.body) {\n const bodyStr = Array.isArray(ctor.body) ? ctor.body.join(\"\\n\") : ctor.body;\n (\n new Function(\"config\", bodyStr) as (\n this: unknown,\n config: Record<string, unknown>,\n ) => void\n ).call(this, config);\n }\n }\n }\n\n for (const [key, typedMethod] of Object.entries(methods)) {\n const name = typedMethod.identifier ?? key;\n const params = (typedMethod.parameters ?? []).map((p) => {\n if (p.$ref) {\n return p.$ref.split(\"/\").pop() as string;\n }\n const n = p.identifier ?? p.name;\n return typeof n === \"string\" ? n : \"arg\";\n });\n const bodyStr = Array.isArray(typedMethod.body)\n ? typedMethod.body.join(\"\\n\")\n : (typedMethod.body ?? \"\");\n\n if (typedMethod.role === \"accessor\") {\n const descriptor: PropertyDescriptor = {};\n if (typedMethod.getter) {\n descriptor.get = new Function(typedMethod.getter.body ?? \"\") as () => unknown;\n }\n if (typedMethod.setter) {\n const sp = (typedMethod.setter.parameters ?? []).map(\n (p) => p.$ref?.split(\"/\").pop() ?? \"v\",\n );\n descriptor.set = new Function(...sp, typedMethod.setter.body ?? \"\") as (v: unknown) => void;\n }\n Object.defineProperty(DynClass.prototype, name, {\n ...descriptor,\n configurable: true,\n });\n } else if (typedMethod.scope === \"static\") {\n (DynClass as unknown as DynamicClass)[name] = new Function(...params, bodyStr);\n } else {\n (DynClass as unknown as DynamicClass).prototype[name] = new Function(...params, bodyStr);\n }\n }\n\n Object.defineProperty(DynClass, \"name\", {\n configurable: true,\n value: classDef.title,\n });\n const dynCtor = DynClass as unknown as DynamicClass;\n return dynCtor;\n}\n\n/**\n * Dev-mode fallback: when an $src module cannot run in the browser, proxy the resolve() call\n * through the Jx dev server (POST /**jx_resolve**). Supports reactive template strings in config\n * values via Vue effect().\n *\n * @param {JxPrototypeDef} def\n * @param {JxScope} state\n * @param {string} key\n * @param {string} [base]\n * @returns {Promise<unknown>}\n */\nasync function resolveViaDevProxy(def: JxPrototypeDef, state: JxScope, key: string, base?: string) {\n const config: JxScope = {};\n for (const [k, v] of Object.entries(def)) {\n if (!EXTERNAL_RESERVED.has(k)) {\n config[k] = v;\n }\n }\n\n const hasTemplates = Object.values(config).some((v: unknown) => isTemplateString(v));\n\n /** @param {JxScope} resolvedConfig */\n const doResolve = (resolvedConfig: JxScope) =>\n fetch(resolveProxyPath(\"/__jx_resolve__\"), {\n body: JSON.stringify({\n $base: base,\n $export: def.$export,\n $prototype: def.$prototype,\n $src: def.$src,\n ...resolvedConfig,\n }),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"POST\",\n }).then((r) => {\n if (!r.ok) {\n throw new Error(`Jx dev proxy ${r.status} for \"${key}\"`);\n }\n return r.json();\n });\n\n // Always wrap in ref for reactivity\n const s: Ref<unknown> = ref(null);\n if (hasTemplates) {\n effect(() => {\n const resolvedConfig: JxScope = {};\n for (const [k, v] of Object.entries(config)) {\n resolvedConfig[k] = isTemplateString(v) ? evaluateTemplate(v, state) : v;\n }\n doResolve(resolvedConfig)\n .then((value: unknown) => {\n s.value = value;\n })\n .catch((error: unknown) => console.error(\"Jx dev proxy:\", error));\n });\n } else {\n doResolve(config)\n .then((value: unknown) => {\n s.value = value;\n })\n .catch((error: unknown) => console.error(\"Jx dev proxy:\", error));\n }\n return s;\n}\n\n// ─── Server function resolution (dev mode) ────────────────────────────────────\n\n/**\n * Resolve a timing: \"server\" entry in dev mode by executing the function client-side. In\n * production, the compiler replaces this with a fetch to the generated server handler.\n *\n * @param {JxScope} def\n * @param {JxScope} state\n * @param {string} key\n * @param {string} [base]\n * @returns {Promise<unknown>}\n */\nasync function resolveServerFunction(\n def: JxServerFnDef,\n state: JxScope,\n key: string,\n base?: string,\n) {\n const src = def.$src;\n const exportName = def.$export;\n\n let mod: ImportedModule;\n if (_moduleCache.has(src)) {\n mod = _moduleCache.get(src)!;\n } else {\n try {\n mod = (await import(src)) as ImportedModule;\n } catch {\n if (base) {\n try {\n const resolvedSrc = new URL(src, base).href;\n mod = (await import(resolvedSrc)) as ImportedModule;\n } catch {\n // Module cannot run in the browser — fall back to dev server proxy\n return resolveServerFunctionViaProxy(def, state, key, base);\n }\n } else {\n return resolveServerFunctionViaProxy(def, state, key, base);\n }\n }\n _moduleCache.set(src, mod);\n }\n\n const candidate = mod[exportName] ?? mod.default?.[exportName];\n if (!candidate) {\n throw new Error(`Jx: export \"${exportName}\" not found in \"${src}\" for \"${key}\"`);\n }\n if (typeof candidate !== \"function\") {\n throw new TypeError(`Jx: \"${exportName}\" from \"${src}\" is not a function`);\n }\n const fn = candidate as (args: JxScope) => Promise<unknown>;\n\n const rawArgs = def.arguments ?? {};\n const hasReactiveArg = Object.values(rawArgs).some((v: unknown) => isRefObj(v));\n const resolveArgs = () => {\n const args: JxScope = {};\n for (const [k, v] of Object.entries(rawArgs)) {\n args[k] = isRefObj(v) ? resolveRef(v.$ref, state) : v;\n }\n return args;\n };\n\n // Always wrap in ref for reactivity\n const s: Ref<unknown> = ref(null);\n if (hasReactiveArg) {\n effect(() => {\n const args = resolveArgs();\n onEffectCleanup(() => {});\n fn(args)\n .then((result: unknown) => {\n s.value = result;\n })\n .catch(() => {});\n });\n } else {\n s.value = await fn(resolveArgs());\n }\n return s;\n}\n\n/**\n * Dev-mode fallback: when a timing: \"server\" module cannot run in the browser, proxy the function\n * call through the Jx dev server (POST /**jx_server**). Supports reactive $ref arguments via Vue\n * effect().\n *\n * @param {JxScope} def\n * @param {JxScope} state\n * @param {string} key\n * @param {string} [base]\n * @returns {Promise<unknown>}\n */\nasync function resolveServerFunctionViaProxy(\n def: JxScope,\n state: JxScope,\n key: string,\n base?: string,\n) {\n const rawArgs = def.arguments ?? {};\n const hasReactiveArg = Object.values(rawArgs).some((v: unknown) => isRefObj(v));\n\n const resolveArgs = () => {\n const args: JxScope = {};\n for (const [k, v] of Object.entries(rawArgs)) {\n args[k] = isRefObj(v) ? resolveRef((v as { $ref: string }).$ref, state) : v;\n }\n return args;\n };\n\n /** @param {JxScope} args */\n const doResolve = (args: JxScope) =>\n fetch(resolveProxyPath(\"/__jx_server__\"), {\n body: JSON.stringify({\n $base: base,\n $export: def.$export,\n $src: def.$src,\n arguments: args,\n }),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"POST\",\n }).then((r) => {\n if (!r.ok) {\n throw new Error(`Jx server proxy ${r.status} for \"${key}\"`);\n }\n return r.json();\n });\n\n // Always wrap in ref for reactivity\n const s: Ref<unknown> = ref(null);\n if (hasReactiveArg) {\n effect(() => {\n const args = resolveArgs();\n onEffectCleanup(() => {});\n doResolve(args)\n .then((result: unknown) => {\n s.value = result;\n })\n .catch((error: unknown) => console.error(\"Jx server proxy:\", error));\n });\n } else {\n doResolve(resolveArgs())\n .then((result: unknown) => {\n s.value = result;\n })\n .catch((error: unknown) => console.error(\"Jx server proxy:\", error));\n }\n return s;\n}\n\n/**\n * Resolve a $ref string to a value in scope.\n *\n * With Vue reactivity, this reads directly from the reactive proxy. When called inside a effect or\n * computed, the read is tracked.\n *\n * @param {string} ref\n * @param {JxScope} state - Reactive scope proxy (or child scope)\n * @returns {unknown}\n */\nexport function resolveRef(refPath: string, state: JxScope) {\n if (typeof refPath !== \"string\") {\n return refPath;\n }\n if (refPath.startsWith(\"$map/\")) {\n const parts = refPath.split(\"/\");\n const [, key] = parts; // \"item\" or \"index\"\n const map = state.$map as Record<string, unknown> | undefined;\n const base = map?.[key!] ?? state[`$map/${key}`];\n return parts.length > 2 ? getPath(base, parts.slice(2).join(\"/\")) : base;\n }\n if (refPath.startsWith(\"#/state/\")) {\n const sub = refPath.slice(\"#/state/\".length);\n const slash = sub.indexOf(\"/\");\n if (slash === -1) {\n return state[sub];\n }\n return getPath(state[sub.slice(0, slash)], sub.slice(slash + 1));\n }\n if (refPath.startsWith(\"parent#/\")) {\n return state[refPath.slice(\"parent#/\".length)];\n }\n if (refPath.startsWith(\"window#/\")) {\n return getPath(globalThis.window, refPath.slice(\"window#/\".length));\n }\n if (refPath.startsWith(\"document#/\")) {\n return getPath(globalThis.document, refPath.slice(\"document#/\".length));\n }\n return state[refPath] ?? null;\n}\n\n// ─── Utilities ────────────────────────────────────────────────────────────────\n\n/**\n * Check if v is a Vue ref (including computed).\n *\n * @param {unknown} v\n * @returns {boolean}\n */\nexport function isSignal(v: unknown) {\n return isRef(v);\n}\n\n/**\n * @param {unknown} v\n * @returns {v is import(\"@jxsuite/schema/types\").JxRef}\n */\nfunction isRefObj(v: unknown): v is JxRef {\n return isRefValue(v);\n}\n\n/**\n * @param {string} k\n * @returns {boolean}\n */\nfunction isNestedSelector(k: string) {\n return k.startsWith(\":\") || k.startsWith(\".\") || k.startsWith(\"&\") || k.startsWith(\"[\");\n}\n\n/**\n * @param {unknown} obj\n * @param {string} path\n * @returns {unknown}\n */\nfunction getPath(obj: unknown, path: string) {\n let current: unknown = obj;\n for (const k of path.split(/[./]/)) {\n current = (current as Record<string, unknown>)?.[k];\n }\n return current;\n}\n\n/**\n * @param {JxElement} def\n * @param {JxScope} parentState\n * @returns {JxScope}\n */\nfunction mergeProps(def: JxElement, parentState: JxScope): JxScope {\n const child = Object.create(parentState) as JxScope;\n for (const [k, v] of Object.entries(def.$props ?? {})) {\n child[k] = isRefObj(v) ? resolveRef(v.$ref, parentState) : v;\n }\n return child;\n}\n\n/**\n * Convert camelCase to kebab-case.\n *\n * @param {string} s\n * @returns {string}\n */\nexport function camelToKebab(s: string) {\n return s.replaceAll(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);\n}\n\n/**\n * Convert a style rules object to a CSS text string (skipping nested selectors).\n *\n * @param {Record<string, unknown> | object} rules\n * @returns {string}\n */\nexport function toCSSText(rules: Record<string, unknown> | object) {\n return Object.entries(rules)\n .filter(([k, v]) => !isNestedSelector(k) && (v === null || typeof v !== \"object\"))\n .map(([p, v]) => `${camelToKebab(p)}: ${transposeCanvasUnits(String(v))}`)\n .join(\"; \");\n}\n\n// ─── Color Schemes ────────────────────────────────────────────────────────────\n\n/**\n * Attribute on the root element (`<html>`) that forces a color scheme. Absent = auto (follow the OS\n * `prefers-color-scheme`). Values: \"light\" | \"dark\".\n *\n * @docs framework/concepts/color-schemes\n */\nexport const COLOR_SCHEME_ATTR = \"data-color-scheme\";\n\n/**\n * The localStorage key a site switcher persists the visitor's forced scheme under; read by the\n * compiler-injected pre-paint script. Values: \"light\" | \"dark\" (absent = auto).\n *\n * @docs framework/concepts/color-schemes\n */\nexport const COLOR_SCHEME_STORAGE_KEY = \"jx-color-scheme\";\n\n/**\n * The scheme a _pure_ `prefers-color-scheme` media query targets. Compound queries (any other\n * conditions attached) return null — they are not eligible for forced-scheme dual emission.\n *\n * @param {string} query\n * @returns {\"light\" | \"dark\" | null}\n * @docs framework/concepts/color-schemes\n */\nexport function pureSchemeOf(query: string): \"light\" | \"dark\" | null {\n const m = /^\\(\\s*prefers-color-scheme\\s*:\\s*(light|dark)\\s*\\)$/.exec(query.trim());\n return (m?.[1] as \"light\" | \"dark\") ?? null;\n}\n\n/**\n * Selector pair for a scheme-conditional rule: `auto` applies inside the scheme's media query only\n * while no scheme is forced; `forced` applies unconditionally when the root attribute forces the\n * scheme. Guards are wrapped in `:where()` so specificity matches the unguarded selector and source\n * order decides the cascade.\n *\n * @param {string} selector\n * @param {\"light\" | \"dark\"} scheme\n * @returns {{ auto: string; forced: string }}\n * @docs framework/concepts/color-schemes\n */\nexport function schemeSelectors(\n selector: string,\n scheme: \"light\" | \"dark\",\n): { auto: string; forced: string } {\n if (selector === \":root\" || selector === \"html\") {\n return {\n auto: `${selector}:where(:not([${COLOR_SCHEME_ATTR}]))`,\n forced: `${selector}:where([${COLOR_SCHEME_ATTR}=\"${scheme}\"])`,\n };\n }\n return {\n auto: `:where(:root:not([${COLOR_SCHEME_ATTR}])) ${selector}`,\n forced: `:where(:root[${COLOR_SCHEME_ATTR}=\"${scheme}\"]) ${selector}`,\n };\n}\n\n// ─── Custom Element Registration ──────────────────────────────────────────────\n\nlet _rootMedia: Record<string, string> = {};\nconst _elementDefs = new Map();\n\n/**\n * Seed the module-level root `$media` map used as the fallback for components that declare their\n * own `@--name` style blocks but carry no own `$media` (buildScope ~279-280). `Jx()` sets this from\n * the document during a full top-level render, but the Studio iframe canvas calls `buildScope`/\n * `renderNode` directly (never `Jx()`), so without seeding it a component's `@--md` would resolve\n * to the invalid `@media md`. Callers on the direct path MUST set it (with the merged `$media`)\n * before `buildScope`, and re-set it every render so a stale map from a previous document cannot\n * leak.\n *\n * @param {Record<string, string>} map\n */\nexport function setRootMedia(map: Record<string, string>): void {\n _rootMedia = map ?? {};\n}\n\n/**\n * Resolve and register $elements entries (depth-first).\n *\n * @param {JxDocument[\"$elements\"]} elements\n * @param {string} base\n * @returns {Promise<void>}\n */\nasync function registerElements(elements: NonNullable<JxDocument[\"$elements\"]>, base: string) {\n for (const entry of elements) {\n // Bare string: npm package side-effect import (registers custom elements)\n if (typeof entry === \"string\") {\n try {\n // Bare specifiers need a URL path for the browser; the dev server resolves\n // /node_modules/<pkg> to the package entry point via exports/module/main.\n const specifier =\n entry.startsWith(\"/\") || entry.startsWith(\".\") ? entry : `/node_modules/${entry}`;\n await import(specifier);\n } catch (error) {\n console.warn(`Jx: failed to import package \"${entry}\"`, error);\n }\n continue;\n }\n if (!isRefObj(entry)) {\n continue;\n }\n const { href } = new URL(entry.$ref, base);\n const doc = await resolve(href);\n if (!doc.tagName || !doc.tagName.includes(\"-\")) {\n continue;\n }\n if (customElements.get(doc.tagName)) {\n continue;\n }\n\n // Depth-first: register sub-dependencies first\n if (doc.$elements) {\n await registerElements(doc.$elements, href);\n }\n\n await defineElement(doc, href);\n }\n}\n\n/**\n * Inject head elements from $head declarations. Each entry is { tagName, attributes } — bare npm\n * specifiers in href/src are rewritten to /node_modules/ paths for the dev server.\n *\n * @param {import(\"@jxsuite/schema/types\").JxHeadEntry[]} entries\n * @param {string} _base - Document base URL for resolving relative paths\n */\nfunction injectHead(entries: JxHeadEntry[], _base: string) {\n for (const entry of entries) {\n if (!entry || !entry.tagName) {\n continue;\n }\n const tag = entry.tagName.toLowerCase();\n const attrs = { ...entry.attributes };\n // Resolve href/src: bare npm specifiers -> /node_modules/ path\n for (const key of [\"href\", \"src\"] as const) {\n const v = attrs[key];\n if (\n typeof v === \"string\" &&\n v &&\n !v.startsWith(\"/\") &&\n !v.startsWith(\".\") &&\n !v.startsWith(\"http\")\n ) {\n attrs[key] = `/node_modules/${v}`;\n }\n }\n\n // Deduplicate: skip if an identical element already exists\n const selector = `${tag}${attrs.href ? `[href=\"${attrs.href}\"]` : \"\"}${attrs.src ? `[src=\"${attrs.src}\"]` : \"\"}`;\n if (selector !== tag && document.head.querySelector(selector)) {\n continue;\n }\n\n const el = document.createElement(tag);\n for (const [k, v] of Object.entries(attrs)) {\n el.setAttribute(k, String(v));\n }\n if (entry.textContent) {\n el.textContent = entry.textContent;\n }\n document.head.append(el);\n }\n}\n\n/**\n * Register a custom element from a Jx document.\n *\n * @param {string | JxDocument} source - URL to .json file, or raw document object\n * @param {string} [base] - Base URL for resolving $src imports\n * @returns {Promise<void>}\n */\nconst _definedSources = new Set<string>();\n\nexport async function defineElement(source: string | JxDocument, baseUrl?: string) {\n let base = baseUrl;\n let doc = source;\n if (typeof source === \"string\") {\n base = new URL(source, base ?? location.href).href;\n if (_definedSources.has(base)) {\n return;\n }\n _definedSources.add(base);\n doc = await resolve(source);\n }\n base ??= location.href;\n\n const source_: JxDocument = doc as JxDocument;\n\n const { tagName } = source_;\n if (!tagName || !tagName.includes(\"-\")) {\n throw new Error(`Jx defineElement: tagName \"${tagName}\" must contain a hyphen`);\n }\n if (customElements.get(tagName)) {\n return;\n }\n\n // Register sub-dependencies first\n if (source_.$elements) {\n await registerElements(source_.$elements, base);\n }\n\n _elementDefs.set(tagName, { base, doc: source_ });\n\n const def = source_;\n const observedAttrs = def.observedAttributes ?? [];\n\n const ElementClass = class extends HTMLElement {\n _jxInitialized = false;\n _state: JxScope | null = null;\n\n static get observedAttributes() {\n return observedAttrs;\n }\n\n async connectedCallback() {\n // An element carrying `data-jx-definition-root` IS the definition being rendered by an\n // External renderer (the studio canvas editing this component's own document) — its subtree\n // Is authored DOM, not an instantiation site. Self-initializing here would wipe that tree\n // And re-render it with default state (the \"component editor shows a live instance\" bug).\n if (this.dataset.jxDefinitionRoot !== undefined) {\n return;\n }\n if (this._jxInitialized) {\n return;\n }\n this._jxInitialized = true;\n\n const state = await buildScope(def, {}, base);\n\n // Read properties from directive encoding (markdown → data-jx-props)\n const propsAttr = this.dataset.jxProps;\n if (propsAttr) {\n try {\n const props = JSON.parse(propsAttr) as Record<string, unknown>;\n for (const [key, val] of Object.entries(props)) {\n if (key in (def.state ?? {})) {\n state[key] = val;\n }\n }\n } catch {}\n delete this.dataset.jxProps;\n }\n\n // Read literal `props.*` attributes (JSON-authored instances pass props this way; the\n // Compiler lifts them into $props at build, and this is the live-render mirror). String\n // Values only — HTML lowercases attribute names, so state keys must be lowercase to match.\n // Collect first: removing while iterating the live NamedNodeMap skips entries.\n const propAttrNames = this.getAttributeNames().filter(\n (name) => name.startsWith(\"props.\") && name.length > \"props.\".length,\n );\n for (const name of propAttrNames) {\n const key = name.slice(\"props.\".length);\n if (key in (def.state ?? {})) {\n state[key] = this.getAttribute(name);\n this.removeAttribute(name);\n }\n }\n\n // Merge $props set as JS properties by parent before connection\n for (const key of Object.keys(def.state ?? {})) {\n if (key in this && (this as Record<string, unknown>)[key] !== undefined) {\n state[key] = (this as Record<string, unknown>)[key];\n }\n }\n // Set up property getters/setters that forward into reactive state\n for (const key of Object.keys(def.state ?? {})) {\n if (!(key in HTMLElement.prototype)) {\n Object.defineProperty(this, key, {\n configurable: true,\n get: () => state[key],\n set: (v: unknown) => {\n state[key] = v;\n },\n });\n }\n }\n\n this._state = state;\n\n // Capture light DOM children (for slot distribution) before rendering\n const slottedChildren = [...this.childNodes];\n this.innerHTML = \"\";\n\n // Custom elements default to display:inline — use block so they behave as\n // Containers (matching <div> semantics). The component's own style can\n // Override this if needed.\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n\n // Render template into light DOM (once, not in effect — inner effects handle reactivity)\n applyStyle(this, def.style ?? {}, (state[\"$media\"] as Record<string, string>) ?? {}, state);\n applyAttributes(this, def.attributes ?? {}, state);\n\n const children = Array.isArray(def.children) ? def.children : [];\n for (const childDef of children) {\n this.append(renderNode(childDef, state));\n }\n\n // Slot distribution (light DOM)\n distributeSlots(this, slottedChildren);\n\n // Lifecycle: onMount\n const { onMount } = state;\n if (typeof onMount === \"function\") {\n queueMicrotask(() => (onMount as (s: JxScope) => unknown)(state));\n }\n }\n\n disconnectedCallback() {\n if (typeof this._state?.onUnmount === \"function\") {\n (this._state.onUnmount as (s: JxScope) => unknown)(this._state);\n }\n }\n\n adoptedCallback() {\n if (typeof this._state?.onAdopted === \"function\") {\n (this._state.onAdopted as (s: JxScope) => unknown)(this._state);\n }\n }\n\n attributeChangedCallback(name: string, oldVal: string | null, newVal: string | null) {\n if (!this._state || oldVal === newVal) {\n return;\n }\n const camelKey = name.replaceAll(/-([a-z])/g, (_: string, c: string) => c.toUpperCase());\n const current = this._state[camelKey];\n if (typeof current === \"number\") {\n this._state[camelKey] = Number(newVal);\n } else if (typeof current === \"boolean\") {\n this._state[camelKey] = newVal !== null && newVal !== \"false\";\n } else {\n this._state[camelKey] = newVal;\n }\n }\n };\n\n customElements.define(tagName, ElementClass);\n}\n\n/**\n * Render a registered custom element with $props (property-first interface).\n *\n * @param {JxElement} def\n * @param {JxScope} state\n * @param {JxRenderOptions} [options]\n * @param {JxPath} [path]\n * @returns {HTMLElement}\n */\nfunction renderCustomElementWithProps(\n def: JxElement,\n state: JxScope,\n options?: JxRenderOptions,\n path?: JxPath,\n) {\n const el = document.createElement(def.tagName ?? \"div\");\n\n if (options?.onNodeCreated) {\n options.onNodeCreated(el, path ?? [], def, state);\n }\n\n // Set JS properties from $props (before connection)\n for (const [key, val] of Object.entries(def.$props ?? {})) {\n if (isRefObj(val)) {\n const refVal = val;\n const resolved = resolveRef(refVal.$ref, state);\n (el as unknown as Record<string, unknown>)[key] = resolved;\n // Reactive forwarding: re-set the property when the source changes\n effect(() => {\n (el as unknown as Record<string, unknown>)[key] = resolveRef(refVal.$ref, state);\n });\n } else if (isTemplateString(val)) {\n effect(() => {\n (el as unknown as Record<string, unknown>)[key] = evaluateTemplate(val, state);\n });\n } else {\n (el as unknown as Record<string, unknown>)[key] = val;\n }\n }\n\n // Apply host-level style and attributes from the usage site\n applyStyle(el, def.style ?? {}, (state[\"$media\"] as Record<string, string>) ?? {}, state);\n applyAttributes(el, def.attributes ?? {}, state);\n\n // Append slotted children\n const children = Array.isArray(def.children) ? def.children : [];\n for (let i = 0; i < children.length; i++) {\n const childOpts = options && path ? { ...options, _path: [...path, \"children\", i] } : undefined;\n el.append(renderNode(children[i]!, state, childOpts));\n }\n\n return el;\n}\n\n/**\n * Light DOM slot distribution.\n *\n * @param {HTMLElement} host\n * @param {ChildNode[]} slottedChildren\n */\nfunction distributeSlots(host: HTMLElement, slottedChildren: ChildNode[]) {\n if (slottedChildren.length === 0) {\n return;\n }\n\n const slots = host.querySelectorAll(\"slot\");\n if (slots.length === 0) {\n return;\n }\n\n const named = new Map<string | null, ChildNode[]>();\n const unnamed: ChildNode[] = [];\n\n for (const child of slottedChildren) {\n if (child.nodeType === Node.ELEMENT_NODE && (child as Element).getAttribute(\"slot\")) {\n const name = (child as Element).getAttribute(\"slot\");\n if (!named.has(name)) {\n named.set(name, []);\n }\n (named.get(name) as ChildNode[]).push(child);\n } else {\n unnamed.push(child);\n }\n }\n\n for (const slot of slots) {\n const name = slot.getAttribute(\"name\");\n const matches = name ? (named.get(name) ?? []) : unnamed;\n if (matches.length > 0) {\n slot.innerHTML = \"\";\n for (const child of matches) {\n slot.append(child);\n }\n }\n }\n}\n",
|
|
12
12
|
"/// <reference lib=\"dom\" />\n/**\n * Render-path mapping — pure logic shared by the legacy in-realm path mapper (which stores paths in\n * the `elToPath` WeakMap) and the iframe host (which stamps them as `data-jx-path` attributes).\n *\n * The runtime fires `onNodeCreated(el, renderPath, def, state)` for every node. The render path is\n * not always the document path: layout-wrapped pages shift page content under a layout prefix, and\n * `prepareForEditMode` renders mapped arrays (`$prototype: Array`) as a `repeater-perimeter` whose\n * single child hop must be collapsed back to a `map` segment. {@link classifyRenderNode} resolves a\n * render path to either a document path or a \"layout\" marker; {@link serializeJxPath} encodes the\n * result for the `data-jx-path` attribute.\n */\n\nimport type { JxPath } from \"../state\";\n\n/** Context the mapper needs, computed once per render by whoever prepared the document. */\nexport interface PathMapCtx {\n canvasMode: string;\n layoutWrapped: boolean;\n pageContentPrefix: JxPath | null;\n pageContentOffset: number | null;\n arrayPaths: Set<string>;\n}\n\n/** A render node either belongs to the layout chrome (no document path) or maps to a document path. */\nexport type RenderNodeClass = { kind: \"layout\" } | { kind: \"path\"; path: JxPath };\n\n/**\n * Resolve a runtime render path to a document path (or flag it as layout-originated). Pure — the\n * caller decides whether to record the result in a WeakMap or a `data-jx-path` attribute.\n */\nexport function classifyRenderNode(path: JxPath, def: unknown, ctx: PathMapCtx): RenderNodeClass {\n // Layout-originated nodes have no page-document path; the caller marks them (data-jx-layout).\n if (ctx.layoutWrapped && typeof def === \"object\" && (def as { $__layout?: unknown })?.$__layout) {\n return { kind: \"layout\" };\n }\n\n let mappedPath = path;\n\n // Strip the layout prefix so paths are relative to the original page document.\n // Page children render at indices [offset, offset+1, …] when the layout places siblings before\n // The <slot>, so subtract the offset to recover the page's 0-based child indices.\n if (ctx.layoutWrapped && ctx.pageContentPrefix) {\n const pfx = ctx.pageContentPrefix;\n if (path.length >= pfx.length && pfx.every((seg, i) => path[i] === seg)) {\n const rest = path.slice(pfx.length);\n const [containerIdx] = rest;\n mappedPath =\n typeof containerIdx === \"number\"\n ? [\"children\", containerIdx - (ctx.pageContentOffset ?? 0), ...rest.slice(1)]\n : [\"children\", ...rest];\n }\n }\n\n // Collapse repeater-perimeter template hops: for an array document path P, a render path of\n // `[...P, \"children\", 0, ...rest]` maps to `[...P, \"map\", ...rest]`. Loop for nested repeaters.\n if ((ctx.canvasMode === \"design\" || ctx.canvasMode === \"edit\") && ctx.arrayPaths.size > 0) {\n let changed = true;\n while (changed) {\n changed = false;\n for (let i = 1; i < mappedPath.length - 1; i++) {\n if (\n mappedPath[i] === \"children\" &&\n mappedPath[i + 1] === 0 &&\n ctx.arrayPaths.has(mappedPath.slice(0, i).join(\"/\"))\n ) {\n mappedPath = [...mappedPath.slice(0, i), \"map\", ...mappedPath.slice(i + 2)];\n changed = true;\n break;\n }\n }\n }\n }\n\n return { kind: \"path\", path: mappedPath };\n}\n\n/** Encode a document path for the `data-jx-path` attribute (preserves string-vs-number segments). */\nexport function serializeJxPath(path: JxPath): string {\n return JSON.stringify(path);\n}\n\n/** Decode a `data-jx-path` attribute back into a document path. */\nexport function parseJxPath(serialized: string): JxPath {\n return JSON.parse(serialized) as JxPath;\n}\n",
|
|
13
|
-
"/// <reference lib=\"dom\" />\n/**\n * In-iframe render core — turns a fully-resolved document into live DOM via @jxsuite/runtime,\n * stamping `data-jx-path` so the editor can map nodes back to document paths across the frame\n * boundary. The parent does the heavy resolution (layout distribution, site-context, `$head`,\n * components, edit-mode transforms) and posts the result; this core stays dependency-light (runtime\n * + reactivity + the pure path-mapping helpers) so the iframe bundle is small.\n *\n * Because the iframe is served from the real project origin, the runtime's verbatim\n * `el.setAttribute(\"src\", \"/images/foo.jpg\")` resolves natively — the fix that motivated the whole\n * migration, with no data: URL rewriting.\n */\n\nimport {\n buildScope,\n defineElement,\n renderNode,\n runScoped,\n setCanvasDelinkAnchors,\n setCanvasViewportTranspose,\n setRootMedia,\n setSkipServerFunctions,\n setStampPropBindings,\n transposeCanvasUnits,\n} from \"@jxsuite/runtime\";\nimport { classifyRenderNode, serializeJxPath } from \"./path-mapping\";\nimport type { CanvasMode } from \"./iframe-protocol\";\nimport type { JxDocument } from \"@jxsuite/schema/types\";\nimport type { PathMapCtx } from \"./path-mapping\";\n\n/**\n * The retained render context a full render leaves behind so the surgical patcher can re-render an\n * individual subtree (insert/replace/attr edits) with the SAME scope, doc base, path mapping, and\n * mode — making a patched subtree indistinguishable from a full re-render.\n */\nexport interface IframeRenderCtx {\n /** The `$defs` scope built for the document (resolves `$ref`/state/`$media` bindings). */\n defs: Awaited<ReturnType<typeof buildScope>>;\n docBase: string;\n mapperCtx: PathMapCtx;\n mode: CanvasMode;\n}\n\nexport interface RenderHandle {\n /** Stop the render's reactive effect scope (call before re-rendering to avoid effect leaks). */\n dispose: () => void;\n /** Context for surgical subtree re-renders against this generation's scope/mapping. */\n ctx: IframeRenderCtx;\n}\n\ninterface HeadEntry {\n tagName?: string;\n attributes?: Record<string, unknown>;\n textContent?: string;\n}\n\n/**\n * Register the document's `$elements` (components) in this iframe realm so the runtime can render\n * them.\n */\nexport async function registerElements(doc: JxDocument, docBase: string): Promise<void> {\n const elements = (doc as { $elements?: unknown[] }).$elements;\n if (!Array.isArray(elements)) {\n return;\n }\n // Register in parallel, each guarded by a timeout so one slow/hanging component can't block the\n // Whole render (the document still renders; the unresolved tag just stays inert).\n await Promise.all(\n elements.map(async (entry) => {\n const task = (async () => {\n if (typeof entry === \"string\") {\n const specifier =\n entry.startsWith(\"/\") || entry.startsWith(\".\") ? entry : `/node_modules/${entry}`;\n await import(specifier);\n } else if (entry && typeof entry === \"object\" && \"$ref\" in entry) {\n await defineElement(new URL(String((entry as { $ref: string }).$ref), docBase).href);\n } else if (entry && typeof entry === \"object\") {\n await defineElement(entry as JxDocument, docBase);\n }\n })();\n try {\n await Promise.race([\n task,\n new Promise((_, reject) => {\n setTimeout(() => reject(new Error(\"register timeout\")), 5000);\n }),\n ]);\n } catch (error) {\n console.warn(\"iframe canvas: failed to register element\", JSON.stringify(entry), error);\n }\n }),\n );\n}\n\n/** Id of the injected design/edit-mode canvas stylesheet (placeholder affordances). */\nexport const EDIT_PLACEHOLDER_STYLE_ID = \"jx-canvas-edit-css\";\n\n/**\n * The design/edit-mode canvas CSS, ported from the parent editor stylesheet (index.html) with\n * iframe-safe fallbacks — the parent theme variables (--fg-dim/--radius/--accent) don't exist in\n * the iframe document. The placeholder CLASSES are stamped by prepareForEditMode (parent-side\n * resolution + surgical subtree renders), so preview mode never matches these rules — but the sheet\n * is still removed there (belt and braces). The `[contenteditable=\"true\"]:empty` hint is new: it\n * marks the caret's empty paragraph (e.g. right after an Enter split) and advertises the slash\n * menu.\n */\nexport const EDIT_PLACEHOLDER_CSS = `\n.empty-media-placeholder {\n display: inline-block;\n min-width: 120px;\n min-height: 80px;\n border: 1px dashed color-mix(in srgb, #808080 30%, transparent);\n border-radius: 4px;\n background: color-mix(in srgb, #808080 5%, transparent)\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' fill='none'%3E%3Crect x='4' y='8' width='32' height='24' rx='2' stroke='%23808080' stroke-opacity='.4' stroke-width='1.5'/%3E%3Ccircle cx='13' cy='16' r='3' stroke='%23808080' stroke-opacity='.4' stroke-width='1.5'/%3E%3Cpath d='M8 28l8-8 5 5 4-4 7 7' stroke='%23808080' stroke-opacity='.4' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\")\n center / 40px no-repeat;\n color: transparent;\n font-size: 0;\n overflow: hidden;\n}\n.empty-text-placeholder:not([contenteditable])::after {\n content: \"Click here to add text...\";\n color: color-mix(in srgb, #808080 40%, transparent);\n font-style: italic;\n font-size: 13px;\n pointer-events: none;\n}\n.empty-container-placeholder {\n border: 1px dashed color-mix(in srgb, #808080 25%, transparent);\n border-radius: 4px;\n min-height: 32px;\n position: relative;\n}\n.empty-container-placeholder::after {\n content: \"Drag elements here...\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n color: color-mix(in srgb, #808080 40%, transparent);\n font-style: italic;\n font-size: 11px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;\n pointer-events: none;\n white-space: nowrap;\n}\n[contenteditable=\"true\"]:empty::after {\n content: \"Type / for commands\";\n color: color-mix(in srgb, #808080 40%, transparent);\n font-style: italic;\n font-size: 13px;\n pointer-events: none;\n}\n[data-jx-bound-prop]:hover {\n cursor: text;\n outline: 1px dashed color-mix(in srgb, #808080 40%, transparent);\n outline-offset: 1px;\n}\n[data-jx-bound-prop]:empty:not([contenteditable=\"plaintext-only\"]):not([contenteditable=\"true\"])::after {\n content: \"Empty \\\\2014 double-click to edit\";\n color: color-mix(in srgb, #808080 40%, transparent);\n font-style: italic;\n font-size: 13px;\n pointer-events: none;\n}\n`;\n\n/**\n * Keep the design/edit canvas stylesheet in sync with the render mode: present (idempotently) for\n * design/edit, removed otherwise (preview must look live; stylebook specimens must not show \"Click\n * here to add text...\" placeholders).\n */\nexport function syncEditModeCss(doc: Document, mode: CanvasMode): void {\n const existing = doc.head.querySelector(`#${EDIT_PLACEHOLDER_STYLE_ID}`);\n if (mode !== \"design\" && mode !== \"edit\") {\n existing?.remove();\n return;\n }\n if (existing) {\n return;\n }\n const style = doc.createElement(\"style\");\n style.id = EDIT_PLACEHOLDER_STYLE_ID;\n style.textContent = EDIT_PLACEHOLDER_CSS;\n doc.head.append(style);\n}\n\n/** Id of the injected stylebook-mode chrome stylesheet (section/card scaffolding). */\nexport const STYLEBOOK_STYLE_ID = \"jx-canvas-stylebook-css\";\n\n/**\n * Card/section chrome for the stylebook specimen document, ported from the parent editor stylesheet\n * with self-contained fallback values (the parent theme vars don't exist in the iframe).\n * Deliberately OMITS the parent's `.element-card-preview { pointer-events: none }` — the iframe\n * owns hit-testing and needs real hits on the specimens.\n */\nexport const STYLEBOOK_CSS = `\n.sb-root {\n padding: 16px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;\n}\n.sb-section {\n margin-bottom: 24px;\n}\n.sb-label {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: color-mix(in srgb, #808080 70%, transparent);\n padding: 8px 0 4px;\n border-bottom: 1px solid color-mix(in srgb, #808080 25%, transparent);\n margin-bottom: 8px;\n}\n.sb-body {\n padding: 4px 0;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.element-card {\n display: flex;\n flex-direction: column;\n width: 100%;\n border: 1px solid color-mix(in srgb, #808080 30%, transparent);\n border-radius: 4px;\n overflow: hidden;\n margin-bottom: 6px;\n}\n.element-card-preview {\n background: #fff;\n padding: 6px 8px;\n min-height: 32px;\n display: flex;\n align-items: center;\n overflow: hidden;\n}\n.element-card-preview > * {\n max-width: 100%;\n margin: 0;\n padding: 0;\n}\n.element-card-preview > hr {\n width: 100%;\n border: none;\n border-top: 1px solid color-mix(in srgb, #808080 40%, transparent);\n}\n.element-card-preview > input,\n.element-card-preview > textarea,\n.element-card-preview > select,\n.element-card-preview > button,\n.element-card-preview > progress,\n.element-card-preview > meter {\n font-size: 10px;\n}\n.element-card-label {\n padding: 2px 6px;\n font-size: 10px;\n color: color-mix(in srgb, #808080 70%, transparent);\n background: color-mix(in srgb, #808080 8%, transparent);\n text-align: center;\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n}\n.sb-fallback {\n padding: 12px;\n border: 1px dashed color-mix(in srgb, #808080 40%, transparent);\n border-radius: 4px;\n color: color-mix(in srgb, #808080 70%, transparent);\n}\n.sb-empty {\n padding: 48px;\n text-align: center;\n color: color-mix(in srgb, #808080 70%, transparent);\n font-size: 13px;\n}\n`;\n\n/**\n * Keep the stylebook chrome stylesheet in sync with the render mode: present (idempotently) for\n * stylebook, removed otherwise.\n */\nexport function syncStylebookCss(doc: Document, mode: CanvasMode): void {\n const existing = doc.head.querySelector(`#${STYLEBOOK_STYLE_ID}`);\n if (mode !== \"stylebook\") {\n existing?.remove();\n return;\n }\n if (existing) {\n return;\n }\n const style = doc.createElement(\"style\");\n style.id = STYLEBOOK_STYLE_ID;\n style.textContent = STYLEBOOK_CSS;\n doc.head.append(style);\n}\n\n/** Apply the project's site style: custom properties on :root, plain properties on <body>. */\nexport function applySiteStyle(siteStyle: Record<string, unknown> | null | undefined): void {\n if (!siteStyle || typeof siteStyle !== \"object\") {\n return;\n }\n const rootStyle = document.documentElement.style;\n const bodyStyle = document.body.style as unknown as Record<string, string>;\n for (const [key, value] of Object.entries(siteStyle)) {\n if (value !== null && typeof value === \"object\" && !Array.isArray(value)) {\n continue;\n }\n if (key.startsWith(\"--\")) {\n rootStyle.setProperty(key, transposeCanvasUnits(String(value)));\n } else {\n bodyStyle[key] = transposeCanvasUnits(String(value));\n }\n }\n}\n\n/** Inject the document's `$head` (link/meta/script) into the iframe's <head>, de-duped by href/src. */\nexport function injectHead(doc: JxDocument): void {\n const head = (doc as { $head?: HeadEntry[] }).$head;\n if (!Array.isArray(head)) {\n return;\n }\n for (const entry of head) {\n if (!entry?.tagName) {\n continue;\n }\n const tag = String(entry.tagName).toLowerCase();\n // Skip inline scripts in design/edit; they're for the live page, not the editor canvas.\n if (tag === \"script\" && !entry.attributes?.src) {\n continue;\n }\n const attrs = { ...entry.attributes } as Record<string, unknown>;\n for (const key of [\"href\", \"src\"]) {\n const val = attrs[key];\n if (\n typeof val === \"string\" &&\n !val.startsWith(\"/\") &&\n !val.startsWith(\".\") &&\n !val.startsWith(\"http\")\n ) {\n attrs[key] = `/node_modules/${val}`;\n }\n }\n const sel = `${tag}${attrs.href ? `[href=\"${String(attrs.href)}\"]` : \"\"}${attrs.src ? `[src=\"${String(attrs.src)}\"]` : \"\"}`;\n if (sel !== tag && document.head.querySelector(sel)) {\n continue;\n }\n const el = document.createElement(tag);\n for (const [k, v] of Object.entries(attrs)) {\n el.setAttribute(k, String(v));\n }\n if (entry.textContent) {\n el.textContent = entry.textContent;\n }\n document.head.append(el);\n }\n}\n\n/** Build the `onNodeCreated` hook that stamps `data-jx-path` / `data-jx-layout` on rendered nodes. */\nexport function makeStamper(ctx: PathMapCtx) {\n return (created: Node, path: (string | number)[], def: unknown) => {\n if (!(created instanceof HTMLElement)) {\n return;\n }\n // The OPENED document's root can itself be a component definition (`tagName: \"eer-cta\"`). If\n // That tag is already registered in this realm (a previously-rendered page instantiated it —\n // Hosts persist across tab switches), the upgrade's connectedCallback would wipe the stamped\n // Editable tree and re-render a live instance with default state. Mark the root so the\n // Runtime's element class leaves it alone (see defineElement's connectedCallback guard).\n if (path.length === 0 && (def as { tagName?: string } | null)?.tagName?.includes(\"-\")) {\n created.dataset.jxDefinitionRoot = \"\";\n }\n const classified = classifyRenderNode(path, def, ctx);\n if (classified.kind === \"layout\") {\n created.dataset.jxLayout = \"\";\n return;\n }\n created.dataset.jxPath = serializeJxPath(classified.path);\n };\n}\n\n/**\n * Recover canvas images that fail their first load. Registered components create their <img> in\n * connectedCallback AFTER async registration, so on a cold first render those requests can fire\n * before the loopback server is warm and 404 — which the browser then caches as a\n * permanently-broken <img>. This re-fires a failed request a few times with backoff (exactly what\n * the manual canvas re-render does), recovering the image without a full re-render. Bounded\n * per-image so a genuinely missing file settles broken. Intentional data: placeholders never error,\n * so they're untouched. Returns a teardown that removes the listener. <img> error events don't\n * bubble, so listen in CAPTURE.\n */\nexport function installCanvasImageRetry(root: HTMLElement, maxAttempts = 3): () => void {\n const attempts = new WeakMap<HTMLImageElement, number>();\n const onError = (event: Event): void => {\n const img = event.target;\n if (!(img instanceof HTMLImageElement)) {\n return;\n }\n // A data: URL never errors (and an empty src isn't a real request) — nothing to retry.\n if (!img.src || img.src.startsWith(\"data:\")) {\n return;\n }\n const attempt = (attempts.get(img) ?? 0) + 1;\n if (attempt > maxAttempts) {\n // Bounded: a genuinely missing file settles broken instead of retrying forever.\n return;\n }\n attempts.set(img, attempt);\n setTimeout(() => {\n // Re-fire the request by clearing then re-assigning the same src (mirrors the manual re-render).\n const s = img.src;\n img.src = \"\";\n img.src = s;\n }, 150 * attempt);\n };\n root.addEventListener(\"error\", onError, true);\n return () => root.removeEventListener(\"error\", onError, true);\n}\n\n/**\n * Render a resolved document into `container`, replacing its current children. `mode` controls\n * whether server functions run (live in `preview`; skipped in `design`/`edit`). Returns a handle\n * whose `dispose()` stops the reactive scope.\n */\nexport async function renderResolvedDocument(opts: {\n container: HTMLElement;\n doc: JxDocument;\n docBase: string;\n mode: CanvasMode;\n mapperCtx: PathMapCtx;\n siteStyle?: Record<string, unknown> | null;\n}): Promise<RenderHandle> {\n setSkipServerFunctions(opts.mode !== \"preview\");\n // Transpose viewport units (vh/vw/…) → container units (cqh/cqw/…) so they resolve against the\n // Canvas's fixed-size query container (canvas.html) instead of the iframe element. That decouples\n // Them from the iframe height, letting the host size the iframe to its content without `100vh`\n // Sections feeding back into an ever-growing height. Set every render (the iframe always wants it).\n setCanvasViewportTranspose(true);\n // De-link `<a href>` in design/edit so clicks select the anchor instead of navigating the iframe;\n // Preview keeps real links live (mirrors the server-function gate above).\n setCanvasDelinkAnchors(opts.mode !== \"preview\");\n // Stamp `data-jx-bound-prop` on component-internal invertible text bindings in design/edit only —\n // The inline prop-edit affordance. Set every render so a preview/stylebook render in the same\n // Iframe clears it (page-level templates are inert in design/edit via prepareForEditMode, so only\n // Component internals get stamped).\n setStampPropBindings(opts.mode === \"design\" || opts.mode === \"edit\");\n applySiteStyle(opts.siteStyle);\n injectHead(opts.doc);\n syncEditModeCss(opts.container.ownerDocument, opts.mode);\n syncStylebookCss(opts.container.ownerDocument, opts.mode);\n // Seed the runtime's root $media before buildScope so a COMPONENT with its own `@--name` blocks\n // But no own `$media` resolves the breakpoint to its real query (the iframe path calls buildScope\n // Directly and never the runtime's `Jx()` entry, which is the only other place _rootMedia is set).\n // Set it every render (even to `{}`) so a stale map from a previous document cannot leak.\n setRootMedia((opts.doc as { $media?: Record<string, string> }).$media ?? {});\n // Register components BEFORE renderNode. The runtime only applies a custom element's `$props` when\n // That element is ALREADY defined (renderNode gates renderCustomElementWithProps on a truthy\n // `customElements.get(tagName)`); if we register after render, every component paints with its\n // Props dropped — it upgrades in place to the empty default state (<img src=\"\">) — which was the\n // Empty-render regression. `registerElements` wraps each element in a per-element 5s Promise.race\n // Timeout and swallows failures internally, so awaiting it can't block the render indefinitely on\n // A slow/hanging component (the document still renders; an unresolved tag just stays inert).\n await registerElements(opts.doc, opts.docBase);\n const $defs = await buildScope(opts.doc, {}, opts.docBase);\n const onNodeCreated = makeStamper(opts.mapperCtx);\n // The scope MUST be the runtime's (runScoped): renderNode creates its binding effects with the\n // Runtime's copy of @vue/reactivity, and scope collection is per module instance — a studio\n // EffectScope here collects nothing and dispose() would leak every effect of this render.\n const { result: el, stop } = runScoped(\n () => renderNode(opts.doc, $defs, { _path: [], onNodeCreated }) as HTMLElement,\n );\n opts.container.replaceChildren(el);\n return {\n ctx: { defs: $defs, docBase: opts.docBase, mapperCtx: opts.mapperCtx, mode: opts.mode },\n dispose: stop,\n };\n}\n",
|
|
13
|
+
"/// <reference lib=\"dom\" />\n/**\n * Site-style stylesheet builder — pure functions extracted for testability.\n *\n * The canvas iframe injects the project's `style` as a real stylesheet instead of inline properties\n * on the root element: inline custom properties would defeat the forced-scheme override selectors\n * (`:root[data-color-scheme]`, spec §9.5), and object-valued `@--name` blocks used to be dropped\n * entirely. Scheme-query blocks dual-emit through the runtime's schemeSelectors so the canvas\n * honors both the OS preference and the preview toggle.\n */\n\nimport { pureSchemeOf, schemeSelectors, camelToKebab } from \"@jxsuite/runtime\";\n\n/** Id of the injected site-style tag (replace-in-place, never accumulate). */\nexport const SITE_STYLE_ID = \"jx-site-style\";\n\n/** Serialize scalar declarations, kebab-casing property names and transposing values. */\nfunction toDecls(props: Record<string, unknown>, transpose: (value: string) => string): string {\n return Object.entries(props)\n .map(([key, value]) => `${camelToKebab(key)}: ${transpose(String(value))}`)\n .join(\"; \");\n}\n\n/**\n * Build the site-style sheet text: custom properties on `:root`, plain properties on `body`,\n * conditional `@`-blocks resolved against `mediaQueries` (scheme queries dual-emitted per the\n * forced-scheme contract), and `color-scheme: light dark` declared when a scheme query exists.\n *\n * @param {Record<string, unknown>} siteStyle\n * @param {Record<string, string>} mediaQueries\n * @param {(value: string) => string} transpose - Unit transposer (canvas vh→cqh etc.)\n * @returns {string}\n */\nexport function buildSiteStyleCSS(\n siteStyle: Record<string, unknown>,\n mediaQueries: Record<string, string>,\n transpose: (value: string) => string,\n): string {\n const rules: string[] = [];\n const rootProps: Record<string, unknown> = {};\n const bodyProps: Record<string, unknown> = {};\n const condBlocks: [string, Record<string, unknown>][] = [];\n\n for (const [key, value] of Object.entries(siteStyle)) {\n if (value !== null && typeof value === \"object\" && !Array.isArray(value)) {\n if (key.startsWith(\"@\")) {\n condBlocks.push([key, value as Record<string, unknown>]);\n }\n // Non-@ objects (nested element selectors) are page-content styling — the resolved doc's\n // Own style pass covers those; the site sheet handles tokens + conditional overrides.\n continue;\n }\n if (key.startsWith(\":\") || key.startsWith(\".\") || key.startsWith(\"[\") || key.startsWith(\"@\")) {\n continue;\n }\n if (key.startsWith(\"--\")) {\n rootProps[key] = value;\n } else {\n bodyProps[key] = value;\n }\n }\n\n const rootCSS = toDecls(rootProps, transpose);\n if (rootCSS) {\n rules.push(`:root { ${rootCSS} }`);\n }\n const bodyCSS = toDecls(bodyProps, transpose);\n if (bodyCSS) {\n rules.push(`body { ${bodyCSS} }`);\n }\n\n for (const [atKey, block] of condBlocks) {\n const query = atKey.startsWith(\"@--\")\n ? (mediaQueries[atKey.slice(1)] ?? atKey.slice(1))\n : atKey.startsWith(\"@(\")\n ? atKey.slice(1)\n : null;\n if (query === null) {\n continue;\n }\n const scheme = pureSchemeOf(query);\n const emit = (selector: string, props: string) => {\n if (!props) {\n return;\n }\n if (scheme) {\n const { auto, forced } = schemeSelectors(selector, scheme);\n rules.push(`@media ${query} { ${auto} { ${props} } }`, `${forced} { ${props} }`);\n } else {\n rules.push(`@media ${query} { ${selector} { ${props} } }`);\n }\n };\n const condRoot: Record<string, unknown> = {};\n const condBody: Record<string, unknown> = {};\n const condSubs: [string, Record<string, unknown>][] = [];\n for (const [k, v] of Object.entries(block)) {\n if (v !== null && typeof v === \"object\" && !Array.isArray(v)) {\n if (!k.startsWith(\"@\")) {\n condSubs.push([k, v as Record<string, unknown>]);\n }\n continue;\n }\n if (k.startsWith(\"--\")) {\n condRoot[k] = v;\n } else {\n condBody[k] = v;\n }\n }\n emit(\":root\", toDecls(condRoot, transpose));\n emit(\"body\", toDecls(condBody, transpose));\n for (const [sel, sub] of condSubs) {\n emit(sel, toDecls(sub, transpose));\n }\n }\n\n if (Object.values(mediaQueries).some((q) => pureSchemeOf(q) !== null)) {\n rules.push(\":root { color-scheme: light dark }\");\n }\n\n return rules.join(\"\\n\");\n}\n",
|
|
14
|
+
"/// <reference lib=\"dom\" />\n/**\n * In-iframe render core — turns a fully-resolved document into live DOM via @jxsuite/runtime,\n * stamping `data-jx-path` so the editor can map nodes back to document paths across the frame\n * boundary. The parent does the heavy resolution (layout distribution, site-context, `$head`,\n * components, edit-mode transforms) and posts the result; this core stays dependency-light (runtime\n * + reactivity + the pure path-mapping helpers) so the iframe bundle is small.\n *\n * Because the iframe is served from the real project origin, the runtime's verbatim\n * `el.setAttribute(\"src\", \"/images/foo.jpg\")` resolves natively — the fix that motivated the whole\n * migration, with no data: URL rewriting.\n */\n\nimport {\n buildScope,\n defineElement,\n renderNode,\n runScoped,\n setCanvasDelinkAnchors,\n setCanvasViewportTranspose,\n setRootMedia,\n setSkipServerFunctions,\n setStampPropBindings,\n transposeCanvasUnits,\n} from \"@jxsuite/runtime\";\nimport { classifyRenderNode, serializeJxPath } from \"./path-mapping\";\nimport { SITE_STYLE_ID, buildSiteStyleCSS } from \"./site-style-css\";\nimport type { CanvasMode } from \"./iframe-protocol\";\nimport type { JxDocument } from \"@jxsuite/schema/types\";\nimport type { PathMapCtx } from \"./path-mapping\";\n\n/**\n * The retained render context a full render leaves behind so the surgical patcher can re-render an\n * individual subtree (insert/replace/attr edits) with the SAME scope, doc base, path mapping, and\n * mode — making a patched subtree indistinguishable from a full re-render.\n */\nexport interface IframeRenderCtx {\n /** The `$defs` scope built for the document (resolves `$ref`/state/`$media` bindings). */\n defs: Awaited<ReturnType<typeof buildScope>>;\n docBase: string;\n mapperCtx: PathMapCtx;\n mode: CanvasMode;\n}\n\nexport interface RenderHandle {\n /** Stop the render's reactive effect scope (call before re-rendering to avoid effect leaks). */\n dispose: () => void;\n /** Context for surgical subtree re-renders against this generation's scope/mapping. */\n ctx: IframeRenderCtx;\n}\n\ninterface HeadEntry {\n tagName?: string;\n attributes?: Record<string, unknown>;\n textContent?: string;\n}\n\n/**\n * Register the document's `$elements` (components) in this iframe realm so the runtime can render\n * them.\n */\nexport async function registerElements(doc: JxDocument, docBase: string): Promise<void> {\n const elements = (doc as { $elements?: unknown[] }).$elements;\n if (!Array.isArray(elements)) {\n return;\n }\n // Register in parallel, each guarded by a timeout so one slow/hanging component can't block the\n // Whole render (the document still renders; the unresolved tag just stays inert).\n await Promise.all(\n elements.map(async (entry) => {\n const task = (async () => {\n if (typeof entry === \"string\") {\n const specifier =\n entry.startsWith(\"/\") || entry.startsWith(\".\") ? entry : `/node_modules/${entry}`;\n await import(specifier);\n } else if (entry && typeof entry === \"object\" && \"$ref\" in entry) {\n await defineElement(new URL(String((entry as { $ref: string }).$ref), docBase).href);\n } else if (entry && typeof entry === \"object\") {\n await defineElement(entry as JxDocument, docBase);\n }\n })();\n try {\n await Promise.race([\n task,\n new Promise((_, reject) => {\n setTimeout(() => reject(new Error(\"register timeout\")), 5000);\n }),\n ]);\n } catch (error) {\n console.warn(\"iframe canvas: failed to register element\", JSON.stringify(entry), error);\n }\n }),\n );\n}\n\n/** Id of the injected design/edit-mode canvas stylesheet (placeholder affordances). */\nexport const EDIT_PLACEHOLDER_STYLE_ID = \"jx-canvas-edit-css\";\n\n/**\n * The design/edit-mode canvas CSS, ported from the parent editor stylesheet (index.html) with\n * iframe-safe fallbacks — the parent theme variables (--fg-dim/--radius/--accent) don't exist in\n * the iframe document. The placeholder CLASSES are stamped by prepareForEditMode (parent-side\n * resolution + surgical subtree renders), so preview mode never matches these rules — but the sheet\n * is still removed there (belt and braces). The `[contenteditable=\"true\"]:empty` hint is new: it\n * marks the caret's empty paragraph (e.g. right after an Enter split) and advertises the slash\n * menu.\n */\nexport const EDIT_PLACEHOLDER_CSS = `\n.empty-media-placeholder {\n display: inline-block;\n min-width: 120px;\n min-height: 80px;\n border: 1px dashed color-mix(in srgb, #808080 30%, transparent);\n border-radius: 4px;\n background: color-mix(in srgb, #808080 5%, transparent)\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' fill='none'%3E%3Crect x='4' y='8' width='32' height='24' rx='2' stroke='%23808080' stroke-opacity='.4' stroke-width='1.5'/%3E%3Ccircle cx='13' cy='16' r='3' stroke='%23808080' stroke-opacity='.4' stroke-width='1.5'/%3E%3Cpath d='M8 28l8-8 5 5 4-4 7 7' stroke='%23808080' stroke-opacity='.4' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\")\n center / 40px no-repeat;\n color: transparent;\n font-size: 0;\n overflow: hidden;\n}\n.empty-text-placeholder:not([contenteditable])::after {\n content: \"Click here to add text...\";\n color: color-mix(in srgb, #808080 40%, transparent);\n font-style: italic;\n font-size: 13px;\n pointer-events: none;\n}\n.empty-container-placeholder {\n border: 1px dashed color-mix(in srgb, #808080 25%, transparent);\n border-radius: 4px;\n min-height: 32px;\n position: relative;\n}\n.empty-container-placeholder::after {\n content: \"Drag elements here...\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n color: color-mix(in srgb, #808080 40%, transparent);\n font-style: italic;\n font-size: 11px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;\n pointer-events: none;\n white-space: nowrap;\n}\n[contenteditable=\"true\"]:empty::after {\n content: \"Type / for commands\";\n color: color-mix(in srgb, #808080 40%, transparent);\n font-style: italic;\n font-size: 13px;\n pointer-events: none;\n}\n[data-jx-bound-prop]:hover {\n cursor: text;\n outline: 1px dashed color-mix(in srgb, #808080 40%, transparent);\n outline-offset: 1px;\n}\n[data-jx-bound-prop]:empty:not([contenteditable=\"plaintext-only\"]):not([contenteditable=\"true\"])::after {\n content: \"Empty \\\\2014 double-click to edit\";\n color: color-mix(in srgb, #808080 40%, transparent);\n font-style: italic;\n font-size: 13px;\n pointer-events: none;\n}\n`;\n\n/**\n * Keep the design/edit canvas stylesheet in sync with the render mode: present (idempotently) for\n * design/edit, removed otherwise (preview must look live; stylebook specimens must not show \"Click\n * here to add text...\" placeholders).\n */\nexport function syncEditModeCss(doc: Document, mode: CanvasMode): void {\n const existing = doc.head.querySelector(`#${EDIT_PLACEHOLDER_STYLE_ID}`);\n if (mode !== \"design\" && mode !== \"edit\") {\n existing?.remove();\n return;\n }\n if (existing) {\n return;\n }\n const style = doc.createElement(\"style\");\n style.id = EDIT_PLACEHOLDER_STYLE_ID;\n style.textContent = EDIT_PLACEHOLDER_CSS;\n doc.head.append(style);\n}\n\n/** Id of the injected stylebook-mode chrome stylesheet (section/card scaffolding). */\nexport const STYLEBOOK_STYLE_ID = \"jx-canvas-stylebook-css\";\n\n/**\n * Card/section chrome for the stylebook specimen document, ported from the parent editor stylesheet\n * with self-contained fallback values (the parent theme vars don't exist in the iframe).\n * Deliberately OMITS the parent's `.element-card-preview { pointer-events: none }` — the iframe\n * owns hit-testing and needs real hits on the specimens.\n */\nexport const STYLEBOOK_CSS = `\n.sb-root {\n padding: 16px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;\n}\n.sb-section {\n margin-bottom: 24px;\n}\n.sb-label {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: color-mix(in srgb, #808080 70%, transparent);\n padding: 8px 0 4px;\n border-bottom: 1px solid color-mix(in srgb, #808080 25%, transparent);\n margin-bottom: 8px;\n}\n.sb-body {\n padding: 4px 0;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.element-card {\n display: flex;\n flex-direction: column;\n width: 100%;\n border: 1px solid color-mix(in srgb, #808080 30%, transparent);\n border-radius: 4px;\n overflow: hidden;\n margin-bottom: 6px;\n}\n.element-card-preview {\n background: #fff;\n padding: 6px 8px;\n min-height: 32px;\n display: flex;\n align-items: center;\n overflow: hidden;\n}\n.element-card-preview > * {\n max-width: 100%;\n margin: 0;\n padding: 0;\n}\n.element-card-preview > hr {\n width: 100%;\n border: none;\n border-top: 1px solid color-mix(in srgb, #808080 40%, transparent);\n}\n.element-card-preview > input,\n.element-card-preview > textarea,\n.element-card-preview > select,\n.element-card-preview > button,\n.element-card-preview > progress,\n.element-card-preview > meter {\n font-size: 10px;\n}\n.element-card-label {\n padding: 2px 6px;\n font-size: 10px;\n color: color-mix(in srgb, #808080 70%, transparent);\n background: color-mix(in srgb, #808080 8%, transparent);\n text-align: center;\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n}\n.sb-fallback {\n padding: 12px;\n border: 1px dashed color-mix(in srgb, #808080 40%, transparent);\n border-radius: 4px;\n color: color-mix(in srgb, #808080 70%, transparent);\n}\n.sb-empty {\n padding: 48px;\n text-align: center;\n color: color-mix(in srgb, #808080 70%, transparent);\n font-size: 13px;\n}\n`;\n\n/**\n * Keep the stylebook chrome stylesheet in sync with the render mode: present (idempotently) for\n * stylebook, removed otherwise.\n */\nexport function syncStylebookCss(doc: Document, mode: CanvasMode): void {\n const existing = doc.head.querySelector(`#${STYLEBOOK_STYLE_ID}`);\n if (mode !== \"stylebook\") {\n existing?.remove();\n return;\n }\n if (existing) {\n return;\n }\n const style = doc.createElement(\"style\");\n style.id = STYLEBOOK_STYLE_ID;\n style.textContent = STYLEBOOK_CSS;\n doc.head.append(style);\n}\n\n/**\n * Apply the project's site style as a real stylesheet (replace-in-place): custom properties on\n * `:root`, plain properties on `body`, conditional blocks dual-emitted per the forced-scheme\n * contract. A stylesheet — not inline root properties — so `:root[data-color-scheme]` override\n * selectors can win (spec §9.5), and so removed tokens can't linger on reused iframes.\n */\nexport function applySiteStyle(\n siteStyle: Record<string, unknown> | null | undefined,\n mediaQueries: Record<string, string> = {},\n): void {\n const existing = document.head.querySelector(`#${SITE_STYLE_ID}`);\n if (!siteStyle || typeof siteStyle !== \"object\") {\n existing?.remove();\n return;\n }\n const css = buildSiteStyleCSS(siteStyle, mediaQueries, transposeCanvasUnits);\n if (existing) {\n existing.textContent = css;\n return;\n }\n const tag = document.createElement(\"style\");\n tag.id = SITE_STYLE_ID;\n tag.textContent = css;\n document.head.append(tag);\n}\n\n/**\n * Force or clear the color-scheme preview on the iframe's root element (the platform's\n * data-color-scheme contract, spec §9.5). Survives re-renders and patches — renders only replace\n * the container's children, never the root element.\n */\nexport function applyPreviewColorScheme(doc: Document, scheme: \"light\" | \"dark\" | null): void {\n if (scheme) {\n doc.documentElement.dataset.colorScheme = scheme;\n } else {\n delete doc.documentElement.dataset.colorScheme;\n }\n}\n\n/** Inject the document's `$head` (link/meta/script) into the iframe's <head>, de-duped by href/src. */\nexport function injectHead(doc: JxDocument): void {\n const head = (doc as { $head?: HeadEntry[] }).$head;\n if (!Array.isArray(head)) {\n return;\n }\n for (const entry of head) {\n if (!entry?.tagName) {\n continue;\n }\n const tag = String(entry.tagName).toLowerCase();\n // Skip inline scripts in design/edit; they're for the live page, not the editor canvas.\n if (tag === \"script\" && !entry.attributes?.src) {\n continue;\n }\n const attrs = { ...entry.attributes } as Record<string, unknown>;\n for (const key of [\"href\", \"src\"]) {\n const val = attrs[key];\n if (\n typeof val === \"string\" &&\n !val.startsWith(\"/\") &&\n !val.startsWith(\".\") &&\n !val.startsWith(\"http\")\n ) {\n attrs[key] = `/node_modules/${val}`;\n }\n }\n const sel = `${tag}${attrs.href ? `[href=\"${String(attrs.href)}\"]` : \"\"}${attrs.src ? `[src=\"${String(attrs.src)}\"]` : \"\"}`;\n if (sel !== tag && document.head.querySelector(sel)) {\n continue;\n }\n const el = document.createElement(tag);\n for (const [k, v] of Object.entries(attrs)) {\n el.setAttribute(k, String(v));\n }\n if (entry.textContent) {\n el.textContent = entry.textContent;\n }\n document.head.append(el);\n }\n}\n\n/** Build the `onNodeCreated` hook that stamps `data-jx-path` / `data-jx-layout` on rendered nodes. */\nexport function makeStamper(ctx: PathMapCtx) {\n return (created: Node, path: (string | number)[], def: unknown) => {\n if (!(created instanceof HTMLElement)) {\n return;\n }\n // The OPENED document's root can itself be a component definition (`tagName: \"eer-cta\"`). If\n // That tag is already registered in this realm (a previously-rendered page instantiated it —\n // Hosts persist across tab switches), the upgrade's connectedCallback would wipe the stamped\n // Editable tree and re-render a live instance with default state. Mark the root so the\n // Runtime's element class leaves it alone (see defineElement's connectedCallback guard).\n if (path.length === 0 && (def as { tagName?: string } | null)?.tagName?.includes(\"-\")) {\n created.dataset.jxDefinitionRoot = \"\";\n }\n const classified = classifyRenderNode(path, def, ctx);\n if (classified.kind === \"layout\") {\n created.dataset.jxLayout = \"\";\n return;\n }\n created.dataset.jxPath = serializeJxPath(classified.path);\n };\n}\n\n/**\n * Recover canvas images that fail their first load. Registered components create their <img> in\n * connectedCallback AFTER async registration, so on a cold first render those requests can fire\n * before the loopback server is warm and 404 — which the browser then caches as a\n * permanently-broken <img>. This re-fires a failed request a few times with backoff (exactly what\n * the manual canvas re-render does), recovering the image without a full re-render. Bounded\n * per-image so a genuinely missing file settles broken. Intentional data: placeholders never error,\n * so they're untouched. Returns a teardown that removes the listener. <img> error events don't\n * bubble, so listen in CAPTURE.\n */\nexport function installCanvasImageRetry(root: HTMLElement, maxAttempts = 3): () => void {\n const attempts = new WeakMap<HTMLImageElement, number>();\n const onError = (event: Event): void => {\n const img = event.target;\n if (!(img instanceof HTMLImageElement)) {\n return;\n }\n // A data: URL never errors (and an empty src isn't a real request) — nothing to retry.\n if (!img.src || img.src.startsWith(\"data:\")) {\n return;\n }\n const attempt = (attempts.get(img) ?? 0) + 1;\n if (attempt > maxAttempts) {\n // Bounded: a genuinely missing file settles broken instead of retrying forever.\n return;\n }\n attempts.set(img, attempt);\n setTimeout(() => {\n // Re-fire the request by clearing then re-assigning the same src (mirrors the manual re-render).\n const s = img.src;\n img.src = \"\";\n img.src = s;\n }, 150 * attempt);\n };\n root.addEventListener(\"error\", onError, true);\n return () => root.removeEventListener(\"error\", onError, true);\n}\n\n/**\n * Render a resolved document into `container`, replacing its current children. `mode` controls\n * whether server functions run (live in `preview`; skipped in `design`/`edit`). Returns a handle\n * whose `dispose()` stops the reactive scope.\n */\nexport async function renderResolvedDocument(opts: {\n container: HTMLElement;\n doc: JxDocument;\n docBase: string;\n mode: CanvasMode;\n mapperCtx: PathMapCtx;\n siteStyle?: Record<string, unknown> | null;\n}): Promise<RenderHandle> {\n setSkipServerFunctions(opts.mode !== \"preview\");\n // Transpose viewport units (vh/vw/…) → container units (cqh/cqw/…) so they resolve against the\n // Canvas's fixed-size query container (canvas.html) instead of the iframe element. That decouples\n // Them from the iframe height, letting the host size the iframe to its content without `100vh`\n // Sections feeding back into an ever-growing height. Set every render (the iframe always wants it).\n setCanvasViewportTranspose(true);\n // De-link `<a href>` in design/edit so clicks select the anchor instead of navigating the iframe;\n // Preview keeps real links live (mirrors the server-function gate above).\n setCanvasDelinkAnchors(opts.mode !== \"preview\");\n // Stamp `data-jx-bound-prop` on component-internal invertible text bindings in design/edit only —\n // The inline prop-edit affordance. Set every render so a preview/stylebook render in the same\n // Iframe clears it (page-level templates are inert in design/edit via prepareForEditMode, so only\n // Component internals get stamped).\n setStampPropBindings(opts.mode === \"design\" || opts.mode === \"edit\");\n applySiteStyle(opts.siteStyle, (opts.doc as { $media?: Record<string, string> }).$media ?? {});\n injectHead(opts.doc);\n syncEditModeCss(opts.container.ownerDocument, opts.mode);\n syncStylebookCss(opts.container.ownerDocument, opts.mode);\n // Seed the runtime's root $media before buildScope so a COMPONENT with its own `@--name` blocks\n // But no own `$media` resolves the breakpoint to its real query (the iframe path calls buildScope\n // Directly and never the runtime's `Jx()` entry, which is the only other place _rootMedia is set).\n // Set it every render (even to `{}`) so a stale map from a previous document cannot leak.\n setRootMedia((opts.doc as { $media?: Record<string, string> }).$media ?? {});\n // Register components BEFORE renderNode. The runtime only applies a custom element's `$props` when\n // That element is ALREADY defined (renderNode gates renderCustomElementWithProps on a truthy\n // `customElements.get(tagName)`); if we register after render, every component paints with its\n // Props dropped — it upgrades in place to the empty default state (<img src=\"\">) — which was the\n // Empty-render regression. `registerElements` wraps each element in a per-element 5s Promise.race\n // Timeout and swallows failures internally, so awaiting it can't block the render indefinitely on\n // A slow/hanging component (the document still renders; an unresolved tag just stays inert).\n await registerElements(opts.doc, opts.docBase);\n const $defs = await buildScope(opts.doc, {}, opts.docBase);\n const onNodeCreated = makeStamper(opts.mapperCtx);\n // The scope MUST be the runtime's (runScoped): renderNode creates its binding effects with the\n // Runtime's copy of @vue/reactivity, and scope collection is per module instance — a studio\n // EffectScope here collects nothing and dispose() would leak every effect of this render.\n const { result: el, stop } = runScoped(\n () => renderNode(opts.doc, $defs, { _path: [], onNodeCreated }) as HTMLElement,\n );\n opts.container.replaceChildren(el);\n return {\n ctx: { defs: $defs, docBase: opts.docBase, mapperCtx: opts.mapperCtx, mode: opts.mode },\n dispose: stop,\n };\n}\n",
|
|
14
15
|
"/// <reference lib=\"dom\" />\n/**\n * Geometry read funnel — the single place the studio reads element bounds and does point hit-tests.\n *\n * Centralizing these reads is a seam for the iframe-canvas migration: today every call delegates\n * straight to the DOM, but routing them through one module lets later phases redirect\n * CANVAS-element geometry to rects posted out of the iframe (which the parent can't measure\n * directly) without touching dozens of call sites. A test (`geometry.test.ts`) asserts no raw\n * `getBoundingClientRect`/`elementFromPoint`/`elementsFromPoint` calls exist elsewhere in `src`.\n */\n\n/** Bounding rect of an element, in viewport coordinates. */\nexport function rectOf(el: Element): DOMRect {\n return el.getBoundingClientRect();\n}\n\n/**\n * Bounding rect of a Range, in viewport coordinates. Lives here (the one allowlisted home for\n * `getBoundingClientRect`) so the `geometry.test.ts` textual guard passes — the iframe-side\n * selection snapshot funnels its caret/selection geometry through this, never calling\n * `range.getBoundingClientRect()` directly.\n */\nexport function rectOfRange(r: Range): DOMRect {\n return r.getBoundingClientRect();\n}\n\n/** Topmost element at a viewport point, in `root` (defaults to the global document). */\nexport function elementAtPoint(\n x: number,\n y: number,\n root: Document | ShadowRoot = document,\n): Element | null {\n return root.elementFromPoint(x, y);\n}\n\n/** All elements at a viewport point, front-to-back, in `root` (defaults to the global document). */\nexport function elementsAtPoint(\n x: number,\n y: number,\n root: Document | ShadowRoot = document,\n): Element[] {\n return root.elementsFromPoint(x, y);\n}\n",
|
|
15
16
|
"/// <reference lib=\"dom\" />\n/**\n * State.js — Builder state model and mutation API\n *\n * All state changes go through named mutation functions. State is immutable — every mutation\n * produces a new state object. History is a linear stack of { document, selection } snapshots.\n *\n * Path convention: [] = root document ['children', 0] = first child ['children', 0, 'children', 2]\n * = third child of first child\n */\n\nimport type { ProjectState } from \"./types\";\nimport { isRef } from \"@jxsuite/schema/guards\";\nimport type { JxMutableNode } from \"@jxsuite/schema/types\";\n\nexport type JxPath = (string | number)[];\n\ninterface HistorySnapshot {\n document: JxMutableNode;\n selection: JxPath | null;\n}\n\nexport interface StudioState {\n document: JxMutableNode;\n selection: JxPath | null;\n hover: JxPath | null;\n history: HistorySnapshot[];\n historyIndex: number;\n dirty: boolean;\n fileHandle: FileSystemFileHandle | null;\n documentPath: string | null;\n documentStack: StudioStackFrame[];\n handlersSource: string | null;\n mode: string;\n content: { frontmatter: Record<string, unknown> };\n ui: Record<string, unknown>;\n canvas: {\n status: string;\n scope: Record<string, unknown> | null;\n error: string | null;\n };\n}\n\ninterface StudioStackFrame {\n document: JxMutableNode;\n selection: JxPath | null;\n fileHandle: FileSystemFileHandle | null;\n documentPath: string | null;\n dirty: boolean;\n history: HistorySnapshot[];\n historyIndex: number;\n mode: string;\n}\n\n// ─── Path utilities ───────────────────────────────────────────────────────────\n\n/**\n * Walk the document tree and return the node at the given path.\n *\n * @param {JxMutableNode} doc\n * @param {JxPath} path\n * @returns {JxMutableNode}\n */\nexport function getNodeAtPath(doc: JxMutableNode, path: JxPath) {\n let node = doc;\n for (const key of path) {\n if (node == null) {\n return undefined as unknown as JxMutableNode;\n }\n // Paths address nodes by construction; non-node leaves surface as undefined above.\n node = node[key] as JxMutableNode;\n }\n return node;\n}\n\n/**\n * Shallow-clone every node along `path` from root to target, leaving non-path subtrees as shared\n * references. Returns the new root and the mutable target node at the end of the path.\n *\n * Used by mutation functions for structural-sharing history: the old root becomes an immutable\n * snapshot (shared subtrees are never mutated), and the new root is the live document.\n */\nexport function cloneAlongPath(\n doc: JxMutableNode,\n path: JxPath,\n): { root: JxMutableNode; target: JxMutableNode } {\n const root = Array.isArray(doc) ? [...doc] : { ...doc };\n let node: Record<string | number, unknown> = root as Record<string | number, unknown>;\n\n for (const key of path) {\n const child = node[key];\n if (child == null) {\n return { root: root as JxMutableNode, target: node as JxMutableNode };\n }\n const cloned = Array.isArray(child)\n ? [...(child as unknown[])]\n : { ...(child as Record<string, unknown>) };\n node[key] = cloned;\n node = cloned as Record<string | number, unknown>;\n }\n\n return { root: root as JxMutableNode, target: node as JxMutableNode };\n}\n\n/**\n * The node's children when they are a static array (the edit-mode invariant); an empty array for\n * mapped-array or absent children.\n *\n * @param {JxMutableNode | null | undefined} node\n * @returns {(JxMutableNode | string)[]}\n */\nexport function childList(node: JxMutableNode | null | undefined): (JxMutableNode | string)[] {\n return Array.isArray(node?.children) ? node.children : [];\n}\n\n/**\n * Normalize a document in place to the canonical array-member form: a legacy whole-children\n * repeater (`children: { $prototype: \"Array\", … }`) becomes a single member of a children array\n * (`children: [{ $prototype: \"Array\", … }]`). Recurses through children, repeater templates, and\n * `$switch` cases. Runs once when a document is loaded into a tab so every in-studio doc — and its\n * history checkpoints — uses the member form before any mutation.\n *\n * @param {unknown} node\n * @returns {unknown} The same node (mutated)\n */\nexport function normalizeArrayChildren(node: unknown): unknown {\n if (!node || typeof node !== \"object\") {\n return node;\n }\n if (Array.isArray(node)) {\n for (const child of node) {\n normalizeArrayChildren(child);\n }\n return node;\n }\n const n = node as JxMutableNode;\n const { children } = n;\n if (\n children &&\n typeof children === \"object\" &&\n !Array.isArray(children) &&\n (children as JxMutableNode).$prototype === \"Array\"\n ) {\n n.children = [children as JxMutableNode];\n }\n if (Array.isArray(n.children)) {\n for (const child of n.children) {\n normalizeArrayChildren(child);\n }\n }\n if (n.$prototype === \"Array\" && n.map && typeof n.map === \"object\") {\n normalizeArrayChildren(n.map);\n }\n if (n.cases && typeof n.cases === \"object\") {\n for (const caseDef of Object.values(n.cases)) {\n normalizeArrayChildren(caseDef);\n }\n }\n return node;\n}\n\n/**\n * Return the path to the parent element (strips trailing 'children' + index).\n *\n * @param {JxPath} path\n * @returns {JxPath | null}\n */\nexport function parentElementPath(path: JxPath) {\n return path.length >= 2 ? path.slice(0, -2) : null;\n}\n\n/**\n * Return the child index (last segment of the path).\n *\n * @param {JxPath} path\n * @returns {string | number}\n */\nexport function childIndex(path: JxPath) {\n return path.at(-1);\n}\n\n/**\n * Serialize a path to a string key for Map lookups.\n *\n * @param {JxPath} path\n * @returns {string}\n */\nexport function pathKey(path: JxPath) {\n return path.join(\"/\");\n}\n\n/**\n * Compare two paths for equality.\n *\n * @param {JxPath | null} a\n * @param {JxPath | null} b\n * @returns {boolean}\n */\nexport function pathsEqual(a: JxPath | null, b: JxPath | null) {\n if (a === b) {\n return true;\n }\n if (!a || !b || a.length !== b.length) {\n return false;\n }\n return a.every((v, i) => v === b[i]);\n}\n\n/**\n * Returns true if `path` is an ancestor of (or equal to) `descendant`.\n *\n * @param {JxPath} path\n * @param {JxPath} descendant\n * @returns {boolean}\n */\nexport function isAncestor(path: JxPath, descendant: JxPath) {\n if (path.length > descendant.length) {\n return false;\n }\n return path.every((v, i) => v === descendant[i]);\n}\n\n// ─── Tree flattening (for layer panel) ────────────────────────────────────────\n\n/**\n * Flatten a Jx document into an array of { node, path, depth, nodeType } rows. Walks static\n * children arrays, $map templates, and $switch cases.\n *\n * NodeType: 'element' (default) | 'map' | 'case' | 'case-ref'\n *\n * @param {JxMutableNode | string | number | boolean} doc\n * @param {JxPath} [path]\n * @param {number} [depth]\n * @returns {{\n * node: JxMutableNode | string | number | boolean;\n * path: JxPath;\n * depth: number;\n * nodeType: string;\n * }[]}\n */\nexport interface FlatRow {\n node: JxMutableNode | string | number | boolean;\n path: JxPath;\n depth: number;\n nodeType: string;\n}\n\nexport function flattenTree(\n doc: JxMutableNode | string | number | boolean,\n path: JxPath = [],\n depth = 0,\n): FlatRow[] {\n // Text node children: bare primitives get a \"text\" row\n if (typeof doc === \"string\" || typeof doc === \"number\" || typeof doc === \"boolean\") {\n return [{ depth, node: doc, nodeType: \"text\", path }];\n }\n\n // Array pseudo-element (repeater): a first-class node at its own path. Emit the \"map\" row, then\n // Recurse into its single template at `[...path, \"map\"]`. This is reached both when the array is\n // A member of a children array (path `[…, \"children\", i]`) and the legacy whole-children form\n // (path `[…, \"children\"]`).\n if ((doc as JxMutableNode).$prototype === \"Array\") {\n const rows: FlatRow[] = [{ depth, node: doc, nodeType: \"map\", path }];\n const mapDef = (doc as JxMutableNode).map;\n if (mapDef && typeof mapDef === \"object\") {\n rows.push(...flattenTree(mapDef as JxMutableNode, [...path, \"map\"], depth + 1));\n }\n return rows;\n }\n\n const rows: FlatRow[] = [{ depth, node: doc, nodeType: \"element\", path }];\n\n // Custom component instances without user-authored children are atomic in the layer tree\n if (doc.$props && (doc.tagName || \"\").includes(\"-\") && !Array.isArray(doc.children)) {\n return rows;\n }\n\n const { children } = doc;\n\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n const childPath = [...path, \"children\", i];\n rows.push(...flattenTree(children[i]!, childPath, depth + 1));\n }\n } else if (\n children &&\n typeof children === \"object\" &&\n (children as JxMutableNode).$prototype === \"Array\"\n ) {\n // Legacy whole-children repeater: the array occupies the children slot itself.\n rows.push(...flattenTree(children as JxMutableNode, [...path, \"children\"], depth + 1));\n }\n\n // $switch — emit each case as a virtual child\n if (doc.$switch && doc.cases && typeof doc.cases === \"object\") {\n for (const [caseName, caseDef] of Object.entries(doc.cases)) {\n const casePath = [...path, \"cases\", caseName];\n if (caseDef && typeof caseDef === \"object\" && (caseDef as JxMutableNode).$ref) {\n rows.push({\n depth: depth + 1,\n node: caseDef as JxMutableNode,\n nodeType: \"case-ref\",\n path: casePath,\n });\n } else if (caseDef && typeof caseDef === \"object\") {\n rows.push({\n depth: depth + 1,\n node: caseDef as JxMutableNode,\n nodeType: \"case\",\n path: casePath,\n });\n // Recurse into case children (skip the case node itself — already emitted)\n const caseChildren = flattenTree(caseDef as JxMutableNode, casePath, depth + 2);\n rows.push(...caseChildren.slice(1));\n }\n }\n }\n\n return rows;\n}\n\n/**\n * Get a display label for a node (for layers + overlays).\n *\n * @param {JxMutableNode | null} node\n * @returns {string}\n */\nexport function nodeLabel(node: JxMutableNode | null) {\n if (!node) {\n return \"?\";\n }\n // $map container (Repeater)\n if (node.$prototype === \"Array\") {\n const { items } = node;\n const ref = (isRef(items) ? items.$ref : undefined) || \"items\";\n return `Repeater → ${ref}`;\n }\n if (node.$title) {\n return node.$title;\n }\n if (node.$id) {\n return node.$id;\n }\n if (node.tagName === \"slot\") {\n const name = node.attributes?.name;\n return typeof name === \"string\" && name.trim() ? `slot: ${name.trim()}` : \"slot\";\n }\n const tag = node.tagName ?? \"div\";\n const suffix = node.$switch ? \" ⇆\" : \"\";\n if (typeof node.textContent === \"string\" && node.textContent.length > 0) {\n return `${tag} — ${node.textContent.slice(0, 24)}${suffix}`;\n }\n return tag + suffix;\n}\n\n// ─── State factory ────────────────────────────────────────────────────────────\n\n/**\n * @param {JxMutableNode} doc\n * @returns {StudioState}\n */\nexport function createState(doc: JxMutableNode): StudioState {\n const initial = { document: doc, selection: null };\n return {\n canvas: {\n error: null, // Error message on failure\n scope: null, // $defs scope from runtime buildScope\n status: \"idle\", // \"idle\" | \"loading\" | \"ready\" | \"error\"\n },\n content: { frontmatter: {} }, // Frontmatter metadata for .md files\n dirty: false,\n document: doc,\n documentPath: null, // Root-relative path, e.g. \"examples/markdown/blog.json\"\n documentStack: [], // Frames for component navigation\n fileHandle: null,\n handlersSource: null,\n history: [initial],\n historyIndex: 0,\n hover: null,\n mode: \"component\", // 'component' | 'content'\n selection: null,\n ui: {\n activeMedia: null, // '--md' | null (base) — focused canvas/breakpoint\n activeSelector: null, // ':hover' | '.child' | null (base) — nested selector context\n editingFunction: null, // Null | { type: 'def', defName } | { type: 'event', path, eventKey }\n featureToggles: {}, // { '--dark': true } — non-size media toggles\n gitBranches: null, // { current, branches: [] }\n gitCommitMessage: \"\", // Commit message input\n gitDiffState: null,\n gitError: null, // Error message string\n gitLoading: false, // Loading indicator during async ops\n gitStatus: null, // { branch, ahead, behind, files: [] }\n inspectorSections: {}, // { identity: true, ... } — properties panel section open/closed state\n pendingInlineEdit: null, // Null | { path, mediaName } — deferred inline edit awaiting canvas readiness\n rightTab: \"properties\", // 'properties' | 'events' | 'style'\n settingsTab: \"stylebook\", // \"stylebook\" | \"definitions\" | \"contentTypes\"\n styleFilter: \"\", // Free-text filter for CSS property names\n styleFilterActive: false, // True = show only props with values set\n styleSections: {}, // { layout: true, ... } — section open/closed state\n styleShorthands: {}, // { padding: true, ... } — shorthand expand/collapse state\n stylebookCustomizedOnly: false, // Show only customized elements\n stylebookFilter: \"\", // Search filter text\n stylebookSelection: null, // Tag name string, e.g. \"h1\"\n stylebookTab: \"elements\", // \"elements\" | \"variables\"\n zoom: 1,\n },\n };\n}\n\n// ─── Doc/Session slice helpers ───────────────────────────────────────────────\n\n/**\n * Compose a flat StudioState from separate doc and session slices.\n *\n * @param {Partial<StudioState>} doc\n * @param {Partial<StudioState>} session\n * @returns {StudioState}\n */\nexport function toFlat(doc: Partial<StudioState>, session: Partial<StudioState>) {\n return { ...doc, ...session } as StudioState;\n}\n\n/**\n * Decompose a flat StudioState into doc and session slices.\n *\n * @param {StudioState} S\n * @returns {{ doc: Partial<StudioState>; session: Partial<StudioState> }}\n */\nexport function fromFlat(S: StudioState) {\n const {\n document,\n dirty,\n fileHandle,\n documentPath,\n documentStack,\n handlersSource,\n mode,\n content,\n history,\n historyIndex,\n selection,\n hover,\n ui,\n canvas,\n } = S;\n return {\n doc: {\n content,\n dirty,\n document,\n documentPath,\n documentStack,\n fileHandle,\n handlersSource,\n history,\n historyIndex,\n mode,\n },\n session: { canvas, hover, selection, ui },\n };\n}\n\n// ─── Project state (persists across document switches) ────────────────────────\n//\n// Shape: { root, name, projectRoot, isSiteProject, projectConfig,\n// Dirs: Map<string, DirEntry[]>, expanded: Set<string>,\n// SelectedPath: string|null, searchQuery: string }\n// DirEntry: { name, path, type: \"file\"|\"directory\", size, modified }\n\nexport let projectState: ProjectState | null = null;\n\n/** @param {ProjectState | null} ps */\nexport function setProjectState(ps: ProjectState | null) {\n projectState = ps;\n}\n\n/**\n * Return the current project state, asserting it is non-null. Only call when a project is known to\n * be loaded.\n *\n * @returns {ProjectState}\n */\nexport function requireProjectState() {\n return projectState as ProjectState;\n}\n\n// ─── Frontmatter mutation ───────────────────────────────────────────────────\n\n/**\n * Update a frontmatter field. Does not use applyMutation because frontmatter lives in S.content,\n * not S.document.\n *\n * @param {StudioState} state\n * @param {string} field\n * @param {unknown} value\n * @returns {StudioState}\n */\nexport function updateFrontmatter(state: StudioState, field: string, value: unknown) {\n const fm = { ...state.content?.frontmatter };\n if (value === undefined || value === null || value === \"\") {\n delete fm[field];\n } else {\n fm[field] = value;\n }\n return {\n ...state,\n content: { ...state.content, frontmatter: fm },\n dirty: true,\n };\n}\n\n// ─── Selection / hover ────────────────────────────────────────────────────────\n\n/**\n * @param {StudioState} state\n * @param {JxPath | null} path\n * @returns {StudioState}\n */\nexport function selectNode(state: StudioState, path: JxPath | null) {\n return { ...state, selection: path };\n}\n\n/**\n * @param {StudioState} state\n * @param {JxPath | null} path\n * @returns {StudioState}\n */\nexport function hoverNode(state: StudioState, path: JxPath | null) {\n return { ...state, hover: path };\n}\n\n// ─── Document stack (component navigation) ──────────────────────────────────\n\n/**\n * Push current document onto the stack and switch to editing a new document.\n *\n * @param {StudioState} state\n * @param {JxMutableNode} doc\n * @param {string | null} documentPath\n * @returns {StudioState}\n */\nexport function pushDocument(state: StudioState, doc: JxMutableNode, documentPath: string | null) {\n const frame = {\n dirty: state.dirty,\n document: state.document,\n documentPath: state.documentPath,\n fileHandle: state.fileHandle,\n history: state.history,\n historyIndex: state.historyIndex,\n mode: state.mode,\n selection: state.selection,\n };\n const newState = createState(doc);\n newState.documentStack = [...(state.documentStack || []), frame];\n newState.documentPath = documentPath;\n newState.ui = { ...state.ui, activeMedia: null, activeSelector: null };\n return newState;\n}\n\n/**\n * Pop the document stack and return to the previous document.\n *\n * @param {StudioState} state\n * @returns {StudioState}\n */\nexport function popDocument(state: StudioState) {\n if (!state.documentStack || state.documentStack.length === 0) {\n return state;\n }\n const stack = [...state.documentStack];\n const frame = stack.pop();\n return {\n ...state,\n ...frame,\n documentStack: stack,\n ui: { ...state.ui },\n };\n}\n",
|
|
16
17
|
"/// <reference lib=\"dom\" />\n/**\n * In-iframe insertion-zone math (cross-origin \"+\" affordance). Runs INSIDE the canvas iframe, in\n * the iframe's own realm/coords, and is the structural cousin of {@link file://./iframe-drop.ts}:\n * where iframe-drop resolves a DRAG's placement, this resolves where a fresh element could be\n * INSERTED at the gaps around the hovered node, so the parent can float a clickable \"+\" there.\n *\n * It SALVAGES the pure edge/index math from the orphaned parent-realm\n * {@link file://../editor/insertion-helper.ts} (empty-container detection, row-vs-column layout via\n * getComputedStyle(parent), {@link EDGE_THRESHOLD}, leading/trailing edge → insert index) but\n * re-expresses it against IFRAME-realm rects ({@link rectOf}, stubbable) and the iframe's shadow\n * doc, and reproduces the parent's `parentElementPath`/`childIndex` resolution so the posted\n * `insertParentPath` + `index` feed the unchanged `mutateInsertNode(t, parentPath, index, def)`.\n *\n * PURE: it reads element rects through {@link rectOf} and `data-jx-path`, so it is unit-proven\n * against fake rects. The DOM adapter that resolves the hovered element from a point is CDP-only\n * (happy-dom's `elementFromPoint` returns null) and lives in iframe-interaction.\n */\n\nimport { parseJxPath } from \"./path-mapping\";\nimport { rectOf } from \"../utils/geometry\";\nimport { childIndex, parentElementPath } from \"../state\";\nimport type { InsertZone, SerializableRect } from \"./iframe-protocol\";\nimport type { JxMutableNode } from \"@jxsuite/schema/types\";\nimport type { JxPath } from \"../state\";\n\n/** Edge detection threshold in pixels (SALVAGED from insertion-helper.ts). */\nexport const EDGE_THRESHOLD = 14;\n\n/** The CSS class the renderer stamps on an empty container's placeholder (SALVAGED). */\nconst EMPTY_CONTAINER_CLASS = \"empty-container-placeholder\";\n\n/** Read an element's iframe-viewport rect as a {@link SerializableRect}. */\nfunction rectFor(el: Element): SerializableRect {\n const r = rectOf(el);\n return { height: r.height, width: r.width, x: r.x, y: r.y };\n}\n\n/**\n * Whether the hovered element's parent lays its children out in a ROW (so leading/trailing edges\n * are LEFT/RIGHT rather than TOP/BOTTOM). Ports the legacy direction test: flex `row*` or grid\n * `grid-auto-flow: column*`. Pure-ish — reads getComputedStyle, which the unit test stubs.\n */\nfunction isRowLayout(parent: HTMLElement): boolean {\n const style = getComputedStyle(parent);\n const { display } = style;\n const isFlex = display === \"flex\" || display === \"inline-flex\";\n const isGrid = display === \"grid\" || display === \"inline-grid\";\n return (\n (isFlex && style.flexDirection.startsWith(\"row\")) ||\n (isGrid && (style.gridAutoFlow ?? \"\").startsWith(\"column\"))\n );\n}\n\n/**\n * Compute the candidate insertion \"+\" zone(s) for a cursor over `targetEl`, PURE against\n * iframe-realm rects.\n *\n * `cursor` is in iframe-viewport coords (same space as {@link rectOf}); `shadowDoc` is the iframe's\n * non-reactive shadow doc (carried for parity with iframe-drop — the structural decision here needs\n * only the stamped path, but keeping the signature aligned lets the entry thread the same\n * accessor).\n *\n * Branching (SALVAGED from insertion-helper.ts onMouseMove):\n *\n * - Empty container (`empty-container-placeholder` class) → ONE centered zone that inserts as the\n * container's first child (`insertParentPath = targetPath`, `index = 0`).\n * - Otherwise resolve the parent's layout (row/grid-column vs column); when the cursor is within\n * {@link EDGE_THRESHOLD} of the leading edge → a sibling-before zone (`index = childIndex`); of\n * the trailing edge → a sibling-after zone (`index = childIndex + 1`); mid-element → null.\n *\n * Returns null for the root/degenerate cases (no addressable parent to insert a sibling into) and\n * when the cursor is not near an edge.\n */\nexport function computeInsertZones(\n targetEl: HTMLElement,\n cursor: { x: number; y: number },\n shadowDoc: JxMutableNode,\n): InsertZone[] | null {\n void shadowDoc;\n const serialized = targetEl.dataset?.jxPath;\n if (serialized == null) {\n return null;\n }\n const targetPath = parseJxPath(serialized) as JxPath;\n\n // Empty container: one centered \"+\" that inserts as the container's first child.\n if (targetEl.classList.contains(EMPTY_CONTAINER_CLASS)) {\n return [{ edge: \"center\", index: 0, insertParentPath: targetPath, rect: rectFor(targetEl) }];\n }\n\n // A sibling insert needs an addressable parent element path; the root (path.length < 2) has none.\n const parentPath = parentElementPath(targetPath);\n if (!parentPath) {\n return null;\n }\n const parent = targetEl.parentElement;\n if (!parent) {\n return null;\n }\n const childIdx = childIndex(targetPath);\n if (typeof childIdx !== \"number\") {\n return null;\n }\n\n const rect = rectFor(targetEl);\n if (isRowLayout(parent)) {\n const relX = cursor.x - rect.x;\n if (relX < EDGE_THRESHOLD) {\n return [edgeZone(\"left\", parentPath, childIdx, leadingEdgeRect(rect, true))];\n }\n if (rect.width - relX < EDGE_THRESHOLD) {\n return [edgeZone(\"right\", parentPath, childIdx + 1, trailingEdgeRect(rect, true))];\n }\n return null;\n }\n\n const relY = cursor.y - rect.y;\n if (relY < EDGE_THRESHOLD) {\n return [edgeZone(\"top\", parentPath, childIdx, leadingEdgeRect(rect, false))];\n }\n if (rect.height - relY < EDGE_THRESHOLD) {\n return [edgeZone(\"bottom\", parentPath, childIdx + 1, trailingEdgeRect(rect, false))];\n }\n return null;\n}\n\n/** Build a sibling-edge zone. */\nfunction edgeZone(\n edge: InsertZone[\"edge\"],\n insertParentPath: JxPath,\n index: number,\n rect: SerializableRect,\n): InsertZone {\n return { edge, index, insertParentPath, rect };\n}\n\n/**\n * A zero-thickness anchor rect at the target's LEADING edge — top edge (column) or left edge (row).\n * The parent centers the \"+\" on this box, so it collapses the relevant dimension to the edge.\n */\nfunction leadingEdgeRect(rect: SerializableRect, row: boolean): SerializableRect {\n return row\n ? { height: rect.height, width: 0, x: rect.x, y: rect.y }\n : { height: 0, width: rect.width, x: rect.x, y: rect.y };\n}\n\n/** A zero-thickness anchor rect at the target's TRAILING edge — bottom edge or right edge. */\nfunction trailingEdgeRect(rect: SerializableRect, row: boolean): SerializableRect {\n return row\n ? { height: rect.height, width: 0, x: rect.x + rect.width, y: rect.y }\n : { height: 0, width: rect.width, x: rect.x, y: rect.y + rect.height };\n}\n\n/**\n * A stable key for a zone set, so the iframe only re-posts when the affordance actually changes\n * (mirrors the hover de-dupe in startInteraction). Null/empty collapse to a single sentinel.\n */\nexport function insertZonesKey(zones: InsertZone[] | null): string {\n if (!zones || zones.length === 0) {\n return \"none\";\n }\n return zones.map((z) => `${z.edge}:${z.insertParentPath.join(\"/\")}:${z.index}`).join(\"|\");\n}\n",
|
|
@@ -30,9 +31,9 @@
|
|
|
30
31
|
"/**\n * Display formatting for live expression-preview values, shared by the parent-side snapshot\n * evaluator (services/preview-eval.ts) and the in-iframe live evaluator (canvas/iframe-eval.ts) so\n * both realms badge values with identical truncation rules. Dependency-light and DOM-free (the\n * strip-events pattern) so importing it never grows the iframe bundle.\n */\n\nconst MAX_BADGE_LENGTH = 48;\n\n/** Format a runtime value as a short badge string. */\nexport function formatPreviewValue(value?: unknown): string {\n if (value === undefined) {\n return \"undefined\";\n }\n let text: string;\n try {\n text =\n typeof value === \"string\" ? JSON.stringify(value) : (JSON.stringify(value) ?? \"undefined\");\n } catch {\n text = String(value);\n }\n if (text.length > MAX_BADGE_LENGTH) {\n text = `${text.slice(0, MAX_BADGE_LENGTH - 1)}…`;\n }\n return text;\n}\n",
|
|
31
32
|
"/**\n * In-iframe live expression evaluation (M6) — answers the parent's `evalExpr` requests against the\n * LIVE resolved scope of the current render (buildScope's `$defs`), so previews see real repeater\n * items, real `window#/` globals, and uncapped data values instead of the parent's serialized\n * snapshot.\n *\n * Safety: every expression evaluates against a fresh plain-data clone of the scope (a per-key JSON\n * round-trip, the serialize-scope idiom — it reads through the runtime's reactive proxies), so\n * mutating operators write into the clone and never touch the live canvas. Named-formula callables\n * (pure `$expression` entries with parameters) are kept BY REFERENCE so `call` nodes work; every\n * other function (side-effecting handlers, server fns) is dropped so a preview can never run one.\n */\n\nimport { evaluateExpression } from \"@jxsuite/runtime/expression\";\nimport { resolveRef } from \"@jxsuite/runtime\";\nimport { formatPreviewValue } from \"../utils/preview-format\";\n\nimport type { ExpressionNode } from \"@jxsuite/runtime/expression\";\nimport type { EvalExprResult } from \"./iframe-protocol\";\n\ntype Scope = Record<string, unknown>;\n\n/** Whether the raw (document) state entry is a pure named-formula (`$expression` + parameters). */\nfunction isNamedFormulaEntry(entry: unknown): boolean {\n return (\n typeof entry === \"object\" &&\n entry !== null &&\n !Array.isArray(entry) &&\n \"$expression\" in entry &&\n Array.isArray((entry as { parameters?: unknown }).parameters)\n );\n}\n\n/**\n * Clone the live `$defs` scope into a plain object safe to evaluate (and mutate) against. Data\n * values are JSON round-tripped per key (reads through reactive proxies, unwraps top-level refs);\n * functions survive only when their raw state entry is a pure named formula — anything else\n * callable (event handlers, structured-body functions, server fns) is dropped so a stray `call`\n * can't run a side effect against the live canvas.\n */\nexport function cloneLiveScope(defs: Scope, rawState: Record<string, unknown> | null): Scope {\n const out: Scope = {};\n for (const key of Object.keys(defs)) {\n try {\n // Reading through the reactive proxy auto-unwraps a top-level ref/computed — and can throw (a\n // Computed getter that throws), which maps the key to null instead of aborting the clone.\n const value = defs[key];\n if (typeof value === \"function\") {\n if (isNamedFormulaEntry(rawState?.[key])) {\n out[key] = value; // A pure formula callable — safe (and needed) for `call` nodes.\n }\n continue;\n }\n const json = JSON.stringify(value);\n out[key] = json === undefined ? null : (JSON.parse(json) as unknown);\n } catch {\n out[key] = null;\n }\n }\n return out;\n}\n\n/**\n * Bind repeater `$map` contexts for a node at `contextPath`: walk the shadow doc along the path\n * and, at every repeater crossing (a `$prototype: \"Array\"` node entered through its `map`\n * template), resolve the repeater's `items` against the scope built so far and layer the FIRST\n * item's `$map` context (item + index 0) over it — the same shape `renderMappedArrayInto` gives\n * rendered items, so `$map/item` / `$map/index` refs preview against real data. Nested repeaters\n * chain naturally (an inner `items` ref may read the outer `$map/item`).\n */\nexport function bindRepeaterContext(\n scope: Scope,\n shadowDoc: unknown,\n contextPath: (string | number)[] | null,\n): Scope {\n if (!contextPath || contextPath.length === 0) {\n return scope;\n }\n let node: unknown = shadowDoc;\n let bound = scope;\n for (const seg of contextPath) {\n if (!node || typeof node !== \"object\") {\n break;\n }\n const rec = node as Record<string, unknown>;\n if (rec.$prototype === \"Array\" && seg === \"map\") {\n // Entering the repeater's template — bind the first item's context before descending.\n const itemsDef = rec.items;\n const items: unknown =\n itemsDef && typeof itemsDef === \"object\" && \"$ref\" in itemsDef\n ? resolveRef((itemsDef as { $ref: string }).$ref, bound)\n : itemsDef;\n if (Array.isArray(items) && items.length > 0) {\n let item: unknown;\n try {\n // Items resolved from the shadow doc (a literal array) must not be mutable through the\n // Preview scope — clone; scope-resolved items are already clone data, so this is free.\n item = structuredClone(items[0]);\n } catch {\n item = null;\n }\n const child = Object.create(bound) as Scope;\n child.$map = { index: 0, item };\n child[\"$map/item\"] = item;\n child[\"$map/index\"] = 0;\n bound = child;\n }\n }\n node = rec[seg as keyof typeof rec];\n }\n return bound;\n}\n\n/**\n * Evaluate each requested expression against a fresh clone of the live scope (with the repeater\n * context for `contextPath` bound), reporting every sub-node's value through the engine's trace\n * hook as pre-formatted display strings. Exceptions are guarded per expression into `error`.\n */\nexport function evaluateLiveExprs(\n exprs: { id: string; node: unknown }[],\n defs: Scope,\n shadowDoc: unknown,\n contextPath: (string | number)[] | null,\n): EvalExprResult[] {\n const rawState =\n shadowDoc && typeof shadowDoc === \"object\"\n ? ((shadowDoc as { state?: Record<string, unknown> }).state ?? null)\n : null;\n return exprs.map(({ id, node }) => {\n const values = new Map<string, string>();\n // A fresh scope per expression: a mutating operator writes into this clone only, and can never\n // Leak into the next expression's evaluation (or the live canvas).\n let scope: Scope;\n try {\n scope = bindRepeaterContext(cloneLiveScope(defs, rawState), shadowDoc, contextPath);\n } catch (error) {\n return { error: error instanceof Error ? error.message : String(error), id, values: [] };\n }\n try {\n if (!node || typeof node !== \"object\" || !(\"operator\" in node)) {\n throw new Error(\"not an expression node\");\n }\n evaluateExpression(node as ExpressionNode, scope, null, undefined, {\n report: (path, value) => values.set(path.join(\"/\"), formatPreviewValue(value)),\n });\n return { id, values: [...values.entries()] };\n } catch (error) {\n return {\n error: error instanceof Error ? error.message : String(error),\n id,\n values: [...values.entries()],\n };\n }\n });\n}\n",
|
|
32
33
|
"/**\n * Serialize the iframe's resolved `$defs` scope (buildScope's output) into a structured-clone-safe\n * plain object the iframe can postMessage to the parent editor. The data-explorer panel reads this\n * from `S.canvas.scope` to show each data source's live value; the iframe (not the parent) resolves\n * the scope since the iframe canvas migration moved buildScope into the iframe realm.\n *\n * The input is the resolved `$defs` — typically a Vue reactive proxy. Reading `defs[key]`\n * auto-unwraps a top-level `ref`/`computed` to its current value; a JSON round-trip then reads\n * THROUGH any nested reactive proxies and drops non-cloneable residue (nested functions, symbols,\n * proxy artifacts) so the result crosses postMessage without a DataCloneError.\n *\n * Pure and DOM-free — no reactivity/runtime imports — so it stays trivially unit-testable.\n */\n\n/**\n * Per-value size cap (in JSON-string chars). A single large content collection can be tens of KB;\n * past this cap we store a small placeholder so one big data source can't bloat every render's\n * postMessage. Generous on purpose — most scope values are far smaller.\n */\nconst MAX_VALUE_CHARS = 256_000;\n\n/** The placeholder stored in place of a value whose JSON string exceeds {@link MAX_VALUE_CHARS}. */\nconst LARGE_VALUE_PLACEHOLDER = \"[large value omitted]\";\n\n/**\n * Produce a structured-clone-safe snapshot of `defs` for the data-explorer.\n *\n * For each own enumerable key: - functions (`typeof v === \"function\"`) are SKIPPED entirely\n * (handlers/server fns aren't data); - other values are JSON deep-cloned\n * (`JSON.parse(JSON.stringify(v))`) inside try/catch — a throw (e.g. a computed getter that throws)\n * or a circular/unserializable value maps the key to `null`; - a value whose JSON string exceeds\n * the size cap is replaced with a short placeholder string.\n *\n * @param defs The resolved `$defs` scope (may be a Vue reactive proxy).\n * @returns A plain object safe to `postMessage` (every value is JSON-round-trippable).\n */\nexport function serializeDataScope(defs: Record<string, unknown>): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const key of Object.keys(defs)) {\n try {\n // Reading through the reactive proxy auto-unwraps a top-level ref/computed to its value, and\n // Can THROW (a computed getter that throws) — done inside the try so that maps the key to null\n // Rather than aborting the whole snapshot.\n const value = defs[key];\n if (typeof value === \"function\") {\n continue; // Data sources only — a resolved server/handler fn isn't a \"value\".\n }\n const json = JSON.stringify(value);\n if (json === undefined) {\n // JSON.stringify returns undefined for a bare function/symbol/undefined at the top level.\n out[key] = null;\n continue;\n }\n if (json.length > MAX_VALUE_CHARS) {\n out[key] = LARGE_VALUE_PLACEHOLDER;\n continue;\n }\n out[key] = JSON.parse(json) as unknown;\n } catch {\n // A circular structure or a throwing getter → the key exists but carries no serializable value.\n out[key] = null;\n }\n }\n return out;\n}\n",
|
|
33
|
-
"/// <reference lib=\"dom\" />\n/**\n * Canvas iframe entry — runs INSIDE the canvas iframe. It opens a postMessage channel to the parent\n * editor, announces `ready`, and renders the documents the parent posts via `render`. Kept tiny: it\n * pulls in only the render core, so the iframe bundle stays small.\n */\n\nimport { postMessageChannel } from \"./iframe-channel\";\nimport { installCanvasImageRetry, renderResolvedDocument } from \"./iframe-render\";\nimport { measureHits, startInteraction } from \"./iframe-interaction\";\nimport {\n AUTO_SCROLL_STEP,\n clearIframeDrag,\n computeDropInstruction,\n resolveDropTarget,\n scrollDirection,\n startGrabDetector,\n} from \"./iframe-drop\";\nimport { startIframeInlineEdit } from \"./iframe-inline-edit\";\nimport { startIframeSlashBridge } from \"./iframe-slash\";\nimport { startKeyForwarding } from \"./iframe-keys\";\nimport { applyIframePatch } from \"./iframe-patch\";\nimport { disposeAllSubtrees } from \"./iframe-subtree\";\nimport { evaluateLiveExprs } from \"./iframe-eval\";\nimport { serializeDataScope } from \"./serialize-scope\";\nimport { getActivePath, isEditing, stopEditing } from \"../editor/inline-edit\";\nimport { isAncestor } from \"../state\";\nimport type { JxDocOp } from \"../tabs/patch-ops\";\nimport type { JxPath } from \"../state\";\n// ObserveScope MUST come from the runtime: the $defs refs are created by the runtime's copy of\n// @vue/reactivity, and dep tracking is per module instance — an effect from the studio's own copy\n// Would never re-run when a dev-proxy data source settles.\nimport { observeScope, reapplyStyle, setResolveToken } from \"@jxsuite/runtime\";\nimport type { IframeChannel } from \"./iframe-channel\";\nimport type { CanvasMode, DragSrcKind, IframeToParent, ParentToIframe } from \"./iframe-protocol\";\nimport type { JxDocument, JxMutableNode, JxStyle } from \"@jxsuite/schema/types\";\nimport type { IframeRenderCtx, RenderHandle } from \"./iframe-render\";\n\n/**\n * Resolve the drop placement for a forwarded cursor: point hit-test → nearest `[data-jx-path]` →\n * pure {@link computeDropInstruction}. Returns null when the cursor resolves to no droppable target.\n * Shared by the `dragMove` (display-only preview) and `drop` (fresh, authoritative) handlers.\n */\nfunction previewAt(\n cursor: { x: number; y: number },\n src: DragSrcKind,\n shadowDoc: JxMutableNode,\n doc: Document,\n) {\n const targetEl = resolveDropTarget(cursor.x, cursor.y, doc);\n if (!targetEl) {\n return null;\n }\n return computeDropInstruction(targetEl, cursor.y, shadowDoc, src);\n}\n\n/** Set-key keys the patcher applies IN PLACE (never a subtree re-render) — safe under a live edit. */\nconst IN_PLACE_KEYS = new Set([\"style\", \"textContent\"]);\n\n/**\n * Whether applying `forwardOps` would re-render/detach the element of the live edit session: any op\n * that is NOT an in-place set-key (style/text/event) whose affected node is an ancestor-or-self of\n * the active edit path. Structural ops affect the PARENT's children (any sibling churn under an\n * ancestor can reflow/replace the edited element's position), so their parent path is compared.\n */\nexport function patchDisturbsActiveEdit(forwardOps: JxDocOp[]): boolean {\n const activePath = getActivePath();\n if (!activePath) {\n return false;\n }\n for (const op of forwardOps) {\n let affected: JxPath;\n if (op.op === \"set-key\") {\n if (IN_PLACE_KEYS.has(op.key) || op.key.startsWith(\"on\")) {\n continue;\n }\n affected = op.path;\n } else if (op.op === \"move-child\") {\n affected = op.fromParentPath;\n if (isAncestor(affected, activePath) || isAncestor(op.toParentPath, activePath)) {\n return true;\n }\n continue;\n } else {\n affected = op.parentPath;\n }\n if (isAncestor(affected, activePath)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Drive a channel: render each `render` message into `container`, dropping stale generations, and\n * acknowledge with `renderComplete`/`renderError`. Exposed (rather than inlined in {@link boot}) so\n * tests can exercise it with a fake channel. Returns a teardown function.\n */\nexport function startCanvasIframe(opts: {\n channel: IframeChannel<IframeToParent, ParentToIframe>;\n container: HTMLElement;\n}): () => void {\n const { channel, container } = opts;\n let handle: RenderHandle | null = null;\n // Disposer for the live render's dataScope re-post effect (see the render handler); stopped\n // Alongside the handle so a superseded render's refs can't keep posting.\n let stopDataScopeWatch: (() => void) | null = null;\n let latestGen = -1;\n // The raw page doc the current DOM was rendered from — the patch source-of-truth. `renderedGen`\n // Tracks which generation it (and the DOM) reflect, so patches for an in-flight/superseded render\n // Are handled correctly rather than applied against the wrong tree.\n let shadowDoc: JxMutableNode | null = null;\n let renderedGen = -1;\n // The mode of the LIVE render — gates the interactive surfaces (inline editing, insert zones,\n // Grab-drags) that only design/edit modes own. Adopted alongside shadowDoc.\n let currentMode: CanvasMode = \"design\";\n // The current render's retained context (scope/mapping), used to render subtrees for structural\n // Patches. Set together with `shadowDoc`, so it's non-null whenever a patch is applied.\n let renderCtx: IframeRenderCtx | null = null;\n\n // Cross-frame drag session (Phase 4c). `dragStart` records the source kind + the gen the session\n // Began against; dragMove/drop tag every reply with both so the parent can stale-gate them.\n let dragSrc: DragSrcKind | null = null;\n let dragGen = -1;\n // The parent-session id (from dragStart), so NATIVE drag events routed into this frame can post\n // DragOver/dropResult tagged for the parent's seq gate.\n let sessionSeq = -1;\n\n // ─── Auto-scroll (commit 6) — a SELF-SUSTAINING rAF loop. When a dragMove lands in an edge band,\n // The loop each frame scrolls the viewport AND re-hit-tests the CACHED cursor (elementFromPoint is\n // Viewport-relative, so the same x,y now resolves to a different node after the scroll) and re-posts\n // The over-preview. It is NOT driven by dragMove (the pointer is stationary at an edge-hold). Stops\n // On: band exit (next dragMove, dir 0), drop/dragEnd/dragCancel, or scroll extent reached (scrollY\n // Unchanged). The win/rAF body is the only uncovered line; scrollDirection is PURE + unit-tested.\n let autoScrollFrame = 0;\n // The cached edge-hold cursor. For a flow-3 (iframe-driven) drag it also carries the drag `src`\n // (the parent never posts a dragStart, so `dragSrc`/`dragGen` are null) and `withCursor`, so the\n // Loop re-posts dragOver WITH the cursor to keep the parent's ghost tracking during an edge-hold\n // (the parent has no pointer of its own then). Parent-driven flows (1/2/4) leave `src` undefined\n // And `withCursor` false — the tick falls back to `dragSrc`/`dragGen` and the parent moves the\n // Ghost from its own raw pointer.\n let autoScrollCursor: {\n x: number;\n y: number;\n dragSeq: number;\n withCursor: boolean;\n src?: DragSrcKind;\n gen?: number;\n } | null = null;\n const win = container.ownerDocument.defaultView;\n\n function stopAutoScroll(): void {\n if (autoScrollFrame && win) {\n win.cancelAnimationFrame(autoScrollFrame);\n }\n autoScrollFrame = 0;\n autoScrollCursor = null;\n }\n\n function autoScrollTick(): void {\n autoScrollFrame = 0;\n // Flow 3 supplies its own src on the cached cursor; flows 1/2/4 use the session's dragSrc.\n const src = autoScrollCursor?.src ?? dragSrc;\n if (!win || !autoScrollCursor || !src || !shadowDoc) {\n return;\n }\n const dir = scrollDirection(autoScrollCursor.y, win.innerHeight);\n if (dir === 0) {\n return;\n }\n const before = win.scrollY;\n win.scrollBy(0, dir * AUTO_SCROLL_STEP);\n if (win.scrollY === before) {\n // Scroll extent reached — nothing more to reveal, so stop the loop.\n return;\n }\n const preview = previewAt(autoScrollCursor, src, shadowDoc, container.ownerDocument);\n channel.post({\n // Flow 3 (withCursor) re-posts the cursor so the parent keeps tracking the ghost at an edge-hold.\n ...(autoScrollCursor.withCursor\n ? { cursor: { x: autoScrollCursor.x, y: autoScrollCursor.y } }\n : {}),\n dragSeq: autoScrollCursor.dragSeq,\n gen: autoScrollCursor.gen ?? dragGen,\n kind: \"dragOver\",\n preview,\n });\n autoScrollFrame = win.requestAnimationFrame(autoScrollTick);\n }\n\n /**\n * (Re)evaluate auto-scroll for a dragMove cursor: arm the loop in a band, stop it outside. The\n * optional `flow3` carries the iframe-driven drag's src/gen (and forces the cursor to be\n * re-posted during edge-holds); parent-driven flows pass nothing and the loop uses\n * `dragSrc`/`dragGen`.\n */\n function updateAutoScroll(\n cursor: { x: number; y: number },\n dragSeq: number,\n flow3?: { src: DragSrcKind; gen: number },\n ): void {\n if (!win || scrollDirection(cursor.y, win.innerHeight) === 0) {\n stopAutoScroll();\n return;\n }\n autoScrollCursor = {\n dragSeq,\n withCursor: flow3 != null,\n x: cursor.x,\n y: cursor.y,\n ...(flow3 ? { gen: flow3.gen, src: flow3.src } : {}),\n };\n if (!autoScrollFrame) {\n autoScrollFrame = win.requestAnimationFrame(autoScrollTick);\n }\n }\n\n // Report pointer hit/hover (resolved to data-jx-path) to the parent, which owns selection +\n // Overlays — the cross-origin bridge means the parent never reads our DOM directly. The shadow-doc\n // Accessor feeds the insertion \"+\" zone computation hung off the same pointermove (the parent\n // Draws the clickable \"+\" and runs the slash-menu → mutateInsertNode flow on click).\n const stopInteraction = startInteraction(channel, container.ownerDocument, {\n getMode: () => currentMode,\n getShadowDoc: () => shadowDoc,\n });\n // Forward global-shortcut keystrokes to the parent — its shortcut handler is bound to the editor\n // Document, so without this they'd be swallowed whenever focus is inside the canvas iframe.\n const stopKeyForwarding = startKeyForwarding(channel, container.ownerDocument);\n // Run inline editing (contenteditable) here, posting committed/split/insert results to the parent.\n // The shadow-doc accessor gates prop-bound sessions on the RAW instance prop value (template/$ref\n // Valued props render display sugar and must not be plain-text edited).\n const stopInlineEdit = startIframeInlineEdit(channel, container, {\n getMode: () => currentMode,\n getShadowDoc: () => shadowDoc,\n });\n // Bridge the engine's slash menu to the parent's Spectrum menu (show/nav/select over the channel).\n const stopSlashBridge = startIframeSlashBridge(channel, container.ownerDocument);\n // Flow 3 (grab-anywhere): detect an element-body drag and DRIVE it locally. A drag that begins in\n // The iframe gets its held-button moves in the IFRAME document (not the parent), so the iframe\n // Computes the preview/drop from its own cursor and posts dragOver/dropResult directly; the parent\n // Only adopts the seq, draws the indicator, and positions the ghost from the posted cursor. The\n // Detector reuses the SAME previewAt + auto-scroll loop the dragMove/drop handlers use.\n const stopGrabDetector = startGrabDetector(channel, container.ownerDocument, {\n armAutoScroll: (cursor, dragSeq, src) =>\n updateAutoScroll(cursor, dragSeq, { gen: renderedGen, src }),\n gen: () => renderedGen,\n getMode: () => currentMode,\n previewAt: (cursor, src) =>\n shadowDoc ? previewAt(cursor, src, shadowDoc, container.ownerDocument) : null,\n stopAutoScroll,\n });\n // Auto-recover canvas images that 404 on a cold first render (component <img>s created in\n // ConnectedCallback fire late, before the loopback server is warm). Re-fires the failed request a\n // Few times — what the manual data-sidebar \"Refresh\" does, but without a full re-render.\n const stopImageRetry = installCanvasImageRetry(container);\n\n // ─── Content-height auto-sizing ─────────────────────────────────────────────\n // Measure the content height and post it so the host sizes the iframe to fit — the canvas then never\n // Scrolls internally (the parent overlay can't follow an internal scroll, and every node stays inside\n // The iframe box so it's hit-testable). The runtime transposes viewport units to container units, so\n // This converges instead of feeding back; `MAX` is a backstop if some unit slips through. `container`\n // Is `#jx-canvas-root`, which overflows the fixed-size query container freely, so its scrollHeight is\n // The true content height.\n const MAX_CANVAS_HEIGHT = 30_000;\n let lastPostedHeight = -1;\n function postContentHeight(): void {\n const measured = Math.min(container.scrollHeight, MAX_CANVAS_HEIGHT);\n if (measured > 0 && Math.abs(measured - lastPostedHeight) >= 1) {\n lastPostedHeight = measured;\n // A component-definition root (marked by makeStamper) is a fragment, not a page — tell the host\n // So it can drop its 480px iframe floor and let a short component hug its content.\n const root = container.firstElementChild;\n const fragment = root instanceof HTMLElement && root.dataset.jxDefinitionRoot !== undefined;\n channel.post({ fragment, height: measured, kind: \"contentHeight\" });\n }\n }\n const ResizeObs = win?.ResizeObserver;\n const heightObserver = ResizeObs ? new ResizeObs(() => postContentHeight()) : null;\n heightObserver?.observe(container);\n\n // ─── Wheel forwarding (canvas zoom/pan) ─────────────────────────────────────\n // The iframe is sized to its content (never scrolls itself), so wheel events over it are meant for\n // The parent canvas: ctrl/cmd+wheel = zoom, plain = pan. A cross-origin OOPIF doesn't bubble wheel to\n // The parent, so forward the deltas + modifiers + cursor; the host redispatches to its wheel handler.\n const onWheel = (e: WheelEvent) => {\n e.preventDefault();\n channel.post({\n ctrlKey: e.ctrlKey,\n deltaX: e.deltaX,\n deltaY: e.deltaY,\n kind: \"forwardWheel\",\n metaKey: e.metaKey,\n shiftKey: e.shiftKey,\n x: e.clientX,\n y: e.clientY,\n });\n };\n container.ownerDocument.addEventListener(\"wheel\", onWheel, { passive: false });\n\n // ─── Native drag routing (flows 1/2/4 over the canvas) ─────────────────────\n // Chromium delivers native dragover/drop to the frame UNDER THE CURSOR, so once a\n // Parent-originated drag (palette / layers / ⠿ handle) crosses onto the canvas the parent stops\n // Seeing dragover — it can't forward dragMove, and cross-origin nothing preventDefaults here,\n // Giving the \"not allowed\" cursor and a dead drop. So handle the native stream directly: while a\n // Parent session is live (dragSrc set), accept the drag, post dragOver previews from OUR\n // ClientX/y (already iframe-local — no rect conversion), and on drop post the authoritative\n // DropResult. The cursor rides on dragOver so the parent can keep its ghost tracking (it has no\n // Pointer stream of its own while the drag is over this frame).\n //\n // A native stream arriving with NO session yet (dragSrc null) is a parent drag that crossed onto\n // The canvas before the parent could bind a host (it never sees a cursor inside the iframe rect) —\n // Post nativeDragEnter so the bridge binds the session here. Throttled: dragover fires\n // Continuously (~350ms even stationary), and an unclaimable stream (e.g. an OS file drag) would\n // Otherwise spam the channel forever.\n const NATIVE_ENTER_REPOST_MS = 300;\n let lastNativeEnterPost = 0;\n const onNativeDragOver = (e: DragEvent) => {\n if (!dragSrc) {\n const now = Date.now();\n if (now - lastNativeEnterPost >= NATIVE_ENTER_REPOST_MS) {\n lastNativeEnterPost = now;\n channel.post({ kind: \"nativeDragEnter\" });\n }\n return;\n }\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = \"move\";\n }\n const cursor = { x: e.clientX, y: e.clientY };\n const preview = shadowDoc\n ? previewAt(cursor, dragSrc, shadowDoc, container.ownerDocument)\n : null;\n channel.post({ cursor, dragSeq: sessionSeq, gen: dragGen, kind: \"dragOver\", preview });\n updateAutoScroll(cursor, sessionSeq);\n };\n const onNativeDrop = (e: DragEvent) => {\n if (!dragSrc) {\n return;\n }\n e.preventDefault();\n const cursor = { x: e.clientX, y: e.clientY };\n const preview = shadowDoc\n ? previewAt(cursor, dragSrc, shadowDoc, container.ownerDocument)\n : null;\n channel.post({\n dragSeq: sessionSeq,\n gen: dragGen,\n instruction: preview?.instruction ?? null,\n kind: \"dropResult\",\n targetPath: preview?.targetPath ?? null,\n });\n dragSrc = null;\n dragGen = -1;\n sessionSeq = -1;\n stopAutoScroll();\n clearIframeDrag();\n };\n container.ownerDocument.addEventListener(\"dragenter\", onNativeDragOver, true);\n container.ownerDocument.addEventListener(\"dragover\", onNativeDragOver, true);\n container.ownerDocument.addEventListener(\"drop\", onNativeDrop, true);\n\n const off = channel.onMessage((msg) => {\n if (msg.kind === \"measure\") {\n channel.post({\n hits: measureHits(msg.paths, container.ownerDocument),\n kind: \"geometry\",\n reqId: msg.reqId,\n });\n return;\n }\n if (msg.kind === \"evalExpr\") {\n // Live expression preview (M6): evaluate against the LIVE render's resolved scope — but only\n // The render the request targeted. A stale/ahead gen gets an empty reply (never values from\n // The wrong scope); the parent additionally gen-gates the reply against its own state.\n const results =\n msg.gen === renderedGen && renderCtx && shadowDoc\n ? evaluateLiveExprs(\n msg.exprs,\n renderCtx.defs as Record<string, unknown>,\n shadowDoc,\n msg.contextPath,\n )\n : [];\n channel.post({ gen: msg.gen, kind: \"evalResult\", reqId: msg.reqId, results });\n return;\n }\n if (msg.kind === \"patch\") {\n const { gen } = msg;\n if (gen < renderedGen) {\n // A newer full render already supersedes this edit — drop it.\n return;\n }\n if (gen > renderedGen || !shadowDoc || !renderCtx) {\n // The render this patch targets hasn't landed yet; let the parent escalate to a full render.\n channel.post({ gen, kind: \"patchError\", message: \"patch-ahead-of-render\" });\n return;\n }\n // A structural/subtree op that re-renders the active editable (or an ancestor) would detach\n // The session's element mid-edit — commit and end the session first (in-place style/text\n // Patches elsewhere leave it alone).\n if (isEditing() && patchDisturbsActiveEdit(msg.forwardOps)) {\n stopEditing();\n }\n try {\n applyIframePatch(shadowDoc, msg.forwardOps, container, renderCtx);\n channel.post({ gen, kind: \"patchComplete\" });\n } catch (error) {\n channel.post({\n gen,\n kind: \"patchError\",\n message: String((error as Error)?.message ?? error),\n });\n }\n return;\n }\n if (msg.kind === \"styleUpdate\") {\n // Stylebook live style edit: swap the ROOT's style and re-run the runtime's style applier —\n // One reapply regenerates the whole scoped-CSS cascade (real @media included) without a\n // Re-render. A stale gen is dropped; the superseding render carries the same style.\n if (msg.gen !== renderedGen || !shadowDoc) {\n return;\n }\n (shadowDoc as { style?: JxStyle }).style = msg.style as JxStyle;\n const rootEl = container.firstElementChild;\n if (rootEl instanceof HTMLElement) {\n reapplyStyle(\n rootEl,\n msg.style as JxStyle,\n (shadowDoc as { $media?: Record<string, string> }).$media ?? {},\n );\n }\n return;\n }\n if (msg.kind === \"dragStart\") {\n // Begin a drag session: retain the source kind + the gen it targets. dragMove/drop replies are\n // Tagged with this gen so the parent drops any that arrive after a re-render superseded it.\n dragSrc = msg.src;\n dragGen = msg.gen;\n sessionSeq = msg.dragSeq;\n return;\n }\n if (msg.kind === \"dragEnd\" || msg.kind === \"dragCancel\") {\n // The pointer left the canvas / the session was cancelled: forget the session so a late move\n // Or drop is a no-op, and clear any flow-3 (iframe-originated) drag state + auto-scroll.\n dragSrc = null;\n dragGen = -1;\n sessionSeq = -1;\n stopAutoScroll();\n clearIframeDrag();\n return;\n }\n if (msg.kind === \"dragMove\") {\n // Display-only preview: hit-test the forwarded cursor, compute the placement, post dragOver.\n // Null target/instruction → post a null preview so the parent clears any stale indicator.\n const preview =\n dragSrc && shadowDoc\n ? previewAt(msg.cursor, dragSrc, shadowDoc, container.ownerDocument)\n : null;\n channel.post({ dragSeq: msg.dragSeq, gen: dragGen, kind: \"dragOver\", preview });\n // Arm/stop the self-sustaining auto-scroll for this cursor (an edge-hold keeps scrolling).\n updateAutoScroll(msg.cursor, msg.dragSeq);\n return;\n }\n if (msg.kind === \"drop\") {\n // Compute the drop FRESH from the live DOM (never from a cached preview) and post the result.\n const preview =\n dragSrc && shadowDoc\n ? previewAt(msg.cursor, dragSrc, shadowDoc, container.ownerDocument)\n : null;\n channel.post({\n dragSeq: msg.dragSeq,\n gen: dragGen,\n instruction: preview?.instruction ?? null,\n kind: \"dropResult\",\n targetPath: preview?.targetPath ?? null,\n });\n dragSrc = null;\n dragGen = -1;\n sessionSeq = -1;\n stopAutoScroll();\n clearIframeDrag();\n return;\n }\n if (msg.kind !== \"render\" || msg.gen < latestGen) {\n return;\n }\n // A render replaces the DOM under a live edit session — COMMIT it first (never discard). The\n // Resulting editCommit/editEnd post synchronously here, so on the FIFO channel they precede\n // This render's renderComplete and the parent routes them by the host's not-yet-flipped tab\n // Identity — a commit racing a tab switch still lands in the document it belonged to.\n if (isEditing()) {\n stopEditing();\n }\n latestGen = msg.gen;\n const { gen, mapperCtx } = msg;\n const rawDoc = msg.shadowDoc as JxMutableNode;\n void (async () => {\n try {\n // Drop the previous render's reactive scopes (root + any surgically-rendered subtrees).\n disposeAllSubtrees();\n stopDataScopeWatch?.();\n stopDataScopeWatch = null;\n handle?.dispose();\n handle = await renderResolvedDocument({\n container,\n doc: msg.doc as JxDocument,\n docBase: msg.docBase,\n mapperCtx: {\n arrayPaths: new Set(mapperCtx.arrayPaths),\n canvasMode: mapperCtx.canvasMode,\n layoutWrapped: mapperCtx.layoutWrapped,\n pageContentOffset: mapperCtx.pageContentOffset,\n pageContentPrefix: mapperCtx.pageContentPrefix,\n },\n mode: msg.mode,\n siteStyle: msg.siteStyle,\n });\n if (gen === latestGen) {\n // Adopt this generation's shadow doc + render context only once it's the live render.\n shadowDoc = rawDoc;\n renderCtx = handle.ctx;\n renderedGen = gen;\n currentMode = msg.mode;\n channel.post({ gen, kind: \"renderComplete\" });\n // Thread a serializable snapshot of the resolved $defs to the parent so the data-explorer\n // Panel shows live data (the iframe, not the parent, now resolves the scope). Inside a\n // Reactive effect: dev-proxy data sources ($prototype/$src) return a ref that fills AFTER\n // BuildScope returns, and serializeDataScope reads defs[key], so the effect tracks those\n // Refs and RE-POSTS an updated snapshot when the data settles (the host gen-gates stale\n // Ones). Isolated in try/catch: a serialization failure never breaks the render ack above.\n const defs = handle.ctx.defs as Record<string, unknown>;\n stopDataScopeWatch = observeScope(() => {\n try {\n channel.post({ gen, kind: \"dataScope\", scope: serializeDataScope(defs) });\n } catch {\n // A pathological scope can't be serialized — skip; the render itself succeeded.\n }\n });\n // Size the iframe to the freshly-rendered content (the ResizeObserver tracks later reflows).\n postContentHeight();\n }\n } catch (error) {\n channel.post({\n gen,\n kind: \"renderError\",\n message: String((error as Error)?.message ?? error),\n });\n }\n })();\n });\n\n channel.post({ kind: \"ready\" });\n return () => {\n off();\n stopInteraction();\n stopKeyForwarding();\n stopInlineEdit();\n stopSlashBridge();\n stopGrabDetector();\n stopImageRetry();\n stopAutoScroll();\n heightObserver?.disconnect();\n container.ownerDocument.removeEventListener(\"wheel\", onWheel);\n container.ownerDocument.removeEventListener(\"dragenter\", onNativeDragOver, true);\n container.ownerDocument.removeEventListener(\"dragover\", onNativeDragOver, true);\n container.ownerDocument.removeEventListener(\"drop\", onNativeDrop, true);\n stopDataScopeWatch?.();\n handle?.dispose();\n };\n}\n\n/** The window surface {@link bootCanvasIframe} needs — injected so it's testable without a frame. */\ninterface BootWindow {\n location: { search: string };\n document: { querySelector: (selectors: string) => Element | null; body: HTMLElement };\n parent: { postMessage: (message: unknown, targetOrigin: string) => void };\n addEventListener: (type: \"message\", listener: (event: MessageEvent) => void) => void;\n removeEventListener: (type: \"message\", listener: (event: MessageEvent) => void) => void;\n}\n\n/**\n * Boot the entry against a window: open a token+origin-authenticated channel to the parent (origin\n * and token are passed in via the iframe URL) and render into `#jx-canvas-root` (or `<body>`).\n */\nexport function bootCanvasIframe(win: BootWindow): () => void {\n const params = new URLSearchParams(win.location.search);\n // Authenticate the runtime dev-proxy resolve/server fetches to the token-gated loopback server.\n // The server rpcToken rides the iframe URL as `rpcToken`; the `token` param is the separate\n // PostMessage channel secret (set by the host). Absent on dev/chromium, where setResolveToken no-ops.\n setResolveToken(params.get(\"rpcToken\"));\n // ParentOrigin authenticates the parent peer. The host (iframe-host.ts) passes it ONLY for an\n // Http(s) parent (dev / chromium — same-origin, the origin round-trips). It OMITS it for a\n // Non-http(s) parent (electrobun views://), whose custom scheme may not surface as a postMessage\n // Origin: a missing value here means fall back to \"*\" — token-gated, NOT a silent omission — and\n // Log it loudly so the looser origin check is visible.\n const explicitParentOrigin = params.get(\"parentOrigin\");\n const parentOrigin = explicitParentOrigin || \"*\";\n if (!explicitParentOrigin) {\n console.warn(\n \"[jx-canvas] no parentOrigin in iframe URL — accepting messages from any origin (token-gated). \" +\n \"The parent origin did not round-trip; the channel relies on the shared token alone.\",\n );\n }\n const container = (win.document.querySelector(\"#jx-canvas-root\") ??\n win.document.body) as HTMLElement;\n const channel = postMessageChannel<IframeToParent, ParentToIframe>({\n acceptOrigin: parentOrigin,\n source: win,\n target: win.parent,\n targetOrigin: parentOrigin,\n token: params.get(\"token\") || \"\",\n });\n return startCanvasIframe({ channel, container });\n}\n\n// Boot only when actually loaded as the iframe document (has a real parent frame), never in tests.\nif (typeof window !== \"undefined\" && window.parent !== window) {\n bootCanvasIframe(window as unknown as BootWindow);\n}\n"
|
|
34
|
+
"/// <reference lib=\"dom\" />\n/**\n * Canvas iframe entry — runs INSIDE the canvas iframe. It opens a postMessage channel to the parent\n * editor, announces `ready`, and renders the documents the parent posts via `render`. Kept tiny: it\n * pulls in only the render core, so the iframe bundle stays small.\n */\n\nimport { postMessageChannel } from \"./iframe-channel\";\nimport {\n applyPreviewColorScheme,\n applySiteStyle,\n installCanvasImageRetry,\n renderResolvedDocument,\n} from \"./iframe-render\";\nimport { measureHits, startInteraction } from \"./iframe-interaction\";\nimport {\n AUTO_SCROLL_STEP,\n clearIframeDrag,\n computeDropInstruction,\n resolveDropTarget,\n scrollDirection,\n startGrabDetector,\n} from \"./iframe-drop\";\nimport { startIframeInlineEdit } from \"./iframe-inline-edit\";\nimport { startIframeSlashBridge } from \"./iframe-slash\";\nimport { startKeyForwarding } from \"./iframe-keys\";\nimport { applyIframePatch } from \"./iframe-patch\";\nimport { disposeAllSubtrees } from \"./iframe-subtree\";\nimport { evaluateLiveExprs } from \"./iframe-eval\";\nimport { serializeDataScope } from \"./serialize-scope\";\nimport { getActivePath, isEditing, stopEditing } from \"../editor/inline-edit\";\nimport { isAncestor } from \"../state\";\nimport type { JxDocOp } from \"../tabs/patch-ops\";\nimport type { JxPath } from \"../state\";\n// ObserveScope MUST come from the runtime: the $defs refs are created by the runtime's copy of\n// @vue/reactivity, and dep tracking is per module instance — an effect from the studio's own copy\n// Would never re-run when a dev-proxy data source settles.\nimport { observeScope, reapplyStyle, setResolveToken } from \"@jxsuite/runtime\";\nimport type { IframeChannel } from \"./iframe-channel\";\nimport type { CanvasMode, DragSrcKind, IframeToParent, ParentToIframe } from \"./iframe-protocol\";\nimport type { JxDocument, JxMutableNode, JxStyle } from \"@jxsuite/schema/types\";\nimport type { IframeRenderCtx, RenderHandle } from \"./iframe-render\";\n\n/**\n * Resolve the drop placement for a forwarded cursor: point hit-test → nearest `[data-jx-path]` →\n * pure {@link computeDropInstruction}. Returns null when the cursor resolves to no droppable target.\n * Shared by the `dragMove` (display-only preview) and `drop` (fresh, authoritative) handlers.\n */\nfunction previewAt(\n cursor: { x: number; y: number },\n src: DragSrcKind,\n shadowDoc: JxMutableNode,\n doc: Document,\n) {\n const targetEl = resolveDropTarget(cursor.x, cursor.y, doc);\n if (!targetEl) {\n return null;\n }\n return computeDropInstruction(targetEl, cursor.y, shadowDoc, src);\n}\n\n/** Set-key keys the patcher applies IN PLACE (never a subtree re-render) — safe under a live edit. */\nconst IN_PLACE_KEYS = new Set([\"style\", \"textContent\"]);\n\n/**\n * Whether applying `forwardOps` would re-render/detach the element of the live edit session: any op\n * that is NOT an in-place set-key (style/text/event) whose affected node is an ancestor-or-self of\n * the active edit path. Structural ops affect the PARENT's children (any sibling churn under an\n * ancestor can reflow/replace the edited element's position), so their parent path is compared.\n */\nexport function patchDisturbsActiveEdit(forwardOps: JxDocOp[]): boolean {\n const activePath = getActivePath();\n if (!activePath) {\n return false;\n }\n for (const op of forwardOps) {\n let affected: JxPath;\n if (op.op === \"set-key\") {\n if (IN_PLACE_KEYS.has(op.key) || op.key.startsWith(\"on\")) {\n continue;\n }\n affected = op.path;\n } else if (op.op === \"move-child\") {\n affected = op.fromParentPath;\n if (isAncestor(affected, activePath) || isAncestor(op.toParentPath, activePath)) {\n return true;\n }\n continue;\n } else {\n affected = op.parentPath;\n }\n if (isAncestor(affected, activePath)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Drive a channel: render each `render` message into `container`, dropping stale generations, and\n * acknowledge with `renderComplete`/`renderError`. Exposed (rather than inlined in {@link boot}) so\n * tests can exercise it with a fake channel. Returns a teardown function.\n */\nexport function startCanvasIframe(opts: {\n channel: IframeChannel<IframeToParent, ParentToIframe>;\n container: HTMLElement;\n}): () => void {\n const { channel, container } = opts;\n let handle: RenderHandle | null = null;\n // Disposer for the live render's dataScope re-post effect (see the render handler); stopped\n // Alongside the handle so a superseded render's refs can't keep posting.\n let stopDataScopeWatch: (() => void) | null = null;\n let latestGen = -1;\n // The raw page doc the current DOM was rendered from — the patch source-of-truth. `renderedGen`\n // Tracks which generation it (and the DOM) reflect, so patches for an in-flight/superseded render\n // Are handled correctly rather than applied against the wrong tree.\n let shadowDoc: JxMutableNode | null = null;\n let renderedGen = -1;\n // The mode of the LIVE render — gates the interactive surfaces (inline editing, insert zones,\n // Grab-drags) that only design/edit modes own. Adopted alongside shadowDoc.\n let currentMode: CanvasMode = \"design\";\n // The current render's retained context (scope/mapping), used to render subtrees for structural\n // Patches. Set together with `shadowDoc`, so it's non-null whenever a patch is applied.\n let renderCtx: IframeRenderCtx | null = null;\n\n // Cross-frame drag session (Phase 4c). `dragStart` records the source kind + the gen the session\n // Began against; dragMove/drop tag every reply with both so the parent can stale-gate them.\n let dragSrc: DragSrcKind | null = null;\n let dragGen = -1;\n // The parent-session id (from dragStart), so NATIVE drag events routed into this frame can post\n // DragOver/dropResult tagged for the parent's seq gate.\n let sessionSeq = -1;\n\n // ─── Auto-scroll (commit 6) — a SELF-SUSTAINING rAF loop. When a dragMove lands in an edge band,\n // The loop each frame scrolls the viewport AND re-hit-tests the CACHED cursor (elementFromPoint is\n // Viewport-relative, so the same x,y now resolves to a different node after the scroll) and re-posts\n // The over-preview. It is NOT driven by dragMove (the pointer is stationary at an edge-hold). Stops\n // On: band exit (next dragMove, dir 0), drop/dragEnd/dragCancel, or scroll extent reached (scrollY\n // Unchanged). The win/rAF body is the only uncovered line; scrollDirection is PURE + unit-tested.\n let autoScrollFrame = 0;\n // The cached edge-hold cursor. For a flow-3 (iframe-driven) drag it also carries the drag `src`\n // (the parent never posts a dragStart, so `dragSrc`/`dragGen` are null) and `withCursor`, so the\n // Loop re-posts dragOver WITH the cursor to keep the parent's ghost tracking during an edge-hold\n // (the parent has no pointer of its own then). Parent-driven flows (1/2/4) leave `src` undefined\n // And `withCursor` false — the tick falls back to `dragSrc`/`dragGen` and the parent moves the\n // Ghost from its own raw pointer.\n let autoScrollCursor: {\n x: number;\n y: number;\n dragSeq: number;\n withCursor: boolean;\n src?: DragSrcKind;\n gen?: number;\n } | null = null;\n const win = container.ownerDocument.defaultView;\n\n function stopAutoScroll(): void {\n if (autoScrollFrame && win) {\n win.cancelAnimationFrame(autoScrollFrame);\n }\n autoScrollFrame = 0;\n autoScrollCursor = null;\n }\n\n function autoScrollTick(): void {\n autoScrollFrame = 0;\n // Flow 3 supplies its own src on the cached cursor; flows 1/2/4 use the session's dragSrc.\n const src = autoScrollCursor?.src ?? dragSrc;\n if (!win || !autoScrollCursor || !src || !shadowDoc) {\n return;\n }\n const dir = scrollDirection(autoScrollCursor.y, win.innerHeight);\n if (dir === 0) {\n return;\n }\n const before = win.scrollY;\n win.scrollBy(0, dir * AUTO_SCROLL_STEP);\n if (win.scrollY === before) {\n // Scroll extent reached — nothing more to reveal, so stop the loop.\n return;\n }\n const preview = previewAt(autoScrollCursor, src, shadowDoc, container.ownerDocument);\n channel.post({\n // Flow 3 (withCursor) re-posts the cursor so the parent keeps tracking the ghost at an edge-hold.\n ...(autoScrollCursor.withCursor\n ? { cursor: { x: autoScrollCursor.x, y: autoScrollCursor.y } }\n : {}),\n dragSeq: autoScrollCursor.dragSeq,\n gen: autoScrollCursor.gen ?? dragGen,\n kind: \"dragOver\",\n preview,\n });\n autoScrollFrame = win.requestAnimationFrame(autoScrollTick);\n }\n\n /**\n * (Re)evaluate auto-scroll for a dragMove cursor: arm the loop in a band, stop it outside. The\n * optional `flow3` carries the iframe-driven drag's src/gen (and forces the cursor to be\n * re-posted during edge-holds); parent-driven flows pass nothing and the loop uses\n * `dragSrc`/`dragGen`.\n */\n function updateAutoScroll(\n cursor: { x: number; y: number },\n dragSeq: number,\n flow3?: { src: DragSrcKind; gen: number },\n ): void {\n if (!win || scrollDirection(cursor.y, win.innerHeight) === 0) {\n stopAutoScroll();\n return;\n }\n autoScrollCursor = {\n dragSeq,\n withCursor: flow3 != null,\n x: cursor.x,\n y: cursor.y,\n ...(flow3 ? { gen: flow3.gen, src: flow3.src } : {}),\n };\n if (!autoScrollFrame) {\n autoScrollFrame = win.requestAnimationFrame(autoScrollTick);\n }\n }\n\n // Report pointer hit/hover (resolved to data-jx-path) to the parent, which owns selection +\n // Overlays — the cross-origin bridge means the parent never reads our DOM directly. The shadow-doc\n // Accessor feeds the insertion \"+\" zone computation hung off the same pointermove (the parent\n // Draws the clickable \"+\" and runs the slash-menu → mutateInsertNode flow on click).\n const stopInteraction = startInteraction(channel, container.ownerDocument, {\n getMode: () => currentMode,\n getShadowDoc: () => shadowDoc,\n });\n // Forward global-shortcut keystrokes to the parent — its shortcut handler is bound to the editor\n // Document, so without this they'd be swallowed whenever focus is inside the canvas iframe.\n const stopKeyForwarding = startKeyForwarding(channel, container.ownerDocument);\n // Run inline editing (contenteditable) here, posting committed/split/insert results to the parent.\n // The shadow-doc accessor gates prop-bound sessions on the RAW instance prop value (template/$ref\n // Valued props render display sugar and must not be plain-text edited).\n const stopInlineEdit = startIframeInlineEdit(channel, container, {\n getMode: () => currentMode,\n getShadowDoc: () => shadowDoc,\n });\n // Bridge the engine's slash menu to the parent's Spectrum menu (show/nav/select over the channel).\n const stopSlashBridge = startIframeSlashBridge(channel, container.ownerDocument);\n // Flow 3 (grab-anywhere): detect an element-body drag and DRIVE it locally. A drag that begins in\n // The iframe gets its held-button moves in the IFRAME document (not the parent), so the iframe\n // Computes the preview/drop from its own cursor and posts dragOver/dropResult directly; the parent\n // Only adopts the seq, draws the indicator, and positions the ghost from the posted cursor. The\n // Detector reuses the SAME previewAt + auto-scroll loop the dragMove/drop handlers use.\n const stopGrabDetector = startGrabDetector(channel, container.ownerDocument, {\n armAutoScroll: (cursor, dragSeq, src) =>\n updateAutoScroll(cursor, dragSeq, { gen: renderedGen, src }),\n gen: () => renderedGen,\n getMode: () => currentMode,\n previewAt: (cursor, src) =>\n shadowDoc ? previewAt(cursor, src, shadowDoc, container.ownerDocument) : null,\n stopAutoScroll,\n });\n // Auto-recover canvas images that 404 on a cold first render (component <img>s created in\n // ConnectedCallback fire late, before the loopback server is warm). Re-fires the failed request a\n // Few times — what the manual data-sidebar \"Refresh\" does, but without a full re-render.\n const stopImageRetry = installCanvasImageRetry(container);\n\n // ─── Content-height auto-sizing ─────────────────────────────────────────────\n // Measure the content height and post it so the host sizes the iframe to fit — the canvas then never\n // Scrolls internally (the parent overlay can't follow an internal scroll, and every node stays inside\n // The iframe box so it's hit-testable). The runtime transposes viewport units to container units, so\n // This converges instead of feeding back; `MAX` is a backstop if some unit slips through. `container`\n // Is `#jx-canvas-root`, which overflows the fixed-size query container freely, so its scrollHeight is\n // The true content height.\n const MAX_CANVAS_HEIGHT = 30_000;\n let lastPostedHeight = -1;\n function postContentHeight(): void {\n const measured = Math.min(container.scrollHeight, MAX_CANVAS_HEIGHT);\n if (measured > 0 && Math.abs(measured - lastPostedHeight) >= 1) {\n lastPostedHeight = measured;\n // A component-definition root (marked by makeStamper) is a fragment, not a page — tell the host\n // So it can drop its 480px iframe floor and let a short component hug its content.\n const root = container.firstElementChild;\n const fragment = root instanceof HTMLElement && root.dataset.jxDefinitionRoot !== undefined;\n channel.post({ fragment, height: measured, kind: \"contentHeight\" });\n }\n }\n const ResizeObs = win?.ResizeObserver;\n const heightObserver = ResizeObs ? new ResizeObs(() => postContentHeight()) : null;\n heightObserver?.observe(container);\n\n // ─── Wheel forwarding (canvas zoom/pan) ─────────────────────────────────────\n // The iframe is sized to its content (never scrolls itself), so wheel events over it are meant for\n // The parent canvas: ctrl/cmd+wheel = zoom, plain = pan. A cross-origin OOPIF doesn't bubble wheel to\n // The parent, so forward the deltas + modifiers + cursor; the host redispatches to its wheel handler.\n const onWheel = (e: WheelEvent) => {\n e.preventDefault();\n channel.post({\n ctrlKey: e.ctrlKey,\n deltaX: e.deltaX,\n deltaY: e.deltaY,\n kind: \"forwardWheel\",\n metaKey: e.metaKey,\n shiftKey: e.shiftKey,\n x: e.clientX,\n y: e.clientY,\n });\n };\n container.ownerDocument.addEventListener(\"wheel\", onWheel, { passive: false });\n\n // ─── Native drag routing (flows 1/2/4 over the canvas) ─────────────────────\n // Chromium delivers native dragover/drop to the frame UNDER THE CURSOR, so once a\n // Parent-originated drag (palette / layers / ⠿ handle) crosses onto the canvas the parent stops\n // Seeing dragover — it can't forward dragMove, and cross-origin nothing preventDefaults here,\n // Giving the \"not allowed\" cursor and a dead drop. So handle the native stream directly: while a\n // Parent session is live (dragSrc set), accept the drag, post dragOver previews from OUR\n // ClientX/y (already iframe-local — no rect conversion), and on drop post the authoritative\n // DropResult. The cursor rides on dragOver so the parent can keep its ghost tracking (it has no\n // Pointer stream of its own while the drag is over this frame).\n //\n // A native stream arriving with NO session yet (dragSrc null) is a parent drag that crossed onto\n // The canvas before the parent could bind a host (it never sees a cursor inside the iframe rect) —\n // Post nativeDragEnter so the bridge binds the session here. Throttled: dragover fires\n // Continuously (~350ms even stationary), and an unclaimable stream (e.g. an OS file drag) would\n // Otherwise spam the channel forever.\n const NATIVE_ENTER_REPOST_MS = 300;\n let lastNativeEnterPost = 0;\n const onNativeDragOver = (e: DragEvent) => {\n if (!dragSrc) {\n const now = Date.now();\n if (now - lastNativeEnterPost >= NATIVE_ENTER_REPOST_MS) {\n lastNativeEnterPost = now;\n channel.post({ kind: \"nativeDragEnter\" });\n }\n return;\n }\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = \"move\";\n }\n const cursor = { x: e.clientX, y: e.clientY };\n const preview = shadowDoc\n ? previewAt(cursor, dragSrc, shadowDoc, container.ownerDocument)\n : null;\n channel.post({ cursor, dragSeq: sessionSeq, gen: dragGen, kind: \"dragOver\", preview });\n updateAutoScroll(cursor, sessionSeq);\n };\n const onNativeDrop = (e: DragEvent) => {\n if (!dragSrc) {\n return;\n }\n e.preventDefault();\n const cursor = { x: e.clientX, y: e.clientY };\n const preview = shadowDoc\n ? previewAt(cursor, dragSrc, shadowDoc, container.ownerDocument)\n : null;\n channel.post({\n dragSeq: sessionSeq,\n gen: dragGen,\n instruction: preview?.instruction ?? null,\n kind: \"dropResult\",\n targetPath: preview?.targetPath ?? null,\n });\n dragSrc = null;\n dragGen = -1;\n sessionSeq = -1;\n stopAutoScroll();\n clearIframeDrag();\n };\n container.ownerDocument.addEventListener(\"dragenter\", onNativeDragOver, true);\n container.ownerDocument.addEventListener(\"dragover\", onNativeDragOver, true);\n container.ownerDocument.addEventListener(\"drop\", onNativeDrop, true);\n\n const off = channel.onMessage((msg) => {\n if (msg.kind === \"measure\") {\n channel.post({\n hits: measureHits(msg.paths, container.ownerDocument),\n kind: \"geometry\",\n reqId: msg.reqId,\n });\n return;\n }\n if (msg.kind === \"evalExpr\") {\n // Live expression preview (M6): evaluate against the LIVE render's resolved scope — but only\n // The render the request targeted. A stale/ahead gen gets an empty reply (never values from\n // The wrong scope); the parent additionally gen-gates the reply against its own state.\n const results =\n msg.gen === renderedGen && renderCtx && shadowDoc\n ? evaluateLiveExprs(\n msg.exprs,\n renderCtx.defs as Record<string, unknown>,\n shadowDoc,\n msg.contextPath,\n )\n : [];\n channel.post({ gen: msg.gen, kind: \"evalResult\", reqId: msg.reqId, results });\n return;\n }\n if (msg.kind === \"patch\") {\n const { gen } = msg;\n if (gen < renderedGen) {\n // A newer full render already supersedes this edit — drop it.\n return;\n }\n if (gen > renderedGen || !shadowDoc || !renderCtx) {\n // The render this patch targets hasn't landed yet; let the parent escalate to a full render.\n channel.post({ gen, kind: \"patchError\", message: \"patch-ahead-of-render\" });\n return;\n }\n // A structural/subtree op that re-renders the active editable (or an ancestor) would detach\n // The session's element mid-edit — commit and end the session first (in-place style/text\n // Patches elsewhere leave it alone).\n if (isEditing() && patchDisturbsActiveEdit(msg.forwardOps)) {\n stopEditing();\n }\n try {\n applyIframePatch(shadowDoc, msg.forwardOps, container, renderCtx);\n channel.post({ gen, kind: \"patchComplete\" });\n } catch (error) {\n channel.post({\n gen,\n kind: \"patchError\",\n message: String((error as Error)?.message ?? error),\n });\n }\n return;\n }\n if (msg.kind === \"styleUpdate\") {\n // Stylebook live style edit: swap the ROOT's style and re-run the runtime's style applier —\n // One reapply regenerates the whole scoped-CSS cascade (real @media included) without a\n // Re-render. A stale gen is dropped; the superseding render carries the same style.\n if (msg.gen !== renderedGen || !shadowDoc) {\n return;\n }\n (shadowDoc as { style?: JxStyle }).style = msg.style as JxStyle;\n const rootEl = container.firstElementChild;\n if (rootEl instanceof HTMLElement) {\n reapplyStyle(\n rootEl,\n msg.style as JxStyle,\n (shadowDoc as { $media?: Record<string, string> }).$media ?? {},\n );\n }\n return;\n }\n if (msg.kind === \"dragStart\") {\n // Begin a drag session: retain the source kind + the gen it targets. dragMove/drop replies are\n // Tagged with this gen so the parent drops any that arrive after a re-render superseded it.\n dragSrc = msg.src;\n dragGen = msg.gen;\n sessionSeq = msg.dragSeq;\n return;\n }\n if (msg.kind === \"dragEnd\" || msg.kind === \"dragCancel\") {\n // The pointer left the canvas / the session was cancelled: forget the session so a late move\n // Or drop is a no-op, and clear any flow-3 (iframe-originated) drag state + auto-scroll.\n dragSrc = null;\n dragGen = -1;\n sessionSeq = -1;\n stopAutoScroll();\n clearIframeDrag();\n return;\n }\n if (msg.kind === \"dragMove\") {\n // Display-only preview: hit-test the forwarded cursor, compute the placement, post dragOver.\n // Null target/instruction → post a null preview so the parent clears any stale indicator.\n const preview =\n dragSrc && shadowDoc\n ? previewAt(msg.cursor, dragSrc, shadowDoc, container.ownerDocument)\n : null;\n channel.post({ dragSeq: msg.dragSeq, gen: dragGen, kind: \"dragOver\", preview });\n // Arm/stop the self-sustaining auto-scroll for this cursor (an edge-hold keeps scrolling).\n updateAutoScroll(msg.cursor, msg.dragSeq);\n return;\n }\n if (msg.kind === \"drop\") {\n // Compute the drop FRESH from the live DOM (never from a cached preview) and post the result.\n const preview =\n dragSrc && shadowDoc\n ? previewAt(msg.cursor, dragSrc, shadowDoc, container.ownerDocument)\n : null;\n channel.post({\n dragSeq: msg.dragSeq,\n gen: dragGen,\n instruction: preview?.instruction ?? null,\n kind: \"dropResult\",\n targetPath: preview?.targetPath ?? null,\n });\n dragSrc = null;\n dragGen = -1;\n sessionSeq = -1;\n stopAutoScroll();\n clearIframeDrag();\n return;\n }\n if (msg.kind === \"setColorScheme\") {\n // Document-level attribute flip — deliberately patch-free (no render, no gen).\n applyPreviewColorScheme(container.ownerDocument, msg.scheme);\n return;\n }\n if (msg.kind === \"siteStyleUpdate\") {\n // Live design-token edit: swap the site-style sheet in place, no re-render.\n applySiteStyle(msg.siteStyle, msg.media);\n return;\n }\n if (msg.kind !== \"render\" || msg.gen < latestGen) {\n return;\n }\n applyPreviewColorScheme(container.ownerDocument, msg.colorScheme ?? null);\n // A render replaces the DOM under a live edit session — COMMIT it first (never discard). The\n // Resulting editCommit/editEnd post synchronously here, so on the FIFO channel they precede\n // This render's renderComplete and the parent routes them by the host's not-yet-flipped tab\n // Identity — a commit racing a tab switch still lands in the document it belonged to.\n if (isEditing()) {\n stopEditing();\n }\n latestGen = msg.gen;\n const { gen, mapperCtx } = msg;\n const rawDoc = msg.shadowDoc as JxMutableNode;\n void (async () => {\n try {\n // Drop the previous render's reactive scopes (root + any surgically-rendered subtrees).\n disposeAllSubtrees();\n stopDataScopeWatch?.();\n stopDataScopeWatch = null;\n handle?.dispose();\n handle = await renderResolvedDocument({\n container,\n doc: msg.doc as JxDocument,\n docBase: msg.docBase,\n mapperCtx: {\n arrayPaths: new Set(mapperCtx.arrayPaths),\n canvasMode: mapperCtx.canvasMode,\n layoutWrapped: mapperCtx.layoutWrapped,\n pageContentOffset: mapperCtx.pageContentOffset,\n pageContentPrefix: mapperCtx.pageContentPrefix,\n },\n mode: msg.mode,\n siteStyle: msg.siteStyle,\n });\n if (gen === latestGen) {\n // Adopt this generation's shadow doc + render context only once it's the live render.\n shadowDoc = rawDoc;\n renderCtx = handle.ctx;\n renderedGen = gen;\n currentMode = msg.mode;\n channel.post({ gen, kind: \"renderComplete\" });\n // Thread a serializable snapshot of the resolved $defs to the parent so the data-explorer\n // Panel shows live data (the iframe, not the parent, now resolves the scope). Inside a\n // Reactive effect: dev-proxy data sources ($prototype/$src) return a ref that fills AFTER\n // BuildScope returns, and serializeDataScope reads defs[key], so the effect tracks those\n // Refs and RE-POSTS an updated snapshot when the data settles (the host gen-gates stale\n // Ones). Isolated in try/catch: a serialization failure never breaks the render ack above.\n const defs = handle.ctx.defs as Record<string, unknown>;\n stopDataScopeWatch = observeScope(() => {\n try {\n channel.post({ gen, kind: \"dataScope\", scope: serializeDataScope(defs) });\n } catch {\n // A pathological scope can't be serialized — skip; the render itself succeeded.\n }\n });\n // Size the iframe to the freshly-rendered content (the ResizeObserver tracks later reflows).\n postContentHeight();\n }\n } catch (error) {\n channel.post({\n gen,\n kind: \"renderError\",\n message: String((error as Error)?.message ?? error),\n });\n }\n })();\n });\n\n channel.post({ kind: \"ready\" });\n return () => {\n off();\n stopInteraction();\n stopKeyForwarding();\n stopInlineEdit();\n stopSlashBridge();\n stopGrabDetector();\n stopImageRetry();\n stopAutoScroll();\n heightObserver?.disconnect();\n container.ownerDocument.removeEventListener(\"wheel\", onWheel);\n container.ownerDocument.removeEventListener(\"dragenter\", onNativeDragOver, true);\n container.ownerDocument.removeEventListener(\"dragover\", onNativeDragOver, true);\n container.ownerDocument.removeEventListener(\"drop\", onNativeDrop, true);\n stopDataScopeWatch?.();\n handle?.dispose();\n };\n}\n\n/** The window surface {@link bootCanvasIframe} needs — injected so it's testable without a frame. */\ninterface BootWindow {\n location: { search: string };\n document: { querySelector: (selectors: string) => Element | null; body: HTMLElement };\n parent: { postMessage: (message: unknown, targetOrigin: string) => void };\n addEventListener: (type: \"message\", listener: (event: MessageEvent) => void) => void;\n removeEventListener: (type: \"message\", listener: (event: MessageEvent) => void) => void;\n}\n\n/**\n * Boot the entry against a window: open a token+origin-authenticated channel to the parent (origin\n * and token are passed in via the iframe URL) and render into `#jx-canvas-root` (or `<body>`).\n */\nexport function bootCanvasIframe(win: BootWindow): () => void {\n const params = new URLSearchParams(win.location.search);\n // Authenticate the runtime dev-proxy resolve/server fetches to the token-gated loopback server.\n // The server rpcToken rides the iframe URL as `rpcToken`; the `token` param is the separate\n // PostMessage channel secret (set by the host). Absent on dev/chromium, where setResolveToken no-ops.\n setResolveToken(params.get(\"rpcToken\"));\n // ParentOrigin authenticates the parent peer. The host (iframe-host.ts) passes it ONLY for an\n // Http(s) parent (dev / chromium — same-origin, the origin round-trips). It OMITS it for a\n // Non-http(s) parent (electrobun views://), whose custom scheme may not surface as a postMessage\n // Origin: a missing value here means fall back to \"*\" — token-gated, NOT a silent omission — and\n // Log it loudly so the looser origin check is visible.\n const explicitParentOrigin = params.get(\"parentOrigin\");\n const parentOrigin = explicitParentOrigin || \"*\";\n if (!explicitParentOrigin) {\n console.warn(\n \"[jx-canvas] no parentOrigin in iframe URL — accepting messages from any origin (token-gated). \" +\n \"The parent origin did not round-trip; the channel relies on the shared token alone.\",\n );\n }\n const container = (win.document.querySelector(\"#jx-canvas-root\") ??\n win.document.body) as HTMLElement;\n const channel = postMessageChannel<IframeToParent, ParentToIframe>({\n acceptOrigin: parentOrigin,\n source: win,\n target: win.parent,\n targetOrigin: parentOrigin,\n token: params.get(\"token\") || \"\",\n });\n return startCanvasIframe({ channel, container });\n}\n\n// Boot only when actually loaded as the iframe document (has a real parent frame), never in tests.\nif (typeof window !== \"undefined\" && window.parent !== window) {\n bootCanvasIframe(window as unknown as BootWindow);\n}\n"
|
|
34
35
|
],
|
|
35
|
-
"mappings": "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",
|
|
36
|
-
"debugId": "
|
|
36
|
+
"mappings": "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",
|
|
37
|
+
"debugId": "4938332B50832C2764756E2164756E21",
|
|
37
38
|
"names": []
|
|
38
39
|
}
|