@jxsuite/runtime 0.32.0 → 0.34.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/runtime.js +79 -12
- package/dist/runtime.js.map +5 -5
- package/package.json +3 -3
- package/src/runtime.ts +151 -11
package/dist/runtime.js.map
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../node_modules/@vue/shared/dist/shared.esm-bundler.js", "../../../node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js", "../src/expression.ts", "../../schema/src/guards.ts", "../src/runtime.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n* @vue/shared v3.5.38\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 return src.replace(commentStripRE, \"\");\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",
|
|
6
|
-
"/**\n* @vue/reactivity v3.5.38\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { extend, hasChanged, isArray, isIntegerKey, isSymbol, isMap, hasOwn, isObject, makeMap, capitalize, toRawType, def, isFunction, EMPTY_OBJ, isSet, isPlainObject, remove, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n // TODO isolatedDeclarations \"__v_skip\"\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal track `on` calls, allow `on` call multiple times\n */\n this._on = 0;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this._isPaused = false;\n this._warnOnRun = true;\n this.__v_skip = true;\n if (!detached && activeEffectScope) {\n if (activeEffectScope.active) {\n this.parent = activeEffectScope;\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n } else {\n this._active = false;\n this._warnOnRun = false;\n }\n }\n }\n get active() {\n return this._active;\n }\n pause() {\n if (this._active) {\n this._isPaused = true;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].pause();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].pause();\n }\n }\n }\n /**\n * Resumes the effect scope, including all child scopes and effects.\n */\n resume() {\n if (this._active) {\n if (this._isPaused) {\n this._isPaused = false;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].resume();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].resume();\n }\n }\n }\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && this._warnOnRun) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n if (++this._on === 1) {\n this.prevScope = activeEffectScope;\n activeEffectScope = this;\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n if (this._on > 0 && --this._on === 0) {\n if (activeEffectScope === this) {\n activeEffectScope = this.prevScope;\n } else {\n let current = activeEffectScope;\n while (current) {\n if (current.prevScope === this) {\n current.prevScope = this.prevScope;\n break;\n }\n current = current.prevScope;\n }\n }\n this.prevScope = void 0;\n }\n }\n stop(fromParent) {\n if (this._active) {\n this._active = false;\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n this.effects.length = 0;\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n this.cleanups.length = 0;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n this.scopes.length = 0;\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeSub;\nconst EffectFlags = {\n \"ACTIVE\": 1,\n \"1\": \"ACTIVE\",\n \"RUNNING\": 2,\n \"2\": \"RUNNING\",\n \"TRACKING\": 4,\n \"4\": \"TRACKING\",\n \"NOTIFIED\": 8,\n \"8\": \"NOTIFIED\",\n \"DIRTY\": 16,\n \"16\": \"DIRTY\",\n \"ALLOW_RECURSE\": 32,\n \"32\": \"ALLOW_RECURSE\",\n \"PAUSED\": 64,\n \"64\": \"PAUSED\",\n \"EVALUATED\": 128,\n \"128\": \"EVALUATED\"\n};\nconst pausedQueueEffects = /* @__PURE__ */ new WeakSet();\nclass ReactiveEffect {\n constructor(fn) {\n this.fn = fn;\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 1 | 4;\n /**\n * @internal\n */\n this.next = void 0;\n /**\n * @internal\n */\n this.cleanup = void 0;\n this.scheduler = void 0;\n if (activeEffectScope) {\n if (activeEffectScope.active) {\n activeEffectScope.effects.push(this);\n } else {\n this.flags &= -2;\n }\n }\n }\n pause() {\n this.flags |= 64;\n }\n resume() {\n if (this.flags & 64) {\n this.flags &= -65;\n if (pausedQueueEffects.has(this)) {\n pausedQueueEffects.delete(this);\n this.trigger();\n }\n }\n }\n /**\n * @internal\n */\n notify() {\n if (this.flags & 2 && !(this.flags & 32)) {\n return;\n }\n if (!(this.flags & 8)) {\n batch(this);\n }\n }\n run() {\n if (!(this.flags & 1)) {\n return this.fn();\n }\n this.flags |= 2;\n cleanupEffect(this);\n prepareDeps(this);\n const prevEffect = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = this;\n shouldTrack = true;\n try {\n return this.fn();\n } finally {\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub !== this) {\n warn(\n \"Active effect was not restored correctly - this is likely a Vue internal bug.\"\n );\n }\n cleanupDeps(this);\n activeSub = prevEffect;\n shouldTrack = prevShouldTrack;\n this.flags &= -3;\n }\n }\n stop() {\n if (this.flags & 1) {\n for (let link = this.deps; link; link = link.nextDep) {\n removeSub(link);\n }\n this.deps = this.depsTail = void 0;\n cleanupEffect(this);\n this.onStop && this.onStop();\n this.flags &= -2;\n }\n }\n trigger() {\n if (this.flags & 64) {\n pausedQueueEffects.add(this);\n } else if (this.scheduler) {\n this.scheduler();\n } else {\n this.runIfDirty();\n }\n }\n /**\n * @internal\n */\n runIfDirty() {\n if (isDirty(this)) {\n this.run();\n }\n }\n get dirty() {\n return isDirty(this);\n }\n}\nlet batchDepth = 0;\nlet batchedSub;\nlet batchedComputed;\nfunction batch(sub, isComputed = false) {\n sub.flags |= 8;\n if (isComputed) {\n sub.next = batchedComputed;\n batchedComputed = sub;\n return;\n }\n sub.next = batchedSub;\n batchedSub = sub;\n}\nfunction startBatch() {\n batchDepth++;\n}\nfunction endBatch() {\n if (--batchDepth > 0) {\n return;\n }\n if (batchedComputed) {\n let e = batchedComputed;\n batchedComputed = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n e = next;\n }\n }\n let error;\n while (batchedSub) {\n let e = batchedSub;\n batchedSub = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n if (e.flags & 1) {\n try {\n ;\n e.trigger();\n } catch (err) {\n if (!error) error = err;\n }\n }\n e = next;\n }\n }\n if (error) throw error;\n}\nfunction prepareDeps(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n link.version = -1;\n link.prevActiveLink = link.dep.activeLink;\n link.dep.activeLink = link;\n }\n}\nfunction cleanupDeps(sub) {\n let head;\n let tail = sub.depsTail;\n let link = tail;\n while (link) {\n const prev = link.prevDep;\n if (link.version === -1) {\n if (link === tail) tail = prev;\n removeSub(link);\n removeDep(link);\n } else {\n head = link;\n }\n link.dep.activeLink = link.prevActiveLink;\n link.prevActiveLink = void 0;\n link = prev;\n }\n sub.deps = head;\n sub.depsTail = tail;\n}\nfunction isDirty(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {\n return true;\n }\n }\n if (sub._dirty) {\n return true;\n }\n return false;\n}\nfunction refreshComputed(computed) {\n if (computed.flags & 4 && !(computed.flags & 16)) {\n return;\n }\n computed.flags &= -17;\n if (computed.globalVersion === globalVersion) {\n return;\n }\n computed.globalVersion = globalVersion;\n if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) {\n return;\n }\n computed.flags |= 2;\n const dep = computed.dep;\n const prevSub = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = computed;\n shouldTrack = true;\n try {\n prepareDeps(computed);\n const value = computed.fn(computed._value);\n if (dep.version === 0 || hasChanged(value, computed._value)) {\n computed.flags |= 128;\n computed._value = value;\n dep.version++;\n }\n } catch (err) {\n dep.version++;\n throw err;\n } finally {\n activeSub = prevSub;\n shouldTrack = prevShouldTrack;\n cleanupDeps(computed);\n computed.flags &= -3;\n }\n}\nfunction removeSub(link, soft = false) {\n const { dep, prevSub, nextSub } = link;\n if (prevSub) {\n prevSub.nextSub = nextSub;\n link.prevSub = void 0;\n }\n if (nextSub) {\n nextSub.prevSub = prevSub;\n link.nextSub = void 0;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && dep.subsHead === link) {\n dep.subsHead = nextSub;\n }\n if (dep.subs === link) {\n dep.subs = prevSub;\n if (!prevSub && dep.computed) {\n dep.computed.flags &= -5;\n for (let l = dep.computed.deps; l; l = l.nextDep) {\n removeSub(l, true);\n }\n }\n }\n if (!soft && !--dep.sc && dep.map) {\n dep.map.delete(dep.key);\n }\n}\nfunction removeDep(link) {\n const { prevDep, nextDep } = link;\n if (prevDep) {\n prevDep.nextDep = nextDep;\n link.prevDep = void 0;\n }\n if (nextDep) {\n nextDep.prevDep = prevDep;\n link.nextDep = void 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const e = new ReactiveEffect(fn);\n if (options) {\n extend(e, options);\n }\n try {\n e.run();\n } catch (err) {\n e.stop();\n throw err;\n }\n const runner = e.run.bind(e);\n runner.effect = e;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction onEffectCleanup(fn, failSilently = false) {\n if (activeSub instanceof ReactiveEffect) {\n activeSub.cleanup = fn;\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onEffectCleanup() was called when there was no active effect to associate with.`\n );\n }\n}\nfunction cleanupEffect(e) {\n const { cleanup } = e;\n e.cleanup = void 0;\n if (cleanup) {\n const prevSub = activeSub;\n activeSub = void 0;\n try {\n cleanup();\n } finally {\n activeSub = prevSub;\n }\n }\n}\n\nlet globalVersion = 0;\nclass Link {\n constructor(sub, dep) {\n this.sub = sub;\n this.dep = dep;\n this.version = dep.version;\n this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;\n }\n}\nclass Dep {\n // TODO isolatedDeclarations \"__v_skip\"\n constructor(computed) {\n this.computed = computed;\n this.version = 0;\n /**\n * Link between this dep and the current active effect\n */\n this.activeLink = void 0;\n /**\n * Doubly linked list representing the subscribing effects (tail)\n */\n this.subs = void 0;\n /**\n * For object property deps cleanup\n */\n this.map = void 0;\n this.key = void 0;\n /**\n * Subscriber counter\n */\n this.sc = 0;\n /**\n * @internal\n */\n this.__v_skip = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.subsHead = void 0;\n }\n }\n track(debugInfo) {\n if (!activeSub || !shouldTrack || activeSub === this.computed) {\n return;\n }\n let link = this.activeLink;\n if (link === void 0 || link.sub !== activeSub) {\n link = this.activeLink = new Link(activeSub, this);\n if (!activeSub.deps) {\n activeSub.deps = activeSub.depsTail = link;\n } else {\n link.prevDep = activeSub.depsTail;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n }\n addSub(link);\n } else if (link.version === -1) {\n link.version = this.version;\n if (link.nextDep) {\n const next = link.nextDep;\n next.prevDep = link.prevDep;\n if (link.prevDep) {\n link.prevDep.nextDep = next;\n }\n link.prevDep = activeSub.depsTail;\n link.nextDep = void 0;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n if (activeSub.deps === link) {\n activeSub.deps = next;\n }\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub.onTrack) {\n activeSub.onTrack(\n extend(\n {\n effect: activeSub\n },\n debugInfo\n )\n );\n }\n return link;\n }\n trigger(debugInfo) {\n this.version++;\n globalVersion++;\n this.notify(debugInfo);\n }\n notify(debugInfo) {\n startBatch();\n try {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (let head = this.subsHead; head; head = head.nextSub) {\n if (head.sub.onTrigger && !(head.sub.flags & 8)) {\n head.sub.onTrigger(\n extend(\n {\n effect: head.sub\n },\n debugInfo\n )\n );\n }\n }\n }\n for (let link = this.subs; link; link = link.prevSub) {\n if (link.sub.notify()) {\n ;\n link.sub.dep.notify();\n }\n }\n } finally {\n endBatch();\n }\n }\n}\nfunction addSub(link) {\n link.dep.sc++;\n if (link.sub.flags & 4) {\n const computed = link.dep.computed;\n if (computed && !link.dep.subs) {\n computed.flags |= 4 | 16;\n for (let l = computed.deps; l; l = l.nextDep) {\n addSub(l);\n }\n }\n const currentTail = link.dep.subs;\n if (currentTail !== link) {\n link.prevSub = currentTail;\n if (currentTail) currentTail.nextSub = link;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && link.dep.subsHead === void 0) {\n link.dep.subsHead = link;\n }\n link.dep.subs = link;\n }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Object iterate\" : \"\"\n);\nconst MAP_KEY_ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Map keys iterate\" : \"\"\n);\nconst ARRAY_ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Array iterate\" : \"\"\n);\nfunction track(target, type, key) {\n if (shouldTrack && activeSub) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = new Dep());\n dep.map = depsMap;\n dep.key = key;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.track({\n target,\n type,\n key\n });\n } else {\n dep.track();\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n globalVersion++;\n return;\n }\n const run = (dep) => {\n if (dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.trigger({\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n });\n } else {\n dep.trigger();\n }\n }\n };\n startBatch();\n if (type === \"clear\") {\n depsMap.forEach(run);\n } else {\n const targetIsArray = isArray(target);\n const isArrayIndex = targetIsArray && isIntegerKey(key);\n if (targetIsArray && key === \"length\") {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {\n run(dep);\n }\n });\n } else {\n if (key !== void 0 || depsMap.has(void 0)) {\n run(depsMap.get(key));\n }\n if (isArrayIndex) {\n run(depsMap.get(ARRAY_ITERATE_KEY));\n }\n switch (type) {\n case \"add\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isArrayIndex) {\n run(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n run(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n }\n endBatch();\n}\nfunction getDepFromReactive(object, key) {\n const depMap = targetMap.get(object);\n return depMap && depMap.get(key);\n}\n\nfunction reactiveReadArray(array) {\n const raw = toRaw(array);\n if (raw === array) return raw;\n track(raw, \"iterate\", ARRAY_ITERATE_KEY);\n return isShallow(array) ? raw : raw.map(toReactive);\n}\nfunction shallowReadArray(arr) {\n track(arr = toRaw(arr), \"iterate\", ARRAY_ITERATE_KEY);\n return arr;\n}\nfunction toWrapped(target, item) {\n if (isReadonly(target)) {\n return isReactive(target) ? toReadonly(toReactive(item)) : toReadonly(item);\n }\n return toReactive(item);\n}\nconst arrayInstrumentations = {\n __proto__: null,\n [Symbol.iterator]() {\n return iterator(this, Symbol.iterator, (item) => toWrapped(this, item));\n },\n concat(...args) {\n return reactiveReadArray(this).concat(\n ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)\n );\n },\n entries() {\n return iterator(this, \"entries\", (value) => {\n value[1] = toWrapped(this, value[1]);\n return value;\n });\n },\n every(fn, thisArg) {\n return apply(this, \"every\", fn, thisArg, void 0, arguments);\n },\n filter(fn, thisArg) {\n return apply(\n this,\n \"filter\",\n fn,\n thisArg,\n (v) => v.map((item) => toWrapped(this, item)),\n arguments\n );\n },\n find(fn, thisArg) {\n return apply(\n this,\n \"find\",\n fn,\n thisArg,\n (item) => toWrapped(this, item),\n arguments\n );\n },\n findIndex(fn, thisArg) {\n return apply(this, \"findIndex\", fn, thisArg, void 0, arguments);\n },\n findLast(fn, thisArg) {\n return apply(\n this,\n \"findLast\",\n fn,\n thisArg,\n (item) => toWrapped(this, item),\n arguments\n );\n },\n findLastIndex(fn, thisArg) {\n return apply(this, \"findLastIndex\", fn, thisArg, void 0, arguments);\n },\n // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement\n forEach(fn, thisArg) {\n return apply(this, \"forEach\", fn, thisArg, void 0, arguments);\n },\n includes(...args) {\n return searchProxy(this, \"includes\", args);\n },\n indexOf(...args) {\n return searchProxy(this, \"indexOf\", args);\n },\n join(separator) {\n return reactiveReadArray(this).join(separator);\n },\n // keys() iterator only reads `length`, no optimization required\n lastIndexOf(...args) {\n return searchProxy(this, \"lastIndexOf\", args);\n },\n map(fn, thisArg) {\n return apply(this, \"map\", fn, thisArg, void 0, arguments);\n },\n pop() {\n return noTracking(this, \"pop\");\n },\n push(...args) {\n return noTracking(this, \"push\", args);\n },\n reduce(fn, ...args) {\n return reduce(this, \"reduce\", fn, args);\n },\n reduceRight(fn, ...args) {\n return reduce(this, \"reduceRight\", fn, args);\n },\n shift() {\n return noTracking(this, \"shift\");\n },\n // slice could use ARRAY_ITERATE but also seems to beg for range tracking\n some(fn, thisArg) {\n return apply(this, \"some\", fn, thisArg, void 0, arguments);\n },\n splice(...args) {\n return noTracking(this, \"splice\", args);\n },\n toReversed() {\n return reactiveReadArray(this).toReversed();\n },\n toSorted(comparer) {\n return reactiveReadArray(this).toSorted(comparer);\n },\n toSpliced(...args) {\n return reactiveReadArray(this).toSpliced(...args);\n },\n unshift(...args) {\n return noTracking(this, \"unshift\", args);\n },\n values() {\n return iterator(this, \"values\", (item) => toWrapped(this, item));\n }\n};\nfunction iterator(self, method, wrapValue) {\n const arr = shallowReadArray(self);\n const iter = arr[method]();\n if (arr !== self && !isShallow(self)) {\n iter._next = iter.next;\n iter.next = () => {\n const result = iter._next();\n if (!result.done) {\n result.value = wrapValue(result.value);\n }\n return result;\n };\n }\n return iter;\n}\nconst arrayProto = Array.prototype;\nfunction apply(self, method, fn, thisArg, wrappedRetFn, args) {\n const arr = shallowReadArray(self);\n const needsWrap = arr !== self && !isShallow(self);\n const methodFn = arr[method];\n if (methodFn !== arrayProto[method]) {\n const result2 = methodFn.apply(self, args);\n return needsWrap ? toReactive(result2) : result2;\n }\n let wrappedFn = fn;\n if (arr !== self) {\n if (needsWrap) {\n wrappedFn = function(item, index) {\n return fn.call(this, toWrapped(self, item), index, self);\n };\n } else if (fn.length > 2) {\n wrappedFn = function(item, index) {\n return fn.call(this, item, index, self);\n };\n }\n }\n const result = methodFn.call(arr, wrappedFn, thisArg);\n return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;\n}\nfunction reduce(self, method, fn, args) {\n const arr = shallowReadArray(self);\n const needsWrap = arr !== self && !isShallow(self);\n let wrappedFn = fn;\n let wrapInitialAccumulator = false;\n if (arr !== self) {\n if (needsWrap) {\n wrapInitialAccumulator = args.length === 0;\n wrappedFn = function(acc, item, index) {\n if (wrapInitialAccumulator) {\n wrapInitialAccumulator = false;\n acc = toWrapped(self, acc);\n }\n return fn.call(this, acc, toWrapped(self, item), index, self);\n };\n } else if (fn.length > 3) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, item, index, self);\n };\n }\n }\n const result = arr[method](wrappedFn, ...args);\n return wrapInitialAccumulator ? toWrapped(self, result) : result;\n}\nfunction searchProxy(self, method, args) {\n const arr = toRaw(self);\n track(arr, \"iterate\", ARRAY_ITERATE_KEY);\n const res = arr[method](...args);\n if ((res === -1 || res === false) && isProxy(args[0])) {\n args[0] = toRaw(args[0]);\n return arr[method](...args);\n }\n return res;\n}\nfunction noTracking(self, method, args = []) {\n pauseTracking();\n startBatch();\n const res = toRaw(self)[method].apply(self, args);\n endBatch();\n resetTracking();\n return res;\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nfunction hasOwnProperty(key) {\n if (!isSymbol(key)) key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n if (key === \"__v_skip\") return target[\"__v_skip\"];\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the receiver is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n let fn;\n if (targetIsArray && (fn = arrayInstrumentations[key])) {\n return fn;\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(\n target,\n key,\n // if this is a proxy wrapping a ref, return methods using the raw ref\n // as receiver so that we don't have to call `toRaw` on the ref in all\n // its class methods\n isRef(target) ? target : receiver\n );\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n const value = targetIsArray && isIntegerKey(key) ? res : res.value;\n return isReadonly2 && isObject(value) ? readonly(value) : value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n const isArrayWithIntegerKey = isArray(target) && isIntegerKey(key);\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArrayWithIntegerKey && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target[key]\n );\n }\n return true;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArrayWithIntegerKey ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(\n target,\n key,\n value,\n isRef(target) ? target : receiver\n );\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return extend(\n // inheriting all iterator properties\n Object.create(innerIterator),\n {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n }\n }\n );\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations(readonly, shallow) {\n const instrumentations = {\n get(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n },\n get size() {\n const target = this[\"__v_raw\"];\n !readonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return target.size;\n },\n has(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n },\n forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n !readonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n }\n };\n extend(\n instrumentations,\n readonly ? {\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\")\n } : {\n add(value) {\n const target = toRaw(this);\n const proto = getProto(target);\n const rawValue = toRaw(value);\n const valueToAdd = !shallow && !isShallow(value) && !isReadonly(value) ? rawValue : value;\n const hadKey = proto.has.call(target, valueToAdd) || hasChanged(value, valueToAdd) && proto.has.call(target, value) || hasChanged(rawValue, valueToAdd) && proto.has.call(target, rawValue);\n if (!hadKey) {\n target.add(valueToAdd);\n trigger(target, \"add\", valueToAdd, valueToAdd);\n }\n return this;\n },\n set(key, value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n },\n delete(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n },\n clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(\n target,\n \"clear\",\n void 0,\n void 0,\n oldTarget\n );\n }\n return result;\n }\n }\n );\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n instrumentations[method] = createIterableMethod(method, readonly, shallow);\n });\n return instrumentations;\n}\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n const instrumentations = createInstrumentations(isReadonly2, shallow);\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\n// @__NO_SIDE_EFFECTS__\nfunction reactive(target) {\n if (/* @__PURE__ */ isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\n// @__NO_SIDE_EFFECTS__\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\n// @__NO_SIDE_EFFECTS__\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\n// @__NO_SIDE_EFFECTS__\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n target\n )}`\n );\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n if (target[\"__v_skip\"] || !Object.isExtensible(target)) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = targetTypeMap(toRawType(target));\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\n// @__NO_SIDE_EFFECTS__\nfunction isReactive(value) {\n if (/* @__PURE__ */ isReadonly(value)) {\n return /* @__PURE__ */ isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\n// @__NO_SIDE_EFFECTS__\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\n// @__NO_SIDE_EFFECTS__\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\n// @__NO_SIDE_EFFECTS__\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\n// @__NO_SIDE_EFFECTS__\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? /* @__PURE__ */ toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (!hasOwn(value, \"__v_skip\") && Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? /* @__PURE__ */ reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? /* @__PURE__ */ readonly(value) : value;\n\n// @__NO_SIDE_EFFECTS__\nfunction isRef(r) {\n return r ? r[\"__v_isRef\"] === true : false;\n}\n// @__NO_SIDE_EFFECTS__\nfunction ref(value) {\n return createRef(value, false);\n}\n// @__NO_SIDE_EFFECTS__\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (/* @__PURE__ */ isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, isShallow2) {\n this.dep = new Dep();\n this[\"__v_isRef\"] = true;\n this[\"__v_isShallow\"] = false;\n this._rawValue = isShallow2 ? value : toRaw(value);\n this._value = isShallow2 ? value : toReactive(value);\n this[\"__v_isShallow\"] = isShallow2;\n }\n get value() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n });\n } else {\n this.dep.track();\n }\n return this._value;\n }\n set value(newValue) {\n const oldValue = this._rawValue;\n const useDirectValue = this[\"__v_isShallow\"] || isShallow(newValue) || isReadonly(newValue);\n newValue = useDirectValue ? newValue : toRaw(newValue);\n if (hasChanged(newValue, oldValue)) {\n this._rawValue = newValue;\n this._value = useDirectValue ? newValue : toReactive(newValue);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.trigger({\n target: this,\n type: \"set\",\n key: \"value\",\n newValue,\n oldValue\n });\n } else {\n this.dep.trigger();\n }\n }\n }\n}\nfunction triggerRef(ref2) {\n if (ref2.dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n ref2.dep.trigger({\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: ref2._value\n });\n } else {\n ref2.dep.trigger();\n }\n }\n}\nfunction unref(ref2) {\n return /* @__PURE__ */ isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => key === \"__v_raw\" ? target : unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (/* @__PURE__ */ isRef(oldValue) && !/* @__PURE__ */ isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n const dep = this.dep = new Dep();\n const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._value = this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\n// @__NO_SIDE_EFFECTS__\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, key, _defaultValue) {\n this._object = _object;\n this._defaultValue = _defaultValue;\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n this._key = isSymbol(key) ? key : String(key);\n this._raw = toRaw(_object);\n let shallow = true;\n let obj = _object;\n if (!isArray(_object) || isSymbol(this._key) || !isIntegerKey(this._key)) {\n do {\n shallow = !isProxy(obj) || isShallow(obj);\n } while (shallow && (obj = obj[\"__v_raw\"]));\n }\n this._shallow = shallow;\n }\n get value() {\n let val = this._object[this._key];\n if (this._shallow) {\n val = unref(val);\n }\n return this._value = val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n if (this._shallow && /* @__PURE__ */ isRef(this._raw[this._key])) {\n const nestedRef = this._object[this._key];\n if (/* @__PURE__ */ isRef(nestedRef)) {\n nestedRef.value = newVal;\n return;\n }\n }\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(this._raw, this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this[\"__v_isRef\"] = true;\n this[\"__v_isReadonly\"] = true;\n this._value = void 0;\n }\n get value() {\n return this._value = this._getter();\n }\n}\n// @__NO_SIDE_EFFECTS__\nfunction toRef(source, key, defaultValue) {\n if (/* @__PURE__ */ isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return /* @__PURE__ */ ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n return new ObjectRefImpl(source, key, defaultValue);\n}\n\nclass ComputedRefImpl {\n constructor(fn, setter, isSSR) {\n this.fn = fn;\n this.setter = setter;\n /**\n * @internal\n */\n this._value = void 0;\n /**\n * @internal\n */\n this.dep = new Dep(this);\n /**\n * @internal\n */\n this.__v_isRef = true;\n // TODO isolatedDeclarations \"__v_isReadonly\"\n // A computed is also a subscriber that tracks other deps\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 16;\n /**\n * @internal\n */\n this.globalVersion = globalVersion - 1;\n /**\n * @internal\n */\n this.next = void 0;\n // for backwards compat\n this.effect = this;\n this[\"__v_isReadonly\"] = !setter;\n this.isSSR = isSSR;\n }\n /**\n * @internal\n */\n notify() {\n this.flags |= 16;\n if (!(this.flags & 8) && // avoid infinite self recursion\n activeSub !== this) {\n batch(this, true);\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) ;\n }\n get value() {\n const link = !!(process.env.NODE_ENV !== \"production\") ? this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n }) : this.dep.track();\n refreshComputed(this);\n if (link) {\n link.version = this.dep.version;\n }\n return this._value;\n }\n set value(newValue) {\n if (this.setter) {\n this.setter(newValue);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\"Write operation failed: computed value is readonly\");\n }\n }\n}\n// @__NO_SIDE_EFFECTS__\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n if (isFunction(getterOrOptions)) {\n getter = getterOrOptions;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.onTrack = debugOptions.onTrack;\n cRef.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\",\n \"IS_REF\": \"__v_isRef\"\n};\n\nconst WatchErrorCodes = {\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\"\n};\nconst INITIAL_WATCHER_VALUE = {};\nconst cleanupMap = /* @__PURE__ */ new WeakMap();\nlet activeWatcher = void 0;\nfunction getCurrentWatcher() {\n return activeWatcher;\n}\nfunction onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {\n if (owner) {\n let cleanups = cleanupMap.get(owner);\n if (!cleanups) cleanupMap.set(owner, cleanups = []);\n cleanups.push(cleanupFn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onWatcherCleanup() was called when there was no active watcher to associate with.`\n );\n }\n}\nfunction watch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, once, scheduler, augmentJob, call } = options;\n const warnInvalidSource = (s) => {\n (options.onWarn || warn)(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const reactiveGetter = (source2) => {\n if (deep) return source2;\n if (isShallow(source2) || deep === false || deep === 0)\n return traverse(source2, 1);\n return traverse(source2);\n };\n let effect;\n let getter;\n let cleanup;\n let boundCleanup;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return call ? call(s, 2) : s();\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = call ? () => call(source, 2) : source;\n } else {\n getter = () => {\n if (cleanup) {\n pauseTracking();\n try {\n cleanup();\n } finally {\n resetTracking();\n }\n }\n const currentEffect = activeWatcher;\n activeWatcher = effect;\n try {\n return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);\n } finally {\n activeWatcher = currentEffect;\n }\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n const depth = deep === true ? Infinity : deep;\n getter = () => traverse(baseGetter(), depth);\n }\n const scope = getCurrentScope();\n const watchHandle = () => {\n effect.stop();\n if (scope && scope.active) {\n remove(scope.effects, effect);\n }\n };\n if (once && cb) {\n const _cb = cb;\n cb = (...args) => {\n const res = _cb(...args);\n watchHandle();\n return res;\n };\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = (immediateFirstRun) => {\n if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (immediateFirstRun || deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {\n if (cleanup) {\n cleanup();\n }\n const currentWatcher = activeWatcher;\n activeWatcher = effect;\n try {\n const args = [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n boundCleanup\n ];\n oldValue = newValue;\n call ? call(cb, 3, args) : (\n // @ts-expect-error\n cb(...args)\n );\n } finally {\n activeWatcher = currentWatcher;\n }\n }\n } else {\n effect.run();\n }\n };\n if (augmentJob) {\n augmentJob(job);\n }\n effect = new ReactiveEffect(getter);\n effect.scheduler = scheduler ? () => scheduler(job, false) : job;\n boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);\n cleanup = effect.onStop = () => {\n const cleanups = cleanupMap.get(effect);\n if (cleanups) {\n if (call) {\n call(cleanups, 4);\n } else {\n for (const cleanup2 of cleanups) cleanup2();\n }\n cleanupMap.delete(effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = options.onTrack;\n effect.onTrigger = options.onTrigger;\n }\n if (cb) {\n if (immediate) {\n job(true);\n } else {\n oldValue = effect.run();\n }\n } else if (scheduler) {\n scheduler(job.bind(null, true), true);\n } else {\n effect.run();\n }\n watchHandle.pause = effect.pause.bind(effect);\n watchHandle.resume = effect.resume.bind(effect);\n watchHandle.stop = watchHandle;\n return watchHandle;\n}\nfunction traverse(value, depth = Infinity, seen) {\n if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n seen = seen || /* @__PURE__ */ new Map();\n if ((seen.get(value) || 0) >= depth) {\n return value;\n }\n seen.set(value, depth);\n depth--;\n if (isRef(value)) {\n traverse(value.value, depth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, seen);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n if (Object.prototype.propertyIsEnumerable.call(value, key)) {\n traverse(value[key], depth, seen);\n }\n }\n }\n return value;\n}\n\nexport { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };\n",
|
|
5
|
+
"/**\n* @vue/shared v3.5.39\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 return src.replace(commentStripRE, \"\");\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",
|
|
6
|
+
"/**\n* @vue/reactivity v3.5.39\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { extend, hasChanged, isArray, isIntegerKey, isSymbol, isMap, hasOwn, isObject, makeMap, capitalize, toRawType, def, isFunction, EMPTY_OBJ, isSet, isPlainObject, remove, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n // TODO isolatedDeclarations \"__v_skip\"\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal track `on` calls, allow `on` call multiple times\n */\n this._on = 0;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this._isPaused = false;\n this._warnOnRun = true;\n this.__v_skip = true;\n if (!detached && activeEffectScope) {\n if (activeEffectScope.active) {\n this.parent = activeEffectScope;\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n } else {\n this._active = false;\n this._warnOnRun = false;\n }\n }\n }\n get active() {\n return this._active;\n }\n pause() {\n if (this._active) {\n this._isPaused = true;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].pause();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].pause();\n }\n }\n }\n /**\n * Resumes the effect scope, including all child scopes and effects.\n */\n resume() {\n if (this._active) {\n if (this._isPaused) {\n this._isPaused = false;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].resume();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].resume();\n }\n }\n }\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && this._warnOnRun) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n if (++this._on === 1) {\n this.prevScope = activeEffectScope;\n activeEffectScope = this;\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n if (this._on > 0 && --this._on === 0) {\n if (activeEffectScope === this) {\n activeEffectScope = this.prevScope;\n } else {\n let current = activeEffectScope;\n while (current) {\n if (current.prevScope === this) {\n current.prevScope = this.prevScope;\n break;\n }\n current = current.prevScope;\n }\n }\n this.prevScope = void 0;\n }\n }\n stop(fromParent) {\n if (this._active) {\n this._active = false;\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n this.effects.length = 0;\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n this.cleanups.length = 0;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n this.scopes.length = 0;\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeSub;\nconst EffectFlags = {\n \"ACTIVE\": 1,\n \"1\": \"ACTIVE\",\n \"RUNNING\": 2,\n \"2\": \"RUNNING\",\n \"TRACKING\": 4,\n \"4\": \"TRACKING\",\n \"NOTIFIED\": 8,\n \"8\": \"NOTIFIED\",\n \"DIRTY\": 16,\n \"16\": \"DIRTY\",\n \"ALLOW_RECURSE\": 32,\n \"32\": \"ALLOW_RECURSE\",\n \"PAUSED\": 64,\n \"64\": \"PAUSED\",\n \"EVALUATED\": 128,\n \"128\": \"EVALUATED\"\n};\nconst pausedQueueEffects = /* @__PURE__ */ new WeakSet();\nclass ReactiveEffect {\n constructor(fn) {\n this.fn = fn;\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 1 | 4;\n /**\n * @internal\n */\n this.next = void 0;\n /**\n * @internal\n */\n this.cleanup = void 0;\n this.scheduler = void 0;\n if (activeEffectScope) {\n if (activeEffectScope.active) {\n activeEffectScope.effects.push(this);\n } else {\n this.flags &= -2;\n }\n }\n }\n pause() {\n this.flags |= 64;\n }\n resume() {\n if (this.flags & 64) {\n this.flags &= -65;\n if (pausedQueueEffects.has(this)) {\n pausedQueueEffects.delete(this);\n this.trigger();\n }\n }\n }\n /**\n * @internal\n */\n notify() {\n if (this.flags & 2 && !(this.flags & 32)) {\n return;\n }\n if (!(this.flags & 8)) {\n batch(this);\n }\n }\n run() {\n if (!(this.flags & 1)) {\n return this.fn();\n }\n this.flags |= 2;\n cleanupEffect(this);\n prepareDeps(this);\n const prevEffect = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = this;\n shouldTrack = true;\n try {\n return this.fn();\n } finally {\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub !== this) {\n warn(\n \"Active effect was not restored correctly - this is likely a Vue internal bug.\"\n );\n }\n cleanupDeps(this);\n activeSub = prevEffect;\n shouldTrack = prevShouldTrack;\n this.flags &= -3;\n }\n }\n stop() {\n if (this.flags & 1) {\n for (let link = this.deps; link; link = link.nextDep) {\n removeSub(link);\n }\n this.deps = this.depsTail = void 0;\n cleanupEffect(this);\n this.onStop && this.onStop();\n this.flags &= -2;\n }\n }\n trigger() {\n if (this.flags & 64) {\n pausedQueueEffects.add(this);\n } else if (this.scheduler) {\n this.scheduler();\n } else {\n this.runIfDirty();\n }\n }\n /**\n * @internal\n */\n runIfDirty() {\n if (isDirty(this)) {\n this.run();\n }\n }\n get dirty() {\n return isDirty(this);\n }\n}\nlet batchDepth = 0;\nlet batchedSub;\nlet batchedComputed;\nfunction batch(sub, isComputed = false) {\n sub.flags |= 8;\n if (isComputed) {\n sub.next = batchedComputed;\n batchedComputed = sub;\n return;\n }\n sub.next = batchedSub;\n batchedSub = sub;\n}\nfunction startBatch() {\n batchDepth++;\n}\nfunction endBatch() {\n if (--batchDepth > 0) {\n return;\n }\n if (batchedComputed) {\n let e = batchedComputed;\n batchedComputed = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n e = next;\n }\n }\n let error;\n while (batchedSub) {\n let e = batchedSub;\n batchedSub = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n if (e.flags & 1) {\n try {\n ;\n e.trigger();\n } catch (err) {\n if (!error) error = err;\n }\n }\n e = next;\n }\n }\n if (error) throw error;\n}\nfunction prepareDeps(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n link.version = -1;\n link.prevActiveLink = link.dep.activeLink;\n link.dep.activeLink = link;\n }\n}\nfunction cleanupDeps(sub) {\n let head;\n let tail = sub.depsTail;\n let link = tail;\n while (link) {\n const prev = link.prevDep;\n if (link.version === -1) {\n if (link === tail) tail = prev;\n removeSub(link);\n removeDep(link);\n } else {\n head = link;\n }\n link.dep.activeLink = link.prevActiveLink;\n link.prevActiveLink = void 0;\n link = prev;\n }\n sub.deps = head;\n sub.depsTail = tail;\n}\nfunction isDirty(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {\n return true;\n }\n }\n if (sub._dirty) {\n return true;\n }\n return false;\n}\nfunction refreshComputed(computed) {\n if (computed.flags & 4 && !(computed.flags & 16)) {\n return;\n }\n computed.flags &= -17;\n if (computed.globalVersion === globalVersion) {\n return;\n }\n computed.globalVersion = globalVersion;\n if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) {\n return;\n }\n computed.flags |= 2;\n const dep = computed.dep;\n const prevSub = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = computed;\n shouldTrack = true;\n try {\n prepareDeps(computed);\n const value = computed.fn(computed._value);\n if (dep.version === 0 || hasChanged(value, computed._value)) {\n computed.flags |= 128;\n computed._value = value;\n dep.version++;\n }\n } catch (err) {\n dep.version++;\n throw err;\n } finally {\n activeSub = prevSub;\n shouldTrack = prevShouldTrack;\n cleanupDeps(computed);\n computed.flags &= -3;\n }\n}\nfunction removeSub(link, soft = false) {\n const { dep, prevSub, nextSub } = link;\n if (prevSub) {\n prevSub.nextSub = nextSub;\n link.prevSub = void 0;\n }\n if (nextSub) {\n nextSub.prevSub = prevSub;\n link.nextSub = void 0;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && dep.subsHead === link) {\n dep.subsHead = nextSub;\n }\n if (dep.subs === link) {\n dep.subs = prevSub;\n if (!prevSub && dep.computed) {\n dep.computed.flags &= -5;\n for (let l = dep.computed.deps; l; l = l.nextDep) {\n removeSub(l, true);\n }\n }\n }\n if (!soft && !--dep.sc && dep.map) {\n dep.map.delete(dep.key);\n }\n}\nfunction removeDep(link) {\n const { prevDep, nextDep } = link;\n if (prevDep) {\n prevDep.nextDep = nextDep;\n link.prevDep = void 0;\n }\n if (nextDep) {\n nextDep.prevDep = prevDep;\n link.nextDep = void 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const e = new ReactiveEffect(fn);\n if (options) {\n extend(e, options);\n }\n try {\n e.run();\n } catch (err) {\n e.stop();\n throw err;\n }\n const runner = e.run.bind(e);\n runner.effect = e;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction onEffectCleanup(fn, failSilently = false) {\n if (activeSub instanceof ReactiveEffect) {\n activeSub.cleanup = fn;\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onEffectCleanup() was called when there was no active effect to associate with.`\n );\n }\n}\nfunction cleanupEffect(e) {\n const { cleanup } = e;\n e.cleanup = void 0;\n if (cleanup) {\n const prevSub = activeSub;\n activeSub = void 0;\n try {\n cleanup();\n } finally {\n activeSub = prevSub;\n }\n }\n}\n\nlet globalVersion = 0;\nclass Link {\n constructor(sub, dep) {\n this.sub = sub;\n this.dep = dep;\n this.version = dep.version;\n this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;\n }\n}\nclass Dep {\n // TODO isolatedDeclarations \"__v_skip\"\n constructor(computed) {\n this.computed = computed;\n this.version = 0;\n /**\n * Link between this dep and the current active effect\n */\n this.activeLink = void 0;\n /**\n * Doubly linked list representing the subscribing effects (tail)\n */\n this.subs = void 0;\n /**\n * For object property deps cleanup\n */\n this.map = void 0;\n this.key = void 0;\n /**\n * Subscriber counter\n */\n this.sc = 0;\n /**\n * @internal\n */\n this.__v_skip = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.subsHead = void 0;\n }\n }\n track(debugInfo) {\n if (!activeSub || !shouldTrack || activeSub === this.computed) {\n return;\n }\n let link = this.activeLink;\n if (link === void 0 || link.sub !== activeSub) {\n link = this.activeLink = new Link(activeSub, this);\n if (!activeSub.deps) {\n activeSub.deps = activeSub.depsTail = link;\n } else {\n link.prevDep = activeSub.depsTail;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n }\n addSub(link);\n } else if (link.version === -1) {\n link.version = this.version;\n if (link.nextDep) {\n const next = link.nextDep;\n next.prevDep = link.prevDep;\n if (link.prevDep) {\n link.prevDep.nextDep = next;\n }\n link.prevDep = activeSub.depsTail;\n link.nextDep = void 0;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n if (activeSub.deps === link) {\n activeSub.deps = next;\n }\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub.onTrack) {\n activeSub.onTrack(\n extend(\n {\n effect: activeSub\n },\n debugInfo\n )\n );\n }\n return link;\n }\n trigger(debugInfo) {\n this.version++;\n globalVersion++;\n this.notify(debugInfo);\n }\n notify(debugInfo) {\n startBatch();\n try {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (let head = this.subsHead; head; head = head.nextSub) {\n if (head.sub.onTrigger && !(head.sub.flags & 8)) {\n head.sub.onTrigger(\n extend(\n {\n effect: head.sub\n },\n debugInfo\n )\n );\n }\n }\n }\n for (let link = this.subs; link; link = link.prevSub) {\n if (link.sub.notify()) {\n ;\n link.sub.dep.notify();\n }\n }\n } finally {\n endBatch();\n }\n }\n}\nfunction addSub(link) {\n link.dep.sc++;\n if (link.sub.flags & 4) {\n const computed = link.dep.computed;\n if (computed && !link.dep.subs) {\n computed.flags |= 4 | 16;\n for (let l = computed.deps; l; l = l.nextDep) {\n addSub(l);\n }\n }\n const currentTail = link.dep.subs;\n if (currentTail !== link) {\n link.prevSub = currentTail;\n if (currentTail) currentTail.nextSub = link;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && link.dep.subsHead === void 0) {\n link.dep.subsHead = link;\n }\n link.dep.subs = link;\n }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Object iterate\" : \"\"\n);\nconst MAP_KEY_ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Map keys iterate\" : \"\"\n);\nconst ARRAY_ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Array iterate\" : \"\"\n);\nfunction track(target, type, key) {\n if (shouldTrack && activeSub) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = new Dep());\n dep.map = depsMap;\n dep.key = key;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.track({\n target,\n type,\n key\n });\n } else {\n dep.track();\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n globalVersion++;\n return;\n }\n const run = (dep) => {\n if (dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.trigger({\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n });\n } else {\n dep.trigger();\n }\n }\n };\n startBatch();\n if (type === \"clear\") {\n depsMap.forEach(run);\n } else {\n const targetIsArray = isArray(target);\n const isArrayIndex = targetIsArray && isIntegerKey(key);\n if (targetIsArray && key === \"length\") {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {\n run(dep);\n }\n });\n } else {\n if (key !== void 0 || depsMap.has(void 0)) {\n run(depsMap.get(key));\n }\n if (isArrayIndex) {\n run(depsMap.get(ARRAY_ITERATE_KEY));\n }\n switch (type) {\n case \"add\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isArrayIndex) {\n run(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n run(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n }\n endBatch();\n}\nfunction getDepFromReactive(object, key) {\n const depMap = targetMap.get(object);\n return depMap && depMap.get(key);\n}\n\nfunction reactiveReadArray(array) {\n const raw = toRaw(array);\n if (raw === array) return raw;\n track(raw, \"iterate\", ARRAY_ITERATE_KEY);\n return isShallow(array) ? raw : raw.map(toReactive);\n}\nfunction shallowReadArray(arr) {\n track(arr = toRaw(arr), \"iterate\", ARRAY_ITERATE_KEY);\n return arr;\n}\nfunction toWrapped(target, item) {\n if (isReadonly(target)) {\n return isReactive(target) ? toReadonly(toReactive(item)) : toReadonly(item);\n }\n return toReactive(item);\n}\nconst arrayInstrumentations = {\n __proto__: null,\n [Symbol.iterator]() {\n return iterator(this, Symbol.iterator, (item) => toWrapped(this, item));\n },\n concat(...args) {\n return reactiveReadArray(this).concat(\n ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)\n );\n },\n entries() {\n return iterator(this, \"entries\", (value) => {\n value[1] = toWrapped(this, value[1]);\n return value;\n });\n },\n every(fn, thisArg) {\n return apply(this, \"every\", fn, thisArg, void 0, arguments);\n },\n filter(fn, thisArg) {\n return apply(\n this,\n \"filter\",\n fn,\n thisArg,\n (v) => v.map((item) => toWrapped(this, item)),\n arguments\n );\n },\n find(fn, thisArg) {\n return apply(\n this,\n \"find\",\n fn,\n thisArg,\n (item) => toWrapped(this, item),\n arguments\n );\n },\n findIndex(fn, thisArg) {\n return apply(this, \"findIndex\", fn, thisArg, void 0, arguments);\n },\n findLast(fn, thisArg) {\n return apply(\n this,\n \"findLast\",\n fn,\n thisArg,\n (item) => toWrapped(this, item),\n arguments\n );\n },\n findLastIndex(fn, thisArg) {\n return apply(this, \"findLastIndex\", fn, thisArg, void 0, arguments);\n },\n // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement\n forEach(fn, thisArg) {\n return apply(this, \"forEach\", fn, thisArg, void 0, arguments);\n },\n includes(...args) {\n return searchProxy(this, \"includes\", args);\n },\n indexOf(...args) {\n return searchProxy(this, \"indexOf\", args);\n },\n join(separator) {\n return reactiveReadArray(this).join(separator);\n },\n // keys() iterator only reads `length`, no optimization required\n lastIndexOf(...args) {\n return searchProxy(this, \"lastIndexOf\", args);\n },\n map(fn, thisArg) {\n return apply(this, \"map\", fn, thisArg, void 0, arguments);\n },\n pop() {\n return noTracking(this, \"pop\");\n },\n push(...args) {\n return noTracking(this, \"push\", args);\n },\n reduce(fn, ...args) {\n return reduce(this, \"reduce\", fn, args);\n },\n reduceRight(fn, ...args) {\n return reduce(this, \"reduceRight\", fn, args);\n },\n shift() {\n return noTracking(this, \"shift\");\n },\n // slice could use ARRAY_ITERATE but also seems to beg for range tracking\n some(fn, thisArg) {\n return apply(this, \"some\", fn, thisArg, void 0, arguments);\n },\n splice(...args) {\n return noTracking(this, \"splice\", args);\n },\n toReversed() {\n return reactiveReadArray(this).toReversed();\n },\n toSorted(comparer) {\n return reactiveReadArray(this).toSorted(comparer);\n },\n toSpliced(...args) {\n return reactiveReadArray(this).toSpliced(...args);\n },\n unshift(...args) {\n return noTracking(this, \"unshift\", args);\n },\n values() {\n return iterator(this, \"values\", (item) => toWrapped(this, item));\n }\n};\nfunction iterator(self, method, wrapValue) {\n const arr = shallowReadArray(self);\n const iter = arr[method]();\n if (arr !== self && !isShallow(self)) {\n iter._next = iter.next;\n iter.next = () => {\n const result = iter._next();\n if (!result.done) {\n result.value = wrapValue(result.value);\n }\n return result;\n };\n }\n return iter;\n}\nconst arrayProto = Array.prototype;\nfunction apply(self, method, fn, thisArg, wrappedRetFn, args) {\n const arr = shallowReadArray(self);\n const needsWrap = arr !== self && !isShallow(self);\n const methodFn = arr[method];\n if (methodFn !== arrayProto[method]) {\n const result2 = methodFn.apply(self, args);\n return needsWrap ? toReactive(result2) : result2;\n }\n let wrappedFn = fn;\n if (arr !== self) {\n if (needsWrap) {\n wrappedFn = function(item, index) {\n return fn.call(this, toWrapped(self, item), index, self);\n };\n } else if (fn.length > 2) {\n wrappedFn = function(item, index) {\n return fn.call(this, item, index, self);\n };\n }\n }\n const result = methodFn.call(arr, wrappedFn, thisArg);\n return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;\n}\nfunction reduce(self, method, fn, args) {\n const arr = shallowReadArray(self);\n const needsWrap = arr !== self && !isShallow(self);\n let wrappedFn = fn;\n let wrapInitialAccumulator = false;\n if (arr !== self) {\n if (needsWrap) {\n wrapInitialAccumulator = args.length === 0;\n wrappedFn = function(acc, item, index) {\n if (wrapInitialAccumulator) {\n wrapInitialAccumulator = false;\n acc = toWrapped(self, acc);\n }\n return fn.call(this, acc, toWrapped(self, item), index, self);\n };\n } else if (fn.length > 3) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, item, index, self);\n };\n }\n }\n const result = arr[method](wrappedFn, ...args);\n return wrapInitialAccumulator ? toWrapped(self, result) : result;\n}\nfunction searchProxy(self, method, args) {\n const arr = toRaw(self);\n track(arr, \"iterate\", ARRAY_ITERATE_KEY);\n const res = arr[method](...args);\n if ((res === -1 || res === false) && isProxy(args[0])) {\n args[0] = toRaw(args[0]);\n return arr[method](...args);\n }\n return res;\n}\nfunction noTracking(self, method, args = []) {\n pauseTracking();\n startBatch();\n const res = toRaw(self)[method].apply(self, args);\n endBatch();\n resetTracking();\n return res;\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nfunction hasOwnProperty(key) {\n if (!isSymbol(key)) key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n if (key === \"__v_skip\") return target[\"__v_skip\"];\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the receiver is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n let fn;\n if (targetIsArray && (fn = arrayInstrumentations[key])) {\n return fn;\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(\n target,\n key,\n // if this is a proxy wrapping a ref, return methods using the raw ref\n // as receiver so that we don't have to call `toRaw` on the ref in all\n // its class methods\n isRef(target) ? target : receiver\n );\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n const value = targetIsArray && isIntegerKey(key) ? res : res.value;\n return isReadonly2 && isObject(value) ? readonly(value) : value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n const isArrayWithIntegerKey = isArray(target) && isIntegerKey(key);\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArrayWithIntegerKey && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target[key]\n );\n }\n return true;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArrayWithIntegerKey ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(\n target,\n key,\n value,\n isRef(target) ? target : receiver\n );\n if (target === toRaw(receiver) && result) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return extend(\n // inheriting all iterator properties\n Object.create(innerIterator),\n {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n }\n }\n );\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations(readonly, shallow) {\n const instrumentations = {\n get(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n },\n get size() {\n const target = this[\"__v_raw\"];\n !readonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return target.size;\n },\n has(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n },\n forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n !readonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n }\n };\n extend(\n instrumentations,\n readonly ? {\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\")\n } : {\n add(value) {\n const target = toRaw(this);\n const proto = getProto(target);\n const rawValue = toRaw(value);\n const valueToAdd = !shallow && !isShallow(value) && !isReadonly(value) ? rawValue : value;\n const hadKey = proto.has.call(target, valueToAdd) || hasChanged(value, valueToAdd) && proto.has.call(target, value) || hasChanged(rawValue, valueToAdd) && proto.has.call(target, rawValue);\n if (!hadKey) {\n target.add(valueToAdd);\n trigger(target, \"add\", valueToAdd, valueToAdd);\n }\n return this;\n },\n set(key, value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n },\n delete(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n },\n clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(\n target,\n \"clear\",\n void 0,\n void 0,\n oldTarget\n );\n }\n return result;\n }\n }\n );\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n instrumentations[method] = createIterableMethod(method, readonly, shallow);\n });\n return instrumentations;\n}\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n const instrumentations = createInstrumentations(isReadonly2, shallow);\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\n// @__NO_SIDE_EFFECTS__\nfunction reactive(target) {\n if (/* @__PURE__ */ isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\n// @__NO_SIDE_EFFECTS__\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\n// @__NO_SIDE_EFFECTS__\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\n// @__NO_SIDE_EFFECTS__\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n target\n )}`\n );\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n if (target[\"__v_skip\"] || !Object.isExtensible(target)) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = targetTypeMap(toRawType(target));\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\n// @__NO_SIDE_EFFECTS__\nfunction isReactive(value) {\n if (/* @__PURE__ */ isReadonly(value)) {\n return /* @__PURE__ */ isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\n// @__NO_SIDE_EFFECTS__\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\n// @__NO_SIDE_EFFECTS__\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\n// @__NO_SIDE_EFFECTS__\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\n// @__NO_SIDE_EFFECTS__\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? /* @__PURE__ */ toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (!hasOwn(value, \"__v_skip\") && Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? /* @__PURE__ */ reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? /* @__PURE__ */ readonly(value) : value;\n\n// @__NO_SIDE_EFFECTS__\nfunction isRef(r) {\n return r ? r[\"__v_isRef\"] === true : false;\n}\n// @__NO_SIDE_EFFECTS__\nfunction ref(value) {\n return createRef(value, false);\n}\n// @__NO_SIDE_EFFECTS__\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (/* @__PURE__ */ isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, isShallow2) {\n this.dep = new Dep();\n this[\"__v_isRef\"] = true;\n this[\"__v_isShallow\"] = false;\n this._rawValue = isShallow2 ? value : toRaw(value);\n this._value = isShallow2 ? value : toReactive(value);\n this[\"__v_isShallow\"] = isShallow2;\n }\n get value() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n });\n } else {\n this.dep.track();\n }\n return this._value;\n }\n set value(newValue) {\n const oldValue = this._rawValue;\n const useDirectValue = this[\"__v_isShallow\"] || isShallow(newValue) || isReadonly(newValue);\n newValue = useDirectValue ? newValue : toRaw(newValue);\n if (hasChanged(newValue, oldValue)) {\n this._rawValue = newValue;\n this._value = useDirectValue ? newValue : toReactive(newValue);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.trigger({\n target: this,\n type: \"set\",\n key: \"value\",\n newValue,\n oldValue\n });\n } else {\n this.dep.trigger();\n }\n }\n }\n}\nfunction triggerRef(ref2) {\n if (ref2.dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n ref2.dep.trigger({\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: ref2._value\n });\n } else {\n ref2.dep.trigger();\n }\n }\n}\nfunction unref(ref2) {\n return /* @__PURE__ */ isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => key === \"__v_raw\" ? target : unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (/* @__PURE__ */ isRef(oldValue) && !/* @__PURE__ */ isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n const dep = this.dep = new Dep();\n const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._value = this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\n// @__NO_SIDE_EFFECTS__\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, key, _defaultValue) {\n this._object = _object;\n this._defaultValue = _defaultValue;\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n this._key = isSymbol(key) ? key : String(key);\n this._raw = toRaw(_object);\n let shallow = true;\n let obj = _object;\n if (!isArray(_object) || isSymbol(this._key) || !isIntegerKey(this._key)) {\n do {\n shallow = !isProxy(obj) || isShallow(obj);\n } while (shallow && (obj = obj[\"__v_raw\"]));\n }\n this._shallow = shallow;\n }\n get value() {\n let val = this._object[this._key];\n if (this._shallow) {\n val = unref(val);\n }\n return this._value = val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n if (this._shallow && /* @__PURE__ */ isRef(this._raw[this._key])) {\n const nestedRef = this._object[this._key];\n if (/* @__PURE__ */ isRef(nestedRef)) {\n nestedRef.value = newVal;\n return;\n }\n }\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(this._raw, this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this[\"__v_isRef\"] = true;\n this[\"__v_isReadonly\"] = true;\n this._value = void 0;\n }\n get value() {\n return this._value = this._getter();\n }\n}\n// @__NO_SIDE_EFFECTS__\nfunction toRef(source, key, defaultValue) {\n if (/* @__PURE__ */ isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return /* @__PURE__ */ ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n return new ObjectRefImpl(source, key, defaultValue);\n}\n\nclass ComputedRefImpl {\n constructor(fn, setter, isSSR) {\n this.fn = fn;\n this.setter = setter;\n /**\n * @internal\n */\n this._value = void 0;\n /**\n * @internal\n */\n this.dep = new Dep(this);\n /**\n * @internal\n */\n this.__v_isRef = true;\n // TODO isolatedDeclarations \"__v_isReadonly\"\n // A computed is also a subscriber that tracks other deps\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 16;\n /**\n * @internal\n */\n this.globalVersion = globalVersion - 1;\n /**\n * @internal\n */\n this.next = void 0;\n // for backwards compat\n this.effect = this;\n this[\"__v_isReadonly\"] = !setter;\n this.isSSR = isSSR;\n }\n /**\n * @internal\n */\n notify() {\n this.flags |= 16;\n if (!(this.flags & 8) && // avoid infinite self recursion\n activeSub !== this) {\n batch(this, true);\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) ;\n }\n get value() {\n const link = !!(process.env.NODE_ENV !== \"production\") ? this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n }) : this.dep.track();\n refreshComputed(this);\n if (link) {\n link.version = this.dep.version;\n }\n return this._value;\n }\n set value(newValue) {\n if (this.setter) {\n this.setter(newValue);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\"Write operation failed: computed value is readonly\");\n }\n }\n}\n// @__NO_SIDE_EFFECTS__\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n if (isFunction(getterOrOptions)) {\n getter = getterOrOptions;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.onTrack = debugOptions.onTrack;\n cRef.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\",\n \"IS_REF\": \"__v_isRef\"\n};\n\nconst WatchErrorCodes = {\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\"\n};\nconst INITIAL_WATCHER_VALUE = {};\nconst cleanupMap = /* @__PURE__ */ new WeakMap();\nlet activeWatcher = void 0;\nfunction getCurrentWatcher() {\n return activeWatcher;\n}\nfunction onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {\n if (owner) {\n let cleanups = cleanupMap.get(owner);\n if (!cleanups) cleanupMap.set(owner, cleanups = []);\n cleanups.push(cleanupFn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onWatcherCleanup() was called when there was no active watcher to associate with.`\n );\n }\n}\nfunction watch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, once, scheduler, augmentJob, call } = options;\n const warnInvalidSource = (s) => {\n (options.onWarn || warn)(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const reactiveGetter = (source2) => {\n if (deep) return source2;\n if (isShallow(source2) || deep === false || deep === 0)\n return traverse(source2, 1);\n return traverse(source2);\n };\n let effect;\n let getter;\n let cleanup;\n let boundCleanup;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return call ? call(s, 2) : s();\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = call ? () => call(source, 2) : source;\n } else {\n getter = () => {\n if (cleanup) {\n pauseTracking();\n try {\n cleanup();\n } finally {\n resetTracking();\n }\n }\n const currentEffect = activeWatcher;\n activeWatcher = effect;\n try {\n return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);\n } finally {\n activeWatcher = currentEffect;\n }\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n const depth = deep === true ? Infinity : deep;\n getter = () => traverse(baseGetter(), depth);\n }\n const scope = getCurrentScope();\n const watchHandle = () => {\n effect.stop();\n if (scope && scope.active) {\n remove(scope.effects, effect);\n }\n };\n if (once && cb) {\n const _cb = cb;\n cb = (...args) => {\n const res = _cb(...args);\n watchHandle();\n return res;\n };\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = (immediateFirstRun) => {\n if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (immediateFirstRun || deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {\n if (cleanup) {\n cleanup();\n }\n const currentWatcher = activeWatcher;\n activeWatcher = effect;\n try {\n const args = [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n boundCleanup\n ];\n oldValue = newValue;\n call ? call(cb, 3, args) : (\n // @ts-expect-error\n cb(...args)\n );\n } finally {\n activeWatcher = currentWatcher;\n }\n }\n } else {\n effect.run();\n }\n };\n if (augmentJob) {\n augmentJob(job);\n }\n effect = new ReactiveEffect(getter);\n effect.scheduler = scheduler ? () => scheduler(job, false) : job;\n boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);\n cleanup = effect.onStop = () => {\n const cleanups = cleanupMap.get(effect);\n if (cleanups) {\n if (call) {\n call(cleanups, 4);\n } else {\n for (const cleanup2 of cleanups) cleanup2();\n }\n cleanupMap.delete(effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = options.onTrack;\n effect.onTrigger = options.onTrigger;\n }\n if (cb) {\n if (immediate) {\n job(true);\n } else {\n oldValue = effect.run();\n }\n } else if (scheduler) {\n scheduler(job.bind(null, true), true);\n } else {\n effect.run();\n }\n watchHandle.pause = effect.pause.bind(effect);\n watchHandle.resume = effect.resume.bind(effect);\n watchHandle.stop = watchHandle;\n return watchHandle;\n}\nfunction traverse(value, depth = Infinity, seen) {\n if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n seen = seen || /* @__PURE__ */ new Map();\n if ((seen.get(value) || 0) >= depth) {\n return value;\n }\n seen.set(value, depth);\n depth--;\n if (isRef(value)) {\n traverse(value.value, depth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, seen);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n if (Object.prototype.propertyIsEnumerable.call(value, key)) {\n traverse(value[key], depth, seen);\n }\n }\n }\n return value;\n}\n\nexport { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };\n",
|
|
7
7
|
"/// <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\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]);\nconst ASSIGNMENT_OPS = new Set([\"=\", \"+=\", \"-=\", \"*=\", \"/=\"]);\nconst ARRAY_METHOD_OPS = new Set([\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"]);\nconst AGGREGATE_OPS = new Set([\"reduce\", \"map\", \"filter\"]);\n\nexport const BLESSED_OPERATORS = new Set([\n ...MUTATING_OPS,\n ...UNARY_OPS,\n ...BINARY_OPS,\n ...AGGREGATE_OPS,\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}\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): 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);\n }\n\n // $ref pointer\n if (typeof operand === \"object\" && !Array.isArray(operand) && \"$ref\" in operand) {\n return resolveExprRef((operand as { $ref: string }).$ref, state, event, iterCtx);\n }\n\n // Array of operands (e.g., splice args)\n if (Array.isArray(operand)) {\n return operand.map((o: unknown) => resolveOperand(o, state, event, iterCtx));\n }\n\n // Literal\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(\"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): 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(target, state, event, iterCtx);\n if (operator === \"!\") {\n return !operand;\n }\n if (operator === \"-\") {\n return -(operand as number);\n }\n }\n\n // ─── Binary (pure) ───\n if (BINARY_OPS.has(operator)) {\n const left = resolveOperand(target, state, event, iterCtx) as number & string;\n const right = resolveOperand(value, state, event, iterCtx) as number & 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 default: {\n break;\n }\n }\n }\n\n // ─── Assignment ───\n if (ASSIGNMENT_OPS.has(operator)) {\n const rhs = resolveOperand(value, state, event, iterCtx) 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(target, state, event, iterCtx) as unknown[];\n switch (operator) {\n case \"push\": {\n return arr.push(resolveOperand(value, state, event, iterCtx));\n }\n case \"unshift\": {\n return arr.unshift(resolveOperand(value, state, event, iterCtx));\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(value, state, event, iterCtx) as unknown[];\n return (arr.splice as (...a: unknown[]) => unknown[])(...args);\n }\n default: {\n break;\n }\n }\n }\n\n // ─── Aggregates (pure) ───\n if (AGGREGATE_OPS.has(operator)) {\n const arr: unknown[] = resolveOperand(target, state, event, iterCtx) as unknown[];\n if (operator === \"reduce\") {\n let acc: unknown = resolveOperand(initial, state, event, iterCtx);\n for (const [index, item] of arr.entries()) {\n acc = evaluateExpression(value as ExpressionNode, state, event, {\n acc,\n index,\n item,\n });\n }\n return acc;\n }\n if (operator === \"map\") {\n return arr.map((item: unknown, index: number) =>\n evaluateExpression(value as ExpressionNode, state, event, {\n ...iterCtx,\n index,\n item,\n }),\n );\n }\n if (operator === \"filter\") {\n return arr.filter((item: unknown, index: number) =>\n evaluateExpression(value as ExpressionNode, state, event, {\n ...iterCtx,\n index,\n item,\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 * 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\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 */\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 // ─── 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 // ─── 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",
|
|
8
8
|
"/**\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 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/** 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",
|
|
9
|
-
"/// <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} from \"@vue/reactivity\";\nimport { evaluateExpression, isMutating } from \"./expression.ts\";\nimport type { DynamicClass, JxEventHandler, JxPath, JxRenderOptions, JxScope } from \"./types.ts\";\nimport {\n isExpressionDef,\n isFunctionDef,\n isJsonObject,\n isMappedArray,\n isPrototypeDef,\n isRef as isRefValue,\n isServerFnDef,\n paramNames,\n} from \"@jxsuite/schema/guards\";\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/** @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 * 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 (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 (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 (def.body) {\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 (def.body) {\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\"\n if (isFunctionDef(val) && val.body) {\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 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, evaluateTemplate(val, state));\n });\n } else {\n el.style.setProperty(prop, scalar);\n }\n } else if (isTemplateString(val)) {\n effect(() => {\n (el.style as unknown as Record<string, string>)[prop] = evaluateTemplate(val, state);\n });\n } else if (mediaOverriddenProps.has(prop)) {\n baseDecls[prop] = scalar;\n } else {\n (el.style as unknown as Record<string, string>)[prop] = 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 if (isRefObj(v)) {\n effect(() => el.setAttribute(k, String(resolveRef(v.$ref, state) ?? \"\")));\n } else if (isTemplateString(v)) {\n effect(() => el.setAttribute(k, String(evaluateTemplate(v, state))));\n } else {\n el.setAttribute(k, 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(\"/__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(\"/__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)}: ${v}`)\n .join(\"; \");\n}\n\n// ─── Custom Element Registration ──────────────────────────────────────────────\n\nlet _rootMedia = {};\nconst _elementDefs = new Map();\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 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 // 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"
|
|
9
|
+
"/// <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} from \"@vue/reactivity\";\nimport { evaluateExpression, isMutating } from \"./expression.ts\";\nimport type { DynamicClass, JxEventHandler, JxPath, JxRenderOptions, JxScope } from \"./types.ts\";\nimport {\n isExpressionDef,\n isFunctionDef,\n isJsonObject,\n isMappedArray,\n isPrototypeDef,\n isRef as isRefValue,\n isServerFnDef,\n paramNames,\n} from \"@jxsuite/schema/guards\";\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 * 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 (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 (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 (def.body) {\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 (def.body) {\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\"\n if (isFunctionDef(val) && val.body) {\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 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 // 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"
|
|
10
10
|
],
|
|
11
|
-
"mappings": "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",
|
|
12
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "5767B0F1F7E1924F64756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|