essor 0.0.16 → 0.0.17-beta.2
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/essor.browser.dev.js +5241 -0
- package/dist/essor.browser.dev.js.map +1 -0
- package/dist/essor.browser.js +11 -0
- package/dist/essor.cjs +3 -3
- package/dist/essor.d.cts +1 -2
- package/dist/essor.d.ts +1 -2
- package/dist/essor.dev.cjs +3 -3
- package/dist/essor.dev.cjs.map +1 -1
- package/dist/essor.dev.js +7 -4
- package/dist/essor.dev.js.map +1 -1
- package/dist/essor.js +4 -4
- package/package.json +21 -12
- package/server/index.cjs +1 -0
- package/server/index.d.ts +1 -0
- package/server/index.js +1 -0
- package/server/package.json +4 -0
- package/types/jsx.d.ts +3 -2
- package/dist/chunk-RHYNRX76.dev.js +0 -13
- package/dist/chunk-RHYNRX76.dev.js.map +0 -1
- package/dist/chunk-TF2PA4SJ.js +0 -7
- package/dist/server.cjs +0 -7
- package/dist/server.d.cts +0 -4
- package/dist/server.d.ts +0 -4
- package/dist/server.dev.cjs +0 -26
- package/dist/server.dev.cjs.map +0 -1
- package/dist/server.dev.js +0 -15
- package/dist/server.dev.js.map +0 -1
- package/dist/server.js +0 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/version.ts","../../shared/src/is.ts","../../shared/src/base.ts","../../shared/src/string.ts","../../shared/src/logger.ts","../../shared/src/dom.ts","../../shared/src/normalize.ts","../../signals/dist/signals.dev.js","../../template/src/scope.ts","../../template/src/constants.ts","../../template/src/operations/attr.ts","../../template/src/operations/class.ts","../../template/src/operations/style.ts","../../template/src/hydration.ts","../../template/src/reconcile.ts","../../template/src/dom.ts","../../template/src/operations/event.ts","../../template/src/lifecycle.ts","../../template/src/component.ts","../../template/src/renderer.ts","../../template/src/provide.ts","../../template/src/events.ts","../../template/src/binding.ts","../../template/src/utils.ts","../../template/src/components/Fragment.ts","../../template/src/components/Portal.ts","../../template/src/components/Suspense.ts","../../template/src/components/createResource.ts","../../template/src/components/AsyncComponent.ts","../../template/src/components/For.ts","../../template/src/components/Transition.ts","../../template/src/components/TransitionGroup.ts","../src/index.ts"],"names":["next","_a5","onCleanup","_a","child","isString","isObject","startsWith","warn","_b","HYDRATION_ANCHOR_ATTR","p","scopeId","error","isFunction","ref","template","document","isArray","effect","isSignal","isComputed","isBrowser","children","isPromise","batchFragment","resolve","_c"],"mappings":"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","file":"essor.browser.dev.js","sourcesContent":["export const __version = '0.0.17-beta.2';\n","import { _toString } from './base';\n\n/**\n * Checks if a value is an object.\n *\n * @param val - The value to check.\n * @returns {boolean} True if the value is an object, false otherwise.\n */\nexport const isObject = (val: unknown): val is Record<any, unknown> =>\n val !== null && typeof val === 'object';\n\n/**\n * Checks if a value is a Promise.\n *\n * @template T - The type of the Promise's resolved value.\n * @param val - The value to check.\n * @returns True if the value is a Promise, false otherwise.\n */\nexport function isPromise<T = unknown>(val: unknown): val is Promise<T> {\n return !!val && typeof (val as any).then === 'function';\n}\n\n/**\n * Checks if a value is an Array.\n *\n * @param arg - The value to check.\n * @returns True if the value is an array, false otherwise.\n */\nexport const isArray = Array.isArray;\n\n/**\n * Checks if a value is a string.\n *\n * @param val - The value to check.\n * @returns True if the value is a string, false otherwise.\n */\nexport function isString(val: unknown): val is string {\n return typeof val === 'string';\n}\n\n/**\n * Checks if a value is a number.\n *\n * @param val - The value to check.\n * @returns True if the value is a number, false otherwise.\n */\nexport function isNumber(val: unknown): val is number {\n return typeof val === 'number';\n}\n/**\n * Checks if a value is null.\n *\n * @param val - The value to check.\n * @returns True if the value is null, false otherwise.\n */\nexport function isNull(val: unknown): val is null {\n return val === null;\n}\n\n/**\n * Checks if a value is a Symbol.\n *\n * @param val - The value to check.\n * @returns True if the value is a Symbol, false otherwise.\n */\nexport function isSymbol(val: unknown): val is symbol {\n return typeof val === 'symbol';\n}\n\n/**\n * Checks if a value is a Set.\n *\n * @param val - The value to check.\n * @returns True if the value is a Set, false otherwise.\n */\nexport function isSet(val: unknown): val is Set<unknown> {\n return _toString.call(val) === '[object Set]';\n}\n\n/**\n * Checks if a value is a WeakMap.\n *\n * @param val - The value to check.\n * @returns True if the value is a WeakMap, false otherwise.\n */\nexport function isWeakMap(val: unknown): val is WeakMap<any, unknown> {\n return _toString.call(val) === '[object WeakMap]';\n}\n\n/**\n * Checks if a value is a WeakSet.\n *\n * @param val - The value to check.\n * @returns True if the value is a WeakSet, false otherwise.\n */\nexport function isWeakSet(val: unknown): val is WeakSet<any> {\n return _toString.call(val) === '[object WeakSet]';\n}\n\n/**\n * Checks if a value is a Map.\n *\n * @param val - The value to check.\n * @returns True if the value is a Map, false otherwise.\n */\nexport function isMap(val: unknown): val is Map<unknown, unknown> {\n return _toString.call(val) === '[object Map]';\n}\n\n/**\n * Checks if a value is null or undefined.\n *\n * @param val - The value to check.\n * @returns True if the value is null or undefined, false otherwise.\n */\nexport function isNil(val: unknown): val is null | undefined {\n return val === null || val === undefined;\n}\n\n/**\n * Checks if a value is a function.\n *\n * @param val - The value to check.\n * @returns {boolean} True if the value is a function, false otherwise.\n */\nexport const isFunction = (val: unknown): val is Function => typeof val === 'function';\n\n/**\n * Checks if a value is falsy (false, null, or undefined).\n *\n * @param val - The value to check.\n * @returns True if the value is falsy, false otherwise.\n */\nexport function isFalsy(val: unknown): val is false | null | undefined {\n return val === false || val === null || val === undefined;\n}\n\n/**\n * Checks if a value is a primitive type.\n *\n * @param val - The value to check.\n * @returns {boolean} True if the value is a primitive type, false otherwise.\n */\nexport const isPrimitive = (\n val: unknown,\n): val is string | number | boolean | symbol | null | undefined =>\n val == null ||\n typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean' ||\n typeof val === 'symbol' ||\n typeof val === 'undefined';\n\n/**\n * Checks if a value is an HTMLElement.\n *\n * @param val - The value to check.\n * @returns True if the value is an HTMLElement, false otherwise.\n */\nexport function isHTMLElement(val: unknown): val is HTMLElement {\n return val instanceof HTMLElement;\n}\n\n/**\n * Checks if a value is a plain object.\n *\n * @param val - The value to check.\n * @returns {boolean} True if the value is a plain object, false otherwise.\n */\nexport const isPlainObject = (val: unknown): val is object =>\n _toString.call(val) === '[object Object]';\n\n/**\n * String representation of a number\n * @typedef {`${number}`} StringNumber\n */\nexport type StringNumber = `${number}`;\n\n/**\n * Checks if a value is a string representation of a number.\n *\n * @param val - The value to check.\n * @returns True if the value is a string number, false otherwise.\n */\nexport function isStringNumber(val: unknown): val is StringNumber {\n if (!isString(val) || val === '') {\n return false;\n }\n return !Number.isNaN(Number(val));\n}\n\n/**\n * Checks if a value is undefined.\n *\n * @param val - The value to check.\n * @returns True if the value is undefined, false otherwise.\n */\nexport function isUndefined(val: unknown): val is undefined {\n return typeof val === 'undefined';\n}\n\n/**\n * Checks if a value is a boolean.\n *\n * @param val - The value to check.\n * @returns True if the value is a boolean, false otherwise.\n */\nexport function isBoolean(val: unknown): val is boolean {\n return typeof val === 'boolean';\n}\n\n/**\n * Checks whether the value is `NaN`.\n *\n * @param val - The value to check.\n * @returns True if the value is NaN.\n */\nexport function isNaN(val: unknown): val is number {\n return Number.isNaN(val);\n}\n\n/**\n * Checks whether the value is a bigint.\n *\n * @param val - The value to check.\n * @returns True if the value is a bigint.\n */\nexport function isBigint(val: unknown): val is bigint {\n return typeof val === 'bigint';\n}\n","import { isArray } from './is';\n\n/**\n * Reference to Object.prototype.toString\n * @type {Function}\n */\nexport const _toString = Object.prototype.toString;\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Reference to Object.assign\n * @type {Function}\n */\nexport const extend = Object.assign;\n\n/**\n * Checks if an object has a specific property.\n *\n * @param val - The target object to check.\n * @param key - The property name to check for.\n * @returns {boolean} True if the object has the property, false otherwise.\n */\nexport const hasOwn = (val: object, key: string | symbol): key is keyof typeof val =>\n hasOwnProperty.call(val, key);\n/**\n * Forces a value to be an array.\n *\n * @param data - The data to convert, can be a single element or an array.\n * @returns The resulting array.\n */\nexport function coerceArray<T>(data: T | T[]): T[] {\n return isArray(data) ? data : [data];\n}\n\n/**\n * Checks if a value has changed.\n *\n * @param value - The new value.\n * @param oldValue - The old value.\n * @returns {boolean} True if the value has changed, false otherwise.\n */\nexport const hasChanged = (value: unknown, oldValue: unknown): boolean =>\n !Object.is(value, oldValue);\n\n/**\n * Empty function, used for defaults and placeholders\n * @type {Function}\n */\nexport const noop = Function.prototype as () => void;\n\nexport function generateUniqueId(): string {\n return Math.random().toString(36).slice(2, 10);\n}\n\nexport function isBrowser(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * Creates a cached version of a string processing function.\n *\n * @param fn - The string processing function to cache.\n * @returns The cached function.\n */\nexport const cacheStringFunction = <T extends (str: string) => string>(fn: T): T => {\n const cache: Record<string, string> = Object.create(null);\n return ((str: string) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n }) as T;\n};\n\n/**\n * Read-only empty object\n * @type {Readonly<Record<string, unknown >>}\n */\nexport const EMPTY_OBJ: { readonly [key: string]: unknown } = Object.freeze({});\n\n/**\n * Read-only empty array\n * @type {readonly never[]}\n */\nexport const EMPTY_ARR: readonly never[] = Object.freeze([]);\n\n/**\n * Checks if a property name is an event handler.\n *\n * @param key - The property name to check.\n * @returns {boolean} True if the property is an event handler, false otherwise.\n */\nexport const isOn = (key: string): boolean =>\n key.charCodeAt(0) === 111 /* o */ &&\n key.charCodeAt(1) === 110 /* n */ &&\n key.charCodeAt(2) >= 65 && // uppercase letter A-Z\n key.charCodeAt(2) <= 90;\n\ndeclare let global: {};\n\nlet _globalThis: unknown;\n/**\n * Gets the global object for the current environment\n * @returns {unknown} - The global object for the current environment\n */\nexport const getGlobalThis = (): unknown => {\n return (\n _globalThis ||\n (_globalThis =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {})\n );\n};\n","import { cacheStringFunction } from './base';\nimport { isString } from './is';\n\n/**\n * Regular expression for converting camelCase to kebab-case\n * @type {RegExp}\n */\nconst hyphenateRE = /\\B([A-Z])/g;\n\n/**\n * Converts a camelCase string to kebab-case.\n *\n * @param str - The camelCase string to convert.\n * @returns {string} The kebab-case string.\n *\n * @example\n * ```typescript\n * kebabCase('myFunction') // 'my-function'\n * ```\n */\nexport const kebabCase: (str: string) => string = cacheStringFunction((str: string) =>\n str.replaceAll(hyphenateRE, '-$1').toLowerCase(),\n);\n\n/**\n * Regular expression for converting kebab-case or snake_case to camelCase\n * @type {RegExp}\n */\nconst camelizeRE = /[_-](\\w)/g;\n\n/**\n * Converts a kebab-case or snake_case string to camelCase.\n *\n * @param str - The kebab-case or snake_case string to convert.\n * @returns {string} The camelCase string.\n *\n * @example\n * ```typescript\n * camelCase('my-function') // 'myFunction'\n * camelCase('my_function') // 'myFunction'\n * ```\n */\nexport const camelCase: (str: string) => string = cacheStringFunction((str: string): string => {\n // Remove leading and trailing hyphens or underscores\n str = str.replaceAll(/^[_-]+|[_-]+$/g, '');\n // Replace consecutive hyphens or underscores with a single hyphen\n str = str.replaceAll(/[_-]+/g, '-');\n // Convert to camelCase\n return str.replaceAll(camelizeRE, (_, c) => c.toUpperCase());\n});\n\n/**\n * Capitalizes the first letter of a string.\n *\n * @template T - The input string type.\n * @param str - The string to capitalize.\n * @returns {Capitalize<T>} The capitalized string.\n *\n * @example\n * ```typescript\n * capitalize('hello') // 'Hello'\n * ```\n */\nexport const capitalize: <T extends string>(str: T) => Capitalize<T> = cacheStringFunction(\n <T extends string>(str: T) => {\n return (str.charAt(0).toUpperCase() + str.slice(1)) as Capitalize<T>;\n },\n);\n/**\n * Checks if a string starts with a specified substring\n *\n * Uses indexOf for better performance in most cases\n * @see https://www.measurethat.net/Benchmarks/Show/12350/0/startswith-vs-test-vs-match-vs-indexof#latest_results_block\n * @param {string} str - The string to check\n * @param {string} searchString - The substring to search for\n * @returns {boolean} - Returns true if the string starts with the substring, false otherwise\n */\nexport function startsWith(str: string, searchString: string): boolean {\n if (!isString(str)) {\n return false;\n }\n return str.indexOf(searchString) === 0;\n}\n","export function warn(msg: string, ...args: unknown[]): void {\n console.warn(`[Essor warn]: ${msg}`, ...args);\n}\n\nexport function info(msg: string, ...args: unknown[]): void {\n // eslint-disable-next-line no-console\n console.info(`[Essor info]: ${msg}`, ...args);\n}\n\nexport function error(msg: string, ...args: unknown[]): void {\n console.error(`[Essor error]: ${msg}`, ...args);\n}\n","/**\n * Make a map and return a function for checking if a key\n * is in that map.\n * IMPORTANT: all calls of this function must be prefixed with\n * \\/\\*#\\_\\_PURE\\_\\_\\*\\/\n * So that rollup can tree-shake them if necessary.\n */\n\n/*! #__NO_SIDE_EFFECTS__ */\n\nimport { error } from './logger';\nimport { hasOwn } from './base';\n\n/**\n * Creates a lookup map function from a comma-separated string.\n *\n * @param str - Comma-separated string of keys.\n * @returns {(key: string) => boolean} A function that checks if a key exists in the map.\n */\nexport function makeMap(str: string): (key: string) => boolean {\n const map = Object.create(null);\n for (const key of str.split(',')) {\n map[key] = 1;\n }\n return (val) => val in map;\n}\n\n/**\n * On the client we only need to offer special cases for boolean attributes that\n * have different names from their corresponding dom properties:\n * - itemscope -> N/A\n * - allowfullscreen -> allowFullscreen\n * - formnovalidate -> formNoValidate\n * - ismap -> isMap\n * - nomodule -> noModule\n * - novalidate -> noValidate\n * - readonly -> readOnly\n */\nconst specialBooleanAttrs =\n 'itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly';\nexport const isSpecialBooleanAttr: (key: string) => boolean =\n /*@__PURE__*/ makeMap(specialBooleanAttrs);\n\n/**\n * The full list is needed during SSR to produce the correct initial markup.\n */\nexport const isBooleanAttr: (key: string) => boolean = /*@__PURE__*/ makeMap(\n `${specialBooleanAttrs},async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`,\n);\n\n/**\n * Boolean attributes should be included if the value is truthy or ''.\n * e.g. `<select multiple>` compiles to `{ multiple: '' }`\n *\n * @param value - The value to check.\n * @returns True if the attribute should be included.\n */\nexport function includeBooleanAttr(value: unknown): boolean {\n return !!value || value === '';\n}\n\nconst unsafeAttrCharRE = /[\\t\\n\\f \"'/=>]/;\nconst attrValidationCache: Record<string, boolean> = {};\n\n/**\n * Checks whether an attribute name is safe to render during SSR.\n *\n * @param name - The attribute name to check.\n * @returns True if the attribute name is safe.\n */\nexport function isSSRSafeAttrName(name: string): boolean {\n if (hasOwn(attrValidationCache, name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n if (__DEV__) {\n error(`unsafe attribute name: ${name}`);\n }\n }\n return (attrValidationCache[name] = !isUnsafe);\n}\n\nexport const propsToAttrMap: Record<string, string | undefined> = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv',\n};\n\n/**\n * Known attributes, this is used for stringification of runtime static nodes\n * so that we don't stringify bindings that cannot be set from HTML.\n * Don't also forget to allow `data-*` and `aria-*`!\n * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\n */\nexport const isKnownHtmlAttr: (key: string) => boolean = /*@__PURE__*/ makeMap(\n 'accept,accept-charset,accesskey,action,align,allow,alt,async,' +\n 'autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,' +\n 'border,buffered,capture,challenge,charset,checked,cite,class,code,' +\n 'codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,' +\n 'coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,' +\n 'disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,' +\n 'formaction,formenctype,formmethod,formnovalidate,formtarget,headers,' +\n 'height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,' +\n 'ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,' +\n 'manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,' +\n 'open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,' +\n 'referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,' +\n 'selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,' +\n 'start,step,style,summary,tabindex,target,title,translate,type,usemap,' +\n 'value,width,wrap',\n);\n\n/**\n * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\n */\nexport const isKnownSvgAttr: (key: string) => boolean = /*@__PURE__*/ makeMap(\n 'xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,' +\n 'arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,' +\n 'baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,' +\n 'clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,' +\n 'color-interpolation-filters,color-profile,color-rendering,' +\n 'contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,' +\n 'descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,' +\n 'dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,' +\n 'fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,' +\n 'font-family,font-size,font-size-adjust,font-stretch,font-style,' +\n 'font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,' +\n 'glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,' +\n 'gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,' +\n 'horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,' +\n 'k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,' +\n 'lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,' +\n 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,' +\n 'mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,' +\n 'name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,' +\n 'overflow,overline-position,overline-thickness,panose-1,paint-order,path,' +\n 'pathLength,patternContentUnits,patternTransform,patternUnits,ping,' +\n 'pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,' +\n 'preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,' +\n 'rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,' +\n 'restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,' +\n 'specularConstant,specularExponent,speed,spreadMethod,startOffset,' +\n 'stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,' +\n 'strikethrough-position,strikethrough-thickness,string,stroke,' +\n 'stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,' +\n 'stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,' +\n 'systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,' +\n 'text-decoration,text-rendering,textLength,to,transform,transform-origin,' +\n 'type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,' +\n 'unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,' +\n 'v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,' +\n 'vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,' +\n 'writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,' +\n 'xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,' +\n 'xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan',\n);\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element\nconst HTML_TAGS =\n 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +\n 'header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +\n 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +\n 'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +\n 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +\n 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +\n 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +\n 'option,output,progress,select,textarea,details,dialog,menu,' +\n 'summary,template,blockquote,iframe,tfoot';\n\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element\nconst SVG_TAGS =\n 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +\n 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +\n 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +\n 'feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +\n 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +\n 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +\n 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +\n 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +\n 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +\n 'text,textPath,title,tspan,unknown,use,view';\n\n// https://www.w3.org/TR/mathml4/ (content elements excluded)\nconst MATH_TAGS =\n 'annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,' +\n 'merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,' +\n 'mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,' +\n 'mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,' +\n 'msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics';\n\nconst DELEGATED_EVENTS =\n 'beforeinput,click,dblclick,contextmenu,focusin,focusout,input,keydown,' +\n 'keyup,mousedown,mousemove,mouseout,mouseover,mouseup,pointerdown,' +\n 'pointermove,pointerout,pointerover,pointerup,touchend,touchmove,touchstart';\n\nconst VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';\n\nexport const isHTMLTag: (key: string) => boolean = /*@__PURE__*/ makeMap(HTML_TAGS);\n\nexport const isSVGTag: (key: string) => boolean = /*@__PURE__*/ makeMap(SVG_TAGS);\n\nexport const isMathMLTag: (key: string) => boolean = /*@__PURE__*/ makeMap(MATH_TAGS);\n\nexport const isSelfClosingTag: (key: string) => boolean = /*@__PURE__*/ makeMap(VOID_TAGS);\n\nexport const isDelegatedEvent: (key: string) => boolean = /*@__PURE__*/ makeMap(DELEGATED_EVENTS);\n\nexport const HYDRATION_ANCHOR_ATTR = 'data-hk-idx' as const;\n\nexport const SPREAD_NAME = '_$spread$' as const;\n","/**\n * Normalization utilities for class names and styles\n * Shared between template (client) and server packages\n */\n\nimport { kebabCase, startsWith } from './string';\nimport { isArray, isNumber, isObject, isString } from './is';\n\n/**\n * Normalized style object type\n */\nexport type NormalizedStyle = Record<string, string | number>;\n\n/**\n * Style value type that can be normalized\n */\nexport type StyleValue = string | NormalizedStyle | StyleValue[] | null | undefined;\n\n/**\n * Class value type that can be normalized\n */\nexport type ClassValue = string | Record<string, boolean> | ClassValue[] | null | undefined;\n\n// Style parsing related regular expressions\n/** Semicolon separator regex, excludes semicolons within parentheses */\nconst STYLE_SEPARATOR_REGEX = /;(?![^(]*\\))/g;\n/** Property value separator regex */\nconst PROPERTY_VALUE_SEPARATOR_REGEX = /:([\\s\\S]+)/;\n/** Style comment regex */\nconst STYLE_COMMENT_REGEX = /\\/\\*[\\s\\S]*?\\*\\//g;\n\n/**\n * Parse CSS style string into object format.\n *\n * @param cssText - CSS style string.\n * @returns {NormalizedStyle} Normalized style object.\n */\nexport function parseStyleString(cssText: string): NormalizedStyle {\n const styleObject: NormalizedStyle = {};\n\n cssText\n .replaceAll(STYLE_COMMENT_REGEX, '')\n .split(STYLE_SEPARATOR_REGEX)\n .forEach((styleItem) => {\n if (styleItem) {\n const parts = styleItem.split(PROPERTY_VALUE_SEPARATOR_REGEX);\n if (parts.length > 1) {\n styleObject[parts[0].trim()] = parts[1].trim();\n }\n }\n });\n\n return styleObject;\n}\n\n/**\n * Normalize style value to a unified format.\n *\n * @param styleValue - Original style value (object, string, or array).\n * @returns {NormalizedStyle | string | undefined} Normalized style object or string.\n */\nexport function normalizeStyle(styleValue: unknown): NormalizedStyle | string | undefined {\n // Handle array format styles\n if (isArray(styleValue)) {\n const normalizedStyleObject: NormalizedStyle = {};\n\n for (const styleItem of styleValue) {\n const normalizedItem = isString(styleItem)\n ? parseStyleString(styleItem)\n : (normalizeStyle(styleItem) as NormalizedStyle);\n\n if (normalizedItem) {\n for (const key in normalizedItem) {\n normalizedStyleObject[key] = normalizedItem[key];\n }\n }\n }\n\n return normalizedStyleObject;\n }\n\n // Handle string or object format styles\n if (isString(styleValue) || isObject(styleValue)) {\n return styleValue as NormalizedStyle | string;\n }\n\n return undefined;\n}\n\n/**\n * Convert style object to CSS string.\n *\n * @param styleValue - Style object or string.\n * @returns {string} Formatted CSS string.\n */\nexport function styleToString(styleValue: NormalizedStyle | string | undefined): string {\n if (!styleValue) {\n return '';\n }\n\n if (isString(styleValue)) {\n return styleValue;\n }\n\n let cssText = '';\n for (const propName in styleValue) {\n const propValue = styleValue[propName];\n\n if (isString(propValue) || isNumber(propValue)) {\n // Keep CSS variables as is, convert other properties to kebab-case\n const normalizedPropName = startsWith(propName, '--') ? propName : kebabCase(propName);\n cssText += `${normalizedPropName}:${propValue};`;\n }\n }\n\n return cssText;\n}\n\n/**\n * Normalize class value to a unified string format.\n *\n * @param classValue - Original class value (string, array, or object).\n * @returns {string} Normalized class name string.\n */\nexport function normalizeClassName(classValue: unknown): string {\n if (classValue == null) {\n return '';\n }\n\n if (isString(classValue)) {\n return classValue.trim();\n }\n\n // Handle arrays\n if (isArray(classValue)) {\n return classValue.map(normalizeClassName).filter(Boolean).join(' ');\n }\n\n // Handle objects (conditional classes)\n if (isObject(classValue)) {\n let result = '';\n for (const key in classValue) {\n if (classValue[key]) {\n result = result ? `${result} ${key}` : key;\n }\n }\n return result;\n }\n\n return String(classValue).trim();\n}\n","import { isFunction, isObject, warn, error, isPlainObject, isArray, isSet, isMap, isWeakMap, isWeakSet, hasChanged, isStringNumber, hasOwn, isUndefined } from '@estjs/shared';\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\n\n// src/constants.ts\nvar TriggerOpTypes = {\n SET: \"SET\",\n ADD: \"ADD\",\n DELETE: \"DELETE\",\n CLEAR: \"CLEAR\"\n};\nvar ARRAY_KEY = /* @__PURE__ */ Symbol(\"Array_Key\" );\nvar COLLECTION_KEY = /* @__PURE__ */ Symbol(\"Collection_Key\" );\nvar WEAK_COLLECTION_KEY = /* @__PURE__ */ Symbol(\"WeakCollection_Key\" );\nvar ITERATE_KEY = /* @__PURE__ */ Symbol(\"Iterate_Key\" );\nvar ARRAY_ITERATE_KEY = /* @__PURE__ */ Symbol(\"Array_Iterate_Key\" );\n\n// src/system.ts\nvar currentLinkVersion = 0;\nvar activeSub;\nvar isUntracking = false;\nvar Dep = class {\n constructor(map, key) {\n this.map = map;\n this.key = key;\n this.isDep = true;\n this.flag = 0 /* NONE */;\n }\n get subLink() {\n return this._subLink;\n }\n set subLink(value) {\n this._subLink = value;\n if (value === void 0) {\n this.map.delete(this.key);\n }\n }\n};\nfunction enqueueEffect(effect2) {\n effect2.notify();\n}\nfunction linkReactiveNode(depNode, subNode) {\n if (isUntracking) {\n return void 0;\n }\n const prevDep = subNode.depLinkTail;\n if (prevDep && prevDep.depNode === depNode) {\n return prevDep;\n }\n const nextDep = prevDep ? prevDep.nextDepLink : subNode.depLink;\n if (nextDep && nextDep.depNode === depNode) {\n nextDep.version = currentLinkVersion;\n subNode.depLinkTail = nextDep;\n return nextDep;\n }\n const prevSub = depNode.subLinkTail;\n if (prevSub && prevSub.version === currentLinkVersion && prevSub.subNode === subNode) {\n subNode.depLinkTail = prevSub;\n return prevSub;\n }\n const newLink = {\n version: currentLinkVersion,\n depNode,\n subNode,\n prevSubLink: prevSub,\n nextSubLink: void 0,\n prevDepLink: prevDep,\n nextDepLink: nextDep\n };\n if (nextDep) {\n nextDep.prevDepLink = newLink;\n }\n if (prevDep) {\n prevDep.nextDepLink = newLink;\n } else {\n subNode.depLink = newLink;\n }\n if (prevSub) {\n prevSub.nextSubLink = newLink;\n } else {\n depNode.subLink = newLink;\n }\n depNode.subLinkTail = newLink;\n subNode.depLinkTail = newLink;\n if (subNode.onTrack && isFunction(subNode.onTrack)) {\n subNode.onTrack({\n effect: subNode,\n target: depNode,\n type: \"get\",\n key: void 0\n });\n }\n return newLink;\n}\nfunction unlinkReactiveNode(linkNode, subNode = linkNode.subNode) {\n const depNode = linkNode.depNode;\n const prevSub = linkNode.prevSubLink;\n const nextSub = linkNode.nextSubLink;\n const prevDep = linkNode.prevDepLink;\n const nextDep = linkNode.nextDepLink;\n if (nextDep) {\n nextDep.prevDepLink = prevDep;\n } else {\n subNode.depLinkTail = prevDep;\n }\n if (prevDep) {\n prevDep.nextDepLink = nextDep;\n } else {\n subNode.depLink = nextDep;\n }\n if (nextSub) {\n nextSub.prevSubLink = prevSub;\n } else {\n depNode.subLinkTail = prevSub;\n }\n if (prevSub) {\n prevSub.nextSubLink = nextSub;\n } else {\n depNode.subLink = nextSub;\n if (nextSub === void 0) {\n let toRemove = depNode.depLink;\n while (toRemove) {\n toRemove = unlinkReactiveNode(toRemove, depNode);\n }\n depNode.depLinkTail = void 0;\n if (!depNode.isDep) {\n depNode.flag |= 16 /* DIRTY */;\n }\n if (depNode.depLink) {\n error(\n \"[Link] Cascading cleanup failed: depNode still has dependency links. This indicates a bug in the unlinking logic.\"\n );\n }\n }\n }\n return nextDep;\n}\nfunction checkDirty(link, sub) {\n let stack;\n let checkDepth = 0;\n let dirty = false;\n top: do {\n let currentDirty = false;\n if (sub.flag & 16 /* DIRTY */) {\n currentDirty = true;\n } else {\n const dep = link.depNode;\n const depFlags = dep.flag;\n if ((depFlags & (1 /* MUTABLE */ | 16 /* DIRTY */)) === (1 /* MUTABLE */ | 16 /* DIRTY */)) {\n const subs = dep.subLink;\n if (subs && subs.nextSubLink) {\n shallowPropagate(subs);\n }\n currentDirty = true;\n } else if ((depFlags & (1 /* MUTABLE */ | 32 /* PENDING */)) === (1 /* MUTABLE */ | 32 /* PENDING */)) {\n if (dep.depLink) {\n stack = { link, prev: stack };\n link = dep.depLink;\n sub = dep;\n ++checkDepth;\n continue top;\n } else {\n dep.flag &= -33 /* PENDING */;\n }\n } else if (depFlags & 32 /* PENDING */) {\n dep.flag &= -33 /* PENDING */;\n }\n }\n if (!currentDirty && link.nextDepLink !== void 0) {\n link = link.nextDepLink;\n continue top;\n }\n dirty = currentDirty;\n while (checkDepth--) {\n link = stack.link;\n stack = stack.prev;\n sub = link.subNode;\n const checkedDep = link.depNode;\n if (dirty) {\n checkedDep.flag = checkedDep.flag & -33 /* PENDING */ | 16 /* DIRTY */;\n } else {\n checkedDep.flag &= -33 /* PENDING */;\n }\n if (checkedDep.flag & 16 /* DIRTY */) {\n dirty = true;\n }\n if (!dirty && link.nextDepLink !== void 0) {\n link = link.nextDepLink;\n continue top;\n }\n }\n if (dirty) {\n sub.flag = sub.flag & -33 /* PENDING */ | 16 /* DIRTY */;\n } else {\n sub.flag &= -33 /* PENDING */;\n }\n return dirty;\n } while (true);\n}\nfunction shallowPropagate(link) {\n while (link) {\n const sub = link.subNode;\n const flags = sub.flag;\n if ((flags & (32 /* PENDING */ | 16 /* DIRTY */)) === 32 /* PENDING */) {\n sub.flag = flags | 16 /* DIRTY */;\n if ((flags & (2 /* WATCHING */ | 4 /* RECURSED_CHECK */)) === 2 /* WATCHING */) {\n enqueueEffect(sub);\n }\n }\n link = link.nextSubLink;\n }\n}\nfunction propagate(link) {\n let next = link.nextSubLink;\n let stack;\n top: do {\n const sub = link.subNode;\n const watcherBit = sub.flag & 2 /* WATCHING */;\n let flags = sub.flag;\n if (!(flags & (16 /* DIRTY */ | 32 /* PENDING */ | 8 /* RECURSED */ | 4 /* RECURSED_CHECK */))) {\n sub.flag = flags | 32 /* PENDING */;\n if (watcherBit) {\n enqueueEffect(sub);\n }\n } else if (!(flags & (8 /* RECURSED */ | 4 /* RECURSED_CHECK */))) {\n flags = 0 /* NONE */;\n } else if (!(flags & 4 /* RECURSED_CHECK */)) {\n sub.flag = flags & -9 /* RECURSED */ | 32 /* PENDING */;\n } else if (!(flags & (16 /* DIRTY */ | 32 /* PENDING */)) && isValidLink(link, sub)) {\n sub.flag = flags | (8 /* RECURSED */ | 32 /* PENDING */);\n if (watcherBit) {\n enqueueEffect(sub);\n }\n flags &= 1 /* MUTABLE */;\n } else {\n flags = 0 /* NONE */;\n }\n if (flags & 1 /* MUTABLE */) {\n const subSubs = sub.subLink;\n if (subSubs !== void 0) {\n const nextSub = subSubs.nextSubLink;\n if (nextSub !== void 0) {\n stack = { value: next, prev: stack };\n next = nextSub;\n }\n link = subSubs;\n continue;\n }\n }\n if ((link = next) !== void 0) {\n next = link.nextSubLink;\n continue;\n }\n while (stack !== void 0) {\n link = stack.value;\n stack = stack.prev;\n if (link !== void 0) {\n next = link.nextSubLink;\n continue top;\n }\n }\n break;\n } while (true);\n}\nfunction setActiveSub(sub) {\n const prev = activeSub;\n activeSub = sub;\n return prev;\n}\nfunction startTracking(sub) {\n currentLinkVersion++;\n sub.depLinkTail = void 0;\n sub.flag = sub.flag & -57 | 4 /* RECURSED_CHECK */;\n return setActiveSub(sub);\n}\nfunction endTracking(sub, prevSub) {\n activeSub = prevSub;\n const depsTail = sub.depLinkTail;\n let toRemove = depsTail ? depsTail.nextDepLink : sub.depLink;\n while (toRemove) {\n toRemove = unlinkReactiveNode(toRemove, sub);\n }\n sub.flag &= -5 /* RECURSED_CHECK */;\n}\nfunction untrack(fn) {\n const prevSub = setActiveSub(void 0);\n const prevUntracking = isUntracking;\n isUntracking = true;\n try {\n return fn();\n } finally {\n isUntracking = prevUntracking;\n setActiveSub(prevSub);\n }\n}\nfunction isValidLink(checkLink, sub) {\n let link = sub.depLinkTail;\n while (link) {\n if (link === checkLink) {\n return true;\n }\n link = link.prevDepLink;\n }\n return false;\n}\nvar targetMap = /* @__PURE__ */ new WeakMap();\nvar triggerVersion = 0;\nfunction collectTriggeredEffects(dep, effects, version) {\n if (!dep) {\n return;\n }\n for (let link = dep.subLink; link; link = link.nextSubLink) {\n const effect2 = link.subNode;\n if (effect2._triggerVersion === version) {\n continue;\n }\n effect2._triggerVersion = version;\n effects.push(effect2);\n }\n}\nfunction track(target, key) {\n if (!activeSub || isUntracking) {\n return;\n }\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n depsMap = /* @__PURE__ */ new Map();\n targetMap.set(target, depsMap);\n }\n let dep = depsMap.get(key);\n if (!dep) {\n dep = new Dep(depsMap, key);\n depsMap.set(key, dep);\n }\n linkReactiveNode(dep, activeSub);\n}\nfunction trigger(target, type, key, newValue) {\n var _a5;\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n const effects = [];\n const version = ++triggerVersion;\n if (key !== void 0) {\n if (Array.isArray(key)) {\n for (const element of key) {\n collectTriggeredEffects(depsMap.get(element), effects, version);\n }\n } else {\n collectTriggeredEffects(depsMap.get(key), effects, version);\n }\n }\n if (type === \"ADD\" || type === \"DELETE\" || type === \"CLEAR\") {\n const iterationKey = Array.isArray(target) ? ARRAY_ITERATE_KEY : ITERATE_KEY;\n collectTriggeredEffects(depsMap.get(iterationKey), effects, version);\n }\n for (const effect2 of effects) {\n if (isFunction(effect2.onTrigger)) {\n effect2.onTrigger({\n effect: effect2,\n target,\n type,\n key,\n newValue\n });\n }\n if (effect2.flag & 2 /* WATCHING */) {\n (_a5 = effect2.notify) == null ? void 0 : _a5.call(effect2);\n } else if (effect2.flag & 1 /* MUTABLE */) {\n effect2.flag |= 16 /* DIRTY */;\n if (effect2.subLink) {\n propagate(effect2.subLink);\n }\n }\n }\n}\nvar reactiveCaches = /* @__PURE__ */ new WeakMap();\nvar shallowReactiveCaches = /* @__PURE__ */ new WeakMap();\nfunction toRaw(value) {\n if (!value || !isObject(value)) {\n return value;\n }\n const raw = value[\"_RAW\" /* RAW */];\n if (raw) {\n return toRaw(raw);\n }\n if (isSignal(value)) {\n return toRaw(value.peek());\n }\n return value;\n}\nvar arrayInstrumentations = createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n track(arr, ARRAY_ITERATE_KEY);\n let res = arr[key](...args);\n if ((res === -1 || res === false) && args.length > 0) {\n const rawArgs = args.map((arg) => toRaw(arg));\n res = arr[key](...rawArgs);\n }\n return res;\n };\n });\n [\"find\", \"findIndex\", \"findLast\", \"findLastIndex\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n const isShallowMode = isShallow(this);\n track(arr, ARRAY_ITERATE_KEY);\n const res = arr[key](...args);\n if ((key === \"find\" || key === \"findLast\") && isObject(res) && !isShallowMode) {\n return reactiveImpl(res);\n }\n return res;\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\", \"sort\", \"reverse\", \"fill\", \"copyWithin\"].forEach(\n (key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n const res = Array.prototype[key].apply(arr, args);\n trigger(arr, TriggerOpTypes.SET, [ARRAY_KEY, ARRAY_ITERATE_KEY]);\n return res;\n };\n }\n );\n [\"toReversed\", \"toSorted\", \"toSpliced\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n const isShallowMode = isShallow(this);\n track(arr, ARRAY_ITERATE_KEY);\n if (key === \"toSpliced\") {\n for (let i = 0, l = arr.length; i < l; i++) {\n track(arr, `${i}`);\n }\n }\n const res = Array.prototype[key].apply(arr, args);\n if (!Array.isArray(res)) {\n return res;\n }\n return res.map((item) => isObject(item) ? reactiveImpl(item, isShallowMode) : item);\n };\n });\n [\"concat\", \"slice\", \"filter\", \"map\", \"flatMap\", \"flat\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n track(arr, ARRAY_ITERATE_KEY);\n return Array.prototype[key].apply(this, args);\n };\n });\n [\"join\", \"toString\", \"toLocaleString\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n track(arr, ARRAY_ITERATE_KEY);\n return Array.prototype[key].apply(arr, args);\n };\n });\n [\"values\", \"keys\", \"entries\", Symbol.iterator].forEach((key) => {\n instrumentations[key] = function() {\n const arr = toRaw(this);\n const isShallowMode = isShallow(this);\n track(arr, ARRAY_KEY);\n const rawIterator = key === Symbol.iterator ? arr[Symbol.iterator]() : arr[key]();\n return {\n /**\n * Returns the next iterator result.\n */\n next() {\n const { value, done } = rawIterator.next();\n if (done) {\n return { value, done };\n }\n if (Array.isArray(value)) {\n return {\n value: value.map((v) => isObject(v) ? reactiveImpl(v, isShallowMode) : v),\n done\n };\n }\n return {\n value: isObject(value) ? reactiveImpl(value, isShallowMode) : value,\n done\n };\n },\n /**\n * Returns an iterator for the current collection.\n */\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n });\n return instrumentations;\n}\nfunction hasStoredValueChanged(rawValue, oldValue) {\n const comparableOldValue = isSignal(oldValue) ? oldValue : toRaw(oldValue);\n return hasChanged(rawValue, comparableOldValue);\n}\nvar arrayHandlers = (shallow) => ({\n get: (target, key, receiver) => {\n if (key === \"_RAW\" /* RAW */) {\n return target;\n }\n if (key === \"_IS_REACTIVE\" /* IS_REACTIVE */) {\n return true;\n }\n if (key === \"_IS_SHALLOW\" /* IS_SHALLOW */) {\n return shallow;\n }\n if (hasOwn(arrayInstrumentations, key)) {\n return arrayInstrumentations[key];\n }\n const value = Reflect.get(target, key, receiver);\n if (isStringNumber(key)) {\n track(target, key);\n }\n track(target, ARRAY_KEY);\n if (isObject(value) && !shallow) {\n return reactiveImpl(value);\n }\n return value;\n },\n set: (target, key, value, receiver) => {\n const oldValue = Reflect.get(target, key, receiver);\n const rawValue = toRaw(value);\n const result = Reflect.set(target, key, rawValue, receiver);\n if (hasStoredValueChanged(rawValue, oldValue)) {\n if (isStringNumber(key)) {\n trigger(target, TriggerOpTypes.SET, [key, ARRAY_ITERATE_KEY, ARRAY_KEY]);\n } else {\n trigger(target, TriggerOpTypes.SET, key);\n }\n }\n return result;\n }\n});\nvar shallowArrayHandlers = arrayHandlers(true);\nvar deepArrayHandlers = arrayHandlers(false);\nvar collectionHandlers = (shallow) => ({\n /**\n * Exposes collection proxy flags and instrumented methods.\n */\n get(target, key) {\n if (key === \"_IS_REACTIVE\" /* IS_REACTIVE */) {\n return true;\n }\n if (key === \"_RAW\" /* RAW */) {\n return target;\n }\n if (key === \"_IS_SHALLOW\" /* IS_SHALLOW */) {\n return shallow;\n }\n return Reflect.get(\n hasOwn(collectionInstrumentations, key) ? collectionInstrumentations : target,\n key,\n target\n );\n }\n});\nvar weakCollectionHandlers = (shallow) => ({\n /**\n * Exposes weak-collection proxy flags and instrumented methods.\n */\n get(target, key) {\n if (key === \"_IS_REACTIVE\" /* IS_REACTIVE */) {\n return true;\n }\n if (key === \"_RAW\" /* RAW */) {\n return target;\n }\n if (key === \"_IS_SHALLOW\" /* IS_SHALLOW */) {\n return shallow;\n }\n return Reflect.get(\n hasOwn(weakInstrumentations, key) && key in target ? weakInstrumentations : target,\n key,\n target\n );\n }\n});\nvar shallowCollectionHandlers = collectionHandlers(true);\nvar deepCollectionHandlers = collectionHandlers(false);\nvar shallowWeakCollectionHandlers = weakCollectionHandlers(true);\nvar deepWeakCollectionHandlers = weakCollectionHandlers(false);\nvar collectionInstrumentations = {\n /**\n * Reads a Map entry with dependency tracking.\n */\n get(key) {\n const target = toRaw(this);\n track(target, COLLECTION_KEY);\n let value = target.get(key);\n if (isUndefined(value) && !target.has(key) && isReactive(key)) {\n value = target.get(toRaw(key));\n }\n if (isObject(value) && !isShallow(this)) {\n return reactiveImpl(value);\n }\n return value;\n },\n /**\n * Sets the requested value.\n */\n set(key, value) {\n const target = toRaw(this);\n const rawKey = toRaw(key);\n const hadKey = target.has(rawKey);\n const oldValue = target.get(rawKey);\n const rawValue = toRaw(value);\n target.set(rawKey, rawValue);\n if (!hadKey || hasChanged(oldValue, rawValue)) {\n trigger(target, TriggerOpTypes.SET, COLLECTION_KEY);\n }\n return this;\n },\n /**\n * Adds the requested value.\n */\n add(value) {\n const target = toRaw(this);\n const rawValue = toRaw(value);\n const hadValue = target.has(rawValue);\n target.add(rawValue);\n if (!hadValue) {\n trigger(target, TriggerOpTypes.ADD, COLLECTION_KEY);\n }\n return this;\n },\n /**\n * Returns whether the requested value exists.\n */\n has(key) {\n const target = toRaw(this);\n track(target, COLLECTION_KEY);\n const hasKey = target.has(key);\n if (!hasKey && isObject(key)) {\n return target.has(toRaw(key));\n }\n return hasKey;\n },\n /**\n * Deletes the requested value.\n */\n delete(key) {\n const target = toRaw(this);\n const hadKey = target.has(key);\n let result = target.delete(key);\n if (!result && isObject(key)) {\n result = target.delete(toRaw(key));\n }\n if (hadKey || result) {\n trigger(target, TriggerOpTypes.DELETE, COLLECTION_KEY);\n }\n return result;\n },\n /**\n * Clears the current collection.\n */\n clear() {\n const target = toRaw(this);\n const hadItems = target.size > 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, TriggerOpTypes.CLEAR, COLLECTION_KEY);\n }\n return result;\n },\n /**\n * Iterates over each collection entry.\n */\n forEach(callback, thisArg) {\n const target = toRaw(this);\n const isShallowMode = isShallow(this);\n track(target, COLLECTION_KEY);\n target.forEach((value, key) => {\n const wrappedValue = isShallowMode || !isObject(value) ? value : reactiveImpl(value);\n const wrappedKey = isShallowMode || !isObject(key) ? key : reactiveImpl(key);\n callback.call(thisArg, wrappedValue, wrappedKey, this);\n });\n },\n /**\n * Returns an iterator for the current collection.\n */\n [Symbol.iterator]() {\n const target = toRaw(this);\n const isShallowMode = isShallow(this);\n track(target, COLLECTION_KEY);\n const rawIterator = target[Symbol.iterator]();\n return {\n /**\n * Returns the next iterator result.\n */\n next() {\n const { value, done } = rawIterator.next();\n if (done) {\n return { value, done };\n }\n if (isShallowMode) {\n return { value, done };\n }\n if (Array.isArray(value)) {\n return {\n value: value.map((v) => isObject(v) ? reactiveImpl(v) : v),\n done\n };\n }\n return {\n value: isObject(value) ? reactiveImpl(value) : value,\n done\n };\n },\n /**\n * Returns an iterator for the current collection.\n */\n [Symbol.iterator]() {\n return this;\n }\n };\n },\n /**\n * Returns the current collection size.\n */\n get size() {\n const target = toRaw(this);\n track(target, COLLECTION_KEY);\n return target.size;\n },\n /**\n * Returns an iterator over the current keys.\n */\n keys() {\n const target = toRaw(this);\n const isShallowMode = isShallow(this);\n track(target, COLLECTION_KEY);\n const rawIterator = target.keys();\n return {\n /**\n * Returns the next iterator result.\n */\n next() {\n const { value, done } = rawIterator.next();\n if (done) {\n return { value, done };\n }\n return {\n value: isShallowMode || !isObject(value) ? value : reactiveImpl(value),\n done\n };\n },\n /**\n * Returns an iterator for the current collection.\n */\n [Symbol.iterator]() {\n return this;\n }\n };\n },\n /**\n * Returns an iterator over the current values.\n */\n values() {\n const target = toRaw(this);\n const isShallowMode = isShallow(this);\n track(target, COLLECTION_KEY);\n const rawIterator = target.values();\n return {\n /**\n * Returns the next iterator result.\n */\n next() {\n const { value, done } = rawIterator.next();\n if (done) {\n return { value, done };\n }\n return {\n value: isShallowMode || !isObject(value) ? value : reactiveImpl(value),\n done\n };\n },\n /**\n * Returns an iterator for the current collection.\n */\n [Symbol.iterator]() {\n return this;\n }\n };\n },\n /**\n * Returns an iterator over the current entries.\n */\n entries() {\n const target = toRaw(this);\n const isShallowMode = isShallow(this);\n track(target, COLLECTION_KEY);\n const rawIterator = target.entries();\n return {\n /**\n * Returns the next iterator result.\n */\n next() {\n const { value, done } = rawIterator.next();\n if (done) {\n return { value, done };\n }\n if (isShallowMode) {\n return { value, done };\n }\n return {\n value: value.map((v) => isObject(v) ? reactiveImpl(v) : v),\n done\n };\n },\n /**\n * Returns an iterator for the current collection.\n */\n [Symbol.iterator]() {\n return this;\n }\n };\n }\n};\nvar weakInstrumentations = {\n /**\n * Reads a WeakMap entry with dependency tracking.\n */\n get(key) {\n const target = toRaw(this);\n track(target, WEAK_COLLECTION_KEY);\n let value = target.get(key);\n if (isUndefined(value) && !target.has(key) && isReactive(key)) {\n value = target.get(toRaw(key));\n }\n if (isObject(value) && !isShallow(this)) {\n return reactiveImpl(value);\n }\n return value;\n },\n /**\n * Sets the requested value.\n */\n set(key, value) {\n const target = toRaw(this);\n const rawKey = toRaw(key);\n const hadKey = target.has(rawKey);\n const oldValue = target.get(rawKey);\n const rawValue = toRaw(value);\n target.set(rawKey, rawValue);\n if (!hadKey || hasChanged(oldValue, rawValue)) {\n trigger(target, TriggerOpTypes.SET, WEAK_COLLECTION_KEY);\n }\n return this;\n },\n /**\n * Adds the requested value.\n */\n add(value) {\n const target = toRaw(this);\n const rawValue = toRaw(value);\n const hadValue = target.has(rawValue);\n target.add(rawValue);\n if (!hadValue) {\n trigger(target, TriggerOpTypes.ADD, WEAK_COLLECTION_KEY);\n }\n return this;\n },\n /**\n * Returns whether the requested value exists.\n */\n has(key) {\n const target = toRaw(this);\n track(target, WEAK_COLLECTION_KEY);\n let hasKey = target.has(key);\n if (!hasKey && isReactive(key)) {\n hasKey = target.has(toRaw(key));\n }\n return hasKey;\n },\n /**\n * Deletes the requested value.\n */\n delete(key) {\n const target = toRaw(this);\n const rawKey = toRaw(key);\n const hadKey = target.has(rawKey);\n const result = target.delete(rawKey);\n if (hadKey || result) {\n trigger(target, TriggerOpTypes.DELETE, WEAK_COLLECTION_KEY);\n }\n return result;\n }\n};\nvar objectHandlers = (shallow) => ({\n /**\n * Reads an object property, unwraps signals, and tracks the access.\n */\n get(target, key, receiver) {\n if (key === \"_RAW\" /* RAW */) {\n return target;\n }\n if (key === \"_IS_REACTIVE\" /* IS_REACTIVE */) {\n return true;\n }\n if (key === \"_IS_SHALLOW\" /* IS_SHALLOW */) {\n return shallow;\n }\n const value = Reflect.get(target, key, receiver);\n const valueUnwrapped = isSignal(value) ? value.value : value;\n track(target, key);\n if (isObject(valueUnwrapped) && !shallow) {\n return reactiveImpl(valueUnwrapped);\n }\n return valueUnwrapped;\n },\n set: (target, key, value, receiver) => {\n const oldValue = Reflect.get(target, key, receiver);\n const rawValue = toRaw(value);\n const result = Reflect.set(target, key, rawValue, receiver);\n if (hasStoredValueChanged(rawValue, oldValue)) {\n trigger(target, TriggerOpTypes.SET, key, rawValue);\n }\n return result;\n },\n deleteProperty: (target, key) => {\n const hadKey = hasOwn(target, key);\n const result = Reflect.deleteProperty(target, key);\n if (hadKey && result) {\n trigger(target, TriggerOpTypes.DELETE, key, void 0);\n }\n return result;\n }\n});\nvar shallowObjectHandlers = objectHandlers(true);\nvar deepObjectHandlers = objectHandlers(false);\nfunction reactiveImpl(target, shallow = false) {\n if (!isObject(target)) {\n return target;\n }\n if (isReactive(target)) {\n return target;\n }\n const cache = shallow ? shallowReactiveCaches : reactiveCaches;\n const existingProxy = cache.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n let handler;\n if (isArray(target)) {\n handler = shallow ? shallowArrayHandlers : deepArrayHandlers;\n } else if (isSet(target) || isMap(target)) {\n handler = shallow ? shallowCollectionHandlers : deepCollectionHandlers;\n } else if (isWeakMap(target) || isWeakSet(target)) {\n handler = shallow ? shallowWeakCollectionHandlers : deepWeakCollectionHandlers;\n } else {\n handler = shallow ? shallowObjectHandlers : deepObjectHandlers;\n }\n const proxy = new Proxy(target, handler);\n cache.set(target, proxy);\n return proxy;\n}\nfunction isReactive(target) {\n return !!(target && target[\"_IS_REACTIVE\" /* IS_REACTIVE */]);\n}\nfunction reactive(target) {\n if (isReactive(target)) {\n return target;\n }\n if (isSignal(target)) {\n return target;\n }\n return reactiveImpl(target);\n}\nfunction shallowReactive(target) {\n if (isReactive(target)) {\n return target;\n }\n if (isSignal(target)) {\n return target;\n }\n return reactiveImpl(target, true);\n}\nfunction isShallow(value) {\n return !!(value && value[\"_IS_SHALLOW\" /* IS_SHALLOW */]);\n}\nvar toReactive = (value) => isObject(value) ? reactive(value) : value;\n\n// src/signal.ts\nvar _a;\n_a = \"_IS_SIGNAL\" /* IS_SIGNAL */;\nvar SignalImpl = class {\n // Mark as Signal\n /**\n * Create a new Signal with the given initial value.\n *\n * @param value - Initial value\n * @param shallow - Whether only the top level should be reactive\n */\n constructor(value, shallow = false) {\n this.flag = 1 /* MUTABLE */;\n // Mark whether it's shallow reactive\n // @ts-ignore\n this[_a] = true;\n const unwrapped = toRaw(value);\n this._rawValue = unwrapped;\n this[\"_IS_SHALLOW\" /* IS_SHALLOW */] = shallow;\n if (!shouldWrapReactiveValue(unwrapped)) {\n this._value = unwrapped;\n } else {\n if (isReactive(value)) {\n this._value = value;\n } else {\n this._value = shallow ? shallowReactive(unwrapped) : reactive(unwrapped);\n }\n }\n }\n /**\n * Returns the dependency node used for tracking.\n *\n * @returns {this} The dependency node.\n */\n get dep() {\n return this;\n }\n /**\n * Returns the current value.\n *\n * @returns {T} The current value.\n */\n get value() {\n const sub = activeSub;\n if (sub) {\n linkReactiveNode(this, sub);\n }\n const flags = this.flag;\n if (flags & 16 /* DIRTY */ && this.shouldUpdate()) {\n const subs = this.subLink;\n if (subs) {\n shallowPropagate(subs);\n }\n }\n return this._value;\n }\n /**\n * Updates the current value.\n *\n * @param newValue - The new value to set.\n */\n set value(newValue) {\n if (isSignal(newValue)) {\n {\n warn(\n \"Setting a signal value to another signal is not recommended. The value will be unwrapped automatically.\"\n );\n }\n newValue = newValue.peek();\n }\n const originalValue = newValue;\n const rawValue = toRaw(newValue);\n if (!hasChanged(this._rawValue, rawValue)) {\n return;\n }\n this._oldValue = this._rawValue;\n this._rawValue = rawValue;\n this.flag |= 16 /* DIRTY */;\n if (!shouldWrapReactiveValue(rawValue)) {\n this._value = rawValue;\n } else if (isReactive(originalValue)) {\n this._value = originalValue;\n } else {\n const shallow = this[\"_IS_SHALLOW\" /* IS_SHALLOW */];\n this._value = shallow ? shallowReactive(rawValue) : reactive(rawValue);\n }\n const subs = this.subLink;\n if (subs) {\n propagate(subs);\n }\n }\n /**\n * Check if the value should be updated.\n *\n * @returns {boolean} True if the value should be updated.\n */\n shouldUpdate() {\n this.flag &= -17 /* DIRTY */;\n if (!(\"_oldValue\" in this)) {\n return true;\n }\n const changed = hasChanged(this._oldValue, this._rawValue);\n this._oldValue = this._rawValue;\n return changed;\n }\n /**\n * Get current value without triggering dependency tracking.\n *\n * @returns {T} The current value.\n */\n peek() {\n return this._value;\n }\n /**\n * Sets the requested value.\n *\n * @param value - The new value to set.\n * @returns {void}\n */\n set(value) {\n this.value = value;\n }\n /**\n * Update value using an updater function.\n *\n * @param updater - A function that receives the current value and returns the new value.\n * @returns {void}\n */\n update(updater) {\n const nextValue = updater(this.peek());\n if (isSignal(nextValue)) {\n {\n warn(\n \"Returning a signal from an update function is not recommended. The value will be unwrapped.\"\n );\n }\n this.value = nextValue.peek();\n } else {\n this.value = nextValue;\n }\n }\n};\nfunction shouldWrapReactiveValue(value) {\n if (!isObject(value)) return false;\n return isArray(value) || isMap(value) || isSet(value) || isWeakMap(value) || isWeakSet(value) || isPlainObject(value);\n}\nfunction signal(value) {\n if (isSignal(value)) {\n {\n warn(\n \"Creating a signal with another signal is not recommended. The value will be unwrapped.\"\n );\n }\n return value;\n }\n return new SignalImpl(value);\n}\nfunction shallowSignal(value) {\n if (isSignal(value)) {\n value = value.peek();\n }\n return new SignalImpl(value, true);\n}\nfunction isSignal(value) {\n return !!value && !!value[\"_IS_SIGNAL\" /* IS_SIGNAL */];\n}\nvar queue = /* @__PURE__ */ new Set();\nvar activePreFlushCbs = /* @__PURE__ */ new Set();\nvar p = Promise.resolve();\nvar isFlushPending = false;\nvar RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n return fn ? p.then(fn) : p;\n}\nfunction queueJob(job) {\n queue.add(job);\n queueFlush();\n}\nfunction queueFlush() {\n if (!isFlushPending) {\n isFlushPending = true;\n nextTick(flushJobs);\n }\n}\nfunction queuePreFlushCb(cb) {\n activePreFlushCbs.add(cb);\n queueFlush();\n}\nfunction flushJobs() {\n isFlushPending = false;\n flushPreFlushCbs();\n let drainCount = 0;\n while (queue.size > 0) {\n if (++drainCount > RECURSION_LIMIT) {\n queue.clear();\n {\n warn(\n `[Scheduler] Maximum recursive flush count (${RECURSION_LIMIT}) exceeded. This usually means an effect or watch callback is mutating a reactive dependency it also reads, causing an infinite update loop. The remaining queued jobs have been dropped to keep the app responsive.`\n );\n }\n return;\n }\n const jobs = [...queue];\n queue.clear();\n for (const job of jobs) {\n try {\n job();\n } catch (_error) {\n {\n error(\"Error executing queued job:\", _error);\n }\n }\n }\n }\n}\nfunction flushPreFlushCbs() {\n const callbacks = Array.from(activePreFlushCbs);\n activePreFlushCbs.clear();\n for (const callback of callbacks) {\n try {\n callback();\n } catch (_error) {\n {\n error(\"Error executing pre-flush callback:\", _error);\n }\n }\n }\n}\nfunction createScheduler(effect2, flush) {\n switch (flush) {\n case \"sync\":\n return () => effect2();\n case \"pre\":\n return () => queuePreFlushCb(effect2);\n case \"post\":\n return () => queueJob(effect2);\n default:\n {\n warn(`Invalid flush timing: ${flush}. Defaulting to 'post'.`);\n }\n return () => queueJob(effect2);\n }\n}\n\n// src/batch.ts\nvar batchDepth = 0;\nfunction batch(fn) {\n startBatch();\n try {\n return fn();\n } finally {\n endBatch();\n }\n}\nfunction startBatch() {\n batchDepth++;\n}\nfunction endBatch() {\n if (batchDepth === 0) {\n warn(\n \"[Batch] endBatch() called without matching startBatch(). This indicates unbalanced batch calls in your code. Make sure every startBatch() has a corresponding endBatch(), or use the batch() function which handles this automatically.\"\n );\n return;\n }\n batchDepth--;\n if (batchDepth === 0) {\n flushJobs();\n }\n}\nfunction isBatching() {\n return batchDepth > 0;\n}\nfunction getBatchDepth() {\n return batchDepth;\n}\nvar activeEffectScope;\nvar EffectScope = class {\n constructor(detached = false, parent = void 0) {\n this.detached = detached;\n this.parent = parent;\n this._active = true;\n this.effects = [];\n this.scopes = [];\n this.cleanups = [];\n if (!detached && activeEffectScope) {\n this.parent = activeEffectScope;\n activeEffectScope.scopes.push(this);\n }\n }\n get active() {\n return this._active;\n }\n pause() {\n var _a5, _b2;\n if (!this._active) {\n return;\n }\n for (let i = 0; i < this.scopes.length; i++) {\n this.scopes[i].pause();\n }\n for (let i = 0; i < this.effects.length; i++) {\n (_b2 = (_a5 = this.effects[i]).pause) == null ? void 0 : _b2.call(_a5);\n }\n }\n resume() {\n var _a5, _b2;\n if (!this._active) {\n return;\n }\n for (let i = 0; i < this.scopes.length; i++) {\n this.scopes[i].resume();\n }\n for (let i = 0; i < this.effects.length; i++) {\n (_b2 = (_a5 = this.effects[i]).resume) == null ? void 0 : _b2.call(_a5);\n }\n }\n run(fn) {\n if (!this._active) {\n {\n warn(\"cannot run an inactive effect scope.\");\n }\n return;\n }\n const prevScope = activeEffectScope;\n activeEffectScope = this;\n try {\n return fn();\n } finally {\n activeEffectScope = prevScope;\n }\n }\n stop(fromParent = false) {\n if (!this._active) {\n return;\n }\n this._active = false;\n for (let i = 0; i < this.scopes.length; i++) {\n this.scopes[i].stop(true);\n }\n this.scopes.length = 0;\n const effects = this.effects.slice();\n this.effects.length = 0;\n for (const effect2 of effects) {\n effect2.stop();\n }\n for (let i = 0; i < this.cleanups.length; i++) {\n this.cleanups[i]();\n }\n this.cleanups.length = 0;\n if (!fromParent && this.parent) {\n const index = this.parent.scopes.indexOf(this);\n if (index >= 0) {\n this.parent.scopes.splice(index, 1);\n }\n }\n this.parent = void 0;\n }\n _record(effect2) {\n this.effects.push(effect2);\n effect2.scope = this;\n }\n _remove(effect2) {\n const index = this.effects.indexOf(effect2);\n if (index >= 0) {\n this.effects.splice(index, 1);\n }\n }\n _pushCleanup(fn) {\n this.cleanups.push(fn);\n }\n};\nfunction effectScope(detached = false) {\n return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction setCurrentScope(scope) {\n const prevScope = activeEffectScope;\n activeEffectScope = scope;\n return prevScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n if (activeEffectScope) {\n activeEffectScope._pushCleanup(fn);\n } else if (!failSilently) {\n warn(\"onScopeDispose() is called when there is no active effect scope to be associated with.\");\n }\n}\nfunction recordDisposable(effect2, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope._record(effect2);\n }\n}\nfunction releaseDisposable(effect2) {\n const scope = effect2.scope;\n if (!scope) {\n return;\n }\n effect2.scope = void 0;\n scope._remove(effect2);\n}\n\n// src/effect.ts\nvar _a2;\n_a2 = \"_IS_EFFECT\" /* IS_EFFECT */;\nvar EffectImpl = class {\n /**\n * Create an Effect instance.\n *\n * @param fn - The effect function.\n * @param options - Configuration options.\n */\n constructor(fn, options) {\n this.flag = 2 /* WATCHING */ | 16 /* DIRTY */;\n // @ts-ignore\n this[_a2] = true;\n // State management\n this._active = true;\n this.fn = fn;\n if (options) {\n this.options = options;\n const scheduler = options.flush || options.scheduler;\n if (scheduler && !isFunction(scheduler)) {\n this._flushScheduler = createScheduler(() => this.run(), scheduler);\n }\n {\n if (options.onTrack) this.onTrack = options.onTrack;\n if (options.onTrigger) this.onTrigger = options.onTrigger;\n }\n }\n recordDisposable(this);\n }\n /**\n * Check if the Effect is active.\n *\n * @returns {boolean} True if the effect is active.\n */\n get active() {\n return this._active;\n }\n /**\n * Check if the Effect is dirty (needs re-execution).\n *\n * @returns {boolean} True if the effect is dirty.\n */\n get dirty() {\n const flags = this.flag;\n if (flags & 16 /* DIRTY */) {\n return true;\n }\n if (flags & 32 /* PENDING */) {\n if (this.depLink && checkDirty(this.depLink, this)) {\n this.flag = flags & -33 /* PENDING */ | 16 /* DIRTY */;\n return true;\n }\n this.flag = flags & -33 /* PENDING */;\n }\n return false;\n }\n /**\n * Pause Effect execution.\n *\n * When an effect is paused:\n * - It stops responding to dependency changes.\n * - Notifications are ignored (see notify method).\n * - DIRTY and PENDING flags are still set when dependencies change.\n * - The effect remains active and maintains its dependency links.\n *\n * Use cases:\n * - Temporarily disable effects during bulk updates.\n * - Prevent effects from running during initialization.\n * - Control when side effects should execute.\n *\n * @returns {void}\n */\n pause() {\n this.flag |= 256 /* PAUSED */;\n }\n /**\n * Resume Effect execution.\n *\n * When an effect is resumed:\n * - The PAUSED flag is cleared.\n * - If dependencies changed during pause (DIRTY or PENDING flags set),\n * the effect executes immediately via notify().\n * - If no changes occurred, the effect simply becomes active again.\n *\n * State management:\n * - Clears PAUSED flag atomically.\n * - Checks for accumulated DIRTY/PENDING flags.\n * - Triggers execution if needed.\n *\n * @returns {void}\n */\n resume() {\n const flags = this.flag;\n const nextFlags = flags & -257 /* PAUSED */;\n this.flag = nextFlags;\n const wasDirty = (nextFlags & 16 /* DIRTY */) !== 0;\n const wasPending = (nextFlags & 32 /* PENDING */) !== 0;\n if (wasDirty || wasPending) {\n this.notify();\n }\n }\n /**\n * Execute the Effect function.\n *\n * Core execution flow:\n * 1. Check if active\n * 2. Clear dirty flag\n * 3. Start tracking dependencies\n * 4. Execute user function\n * 5. End tracking, clean up stale dependencies\n *\n * @returns {T} The return value of the effect function.\n */\n run() {\n if (!this._active) {\n return this.fn();\n }\n const flags = this.flag;\n this.flag = flags & -49 | 512 /* RUNNING */;\n const prevSub = startTracking(this);\n try {\n return this.fn();\n } catch (error5) {\n this.flag |= 16 /* DIRTY */;\n throw error5;\n } finally {\n this.flag &= -513 /* RUNNING */;\n endTracking(this, prevSub);\n }\n }\n /**\n * Get or create the job function for this effect.\n *\n * @returns {() => void} The job function.\n */\n getJob() {\n if (!this._job) {\n this._job = () => this.run();\n }\n return this._job;\n }\n /**\n * Notify that the Effect needs to execute.\n *\n * Called by dependent reactive values.\n * Decides whether to execute immediately or defer based on scheduling strategy.\n *\n * @returns {void}\n */\n notify() {\n var _a5, _b2, _c, _d;\n const flags = this.flag;\n if (!this._active || flags & (256 /* PAUSED */ | 512 /* RUNNING */ | 16 /* DIRTY */)) {\n return;\n }\n this.flag = flags | 16 /* DIRTY */;\n if ((_a5 = this.options) == null ? void 0 : _a5.onTrigger) {\n this.options.onTrigger({\n effect: this,\n target: {},\n type: \"set\"\n });\n }\n const scheduler = ((_b2 = this.options) == null ? void 0 : _b2.flush) || ((_c = this.options) == null ? void 0 : _c.scheduler);\n if (scheduler) {\n if (isFunction(scheduler)) {\n scheduler(this);\n } else {\n (_d = this._flushScheduler) == null ? void 0 : _d.call(this);\n }\n } else if (isBatching()) {\n queueJob(this.getJob());\n } else {\n this.run();\n }\n }\n /**\n * Stop the Effect.\n *\n * After stopping:\n * - No longer responds to dependency changes.\n * - Disconnects all dependency links.\n * - Clears cached job function.\n * - Calls onStop callback.\n * - Verifies complete cleanup in development mode.\n *\n * @returns {void}\n */\n stop() {\n var _a5;\n if (!this._active) {\n return;\n }\n this._active = false;\n releaseDisposable(this);\n let dep = this.depLink;\n while (dep) {\n dep = unlinkReactiveNode(dep, this);\n }\n let sub = this.subLink;\n while (sub) {\n sub = unlinkReactiveNode(sub);\n }\n this._job = void 0;\n this._flushScheduler = void 0;\n this.depLinkTail = void 0;\n this.subLinkTail = void 0;\n {\n if (this.depLink) {\n error(\n \"[Effect] Cleanup verification failed: depLink not cleared. This indicates a memory leak in the dependency tracking system.\"\n );\n }\n if (this.subLink) {\n error(\n \"[Effect] Cleanup verification failed: subLink not cleared. This indicates a memory leak in the subscription system.\"\n );\n }\n }\n if ((_a5 = this.options) == null ? void 0 : _a5.onStop) {\n this.options.onStop();\n }\n }\n};\nfunction effect(fn, options) {\n const effectInstance = new EffectImpl(fn, options);\n try {\n effectInstance.run();\n } catch (_error) {\n effectInstance.stop();\n {\n error(\n \"[Effect] Effect failed during initial execution and has been stopped. Fix the error in your effect function.\",\n _error\n );\n }\n throw _error;\n }\n const runner = () => effectInstance.run();\n runner.effect = effectInstance;\n runner.stop = () => effectInstance.stop();\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nfunction isEffect(value) {\n return !!(value && value[\"_IS_EFFECT\" /* IS_EFFECT */]);\n}\nfunction memoEffect(fn, initialState, options) {\n let currentState = initialState;\n const effectFn = () => {\n const result = fn(currentState);\n currentState = result;\n };\n return effect(effectFn, options);\n}\nvar NO_VALUE = /* @__PURE__ */ Symbol(\"computed-no-value\");\nvar _a3;\n_a3 = \"_IS_COMPUTED\" /* IS_COMPUTED */;\nvar ComputedImpl = class {\n /**\n * Create a Computed instance.\n *\n * @param getter - The computation function.\n * @param setter - Optional setter function.\n * @param onTrack - Optional debug callback for dependency tracking.\n * @param onTrigger - Optional debug callback for triggers.\n */\n constructor(getter, setter, onTrack, onTrigger) {\n this.flag = 1 /* MUTABLE */ | 16 /* DIRTY */;\n //@ts-ignore\n this[_a3] = true;\n // Cache\n // Use symbol sentinel to distinguish \"no value\" from undefined/null values\n this._value = NO_VALUE;\n this._active = true;\n this.getter = getter;\n this.setter = setter;\n this.onTrack = onTrack;\n this.onTrigger = onTrigger;\n this.flag |= 16 /* DIRTY */;\n recordDisposable(this);\n }\n /**\n * Returns the current value.\n *\n * @returns {T} The current value.\n */\n get value() {\n if (!this.active) {\n return this._value === NO_VALUE ? this.getter() : this._value;\n }\n if (activeSub) {\n linkReactiveNode(this, activeSub);\n }\n const flags = this.flag;\n const hasValue = this._value !== NO_VALUE;\n if (hasValue && !(flags & (16 /* DIRTY */ | 32 /* PENDING */))) {\n return this._value;\n }\n if (!hasValue || flags & 16 /* DIRTY */) {\n this.recompute();\n return this._value;\n }\n if (flags & 32 /* PENDING */) {\n if (this.depLink && checkDirty(this.depLink, this)) {\n this.recompute();\n } else {\n this.flag = flags & -33 /* PENDING */;\n }\n }\n return this._value;\n }\n /**\n * Set value (only effective when setter is provided).\n *\n * @param newValue - The new value.\n */\n set value(newValue) {\n if (this.setter) {\n this.setter(newValue);\n } else {\n warn(\n \"[Computed] Cannot set readonly computed value. Provide a setter in the computed options to make it writable.\\nExample: computed({ get: () => value, set: (v) => { ... } })\"\n );\n }\n }\n /**\n * Read value without tracking dependencies.\n *\n * @returns {T} The current value.\n */\n peek() {\n if (!this.active) {\n return this._value === NO_VALUE ? this.getter() : this._value;\n }\n if (this._value === NO_VALUE) {\n this.recompute();\n }\n return this._value;\n }\n get active() {\n return this._active;\n }\n /**\n * Recompute the value\n *\n * computation logic:\n * 1. Start tracking dependencies\n * 2. Execute getter function\n * 3. Check if value changed using optimized comparison\n * 4. If changed, update cache and notify subscribers\n * 5. End tracking, clean up stale dependencies\n * @private\n */\n recompute() {\n if (!this._active) {\n if (this._value === NO_VALUE) {\n this._value = this.getter();\n }\n return;\n }\n const oldValue = this._value;\n const hadValue = oldValue !== NO_VALUE;\n const prevSub = startTracking(this);\n try {\n const newValue = this.getter();\n const flags = this.flag;\n const subs = this.subLink;\n const clearMask = ~(16 /* DIRTY */ | 32 /* PENDING */);\n const valueChanged = !hadValue || hasChanged(oldValue, newValue);\n if (valueChanged) {\n this._value = newValue;\n this.flag = flags & clearMask;\n if (this.onTrigger) {\n this.onTrigger({\n effect: this,\n target: this,\n type: \"set\",\n key: \"value\",\n newValue\n });\n }\n if (subs) {\n shallowPropagate(subs);\n }\n } else {\n this.flag = flags & clearMask;\n }\n } catch (_error) {\n const clearMask = -49;\n this.flag &= clearMask;\n this._value = NO_VALUE;\n {\n error(\n \"[Computed] Error occurred while computing value.\\nThe computed will retry on next access.\\nCommon causes:\\n - Accessing undefined properties\\n - Circular dependencies\\n - Exceptions in getter function\\nCheck your getter function for errors.\",\n _error\n );\n }\n throw _error;\n } finally {\n endTracking(this, prevSub);\n }\n }\n /**\n * Check if update is needed.\n *\n * Internal use, called by reactive system.\n *\n * @returns {boolean} True if value changed.\n */\n shouldUpdate() {\n const hadValue = this._value !== NO_VALUE;\n const oldValue = this._value;\n this.recompute();\n if (!hadValue) {\n return true;\n }\n return hasChanged(this._value, oldValue);\n }\n stop() {\n if (!this._active) {\n return;\n }\n this._active = false;\n releaseDisposable(this);\n let dep = this.depLink;\n while (dep) {\n dep = unlinkReactiveNode(dep, this);\n }\n let sub = this.subLink;\n while (sub) {\n sub = unlinkReactiveNode(sub);\n }\n this.depLinkTail = void 0;\n this.subLinkTail = void 0;\n this.flag &= -49;\n }\n};\nfunction computed(getterOrOptions) {\n if (isComputed(getterOrOptions)) {\n {\n warn(\n \"[Computed] Creating a computed from another computed is not recommended. The existing computed will be returned to avoid unnecessary wrapping.\"\n );\n }\n return getterOrOptions;\n }\n if (!getterOrOptions) {\n throw new Error(\n \"[Computed] Invalid argument: computed() requires a getter function or options object.\"\n );\n }\n if (isFunction(getterOrOptions)) {\n return new ComputedImpl(getterOrOptions);\n }\n if (isPlainObject(getterOrOptions)) {\n const { get, set, onTrack, onTrigger } = getterOrOptions;\n if (!get) {\n throw new Error(\n \"[Computed] Invalid options: getter function is required.\\nUsage: computed({ get: () => value, set: (v) => { ... } })\"\n );\n }\n if (!isFunction(get)) {\n throw new TypeError(\n `[Computed] Invalid options: getter must be a function.\nReceived: ${typeof get}`\n );\n }\n return new ComputedImpl(get, set, onTrack, onTrigger);\n }\n throw new Error(\n `[Computed] Invalid argument: expected a function or options object.\nReceived: ${typeof getterOrOptions}`\n );\n}\nfunction isComputed(value) {\n return !!value && !!value[\"_IS_COMPUTED\" /* IS_COMPUTED */];\n}\nfunction createOptionsStore(options) {\n if (!options.state) {\n warn(\"Store state is required\");\n throw new Error(\"Store state is required\");\n }\n const { state, getters, actions } = options;\n const initState = __spreadValues({}, state);\n const reactiveState = reactive(state);\n const subscriptions = /* @__PURE__ */ new Set();\n const actionCallbacks = /* @__PURE__ */ new Set();\n const notifySubscribers = (state2) => {\n subscriptions.forEach((callback) => callback(state2));\n actionCallbacks.forEach((callback) => callback(state2));\n };\n const defaultActions = {\n /**\n * Applies a partial patch to the reactive store state.\n */\n patch$(payload) {\n if (!payload) {\n warn(\"Patch payload is required\");\n return;\n }\n batch(() => {\n Object.assign(reactiveState, payload);\n });\n notifySubscribers(reactiveState);\n },\n /**\n * Registers a store subscriber callback.\n */\n subscribe$(callback) {\n if (!callback) {\n warn(\"Subscribe callback is required\");\n return;\n }\n subscriptions.add(callback);\n },\n /**\n * Removes a previously registered store subscriber.\n */\n unsubscribe$(callback) {\n subscriptions.delete(callback);\n },\n /**\n * Registers a callback for store action notifications.\n */\n onAction$(callback) {\n if (!callback) {\n warn(\"Action callback is required\");\n return;\n }\n actionCallbacks.add(callback);\n },\n /**\n * Removes a previously registered action callback.\n */\n offAction$(callback) {\n actionCallbacks.delete(callback);\n },\n /**\n * Resets the reactive state back to its initial snapshot.\n */\n reset$() {\n batch(() => {\n Object.assign(reactiveState, initState);\n });\n notifySubscribers(reactiveState);\n }\n };\n const store = {};\n for (const key of Object.keys(initState)) {\n Object.defineProperty(store, key, {\n get: () => reactiveState[key],\n set: (value) => {\n reactiveState[key] = value;\n },\n enumerable: true,\n configurable: true\n });\n }\n Object.defineProperty(store, \"state\", {\n value: reactiveState,\n enumerable: true,\n configurable: true,\n writable: true\n });\n Object.assign(store, defaultActions);\n if (getters) {\n for (const key in getters) {\n const getter = getters[key];\n if (!getter) continue;\n const getterValue = computed(() => getter.call(store, reactiveState));\n Object.defineProperty(store, key, {\n get: () => getterValue.value,\n enumerable: true,\n configurable: true\n });\n }\n }\n if (actions) {\n for (const key in actions) {\n const action = actions[key];\n if (action) {\n store[key] = (...args) => {\n const result = action.apply(store, args);\n actionCallbacks.forEach((callback) => callback(reactiveState));\n return result;\n };\n }\n }\n }\n return store;\n}\nfunction createClassStore(StoreClass) {\n const instance = new StoreClass();\n const state = /* @__PURE__ */ Object.create(null);\n const getters = {};\n const actions = {};\n Object.getOwnPropertyNames(instance).forEach((key) => {\n state[key] = instance[key];\n });\n Object.getOwnPropertyNames(StoreClass.prototype).forEach((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(StoreClass.prototype, key);\n if (descriptor) {\n if (isFunction(descriptor.get)) {\n getters[key] = function() {\n return descriptor.get.call(this);\n };\n } else if (isFunction(descriptor.value) && key !== \"constructor\") {\n actions[key] = function(...args) {\n return descriptor.value.apply(this, args);\n };\n }\n }\n });\n return {\n state,\n getters,\n actions\n };\n}\nfunction createStore(storeDefinition) {\n if (!storeDefinition) {\n warn(\"Store definition is required\");\n throw new Error(\"Store definition is required\");\n }\n return () => {\n let options;\n if (isFunction(storeDefinition)) {\n options = createClassStore(storeDefinition);\n } else {\n options = storeDefinition;\n }\n return createOptionsStore(options);\n };\n}\nvar _a4, _b;\nvar RefImpl = class extends (_b = SignalImpl, _a4 = \"_IS_REF\" /* IS_REF */, _b) {\n /**\n * Creates a new ref with the given initial value.\n *\n * @param value - The initial value\n */\n constructor(value) {\n super(value, true);\n // @ts-ignore\n this[_a4] = true;\n }\n /**\n * Returns the current value.\n *\n * @returns {T} The current value.\n */\n get value() {\n const sub = activeSub;\n if (sub) {\n linkReactiveNode(this, sub);\n }\n return this._value;\n }\n /**\n * Updates the current value.\n *\n * @param newValue - The new value.\n */\n set value(newValue) {\n if (isSignal(newValue)) {\n newValue = newValue.peek();\n }\n if (isRef(newValue)) {\n newValue = newValue.value;\n }\n if (hasChanged(this._value, newValue)) {\n this._rawValue = newValue;\n this._value = newValue;\n this.flag |= 16 /* DIRTY */;\n if (this.subLink) {\n propagate(this.subLink);\n }\n }\n }\n};\nfunction ref(value = void 0) {\n if (isRef(value)) {\n return value;\n }\n if (isSignal(value)) {\n return new RefImpl(value.peek());\n }\n return new RefImpl(value);\n}\nfunction isRef(value) {\n return !!value && !!value[\"_IS_REF\" /* IS_REF */];\n}\nvar INITIAL_WATCHER_VALUE = {};\nvar _traverseSeen = /* @__PURE__ */ new Set();\nvar _traverseBusy = false;\nfunction traverseValue(value, seen) {\n if (!isObject(value) || seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isSignal(value) || isComputed(value)) {\n traverseValue(value.value, seen);\n } else if (Array.isArray(value)) {\n for (const element of value) {\n traverseValue(element, seen);\n }\n } else if (isMap(value)) {\n value.forEach((v) => {\n traverseValue(v, seen);\n });\n value.keys();\n value.values();\n } else if (isSet(value)) {\n value.forEach((v) => {\n traverseValue(v, seen);\n });\n value.values();\n } else {\n for (const key of Object.keys(value)) {\n traverseValue(value[key], seen);\n }\n }\n return value;\n}\nfunction traverse(value) {\n if (_traverseBusy) {\n return traverseValue(value, /* @__PURE__ */ new Set());\n }\n _traverseBusy = true;\n _traverseSeen.clear();\n try {\n return traverseValue(value, _traverseSeen);\n } finally {\n _traverseBusy = false;\n }\n}\nfunction cloneValue(value) {\n return value;\n}\nfunction resolveSingleSource(source) {\n if (isFunction(source)) {\n return source;\n }\n if (isSignal(source) || isComputed(source)) {\n return () => source.value;\n }\n if (isReactive(source)) {\n return () => traverse(source);\n }\n return () => source;\n}\nfunction resolveSource(source) {\n if (Array.isArray(source)) {\n const getters = source.map((s) => resolveSingleSource(s));\n return () => getters.map((g) => g());\n }\n return resolveSingleSource(source);\n}\nfunction watch(source, callback, options = {}) {\n const { immediate = false, deep = false, flush = \"post\", once = false } = options;\n let oldValue = INITIAL_WATCHER_VALUE;\n let lastValue;\n let active = true;\n const isSingleReactive = !Array.isArray(source) && isReactive(source);\n const needTraverse = deep && !isSingleReactive;\n const getter = resolveSource(source);\n let cleanup;\n const onCleanup = (fn) => {\n cleanup = () => {\n cleanup = void 0;\n try {\n fn();\n } catch (error5) {\n warn(\"[watch] cleanup handler threw:\", error5);\n }\n };\n };\n const runCleanup = () => {\n if (cleanup) cleanup();\n };\n const invoke = (newValue) => {\n runCleanup();\n callback(newValue, oldValue === INITIAL_WATCHER_VALUE ? void 0 : oldValue, onCleanup);\n oldValue = cloneValue(newValue);\n if (once) stop2();\n };\n const job = () => {\n if (!active) return;\n const currentEffect = runner.effect;\n if (!currentEffect.active) return;\n const newValue = currentEffect.run();\n if (deep || isObject(newValue) || hasChanged(newValue, oldValue)) {\n invoke(newValue);\n }\n };\n const runner = effect(\n () => {\n const value = getter();\n if (needTraverse) {\n traverse(value);\n }\n lastValue = value;\n return value;\n },\n {\n scheduler: createScheduler(job, flush)\n }\n );\n function stop2() {\n if (!active) return;\n active = false;\n runCleanup();\n runner.stop();\n }\n if (immediate) {\n invoke(lastValue);\n } else {\n oldValue = cloneValue(lastValue);\n }\n return stop2;\n}\n\nexport { EffectScope, TriggerOpTypes, batch, computed, createStore, effect, effectScope, endBatch, getBatchDepth, getCurrentScope, isBatching, isComputed, isEffect, isReactive, isRef, isShallow, isSignal, memoEffect, nextTick, onScopeDispose, queueJob, queuePreFlushCb, reactive, ref, setCurrentScope, shallowReactive, shallowSignal, signal, startBatch, stop, toRaw, toReactive, trigger, untrack, watch };\n","import { error } from '@estjs/shared';\nimport { type EffectScope, effectScope, setCurrentScope } from '@estjs/signals';\nimport type { InjectionKey } from './provide';\n\n/**\n * Scope represents an execution context in the component tree.\n * It manages provides, cleanup functions, and lifecycle hooks.\n */\nexport interface Scope {\n /** Unique identifier for debugging */\n readonly id: number;\n\n /** Reactive effect scope tied to this template scope */\n readonly effectScope: EffectScope;\n\n /** Parent scope in the hierarchy */\n parent: Scope | null;\n\n /** Child scopes (lazy initialized) */\n children: Set<Scope> | null;\n\n /** Provided values (lazy initialized) */\n provides: Map<InjectionKey<unknown> | string | number | symbol, unknown> | null;\n\n /** Cleanup functions (lazy initialized) */\n cleanup: Array<() => void> | null;\n\n /** Mount lifecycle hooks (lazy initialized) */\n onMount: Array<() => void | Promise<void>> | null;\n\n /** Update lifecycle hooks (lazy initialized) */\n onUpdate: Array<() => void | Promise<void>> | null;\n\n /** Destroy lifecycle hooks (lazy initialized) */\n onDestroy: Array<() => void | Promise<void>> | null;\n\n /** Whether the scope has been mounted */\n isMounted: boolean;\n\n /** Whether the scope has been destroyed */\n isDestroyed: boolean;\n}\n\n/** Currently active scope */\nlet activeScope: Scope | null = null;\n\n/** Scope ID counter for unique identification */\nlet scopeId = 0;\n\n/**\n * Get the currently active scope.\n *\n * @returns The active scope or null if none is active.\n */\nexport function getActiveScope(): Scope | null {\n return activeScope;\n}\n\n/**\n * Set the active scope (internal use).\n *\n * @param scope - The scope to set as active.\n * @returns {void}\n */\nexport function setActiveScope(scope: Scope | null): void {\n activeScope = scope;\n setCurrentScope(scope?.effectScope);\n}\n\n/**\n * Create a new scope with optional parent.\n * If no parent is provided, uses the current active scope as parent.\n *\n * @param parent - Optional parent scope (defaults to active scope).\n * @returns A new scope instance.\n */\nexport function createScope(parent: Scope | null = activeScope): Scope {\n const reactiveScope = parent ? parent.effectScope.run(() => effectScope())! : effectScope(true);\n const scope: Scope = {\n id: ++scopeId,\n effectScope: reactiveScope,\n parent,\n children: null, // Lazy initialized\n provides: null, // Lazy initialized\n cleanup: null, // Lazy initialized\n onMount: null, // Lazy initialized\n onUpdate: null, // Lazy initialized\n onDestroy: null, // Lazy initialized\n isMounted: false,\n isDestroyed: false,\n };\n\n // Establish parent-child relationship\n if (parent) {\n if (!parent.children) {\n parent.children = new Set();\n }\n parent.children.add(scope);\n }\n\n return scope;\n}\n\n/**\n * Run a function within a scope, ensuring proper cleanup.\n * The previous active scope is restored even if the function throws.\n *\n * @param scope - The scope to run within.\n * @param fn - The function to execute.\n * @returns The return value of the function.\n */\nexport function runWithScope<T>(scope: Scope, fn: () => T): T {\n const prevScope = activeScope;\n setActiveScope(scope);\n try {\n return scope.effectScope.run(fn) as T;\n } finally {\n setActiveScope(prevScope);\n }\n}\n\n/**\n * Dispose a scope and all its children.\n * Children are disposed first (depth-first), then the scope itself.\n *\n * @param scope - The scope to dispose.\n * @returns {void}\n */\nexport function disposeScope(scope: Scope): void {\n // Idempotent: already destroyed\n if (!scope || scope.isDestroyed) {\n return;\n }\n\n // Mark destroyed immediately to block re-entrant disposeScope calls\n // (e.g. an onDestroy hook that accidentally disposes the same scope again).\n scope.isDestroyed = true;\n\n // Dispose children first (depth-first)\n // Iterate directly safely by unlinking parent reference to prevent mutation during iteration\n if (scope.children && scope.children.size > 0) {\n for (const child of scope.children) {\n if (child) {\n child.parent = null;\n disposeScope(child);\n }\n }\n scope.children.clear();\n }\n\n // Execute destroy hooks with this scope active so inject/provide work in callbacks.\n const prevScope = activeScope;\n setActiveScope(scope);\n if (scope.onDestroy) {\n for (let i = 0; i < scope.onDestroy.length; i++) {\n try {\n scope.onDestroy[i]();\n } catch (error_) {\n if (__DEV__) error(`Scope(${scope.id}): Error in destroy hook:`, error_);\n }\n }\n scope.onDestroy = null;\n }\n if (scope.cleanup) {\n for (let i = 0; i < scope.cleanup.length; i++) {\n try {\n scope.cleanup[i]();\n } catch (error_) {\n if (__DEV__) error(`Scope(${scope.id}): Error in cleanup:`, error_);\n }\n }\n scope.cleanup = null;\n }\n setActiveScope(prevScope);\n\n scope.effectScope.stop();\n\n // Remove from parent's children\n if (scope.parent?.children) {\n scope.parent.children.delete(scope);\n }\n\n // Clear all internal collections to prevent memory leaks\n if (scope.provides) {\n scope.provides.clear();\n scope.provides = null;\n }\n scope.onMount = null;\n scope.onUpdate = null;\n scope.children = null;\n\n // Break parent reference to prevent memory leaks\n scope.parent = null;\n}\n\n/**\n * Register a cleanup function in the current scope.\n * The function will be called when the scope is disposed.\n *\n * @param fn - The cleanup function.\n */\nexport function onCleanup(fn: () => void): void {\n const scope = activeScope;\n\n if (!scope) {\n if (__DEV__) {\n error('onCleanup() must be called within a scope');\n }\n return;\n }\n\n // Lazy initialize cleanup array\n if (!scope.cleanup) {\n scope.cleanup = [];\n }\n\n scope.cleanup.push(fn);\n}\n","/**\n * event prefix, used to distinguish event handler properties\n */\nexport const EVENT_PREFIX = 'on';\n\n/**\n * children property name\n */\nexport const CHILDREN_PROP = 'children';\n\nexport { HYDRATION_ANCHOR_ATTR, SPREAD_NAME } from '@estjs/shared';\n\n/**\n * used to get the DOM element reference\n */\nexport const REF_KEY = 'ref';\n/**\n * Component key property name\n */\nexport const KEY_PROP = 'key' as const;\n\n/**\n * SVG namespace constant\n */\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n\n/**\n * XML namespace for xlink attributes\n */\nexport const XLINK_NAMESPACE = 'http://www.w3.org/2000/xlink';\n\n/**\n * xmlns namespace for SVG elements\n */\nexport const XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/';\n\nexport const NORMAL_COMPONENT = Symbol(__DEV__ ? 'Normal Component' : '');\nexport const FRAGMENT_COMPONENT = Symbol(__DEV__ ? 'Fragment Component' : '');\nexport const PORTAL_COMPONENT = Symbol(__DEV__ ? 'Portal Component' : '');\nexport const SUSPENSE_COMPONENT = Symbol(__DEV__ ? 'Suspense Component' : '');\nexport const FOR_COMPONENT = Symbol(__DEV__ ? 'For Component' : '');\nexport const TRANSITION_COMPONENT = Symbol(__DEV__ ? 'Transition Component' : '');\nexport const TRANSITION_GROUP_COMPONENT = Symbol(__DEV__ ? 'TransitionGroup Component' : '');\nexport enum COMPONENT_STATE {\n /** Initial state */\n INITIAL,\n /** Mounting */\n MOUNTING,\n /** MOUNTED */\n MOUNTED,\n /** Updating */\n UPDATING,\n /** Destroying */\n DESTROYING,\n /** destroy */\n DESTROYED,\n}\nexport enum COMPONENT_TYPE {\n NORMAL = 'normal',\n FRAGMENT = 'fragment',\n PORTAL = 'portal',\n SUSPENSE = 'suspense',\n FOR = 'for',\n TRANSITION = 'transition',\n TRANSITION_GROUP = 'transition-group',\n}\n","import {\n includeBooleanAttr,\n isBooleanAttr,\n isObject,\n isSpecialBooleanAttr,\n isString,\n isSymbol,\n startsWith,\n warn,\n} from '@estjs/shared';\nimport {\n KEY_PROP,\n SPREAD_NAME,\n SVG_NAMESPACE,\n XLINK_NAMESPACE,\n XMLNS_NAMESPACE,\n} from '../constants';\n\n/**\n * Supported value types for the attribute patch layer.\n *\n * In addition to primitive values, spread objects are also accepted, so the\n * type keeps `Record<string, unknown>`.\n */\nexport type AttrValue = string | boolean | number | null | undefined | Record<string, unknown>;\n\n/**\n * MIME types that can carry executable / markup payloads inside a `data:` URL.\n * These are the only `data:` URLs we block — inline images, fonts, audio,\n * video, etc. (e.g. `data:image/png;base64,...`) are legitimate and allowed.\n */\nconst DANGEROUS_DATA_MIME_RE =\n /^data:\\s*(?:text\\/html|text\\/xml|application\\/xhtml\\+xml|image\\/svg\\+xml|application\\/xml)/;\n\n/**\n * Returns true when a URL-bearing attribute value uses a protocol/payload that\n * could execute script in the document.\n *\n * Blocked:\n * - `javascript:` / `vbscript:` pseudo-protocols\n * - `data:` URLs whose MIME type can carry markup or script\n * (`text/html`, `image/svg+xml`, `*xml`)\n *\n * Allowed:\n * - All other `data:` URLs (images, fonts, audio, video, …)\n * - Ordinary http(s)/relative/mailto/tel URLs\n *\n * Note: leading control characters / whitespace are stripped before matching\n * so that `java\\tscript:` style obfuscation cannot slip through.\n */\nfunction isUnsafeUrl(value: string): boolean {\n // Strip ASCII whitespace and control chars (incl. NUL, tab, newline) that\n // browsers ignore when resolving the protocol, then lowercase for matching.\n // eslint-disable-next-line no-control-regex\n const v = value.replaceAll(/[\\u0000-\\u0020]+/g, '').toLowerCase();\n if (startsWith(v, 'javascript:') || startsWith(v, 'vbscript:')) {\n return true;\n }\n return DANGEROUS_DATA_MIME_RE.test(v);\n}\n\n/**\n * Applies a minimal attribute update to an element.\n *\n * This is the most general-purpose attribute updater in the template runtime.\n * It is responsible for:\n * - skipping internal reserved fields;\n * - expanding spread attribute objects;\n * - handling boolean attributes and SVG / xlink / xmlns namespaces;\n * - applying basic dangerous-URL protection;\n * - refusing raw HTML sinks such as `innerHTML` / `srcdoc`;\n * - staying silent during hydration to avoid overwriting SSR DOM.\n *\n * @param el - The element to patch.\n * @param key - The attribute key.\n * @param prev - Previous attribute value.\n * @param next - Next attribute value.\n */\nexport function patchAttr(el: Element, key: string, prev: AttrValue, next: AttrValue) {\n if (key === KEY_PROP) {\n if (next == null) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(key, String(next));\n }\n return;\n }\n if (key === SPREAD_NAME) {\n const prevObj = isObject(prev) ? (prev as Record<string, unknown>) : null;\n const nextObj = isObject(next) ? (next as Record<string, unknown>) : null;\n\n if (__DEV__) {\n if (next != null && !nextObj) {\n warn('spread attribute must be an object');\n }\n }\n\n if (prevObj) {\n for (const attrKey in prevObj) {\n if (attrKey === SPREAD_NAME) {\n if (__DEV__) {\n warn('nested spread attributes are ignored');\n }\n continue;\n }\n if (!nextObj || !(attrKey in nextObj)) {\n patchAttr(el, attrKey, prevObj[attrKey] as AttrValue, null);\n }\n }\n }\n\n if (nextObj) {\n for (const attrKey in nextObj) {\n if (attrKey === SPREAD_NAME) {\n if (__DEV__) {\n warn('nested spread attributes are ignored');\n }\n continue;\n }\n patchAttr(el, attrKey, prevObj?.[attrKey] as AttrValue, nextObj[attrKey] as AttrValue);\n }\n }\n return;\n }\n\n const elementIsSVG = el?.namespaceURI === SVG_NAMESPACE;\n const isXlink = elementIsSVG && startsWith(key, 'xlink:');\n const isXmlns = elementIsSVG && startsWith(key, 'xmlns:');\n\n const isBoolean = isSpecialBooleanAttr(key) || isBooleanAttr(key);\n\n // Early return if values are the same\n if (prev === next) {\n return;\n }\n\n // Event attributes are handled by the dedicated event layer, so skip them here.\n if (key.length > 2 && key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110) {\n return;\n }\n\n // Lowercase only after early returns, since it is only needed for specific checks like href.\n const lowerKey = key.toLowerCase();\n\n if (lowerKey === 'innerhtml' || lowerKey === 'srcdoc') {\n if (__DEV__) {\n warn(`${key} updates are ignored by patchAttr`);\n }\n return;\n }\n\n if (next == null) {\n if (isXlink) {\n el.removeAttributeNS(XLINK_NAMESPACE, key.slice(6));\n } else if (isXmlns) {\n const localName = key.slice(6);\n el.removeAttributeNS(XMLNS_NAMESPACE, localName);\n } else {\n el.removeAttribute(key);\n }\n return;\n }\n\n if (isBoolean) {\n if (includeBooleanAttr(next)) {\n el.setAttribute(key, '');\n } else {\n el.removeAttribute(key);\n }\n return;\n }\n\n const attrValue = isSymbol(next) ? String(next) : next;\n\n // Basic safety guard: block dangerous protocols on common URL attributes.\n const isUrlAttr =\n lowerKey === 'href' ||\n lowerKey === 'src' ||\n lowerKey === 'xlink:href' ||\n lowerKey === 'action' ||\n lowerKey === 'formaction' ||\n lowerKey === 'poster';\n if (isUrlAttr && isString(attrValue) && isUnsafeUrl(attrValue)) {\n return;\n }\n\n if (isXlink) {\n el.setAttributeNS(XLINK_NAMESPACE, key, String(attrValue));\n return;\n }\n\n if (isXmlns) {\n el.setAttributeNS(XMLNS_NAMESPACE, key, String(attrValue));\n return;\n }\n\n if (elementIsSVG) {\n el.setAttribute(key, String(attrValue));\n } else {\n if (key in el) {\n try {\n el[key] = attrValue;\n } catch {\n el.setAttribute(key, String(attrValue));\n }\n } else {\n el.setAttribute(key, String(attrValue));\n }\n }\n}\n","import { isString, normalizeClassName } from '@estjs/shared';\n\n/**\n * Supported value types for the class patch layer.\n */\nexport type ClassValue = string | Record<string, boolean> | ClassValue[] | null | undefined;\n\n/**\n * Applies a minimal class update to an element.\n *\n * Class values are normalized into a string first, then written through\n * `className` or `setAttribute('class')` depending on the element type.\n * Hydration stays silent and reuses the server-rendered result by default.\n *\n * @param el - The element to patch.\n * @param prev - Previous class value.\n * @param next - Next class value.\n * @param isSVG - Whether the element is an SVG element.\n * @returns {void}\n */\nexport function patchClass(\n el: Element,\n prev: unknown,\n next: unknown,\n isSVG: boolean = false,\n): void {\n if (prev === next) {\n return;\n }\n\n const normalizedNext = normalizeClass(next);\n if (!normalizedNext) {\n el.removeAttribute('class');\n return;\n }\n\n // Skip DOM write if normalized values are identical.\n // For string prev, it's already normalized; otherwise normalize.\n const normalizedPrev = isString(prev) ? prev : normalizeClass(prev);\n if (normalizedPrev === normalizedNext) {\n return;\n }\n\n // SVG nodes cannot rely on `className` consistently, so use the attribute path.\n if (isSVG) {\n el.setAttribute('class', normalizedNext);\n } else {\n el.className = normalizedNext;\n }\n}\n\n/**\n * Normalizes supported class inputs into a single string.\n */\nexport const normalizeClass = normalizeClassName;\n","import { camelCase, capitalize, isArray, isObject, isString, kebabCase, startsWith } from '@estjs/shared';\n\n/**\n * Internal symbol used to mark raw CSS variable text in style objects.\n * @internal\n */\nexport const CSS_VAR_TEXT: unique symbol = Symbol('CSS_VAR_TEXT');\n\n// Precompile the `!important` detector to avoid recreating it on every write.\nconst importantRE = /\\s*!important$/;\n\n// Candidate vendor prefixes and their lookup cache.\nconst prefixes = ['Webkit', 'Moz', 'ms'];\nconst prefixCache: Record<string, string> = {};\n\n/**\n * Supported value types for the style patch layer.\n */\nexport type Style = string | Record<string, string | string[]> | null | undefined;\n\n/**\n * Applies a minimal style update to an element.\n *\n * Supports both string-based and object-based styles, while staying silent\n * during hydration so the server-rendered DOM can be reused.\n *\n * @param el - The element to patch.\n * @param prev - Previous style value.\n * @param next - Next style value.\n * @returns {void}\n */\nexport function patchStyle(el: HTMLElement, prev: unknown, next?: unknown) {\n const style = el.style;\n\n if (next && isString(next)) {\n if (prev !== next) {\n style.cssText = next;\n }\n return;\n }\n\n if (!next) {\n if (prev) {\n el.removeAttribute('style');\n }\n return;\n }\n\n // When the previous value is an object, remove keys that disappeared in the next value.\n if (prev && !isString(prev)) {\n const prevObj = prev as Record<string, unknown>;\n for (const key in prevObj) {\n if (!next || (next as Record<string, unknown>)[key] == null) {\n setStyle(style, key, '');\n }\n }\n } else if (prev && isString(prev)) {\n // When the previous value is a string, approximate its keys and remove missing ones.\n // Match only CSS property-name tokens (letters/digits/hyphens before a colon).\n // This is linear and ignores semicolons inside url() or quoted values because\n // those fragments never match /letter+:/.\n const declRE = /(?:^|;)\\s*([a-z][a-z\\d-]*)\\s*:/gi;\n let match: RegExpExecArray | null;\n while ((match = declRE.exec(prev)) !== null) {\n const key = match[1].trim();\n if (key && next && isObject(next) && (next as Record<string, unknown>)[key] == null) {\n setStyle(style, key, '');\n }\n }\n }\n\n // Apply the next style values last.\n if (next && !isString(next)) {\n const nextObj = next as Record<string, unknown>;\n for (const key in nextObj) {\n const value = nextObj[key];\n if (\n (!prev || isString(prev) || (prev as Record<string, unknown>)[key] !== value) &&\n value != null\n ) {\n setStyle(style, key, value as string | string[]);\n }\n }\n }\n}\n\n/**\n * Sets a single style property.\n *\n * Centralizes array-value expansion, CSS variable writes, vendor-prefix\n * resolution, and `!important` handling in one place.\n *\n * @param style - Target style object.\n * @param name - Style property name.\n * @param val - Style value.\n * @private\n */\nexport function setStyle(\n style: CSSStyleDeclaration,\n name: string,\n val: string | string[] | null | undefined,\n): void {\n // Array values represent multiple candidates for the same property.\n if (isArray(val)) {\n for (const element of val) {\n setStyle(style, name, element);\n }\n return;\n }\n\n if (val == null || val === '') {\n val = '';\n }\n\n const priority = isString(val) && importantRE.test(val) ? 'important' : '';\n if (priority) {\n val = val.replace(importantRE, '');\n }\n\n // CSS variables must be written through `setProperty()`.\n if (startsWith(name, '--')) {\n if (priority) {\n style.setProperty(name, val, priority);\n } else {\n style.setProperty(name, val);\n }\n return;\n }\n\n // Regular properties try vendor prefix resolution first.\n const prefixed = autoPrefix(style, name);\n\n // `!important` cannot use direct property assignment and must go through `setProperty()`.\n if (priority) {\n style.setProperty(toCssPropertyName(prefixed), val, priority);\n } else {\n style[prefixed] = val;\n }\n}\n\nfunction toCssPropertyName(name: string): string {\n const hyphenated = kebabCase(name);\n return startsWith(name, 'Webkit') || startsWith(name, 'Moz') || startsWith(name, 'ms')\n ? `-${hyphenated}`\n : hyphenated;\n}\n\n/**\n * Resolves the correct vendor-prefixed style property name.\n *\n * Results are cached in `prefixCache` to avoid repeated hot-path detection.\n *\n * @param style - Target style object.\n * @param rawName - Original property name.\n * @returns The property name that can be written to `style` directly.\n * @private\n */\nfunction autoPrefix(style: CSSStyleDeclaration, rawName: string): string {\n // Check the cache first.\n const cached = prefixCache[rawName];\n if (cached) {\n return cached;\n }\n\n // Try the standard camelCase property first.\n let name = camelCase(rawName);\n if (name !== 'filter' && name in style) {\n return (prefixCache[rawName] = name);\n }\n\n // If the standard property does not exist, try vendor-prefixed variants.\n name = capitalize(name);\n for (const prefix of prefixes) {\n const prefixed = prefix + name;\n if (prefixed in style) {\n return (prefixCache[rawName] = prefixed);\n }\n }\n\n return rawName;\n}\n","import { HYDRATION_ANCHOR_ATTR, isBrowser, warn } from '@estjs/shared';\nimport { patchAttr } from './operations/attr';\nimport { patchClass } from './operations/class';\nimport { patchStyle } from './operations/style';\nimport { template } from './renderer';\n\n// ---------------------------------------------------------------------------\n// Hydration key counter\n// ---------------------------------------------------------------------------\n\nlet _hydrationKey = 0;\n\nexport function getHydrationKey(): string {\n return String(_hydrationKey++);\n}\n\nexport function resetHydrationKey(): void {\n _hydrationKey = 0;\n}\n\n// ---------------------------------------------------------------------------\n// Hydration state + registry\n// ---------------------------------------------------------------------------\n\n/**\n * Module-private hydration flag.\n *\n * Read via `isHydrating()` instead of importing as a `let` binding — this\n * avoids cross-bundle \"live binding\" pitfalls when consumers go through a\n * barrel-export (`import { isHydrating } from '@estjs/template'`).\n */\nlet _isHydrating = false;\n\n/**\n * Returns whether the runtime is currently in the hydration first-pass.\n *\n * @returns True while hydrating, false otherwise.\n */\nexport function isHydrating(): boolean {\n return _isHydrating;\n}\n\n/**\n * Pre-built map of data-hk → Element, populated by beginHydration().\n * Mirrors SolidJS's sharedConfig.registry / gatherHydratable().\n */\nconst _registry = new Map<string, Element>();\n\n/**\n * Gather all [data-hk] elements under `root` into the registry.\n * Called once at hydration start — O(n) DOM query, then O(1) lookups.\n *\n * @param root - The root element to scan.\n */\nfunction gatherHydratable(root: Element): void {\n const nodes = root.querySelectorAll('[data-hk]');\n for (const node of nodes) {\n const key = (node as HTMLElement).dataset.hk;\n if (key != null && !_registry.has(key)) {\n _registry.set(key, node as Element);\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Teleport (Portal) hydration anchors\n// ---------------------------------------------------------------------------\n\n/** FIFO queue of `<!--teleport-anchor-->` comments at Portal call sites. */\nconst _teleportCallsiteAnchors: Comment[] = [];\n\n/** Per-target FIFO of `<!--teleport-start-->` comments inside teleport targets. */\nconst _teleportTargetStarts = new Map<Element, Comment[]>();\n\n/** Scan `document.body` for teleport comment markers, classifying each into its queue. */\nfunction gatherTeleportAnchors(): void {\n if (typeof document === 'undefined') return;\n const walker = document.createNodeIterator(document.body, NodeFilter.SHOW_COMMENT);\n let node: Comment | null;\n\n while ((node = walker.nextNode() as Comment | null)) {\n const data = node.data;\n if (data === 'teleport-anchor') {\n _teleportCallsiteAnchors.push(node);\n } else if (data === 'teleport-start') {\n const parent = node.parentElement;\n if (!parent) continue;\n let bucket = _teleportTargetStarts.get(parent);\n if (!bucket) {\n bucket = [];\n _teleportTargetStarts.set(parent, bucket);\n }\n bucket.push(node);\n }\n }\n}\n\n/** Pop the next call-site anchor comment, or `null` if exhausted. */\nexport function consumeTeleportAnchor(): Comment | null {\n return _teleportCallsiteAnchors.shift() ?? null;\n}\n\n/** Pop the next teleport block from `target`, returning start/end markers and inner nodes. */\nexport function consumeTeleportBlock(\n target: Element,\n): { start: Comment; end: Comment; nodes: Node[] } | null {\n const bucket = _teleportTargetStarts.get(target);\n const start = bucket?.shift();\n if (!start) return null;\n\n const nodes: Node[] = [];\n let cursor: Node | null = start.nextSibling;\n while (cursor) {\n if (cursor.nodeType === Node.COMMENT_NODE && (cursor as Comment).data === 'teleport-end') {\n return { start, end: cursor as Comment, nodes };\n }\n nodes.push(cursor);\n cursor = cursor.nextSibling;\n }\n\n // Malformed block — no <!--teleport-end--> found. Return null to signal\n // a hydration mismatch rather than returning `{ start, end: start }` which\n // would be semantically incorrect.\n if (__DEV__) {\n warn('[Portal] hydration: orphaned <!--teleport-start--> without matching <!--teleport-end-->');\n }\n return null;\n}\n\n/**\n * Begins hydration.\n *\n * @param root - The root element to hydrate.\n */\nexport function beginHydration(root: Element): void {\n _isHydrating = true;\n _hydrationKey = 0;\n _registry.clear();\n _teleportCallsiteAnchors.length = 0;\n _teleportTargetStarts.clear();\n gatherHydratable(root);\n gatherTeleportAnchors();\n}\n\n/**\n * Ends hydration.\n *\n * @returns {void}\n */\nexport function endHydration(): void {\n _isHydrating = false;\n _registry.clear();\n _teleportCallsiteAnchors.length = 0;\n _teleportTargetStarts.clear();\n}\n\nexport function claimHydratedNodes(parent: Node, expected: Node[], before?: Node): Node[] | null {\n if (!_isHydrating || (before && before.parentNode !== parent)) return null;\n if (expected.length === 0) return [];\n\n const claimed: Node[] = new Array(expected.length);\n let cursor: Node | null = before ? before.previousSibling : parent.lastChild;\n\n for (let i = expected.length - 1; i >= 0; i--) {\n if (!cursor) return null;\n\n const expectedNode = expected[i];\n\n const expectedType = expectedNode.nodeType;\n if (expectedType === Node.TEXT_NODE) {\n const expectedText = expectedNode.textContent ?? '';\n if (!expectedText || cursor.nodeType !== Node.TEXT_NODE) return null;\n\n const existingText = cursor.textContent ?? '';\n if (existingText === expectedText) {\n claimed[i] = cursor;\n cursor = cursor.previousSibling;\n continue;\n }\n\n if (!existingText.endsWith(expectedText)) return null;\n\n const prefix = existingText.slice(0, existingText.length - expectedText.length);\n if (!prefix) return null;\n const prefixNode = document.createTextNode(prefix);\n parent.insertBefore(prefixNode, cursor);\n cursor.textContent = expectedText;\n claimed[i] = cursor;\n cursor = prefixNode;\n continue;\n }\n\n if (cursor.nodeType !== expectedType) return null;\n if (expectedType === Node.ELEMENT_NODE) {\n if ((cursor as Element).tagName !== (expectedNode as Element).tagName) return null;\n } else if (\n expectedType === Node.COMMENT_NODE &&\n (cursor as Comment).data !== (expectedNode as Comment).data\n ) {\n return null;\n }\n\n claimed[i] = cursor;\n cursor = cursor.previousSibling;\n }\n\n return claimed;\n}\n\nfunction resolveHydrationKey(parent: Element): string | null {\n const el = parent as HTMLElement;\n return el.dataset.hk ?? (parent.closest('[data-hk]') as HTMLElement | null)?.dataset.hk ?? null;\n}\n\nexport function hydrationMarker(parent: Node | null, index: number): Comment | null {\n if (!_isHydrating || !parent || index < 0) return null;\n\n const key = parent instanceof Element ? resolveHydrationKey(parent) : null;\n const expected = key ? `${key}-${index}` : String(index);\n\n let cursor = parent.firstChild;\n while (cursor) {\n if (cursor.nodeType === Node.COMMENT_NODE && (cursor as Comment).data === expected) {\n return cursor as Comment;\n }\n cursor = cursor.nextSibling;\n }\n\n return null;\n}\n\nexport function hydrationAnchor(parent: Node | null, index: number): Node | null {\n if (!_isHydrating || !(parent instanceof Element) || index < 0) return null;\n\n const key = resolveHydrationKey(parent);\n const expected = key ? `${key}-${index}` : String(index);\n let cursor = parent.firstChild;\n while (cursor) {\n if (cursor instanceof Element && cursor.getAttribute(HYDRATION_ANCHOR_ATTR) === expected) {\n return cursor;\n }\n cursor = cursor.nextSibling;\n }\n return null;\n}\n\n/**\n * Returns a factory function that, when called at component render time:\n * - During hydration: increments the key, looks up the pre-built registry,\n * and returns the ACTUAL SSR DOM node (no cloneNode).\n * - During CSR: clones the parsed template as usual.\n *\n * @param html - The HTML template string.\n * @returns A factory function that returns a DOM element.\n */\nexport function getRenderedElement(html: string): () => Element {\n if (!isBrowser()) {\n return () => {\n throw new Error('[essor] getRenderedElement called in non-browser environment');\n };\n }\n\n let _csrFactory: (() => Element) | null = null;\n\n return (): Element => {\n if (!_isHydrating) {\n // CSR path — clone the template as normal\n if (!_csrFactory) _csrFactory = template(html) as () => Element;\n return _csrFactory();\n }\n\n // Hydration path — key incremented HERE (render time) to match server order\n const key = getHydrationKey();\n const node = _registry.get(key);\n\n if (node) {\n _registry.delete(key);\n return node; // TRUE DOM reuse — no cloneNode\n }\n\n // Mismatch: SSR node not found, fall back to CSR creation\n warn(`[essor] hydration mismatch: no SSR element for key \"${key}\"`);\n if (!_csrFactory) _csrFactory = template(html) as () => Element;\n return _csrFactory();\n };\n}\n\n// ---------------------------------------------------------------------------\n// Hydrate-mode patch wrappers (silence DOM writes during first hydration run)\n// ---------------------------------------------------------------------------\n\n/**\n * Patches class while considering hydration state.\n *\n * @param el - The element to patch.\n * @param prev - Previous class value.\n * @param next - Next class value.\n * @param isSVG - Whether the element is an SVG element.\n */\nexport function patchClassHydrate(\n el: Element,\n prev: unknown,\n next: unknown,\n isSVG?: boolean,\n): void {\n if (_isHydrating) return;\n patchClass(el, prev, next, isSVG);\n}\n\n/**\n * Patches attribute while considering hydration state.\n *\n * @param el - The element to patch.\n * @param key - The attribute key.\n * @param prev - Previous attribute value.\n * @param next - Next attribute value.\n */\nexport function patchAttrHydrate(el: Element, key: string, prev: unknown, next: unknown): void {\n if (_isHydrating) return;\n patchAttr(el, key, prev as never, next as never);\n}\n\n/**\n * Patches style while considering hydration state.\n *\n * @param el - The element to patch.\n * @param prev - Previous style value.\n * @param next - Next style value.\n */\nexport function patchStyleHydrate(el: HTMLElement, prev: unknown, next?: unknown): void {\n if (_isHydrating) return;\n patchStyle(el, prev, next);\n}\n","import { insertNode, removeNode } from './dom';\n\n/**\n * Resolves insert anchor.\n *\n * @param parent - The parent node.\n * @param candidate - The candidate anchor node.\n * @returns The resolved anchor node or null.\n */\nfunction resolveInsertAnchor(parent: Node, candidate?: Node | null): Node | null {\n return candidate && candidate.parentNode === parent ? candidate : null;\n}\n\n/**\n * Reconcile two arrays of real DOM nodes with minimal DOM operations.\n * This is the list reconciler for fine-grained rendering.\n *\n * @param parent - The parent node.\n * @param oldNodes - The array of current nodes.\n * @param newNodes - The array of new nodes.\n * @param anchor - Optional reference node for insertion.\n * @returns The new array of nodes.\n */\nexport function reconcileArrays(\n parent: Node,\n oldNodes: Node[],\n newNodes: Node[],\n anchor?: Node,\n): Node[] {\n const fallbackAnchor = resolveInsertAnchor(parent, anchor);\n const oldLength = oldNodes.length;\n const newLength = newNodes.length;\n\n if (oldLength === 0 && newLength === 0) return newNodes;\n\n if (oldLength === 0) {\n for (let i = 0; i < newLength; i++) {\n insertNode(parent, newNodes[i], fallbackAnchor);\n }\n return newNodes;\n }\n\n if (newLength === 0) {\n for (let i = 0; i < oldLength; i++) {\n removeNode(oldNodes[i]);\n }\n return [];\n }\n\n let start = 0;\n let oldEnd = oldLength - 1;\n let newEnd = newLength - 1;\n\n while (start <= oldEnd && start <= newEnd) {\n if (oldNodes[start] === newNodes[start]) {\n start++;\n } else {\n break;\n }\n }\n\n while (oldEnd >= start && newEnd >= start) {\n if (oldNodes[oldEnd] === newNodes[newEnd]) {\n oldEnd--;\n newEnd--;\n } else {\n break;\n }\n }\n\n if (start > oldEnd) {\n if (start <= newEnd) {\n const nextPos = newEnd + 1;\n const nextNode = resolveInsertAnchor(\n parent,\n nextPos < newLength ? newNodes[nextPos] : fallbackAnchor,\n );\n for (let i = start; i <= newEnd; i++) {\n insertNode(parent, newNodes[i], nextNode);\n }\n }\n } else if (start > newEnd) {\n for (let i = start; i <= oldEnd; i++) {\n removeNode(oldNodes[i]);\n }\n } else {\n reconcileUnknownSequence(parent, oldNodes, newNodes, start, oldEnd, newEnd, fallbackAnchor);\n }\n\n return newNodes;\n}\n\n/**\n * Reconciles unknown sequence of nodes.\n *\n * @param parent - The parent node.\n * @param oldNodes - Current nodes.\n * @param newNodes - New nodes.\n * @param start - Start index of the sequence.\n * @param oldEnd - End index of the old sequence.\n * @param newEnd - End index of the new sequence.\n * @param anchor - Optional reference node for insertion.\n * @returns {void}\n */\nfunction reconcileUnknownSequence(\n parent: Node,\n oldNodes: Node[],\n newNodes: Node[],\n start: number,\n oldEnd: number,\n newEnd: number,\n anchor?: Node | null,\n): void {\n const newLength = newEnd - start + 1;\n\n // For very short sequences, linear search beats Map allocation overhead\n const findNewIndex =\n newLength <= 4\n ? (node: Node) => {\n for (let i = start; i <= newEnd; i++) {\n if (newNodes[i] === node) return i;\n }\n return undefined;\n }\n : (() => {\n const map = new Map<Node, number>();\n for (let i = start; i <= newEnd; i++) map.set(newNodes[i], i);\n return (node: Node) => map.get(node);\n })();\n\n const newIndexToOldIndexMap = new Int32Array(newLength);\n\n let patched = 0;\n let moved = false;\n let maxNewIndexSoFar = 0;\n\n for (let i = start; i <= oldEnd; i++) {\n const oldNode = oldNodes[i];\n\n if (patched >= newLength) {\n removeNode(oldNode);\n continue;\n }\n\n const newIndex = findNewIndex(oldNode);\n\n if (newIndex === undefined) {\n removeNode(oldNode);\n } else {\n newIndexToOldIndexMap[newIndex - start] = i + 1;\n\n if (newIndex >= maxNewIndexSoFar) {\n maxNewIndexSoFar = newIndex;\n } else {\n moved = true;\n }\n patched++;\n }\n }\n\n const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : [];\n let j = increasingNewIndexSequence.length - 1;\n\n for (let i = newLength - 1; i >= 0; i--) {\n const nextIndex = start + i;\n const nextNode = newNodes[nextIndex];\n const anchorNode = resolveInsertAnchor(\n parent,\n nextIndex + 1 < newNodes.length ? newNodes[nextIndex + 1] : anchor,\n );\n\n if (newIndexToOldIndexMap[i] === 0) {\n insertNode(parent, nextNode, anchorNode);\n } else if (moved) {\n if (j < 0 || i !== increasingNewIndexSequence[j]) {\n insertNode(parent, nextNode, anchorNode);\n } else {\n j--;\n }\n }\n }\n}\n\n/**\n * Compute the Longest Increasing Subsequence using patience sorting.\n * O(n log n) time, O(n) space.\n *\n * @param arr - The array of indices.\n * @returns The LIS indices.\n */\nexport function getSequence(arr: Int32Array): number[] {\n const p = new Int32Array(arr.length);\n const result = [0];\n const len = arr.length;\n let i: number;\n let j: number;\n let u: number;\n let v: number;\n let c: number;\n\n for (i = 0; i < len; i++) {\n const arrI = arr[i];\n if (arrI !== 0) {\n j = result[result.length - 1];\n if (arr[j] < arrI) {\n p[i] = j;\n result.push(i);\n continue;\n }\n u = 0;\n v = result.length - 1;\n while (u < v) {\n c = (u + v) >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n } else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = result.length;\n v = result[u - 1];\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n return result;\n}\n","import { coerceArray, error, hasOwn, isFunction, isObject, isPrimitive, warn } from '@estjs/shared';\nimport { effect } from '@estjs/signals';\nimport { isComponent } from './component';\nimport { KEY_PROP } from './constants';\nimport { type Scope, getActiveScope, onCleanup, runWithScope } from './scope';\nimport { claimHydratedNodes, isHydrating } from './hydration';\nimport { reconcileArrays } from './reconcile';\nimport type { AnyNode } from './types';\n\n/**\n * Remove node from its parent\n *\n * @param node Node to remove\n *\n * @example\n * ```typescript\n * removeNode(elementToRemove);\n * ```\n */\nexport function removeNode(node: AnyNode): void {\n if (!node) return;\n\n if (isComponent(node)) {\n node.destroy();\n } else {\n const element = node as ChildNode;\n if (element.parentNode) {\n element.remove();\n }\n }\n}\n\n/**\n * Insert child node\n * Handle insertion of component nodes and DOM nodes\n *\n * @param parent Parent node\n * @param child Child node\n * @param before Reference node for insertion\n */\nexport function insertNode(parent: Node, child: AnyNode, before?: AnyNode): void {\n if (!parent || !child) return;\n\n const beforeNode = isComponent(before) ? before.firstChild : (before as Node);\n\n if (isComponent(child)) {\n child.mount(parent, beforeNode);\n return;\n }\n\n if (beforeNode) {\n parent.insertBefore(child as Node, beforeNode);\n } else {\n if (__DEV__) {\n if (!child) {\n error('insertNode: child is not a Node', child);\n }\n }\n parent.appendChild(child as Node);\n }\n}\n\n/**\n * Replace child node\n * Handle replacement of component nodes and DOM nodes\n *\n * @param parent Parent node\n * @param newNode New node\n * @param oldNode Old node to be replaced\n */\nexport function replaceNode(parent: Node, newNode: AnyNode, oldNode: AnyNode): void {\n if (!parent || !newNode || !oldNode || newNode === oldNode) return;\n\n const beforeNode: AnyNode | undefined = isComponent(oldNode)\n ? oldNode.beforeNode\n : (oldNode as Node).nextSibling!;\n removeNode(oldNode);\n insertNode(parent, newNode, beforeNode);\n}\n\n/**\n * Check if two nodes are the same (inline for performance)\n * This combines key check and type check\n */\nexport function isSameNode(a: AnyNode, b: AnyNode): boolean {\n // Check key equality first (fast path)\n const keyA = getNodeKey(a);\n const keyB = getNodeKey(b);\n\n if (keyA !== keyB) {\n return false;\n }\n\n // Inline type check to avoid function call\n const aIsComponent = isComponent(a);\n const bIsComponent = isComponent(b);\n\n if (aIsComponent && bIsComponent) {\n return a.component === b.component;\n }\n\n if (aIsComponent !== bIsComponent) {\n return false;\n }\n\n if (isPrimitive(a) || isPrimitive(b)) {\n return a === b;\n }\n\n const aNode = a as Node;\n const bNode = b as Node;\n\n if (aNode.nodeType !== bNode.nodeType) {\n return false;\n }\n\n if (aNode.nodeType === Node.ELEMENT_NODE) {\n return (aNode as Element).tagName === (bNode as Element).tagName;\n }\n\n return true;\n}\n\n/**\n * Extract the optional stable key associated with a runtime node.\n */\nfunction getNodeKey(node: AnyNode): unknown {\n if (!node) {\n return undefined;\n }\n\n if (isComponent(node)) {\n return hasOwn(node.props, KEY_PROP) ? node.props[KEY_PROP] : undefined;\n }\n\n if (node instanceof Element) {\n return node.getAttribute(KEY_PROP);\n }\n\n if (isObject(node) && hasOwn(node, KEY_PROP)) {\n return Reflect.get(node as object, KEY_PROP);\n }\n\n return undefined;\n}\n\n/**\n * Normalize node for reconciliation.\n *\n * Performance-critical: uses inlined typeof / instanceof checks\n * instead of utility function calls in the hot path.\n */\nexport function normalizeNode(node: unknown): Node {\n // Fast path: already a DOM Node (covers Element, Text, Comment, etc.)\n if (node instanceof Node) return node;\n\n // Component instances must pass through as-is — the reconciler and\n // insertNode/removeNode handle them via isComponent() checks.\n if (isComponent(node)) return node as unknown as Node;\n\n // Primitives → text node (inlined for speed)\n const t = typeof node;\n if (node == null || t === 'string' || t === 'number' || t === 'boolean' || t === 'symbol') {\n return document.createTextNode(node === false || node == null ? '' : String(node));\n }\n\n // Plain objects should not be rendered directly — convert to text and warn\n if (__DEV__ && isObject(node)) {\n warn(\n 'Rendering a plain object as a node is not recommended. ' +\n 'The object will be converted to its string representation.',\n node,\n );\n }\n return document.createTextNode(String(node));\n}\n/**\n * Reactive node insertion with binding support\n *\n * @param parent Parent node\n * @param nodeFactory Node factory function or static node\n * @param before Reference node for insertion position\n * @example\n * ```typescript\n * insert(container, () => message.value, null);\n * insert(container, staticElement, referenceNode);\n * insert(container, \"Hello World\", null); // Direct string support\n * ```\n */\nexport function insert(parent: Node, nodeFactory: AnyNode, before?: Node) {\n if (!parent) return;\n // Capture the active scope at call time - this is critical for correct context inheritance\n // When dynamic components are created inside effects, they need to inherit from\n // the scope that was active when insert() was called, not when the effect runs\n const parentScope: Scope | null = getActiveScope();\n\n let renderedNodes: Node[] = [];\n let isFirstRun = true;\n\n /**\n * Resolves a raw node value into a flat array of DOM Nodes.\n * Fast-paths simple cases (single Node, single primitive) to avoid\n * intermediate array allocations.\n */\n const resolveNodes = (raw: unknown): Node[] => {\n // Fast path: already a DOM Node\n if (raw instanceof Node) return [raw];\n\n // Fast path: Component instance (skip normalizeNode entirely)\n if (isComponent(raw)) return [raw as unknown as Node];\n\n // Fast path: single primitive → text node (inlined typeof for speed)\n const t = typeof raw;\n if (raw == null || t === 'string' || t === 'number' || t === 'boolean') {\n return [normalizeNode(raw)];\n }\n\n // General path: coerce, resolve nested functions, flatten, normalize\n return coerceArray(raw)\n .map((item) => (isFunction(item) ? item() : item))\n .flatMap((i) => i)\n .map(normalizeNode) as Node[];\n };\n\n // Create effect for reactive updates\n const effectRunner = effect(() => {\n const executeUpdate = () => {\n const rawNodes = isFunction(nodeFactory) ? nodeFactory() : nodeFactory;\n const nodes = resolveNodes(rawNodes);\n // Hydration mode: skip DOM operations on first run only when every\n // node already exists under the target parent. Component instances and\n // fallback CSR nodes still need the normal reconcile path.\n if (\n isFirstRun &&\n isHydrating() &&\n nodes.every((node) => node instanceof Node && node.parentNode === parent)\n ) {\n renderedNodes = nodes;\n isFirstRun = false;\n return;\n }\n if (isFirstRun && isHydrating()) {\n const hydratedNodes = claimHydratedNodes(parent, nodes, before);\n if (hydratedNodes) {\n renderedNodes = hydratedNodes;\n isFirstRun = false;\n return;\n }\n }\n renderedNodes = reconcileArrays(parent, renderedNodes as Node[], nodes, before) as Node[];\n isFirstRun = false;\n };\n\n // If we have a parent scope, run within it to maintain context hierarchy\n if (parentScope && !parentScope.isDestroyed) {\n runWithScope(parentScope, executeUpdate);\n } else {\n executeUpdate();\n }\n });\n\n onCleanup(() => {\n effectRunner.stop();\n for (const node of renderedNodes) removeNode(node);\n renderedNodes = [];\n });\n\n return renderedNodes;\n}\n/**\n * Returns the first child of a node.\n *\n * @param node - The node to get the child from.\n * @returns The first child node or null.\n */\nexport function child(node: Node | null): Node | null {\n return node?.firstChild || null;\n}\n\n/**\n * Returns the next sibling after advancing by `step`.\n *\n * @param node - The starting node.\n * @param step - Number of steps to advance.\n * @returns The resulting sibling node or null.\n */\nexport function next(node: Node | null, step: number = 1): Node | null {\n while (node && step > 0) {\n node = node.nextSibling;\n step--;\n }\n return node || null;\n}\n\n/**\n * Returns the child node at the requested index.\n *\n * @param node - The parent node.\n * @param index - The child index.\n * @returns The child node at index or null.\n */\nexport function nthChild(node: Node | null, index: number): Node | null {\n if (!node || index < 0) return null;\n let current = node.firstChild;\n while (current && index > 0) {\n current = current.nextSibling;\n index--;\n }\n return current || null;\n}\n","/**\n * Extended listener options with optional event delegation support.\n */\nexport interface EventOptions extends AddEventListenerOptions {\n /**\n * Selector used for event delegation.\n *\n * When provided, the handler only runs if the event target matches the selector.\n */\n delegate?: string;\n}\n\n/**\n * Cleanup function signature for event listeners.\n */\nexport type EventCleanup = () => void;\n\n/**\n * Adds an event listener to an element with optional simple delegation.\n *\n * Without `delegate`, this is a thin wrapper around native `addEventListener()`.\n * When `delegate` is provided, the runtime first checks the selector match before\n * dispatching the real handler to the caller.\n *\n * @param el - The element to add the listener to.\n * @param event - The name of the event to listen for.\n * @param handler - The event handler function.\n * @param options - Optional event listener options.\n * @returns A cleanup function that removes the listener.\n */\nexport function addEvent(\n el: Element,\n event: string,\n handler: EventListener,\n options?: EventOptions,\n): EventCleanup {\n if (!options?.delegate) {\n el.addEventListener(event, handler, options);\n return () => el.removeEventListener(event, handler, options);\n }\n\n // Delegation path: match the selector first, then forward the event to the caller.\n const selector = options.delegate;\n /**\n * Dispatches delegated events only for matching descendants.\n */\n const wrappedHandler = (e: Event) => {\n const target = e.target as Element;\n if (target.matches(selector) || target.closest(selector)) {\n handler.call(el, e);\n }\n };\n\n // Extract delegate from options and pass the rest to addEventListener\n const { delegate: _, ...nativeOptions } = options;\n\n el.addEventListener(event, wrappedHandler, nativeOptions);\n\n return () => {\n el.removeEventListener(event, wrappedHandler, nativeOptions);\n };\n}\n","import { error, isPromise } from '@estjs/shared';\nimport { type Scope, getActiveScope, runWithScope } from './scope';\n\nexport type LifecycleHook = () => void | Promise<void>;\n\n/**\n * Registers scoped hook.\n *\n * @param scope - The scope to register the hook for.\n * @param listKey - The key of the hook list.\n * @param hook - The hook function to register.\n */\nfunction registerScopedHook(\n scope: Scope,\n listKey: 'onMount' | 'onUpdate' | 'onDestroy',\n hook: LifecycleHook,\n): void {\n let hookList = scope[listKey];\n if (!hookList) {\n hookList = [];\n scope[listKey] = hookList;\n }\n hookList.push(hook);\n}\n\n/**\n * Executes lifecycle hooks and captures async rejections in dev mode.\n *\n * @param hooks - The array of hooks to execute.\n * @param scopeId - The ID of the scope.\n * @param phase - The lifecycle phase.\n * @returns A promise if any hooks are asynchronous, or undefined.\n */\nfunction executeHooks(\n hooks: LifecycleHook[],\n scopeId: number,\n phase: 'mount' | 'update' | 'destroy',\n): void | Promise<void> {\n const len = hooks.length;\n if (len === 0) return;\n\n let pending: Promise<void>[] | undefined;\n\n for (let i = 0; i < len; i++) {\n try {\n const result = hooks[i]();\n if (isPromise(result)) {\n const safePromise = result.catch((error_) => {\n if (__DEV__) {\n error(`Scope(${scopeId}): Async ${phase} hook rejected:`, error_);\n }\n });\n (pending || (pending = [])).push(safePromise);\n }\n } catch (error_) {\n if (__DEV__) {\n error(`Scope(${scopeId}): Error in ${phase} hook:`, error_);\n }\n }\n }\n\n if (!pending) return;\n return Promise.all(pending).then(() => {});\n}\n\n/**\n * Register a mount lifecycle hook.\n * If the scope is already mounted, the hook is executed immediately.\n *\n * @param hook - The hook function to register.\n * @returns {void}\n */\nexport function onMount(hook: LifecycleHook): void {\n const scope = getActiveScope();\n\n if (!scope) {\n if (__DEV__) error('onMount() must be called within a scope');\n return;\n }\n\n if (scope.isMounted) {\n try {\n const result = hook();\n if (isPromise(result)) {\n result.catch((error_) => {\n if (__DEV__) error(`Scope(${scope.id}): Async mount hook rejected:`, error_);\n });\n }\n } catch (error_) {\n if (__DEV__) error(`Scope(${scope.id}): Error in mount hook:`, error_);\n }\n return;\n }\n\n registerScopedHook(scope, 'onMount', hook);\n}\n\n/**\n * Register an update lifecycle hook.\n *\n * @param hook - The hook function to register.\n * @returns {void}\n */\nexport function onUpdate(hook: LifecycleHook): void {\n const scope = getActiveScope();\n\n if (!scope) {\n if (__DEV__) error('onUpdate() must be called within a scope');\n return;\n }\n\n registerScopedHook(scope, 'onUpdate', hook);\n}\n\n/**\n * Register a destroy lifecycle hook.\n *\n * @param hook - The hook function to register.\n * @returns {void}\n */\nexport function onDestroy(hook: LifecycleHook): void {\n const scope = getActiveScope();\n\n if (!scope) {\n if (__DEV__) error('onDestroy() must be called within a scope');\n return;\n }\n\n registerScopedHook(scope, 'onDestroy', hook);\n}\n\n/**\n * Trigger mount lifecycle hooks for a scope.\n *\n * @param scope - The scope to trigger hooks for.\n * @returns A promise if any hooks are asynchronous, or undefined.\n */\nexport function triggerMountHooks(scope: Scope): void | Promise<void> {\n if (scope.isDestroyed) {\n return;\n }\n if (!scope.onMount || scope.onMount.length === 0) {\n scope.isMounted = true;\n return;\n }\n\n const mountHooks = scope.onMount;\n const result = runWithScope(scope, () => executeHooks(mountHooks, scope.id, 'mount'));\n mountHooks.length = 0;\n scope.isMounted = true;\n return result;\n}\n\n/**\n * Trigger update lifecycle hooks for a scope.\n *\n * @param scope - The scope to trigger hooks for.\n * @returns A promise if any hooks are asynchronous, or undefined.\n */\nexport function triggerUpdateHooks(scope: Scope): void | Promise<void> {\n if (scope.isDestroyed || !scope.onUpdate || scope.onUpdate.length === 0) return;\n return runWithScope(scope, () => executeHooks(scope.onUpdate!, scope.id, 'update'));\n}\n\n// NOTE: destroy hooks are executed directly inside `disposeScope` to keep\n// the teardown path synchronous and free of extra `runWithScope` frames.\n// See `./scope.ts`.\n","import { type Signal, isComputed, isSignal, shallowReactive } from '@estjs/signals';\nimport { isFunction, isOn } from '@estjs/shared';\n\nimport { COMPONENT_STATE, COMPONENT_TYPE, REF_KEY } from './constants';\nimport { insert, insertNode, removeNode } from './dom';\nimport { createScope, disposeScope, getActiveScope, runWithScope } from './scope';\nimport { type EventCleanup, addEvent } from './operations/event';\nimport { triggerMountHooks, triggerUpdateHooks } from './lifecycle';\nimport type { AnyNode, ComponentFn, ComponentProps } from './types';\nimport type { Scope } from './scope';\n\n/**\n * Install every own-key descriptor from `source` onto `target` verbatim\n * (getters stay getters), optionally deleting any target key not present\n * in the incoming source.\n *\n * Preserving getter descriptors is the whole reason the component body can\n * read `props.foo` and transparently get the latest reactive value — the\n * compiler emits dynamic props as `{ get foo() { return signal.value } }`.\n * `{ ...props }` would snapshot each getter once and kill reactivity;\n * `defineProperty` keeps it alive.\n */\nfunction syncDescriptors(target: object, source: object, pruneMissing = false): void {\n for (const key of Object.getOwnPropertyNames(source)) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)!);\n }\n if (pruneMissing) {\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (const key of Object.getOwnPropertyNames(target)) {\n if (!sourceKeys.includes(key)) delete (target as Record<string, unknown>)[key];\n }\n }\n}\n\n/**\n * Read a prop value through its descriptor so dynamic getters (ref/event\n * handlers emitted as `get onClick() { ... }`) resolve to the latest value.\n */\nfunction readProp(source: object, key: string): unknown {\n const descriptor = Object.getOwnPropertyDescriptor(source, key)!;\n return descriptor.get ? descriptor.get.call(source) : descriptor.value;\n}\n\nexport class Component<P extends ComponentProps = {}> {\n public readonly [COMPONENT_TYPE.NORMAL] = true;\n\n public scope: Scope | null = null;\n public state: COMPONENT_STATE = COMPONENT_STATE.INITIAL;\n public beforeNode: Node | undefined = undefined;\n public renderedNodes: Node[] = [];\n public firstChild: Node | undefined = undefined;\n\n protected parentNode: Node | undefined = undefined;\n\n private readonly parentScope: Scope | null;\n private readonly reactiveProps: P;\n private rootEventCleanups: EventCleanup[] = [];\n private rootRefCleanup?: () => void;\n\n constructor(\n public readonly component: ComponentFn<P>,\n public props: P = {} as P,\n ) {\n this.parentScope = getActiveScope();\n // Shallow-reactive container that inherits the raw props' descriptors.\n // The component body reads from this container; `update()` re-installs\n // new descriptors in-place so existing closures keep working.\n const container = {} as P;\n syncDescriptors(container, props);\n this.reactiveProps = shallowReactive(container) as P;\n }\n\n /**\n * Mount the component into `parentNode` (optionally before `beforeNode`).\n * If already rendered, the existing DOM is re-inserted without re-running\n * the component function.\n */\n mount(parentNode: Node, beforeNode?: Node): AnyNode[] {\n this.parentNode = parentNode;\n this.beforeNode = beforeNode;\n this.state = COMPONENT_STATE.MOUNTING;\n\n // Fast path: already rendered — just move the nodes.\n if (this.renderedNodes.length > 0) {\n for (const node of this.renderedNodes) {\n insertNode(parentNode, node, beforeNode);\n }\n this.state = COMPONENT_STATE.MOUNTED;\n return this.renderedNodes;\n }\n\n const scope = createScope(this.parentScope ?? getActiveScope());\n this.scope = scope;\n\n const renderedNodes = runWithScope(scope, () => {\n let result: unknown = this.component(this.reactiveProps);\n\n // Render-function pattern: a component may return a factory instead of\n // the element directly.\n if (isFunction(result)) {\n result = (result as Function)(this.reactiveProps);\n }\n\n // Unwrap signal / computed — only their current value reaches the DOM.\n if (isSignal<Element>(result)) {\n result = result.value;\n } else if (isComputed<Element>(result)) {\n result = result.value;\n }\n\n return insert(parentNode, result as AnyNode, beforeNode) ?? [];\n });\n\n this.renderedNodes = renderedNodes;\n this.firstChild = renderedNodes[0];\n\n // Wire refs/events only after renderedNodes/firstChild are set.\n this.syncSpecialProps(this.props);\n\n this.state = COMPONENT_STATE.MOUNTED;\n triggerMountHooks(scope);\n\n return this.renderedNodes;\n }\n\n /**\n * Re-install props into the same `reactiveProps` container (preserving\n * any closures already holding a reference to it) and re-apply\n * refs/events against the current root element.\n */\n update(props: P): void {\n this.props = props;\n const scope = this.scope;\n if (!scope || scope.isDestroyed) return;\n\n syncDescriptors(this.reactiveProps as object, props ?? {}, /* pruneMissing */ true);\n this.syncSpecialProps(props);\n\n triggerUpdateHooks(scope);\n }\n\n /**\n * Tear down and re-mount the component at its current insertion point.\n * No-op if the component has never been mounted.\n */\n forceUpdate(): void {\n if (!this.parentNode) return;\n const parent = this.parentNode;\n const before = this.beforeNode;\n this.destroy();\n this.mount(parent, before);\n }\n\n /**\n * Dispose the scope, remove all rendered nodes, and clear bookkeeping.\n * Idempotent: subsequent calls are no-ops.\n */\n destroy(): void {\n const scope = this.scope;\n if (!scope || scope.isDestroyed) return;\n this.scope = null;\n this.releaseSpecialProps();\n disposeScope(scope);\n for (const node of this.renderedNodes) removeNode(node);\n this.renderedNodes = [];\n this.firstChild = undefined;\n this.parentNode = undefined;\n // Clear all descriptors to release signal getter references\n for (const key of Object.getOwnPropertyNames(this.reactiveProps)) {\n delete (this.reactiveProps as Record<string, unknown>)[key];\n }\n }\n\n /**\n * Apply props that bind to the root DOM element rather than flowing into\n * the component body: `ref` (signal/function) and `onXxx` event handlers.\n * The render-facing `reactiveProps` already has those keys; here we just\n * wire them to the actual DOM node.\n */\n private syncSpecialProps(props: P): void {\n if (!props) return;\n const root = this.firstChild;\n if (!root || !(root instanceof Element)) return;\n\n this.releaseSpecialProps();\n\n for (const key of Object.getOwnPropertyNames(props)) {\n if (key === REF_KEY) {\n const value = readProp(props, key);\n this.rootRefCleanup = this.bindRootRef(value, root);\n continue;\n }\n\n if (isOn(key)) {\n const value = readProp(props, key);\n if (!isFunction(value)) continue;\n const eventName = key.slice(2).toLowerCase();\n const target = root as Element & Record<string, unknown> & { disabled?: boolean };\n const slot = `_$${eventName}`;\n const prev = target[slot];\n\n // Slot path — the JSX template already wired a delegated handler into\n // this element's `_$<event>` slot. babel-plugin emits the matching\n // `delegateEvents([...])` registration at module init, so the document\n // walker is guaranteed to be active. Override Solid-style (last write\n // wins) and restore the template's handler on release so a subsequent\n // update / re-mount sees a clean baseline. The delegation walk in\n // events.ts already supplies the `!node.disabled` short-circuit.\n if (isFunction(prev)) {\n target[slot] = value;\n this.rootEventCleanups.push(() => {\n if (target[slot] === value) target[slot] = prev;\n });\n continue;\n }\n\n // Native path — no JSX-bound delegated handler exists on this slot\n // (template didn't bind one, or babel-plugin's delegation is off).\n // Attach a real listener and mirror the walk's `!node.disabled`\n // short-circuit at the dispatch entry so behaviour matches the slot\n // path. The disabled check is a no-op on non-form elements.\n const fn = value as (this: Element, e: Event) => unknown;\n const handler: EventListener = (event) => {\n if (target.disabled) return;\n fn.call(target, event);\n };\n this.rootEventCleanups.push(addEvent(target, eventName, handler));\n }\n }\n }\n\n /**\n * Remove all listeners/ref bindings currently attached to the root element.\n */\n private releaseSpecialProps(): void {\n for (const cleanup of this.rootEventCleanups) {\n cleanup();\n }\n this.rootEventCleanups.length = 0;\n\n if (this.rootRefCleanup) {\n this.rootRefCleanup();\n this.rootRefCleanup = undefined;\n }\n }\n\n /**\n * Bind the root ref prop and return a cleanup that restores the previous ref state.\n */\n private bindRootRef(value: unknown, root: Element): (() => void) | undefined {\n if (isFunction(value)) {\n value(root);\n return () => value(null);\n }\n\n if (isSignal<Element | null>(value)) {\n const ref = value as Signal<Element | null>;\n const previousValue = ref.value;\n ref.value = root;\n return () => {\n if (ref.value === root) {\n ref.value = previousValue;\n }\n };\n }\n\n return undefined;\n }\n}\n\n/**\n * Check if a value is a Component instance.\n */\nexport function isComponent(node: unknown): node is Component {\n return !!node && !!(node as Record<PropertyKey, unknown>)[COMPONENT_TYPE.NORMAL];\n}\n\n/**\n * Wrap a component function in a Component instance, or pass an existing\n * Component instance through unchanged.\n */\nexport function createComponent<P extends ComponentProps>(\n componentFn: ComponentFn<P>,\n props?: P,\n): Component<P> {\n if (isComponent(componentFn)) {\n return componentFn as unknown as Component<P>;\n }\n return new Component(componentFn, props);\n}\n","import { isString, warn } from '@estjs/shared';\nimport { type Component, createComponent, isComponent } from './component';\nimport { createScope, disposeScope, runWithScope } from './scope';\nimport { beginHydration, endHydration } from './hydration';\nimport { insert, insertNode } from './dom';\nimport type { ComponentFn, ComponentProps } from './types';\n\n/**\n * Create a template factory function from HTML string.\n *\n * This function creates a reusable template factory that efficiently clones\n * DOM nodes from the provided HTML string. The template is parsed once.\n *\n * Security note: `template(html)` is a raw HTML entrypoint. The caller is\n * responsible for ensuring `html` is trusted and not derived from unsanitized\n * user input.\n *\n * @param html - The HTML string to create template from.\n * @returns Factory function that returns a cloned node of the template.\n * @throws {Error} When template content is empty or invalid.\n *\n * @example\n * ```typescript\n * const buttonTemplate = template('<button>Click me</button>');\n * const button1 = buttonTemplate(); // Creates first button instance\n * const button2 = buttonTemplate(); // Creates second button instance\n * ```\n */\nexport function template(html: string) {\n let node: Node | undefined;\n\n /**\n * Creates the cached template root node on first use.\n */\n const create = (): Node => {\n // Regular HTML template\n const template = document.createElement('template');\n template.innerHTML = html;\n const firstChild = template.content.firstChild;\n if (!firstChild) {\n throw new Error('Invalid template: empty content');\n }\n return firstChild;\n };\n\n // return a factory function: create the template when first called, reuse the cached template when called later\n return () => (node || (node = create())).cloneNode(true);\n}\n\n/**\n * Create and mount an application with the specified component.\n *\n * This function initializes an application by mounting a root component\n * to a target DOM element. It handles target validation and cleanup.\n *\n * @param component - The root component function to mount.\n * @param target - CSS selector string or DOM element to mount to.\n * @returns Object with root component and unmount function.\n *\n * @example\n * ```typescript\n * const App = () => template('<div>Hello World</div>')\n * const app = createApp(App, '#root');\n *\n * // Or with DOM element\n * const container = document.getElementById('app');\n * const app = createApp(App, container);\n * ```\n */\nexport function createApp<P extends ComponentProps = {}>(\n component: ComponentFn<P>,\n target: string | Element,\n) {\n const container = isString(target) ? document.querySelector(target) : (target as Element);\n if (!container) {\n if (__DEV__) {\n warn(`Target element not found: ${target}`);\n }\n return;\n }\n\n const existingContent = container.innerHTML;\n if (existingContent) {\n if (__DEV__) {\n // `[data-hk]` markers mean SSR markup — the user likely wants hydrate().\n if (container.querySelector('[data-hk]')) {\n warn(\n `Target element contains server-rendered markup ([data-hk]); ` +\n `createApp() will discard it and render from scratch. ` +\n `Did you mean to call hydrate()?`,\n );\n } else {\n warn(`Target element is not empty, it will be cleared: ${target}`);\n }\n }\n container.innerHTML = '';\n }\n\n const scope = createScope();\n let rootNode: Component | undefined;\n try {\n runWithScope(scope, () => {\n const mountedRoot = createComponent(component);\n if (isComponent(mountedRoot)) {\n rootNode = mountedRoot;\n insertNode(container, mountedRoot);\n }\n });\n } catch (error_) {\n disposeScope(scope);\n throw error_;\n }\n\n return {\n root: rootNode,\n unmount: () => {\n disposeScope(scope);\n rootNode?.destroy();\n },\n };\n}\n\nexport function hydrate<P extends ComponentProps = {}>(\n component: ComponentFn<P>,\n target: string | Element,\n) {\n const container = isString(target) ? document.querySelector(target) : (target as Element);\n if (!container) {\n if (__DEV__) {\n warn(`[essor] hydrate: target element not found: ${target}`);\n }\n return;\n }\n\n beginHydration(container);\n\n const scope = createScope();\n let rootNode: Component | undefined;\n try {\n runWithScope(scope, () => {\n const mountedRoot = createComponent(component);\n if (isComponent(mountedRoot)) {\n rootNode = mountedRoot;\n insert(container, mountedRoot);\n }\n });\n } catch (error_) {\n disposeScope(scope);\n throw error_;\n } finally {\n endHydration();\n }\n\n return {\n root: rootNode,\n unmount: () => {\n disposeScope(scope);\n rootNode?.destroy();\n },\n };\n}\n","import { error } from '@estjs/shared';\nimport { type Scope, getActiveScope } from './scope';\n\n/**\n * InjectionKey is a unique identifier for provided values.\n * Using Symbol ensures type safety and prevents key collisions.\n */\n// eslint-disable-next-line @typescript-eslint/no-wrapper-object-types, unused-imports/no-unused-vars\nexport interface InjectionKey<T> extends Symbol {}\n\n/**\n * Provide a value in the current scope.\n * The value can be injected by this scope or any descendant scope.\n *\n * @param key - The injection key.\n * @param value - The value to provide.\n * @returns {void}\n */\nexport function provide<T>(key: InjectionKey<T> | string | number, value: T): void {\n const scope = getActiveScope();\n\n if (!scope) {\n if (__DEV__) {\n error('provide() must be called within a scope');\n }\n return;\n }\n\n // Lazy initialize provides map\n if (!scope.provides) {\n scope.provides = new Map();\n }\n\n scope.provides.set(key, value);\n}\n\n/**\n * Inject a value from the scope hierarchy.\n * Traverses up the parent chain until finding a matching key.\n *\n * @param key - The injection key.\n * @param defaultValue - Default value if key is not found.\n * @returns The injected value or default value.\n */\nexport function inject<T>(key: InjectionKey<T> | string | number, defaultValue?: T): T {\n const scope = getActiveScope();\n\n if (!scope) {\n if (__DEV__) {\n error('inject() must be called within a scope');\n }\n return defaultValue as T;\n }\n\n // Traverse up the hierarchy\n let current: Scope | null = scope;\n while (current) {\n if (current.provides) {\n if (current.provides.has(key)) {\n return current.provides.get(key) as T;\n }\n }\n current = current.parent;\n }\n\n return defaultValue as T;\n}\n","import { isFunction, isString } from '@estjs/shared';\nimport { addEvent } from './operations/event';\nimport { getActiveScope, onCleanup } from './scope';\n\n/**\n * Retargets an event to a delegated host node.\n *\n * @param e - The event object.\n * @param value - The new target value.\n * @returns {void}\n */\nfunction reTargetEvent(e: Event, value: EventTarget): void {\n Object.defineProperty(e, 'target', {\n configurable: true,\n value,\n });\n}\n\n/**\n * Event handler for delegated events.\n *\n * @param e - The event object.\n */\nfunction eventHandler(e: Event): void {\n let node = e.target as any;\n const key = e.type;\n const oriTarget = e.target;\n const oriCurrentTarget = e.currentTarget;\n\n /**\n * Handle event on current node\n * @returns {boolean} Whether to continue propagation\n */\n const handleNode = (): boolean => {\n const handler = node[`_$${key}`];\n if (handler && isFunction(handler) && !node.disabled) {\n const data = node[`${key}Data`];\n data ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return false;\n }\n\n // Handle host element retargeting\n if (\n node.host &&\n !isString(node.host) &&\n !node.host._$host &&\n isFunction(node.contains) &&\n node.contains(e.target)\n ) {\n reTargetEvent(e, node.host);\n }\n return true;\n };\n\n /**\n * Walk up the DOM tree handling events\n */\n const walkUpTree = (): void => {\n while (handleNode() && (node = node._$host || node.parentNode || node.host));\n };\n\n // simulate currentTarget\n Object.defineProperty(e, 'currentTarget', {\n configurable: true,\n /**\n * Returns the current delegated target for the event.\n */\n get() {\n return node || document;\n },\n });\n\n if (e.composedPath) {\n const path = e.composedPath();\n reTargetEvent(e, path[0]);\n for (let i = 0; i < path.length - 2; i++) {\n node = path[i] as any;\n if (!handleNode()) break;\n if (node._$host) {\n node = node._$host;\n // bubble up from portal mount instead of composedPath\n walkUpTree();\n break;\n }\n if (node.parentNode === oriCurrentTarget) {\n break; // don't bubble above root of event delegation\n }\n }\n }\n // fallback for browsers that don't support composedPath\n else walkUpTree();\n // Mixing portals and shadow dom can lead to a nonstandard target, so reset here.\n reTargetEvent(e, oriTarget!);\n}\n\n/**\n * Symbol for storing delegated events on document\n */\nconst $EVENTS = Symbol('_$EVENTS');\n\n/**\n * Set up event delegation for specified event types.\n *\n * @param eventNames - Array of event names to delegate.\n * @param document - Document to attach events to (defaults to the global document).\n */\nexport function delegateEvents(\n eventNames: string[],\n document: Document = globalThis.document,\n): void {\n const docWithEvents = document as Document & { [$EVENTS]?: Set<string> };\n const eventSet = docWithEvents[$EVENTS] || (docWithEvents[$EVENTS] = new Set<string>());\n\n for (const name of eventNames) {\n if (!eventSet.has(name)) {\n eventSet.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\n\n/**\n * Clear all delegated events from document.\n *\n * @param document - Document to clear events from (defaults to the global document).\n */\nexport function clearDelegatedEvents(document: Document = globalThis.document): void {\n const docWithEvents = document as Document & { [$EVENTS]?: Set<string> };\n const eventSet = docWithEvents[$EVENTS];\n if (eventSet) {\n for (const name of eventSet.keys()) {\n document.removeEventListener(name, eventHandler);\n }\n delete docWithEvents[$EVENTS];\n }\n}\n/**\n * Registers an event listener and scopes its cleanup when needed.\n *\n * @param element - The element to add the listener to.\n * @param event - The event name.\n * @param handler - The event handler.\n * @param options - Optional event listener options.\n * @returns {void}\n */\nexport function addEventListener(\n element: Element,\n event: string,\n handler: EventListener,\n options?: AddEventListenerOptions,\n): void {\n const cleanup = addEvent(element, event, handler, options);\n\n if (getActiveScope()) {\n onCleanup(cleanup);\n }\n}\n","import { isArray, isFunction, isString } from '@estjs/shared';\nimport { effect } from '@estjs/signals';\nimport { addEventListener } from './events';\nimport { getActiveScope, onCleanup } from './scope';\n\n/**\n * Modifiers for `bind:*` two-way bindings.\n *\n * - `trim` — strip surrounding whitespace\n * - `number` — coerce numeric strings to numbers (no-op on NaN / blank)\n * - `lazy` — commit on `change` instead of `input`\n *\n * Unknown keys are ignored at runtime; the compiler rejects them at build time.\n */\nexport interface BindModifiers {\n trim?: boolean;\n number?: boolean;\n lazy?: boolean;\n}\n\n/** Whitelist mirrored by the compiler — kept in sync with `BindModifiers`. */\nexport const BIND_MODIFIER_KEYS = ['trim', 'number', 'lazy'] as const;\n\n// ── Strategy ────────────────────────────────────────────────\n\ninterface Strategy {\n /** DOM event that triggers a DOM→Model read. */\n event: string;\n /** Read the bound value from the DOM element. */\n read(el: Element): unknown;\n /** Write a model value into the DOM element. */\n write(el: Element, v: unknown): void;\n /** Always listen on `change` regardless of `lazy` (checkbox, radio, select, file). */\n forceChange?: true;\n /** Needs IME composition guard (text inputs, textareas). */\n ime?: true;\n /** Supports checkbox-group array semantics — model holds an array of values. */\n checkboxArray?: true;\n}\n\nconst IDENTITY = <T>(v: T): T => v;\nconst EMPTY_FILES = ((): FileList => {\n if (typeof DataTransfer !== 'undefined') return new DataTransfer().files;\n return [] as unknown as FileList;\n})();\n\n/** Compare-then-assign for string-coercible `.value` properties. */\nfunction writeValue(el: Element, v: unknown): void {\n const target = el as HTMLInputElement;\n const next = v == null ? '' : String(v);\n if (target.value !== next) target.value = next;\n}\n\nconst CHECKBOX: Strategy = {\n event: 'change',\n forceChange: true,\n checkboxArray: true,\n read: (el) => (el as HTMLInputElement).checked,\n write(el, v) {\n const e = el as HTMLInputElement;\n // Array-mode (checkbox group): \"checked\" iff this element's value is in the array.\n const next = isArray(v) ? v.map(String).includes(e.value) : Boolean(v);\n if (e.checked !== next) e.checked = next;\n },\n};\n\nconst RADIO: Strategy = {\n event: 'change',\n forceChange: true,\n read(el) {\n const e = el as HTMLInputElement;\n return e.checked ? e.value : '';\n },\n write(el, v) {\n const e = el as HTMLInputElement;\n const next = String(v) === e.value;\n if (e.checked !== next) e.checked = next;\n },\n};\n\nconst FILE: Strategy = {\n event: 'change',\n forceChange: true,\n read: (el) => (el as HTMLInputElement).files,\n write(el, v) {\n // Browsers forbid programmatic writes to <input type=file>, except via a\n // DataTransfer FileList. Allow clearing the selection when v is nullish.\n if (v != null) return;\n try {\n (el as HTMLInputElement).files = EMPTY_FILES;\n } catch {\n /* sandbox / hostile browser */\n }\n },\n};\n\n// Shared by <input type=text|...> and <textarea>: same event, same .value plumbing.\nconst TEXT_LIKE: Strategy = {\n event: 'input',\n ime: true,\n read: (el) => (el as HTMLInputElement | HTMLTextAreaElement).value,\n write: writeValue,\n};\n\nconst SELECT: Strategy = {\n event: 'change',\n forceChange: true,\n read(el) {\n const s = el as HTMLSelectElement;\n return s.multiple ? Array.from(s.selectedOptions, (o) => o.value) : s.value;\n },\n write(el, v) {\n const s = el as HTMLSelectElement;\n if (!s.multiple) return writeValue(el, v);\n const selected = new Set((isArray(v) ? v : []).map(String));\n for (const opt of Array.from(s.options)) opt.selected = selected.has(opt.value);\n },\n};\n\n/** Fallback for custom elements / contenteditable hosts — closes over `prop`. */\nfunction customStrategy(prop: string): Strategy {\n return {\n event: 'input',\n read: (el) => (el as any)[prop],\n write(el, v) {\n (el as any)[prop] = v;\n },\n };\n}\n\nfunction resolve(node: Element, prop: string): Strategy {\n switch (node.nodeName) {\n case 'INPUT':\n if (prop === 'checked') return (node as HTMLInputElement).type === 'radio' ? RADIO : CHECKBOX;\n if (prop === 'files') return FILE;\n if (prop === 'value') return TEXT_LIKE;\n // Unknown INPUT prop → custom strategy (don't pretend it's a text input).\n return customStrategy(prop);\n case 'SELECT':\n return SELECT;\n case 'TEXTAREA':\n return TEXT_LIKE;\n default:\n return customStrategy(prop);\n }\n}\n\n// ── Modifier Transform ──────────────────────────────────────\n\n/**\n * Apply trim / number modifiers to a raw DOM value. No-op for non-strings.\n *\n * Number coercion behaviour:\n * - Blank / whitespace-only inputs return the original string unchanged\n * (otherwise `Number(' ')` would silently produce `0`).\n * - Non-numeric strings (NaN) also return the original string.\n */\nfunction applyModifiers(v: unknown, trim: boolean, toNum: boolean): unknown {\n if (!isString(v)) return v;\n const s = trim ? v.trim() : v;\n if (toNum) {\n const probe = trim ? s : s.trim();\n if (probe !== '') {\n const n = Number(probe);\n if (!Number.isNaN(n)) return n;\n }\n }\n return s;\n}\n\n/** Whether `el` is the active element (Document / ShadowRoot aware). */\nfunction isFocused(el: Element): boolean {\n const root = el.getRootNode();\n return (root instanceof Document || root instanceof ShadowRoot) && root.activeElement === el;\n}\n\n/**\n * `<input type=\"number\">` / `<input type=\"range\">` always read as\n * numbers, even without an explicit `{ number: true }`.\n */\nfunction shouldAutoCoerceNumber(node: Element, prop: string): boolean {\n if (prop !== 'value' || node.nodeName !== 'INPUT') return false;\n const t = (node as HTMLInputElement).type;\n return t === 'number' || t === 'range';\n}\n\n// ── Public API ──────────────────────────────────────────────\n\n/**\n * Creates a two-way binding between a DOM element property and a reactive model.\n *\n * - Model → DOM via a reactive `effect()`.\n * - DOM → Model via an event listener that calls `setter`.\n *\n * @param node Target element. `null` is tolerated (no-op).\n * @param prop Bound property (`value` / `checked` / `files` / custom).\n * @param getter Reactive getter, or a static initial value.\n * @param setter Called with the (optionally transformed) DOM value on user input.\n * @param modifiers Optional `{ trim, number, lazy }`.\n */\nexport function bindElement(\n node: Element | null,\n prop: 'value' | 'checked' | 'files' | string,\n getter: (() => unknown) | unknown,\n setter: (v: unknown) => void,\n modifiers: BindModifiers = {},\n): void {\n if (!node) return;\n\n // 1. Resolve strategy & pre-compute flags\n const { event, read, write, forceChange, ime, checkboxArray } = resolve(node, prop);\n const trim = modifiers.trim === true;\n const toNum = modifiers.number === true || shouldAutoCoerceNumber(node, prop);\n const lazy = modifiers.lazy === true;\n const shouldCast = (trim || toNum) && prop !== 'files';\n\n const getModel: () => unknown = isFunction(getter) ? (getter as () => unknown) : () => getter;\n const cast: (v: unknown) => unknown = shouldCast\n ? (v) => applyModifiers(v, trim, toNum)\n : IDENTITY;\n\n // Checkbox group: when a non-radio checkbox is bound to an array model,\n // toggle `el.value` in the array on each change. Decided lazily per-event\n // because the model shape may change over time.\n const computeNext: (raw: unknown) => unknown = checkboxArray\n ? (raw) => {\n const current = getModel();\n if (!isArray(current)) return cast(raw);\n const own = (node as HTMLInputElement).value;\n const next = current.filter((item) => String(item) !== own);\n if (raw) next.push(own);\n return next;\n }\n : cast;\n\n // 2. DOM → Model\n let composing = false;\n const eventName = lazy || forceChange ? 'change' : event;\n\n const syncToModel = (): void => {\n if (composing) return;\n const raw = read(node);\n if (raw === undefined) return;\n const next = computeNext(raw);\n if (!Object.is(getModel(), next)) setter(next);\n };\n\n addEventListener(node, eventName, syncToModel);\n\n // Normalize the displayed value on blur when modifiers are active.\n if (!lazy && shouldCast && eventName !== 'change') {\n addEventListener(node, 'change', () => write(node, cast(read(node))));\n }\n\n // 3. IME composition guard — track state whenever the strategy is IME-aware,\n // even in `lazy` mode, otherwise an external model write during composition\n // would clobber pending input. `lazy` only controls the commit event.\n if (ime) {\n addEventListener(node, 'compositionstart', () => {\n composing = true;\n });\n addEventListener(node, 'compositionend', () => {\n composing = false;\n // Lazy waits for blur; eager commits the composed text now.\n if (!lazy) syncToModel();\n });\n }\n\n // 4. Model → DOM — skip the write when (a) inside an IME composition or\n // (b) the focused input already shows the canonical value (avoids caret jump).\n const runner = effect(() => {\n const value = getModel();\n if (ime && composing) return;\n if (ime && !lazy && isFocused(node) && Object.is(cast(read(node)), value)) return;\n write(node, value);\n });\n\n // 5. Lifecycle cleanup\n if (getActiveScope()) {\n onCleanup(() => runner.stop());\n }\n}\n","/**\n * Read a slot value, unwrapping the common compilation shapes.\n *\n * The babel plugin compiles `<Wrap>{() => expr}</Wrap>` to a single-element\n * array `[() => expr]`. We unwrap that, then invoke the function if present\n * so that callers always observe the final value (Element / null / etc.).\n */\nfunction unwrapSlotValue(raw: unknown): unknown {\n let v: unknown = raw;\n if (Array.isArray(v) && v.length === 1) v = v[0];\n return typeof v === 'function' ? (v as () => unknown)() : v;\n}\n\n/**\n * Build a stable accessor for a single-child slot.\n *\n * Returns a function that, when invoked inside a reactive `effect()`, reads\n * `props.children` (preserving getter semantics from the babel plugin) and\n * unwraps the compiled array/function shape.\n *\n * @example\n * const read = useChildren(props);\n * effect(() => {\n * const child = read(); // tracks deps on every run\n * // ...\n * });\n */\nexport function useChildren<T = unknown>(props: { children?: unknown }): () => T {\n const desc = Object.getOwnPropertyDescriptor(props, 'children');\n if (desc?.get) {\n return () => unwrapSlotValue(desc.get!.call(props)) as T;\n }\n return () => unwrapSlotValue(props.children) as T;\n}\n\n/**\n * Shallow compare two objects\n * @param {any} a - The first object to compare\n * @param {any} b - The second object to compare\n * @returns {boolean} - Returns true if the objects are equal, false otherwise\n */\nexport function shallowCompare(a: any, b: any): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n\n for (const key in a) {\n if (a[key] !== b[key]) return false;\n }\n\n for (const key in b) {\n if (!(key in a)) return false;\n }\n\n return true;\n}\n\n/**\n * Omits props from a target object using a proxy.\n *\n * @param target - The target object.\n * @param keys - The keys to omit.\n * @returns A proxy that omits specified keys.\n */\nexport function omitProps<T extends object, K extends keyof T>(target: T, keys: K[]): Omit<T, K> {\n const excludeSet = new Set(keys);\n\n return new Proxy(target, {\n /**\n * Returns a property unless it is excluded by the proxy.\n */\n get(obj, prop) {\n if (excludeSet.has(prop as K)) {\n return undefined;\n }\n return Reflect.get(obj, prop);\n },\n /**\n * Returns the enumerable keys that are not excluded from the proxy.\n */\n ownKeys(obj) {\n return Reflect.ownKeys(obj).filter((key) => !excludeSet.has(key as K));\n },\n /**\n * Returns the property descriptor unless the key is excluded.\n */\n getOwnPropertyDescriptor(obj, prop) {\n if (excludeSet.has(prop as K)) {\n return undefined;\n }\n return Reflect.getOwnPropertyDescriptor(obj, prop);\n },\n /**\n * Returns whether the requested value exists.\n */\n has(obj, prop) {\n if (excludeSet.has(prop as K)) {\n return false;\n }\n return Reflect.has(obj, prop);\n },\n });\n}\n","import { isReactive } from '@estjs/signals';\nimport { FRAGMENT_COMPONENT } from '../constants';\nimport type { AnyNode, ComponentProps } from '../types';\n\nexport interface FragmentProps extends ComponentProps {\n children?: AnyNode | AnyNode[];\n}\n\n/**\n * Fragment component - renders multiple children without wrapper elements (Client-side only).\n *\n * **Client-side behavior:**\n * - Returns children directly for rendering.\n * - Hydration system matches children using hydration keys.\n * - The template system handles array children automatically.\n *\n * @param props - Component props with children.\n * @returns {AnyNode} Children directly without wrapper.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Fragment>\n * <div>First</div>\n * <span>Second</span>\n * </Fragment>\n *\n * // Nested fragments\n * <Fragment>\n * <Fragment>\n * <div>Nested 1</div>\n * <div>Nested 2</div>\n * </Fragment>\n * <div>Third</div>\n * </Fragment>\n *\n * // Empty fragment (renders nothing)\n * <Fragment />\n * ```\n */\nexport function Fragment(props?: FragmentProps): AnyNode {\n // Getter-based children and reactive Proxy props both need a thunk so the\n // effect system re-evaluates when dependencies change.\n if (props && (Object.getOwnPropertyDescriptor(props, 'children')?.get || isReactive(props))) {\n return [() => props.children];\n }\n\n const children = props?.children;\n\n if (children == null) return null;\n\n return children as AnyNode;\n}\n\nFragment[FRAGMENT_COMPONENT] = true;\n\n/**\n * Check if a node is a Fragment component.\n *\n * @param node - Node to check.\n * @returns {boolean} True if node is a Fragment.\n */\nexport function isFragment(node: unknown): boolean {\n return !!node && !!node[FRAGMENT_COMPONENT];\n}\n","import { isFunction, isString, warn } from '@estjs/shared';\nimport { effect } from '@estjs/signals';\nimport { PORTAL_COMPONENT } from '../constants';\nimport { consumeTeleportAnchor, consumeTeleportBlock, isHydrating } from '../hydration';\nimport { onMount } from '../lifecycle';\nimport {\n type Scope,\n createScope,\n disposeScope,\n getActiveScope,\n onCleanup,\n runWithScope,\n} from '../scope';\nimport { insert } from '../dom';\nimport type { AnyNode } from '../types';\n\nexport interface PortalProps {\n /** Children to render at the target location. */\n children?: AnyNode | AnyNode[];\n /**\n * Mount target — CSS selector string, `Element`, or reactive getter.\n * When the getter result changes, the Portal re-mounts at the new target.\n */\n target?: string | Element | (() => string | Element | null | undefined);\n /**\n * When truthy, children render inline at the call site instead of being teleported.\n * May be a static value or a reactive getter.\n */\n disabled?: boolean | (() => boolean);\n}\n\n/** Resolve `props.target` to an Element, handling string / Element / getter. */\nfunction resolveTarget(props: PortalProps): Element | null {\n const raw = isFunction(props.target) ? (props.target as () => unknown)() : props.target;\n if (raw == null) return null;\n if (isString(raw)) return document.querySelector(raw as string);\n return raw as Element;\n}\n\n/** Evaluate `props.disabled`, supporting both static booleans and getters. */\nfunction evalDisabled(props: PortalProps): boolean {\n return isFunction(props.disabled) ? !!(props.disabled as () => boolean)() : !!props.disabled;\n}\n\n/**\n * Portal — teleports children into a different DOM node.\n *\n * - `disabled=true` renders children inline at the call site.\n * - Otherwise children are teleported into `target`.\n * - Both `target` and `disabled` may be reactive; changes trigger re-mount.\n *\n * @returns A placeholder comment node that marks the call site.\n *\n * @example\n * ```tsx\n * <Portal target=\"#modal-root\" disabled={isMobile}>\n * <div>Modal content</div>\n * </Portal>\n * ```\n */\nexport function Portal(props: PortalProps): Comment {\n // Hydration: adopt SSR-emitted anchors + target block.\n if (isHydrating()) {\n const adopted = tryHydratePortal(props);\n if (adopted) return adopted;\n }\n\n const placeholder = document.createComment('portal');\n placeholder[PORTAL_COMPONENT] = true;\n\n const { children } = props;\n if (children == null) return placeholder;\n\n const parentScope = getActiveScope();\n let innerScope: Scope | null = null;\n\n /**\n * Mount children into the given parent, inside a fresh inner scope\n * that inherits from the parent scope. This allows `insert()` effects\n * to be properly disposed on teardown.\n */\n const mountAt = (parent: Node, before?: Node): void => {\n innerScope = createScope(parentScope);\n runWithScope(innerScope, () => {\n insert(parent, () => children, before);\n });\n };\n\n /**\n * Tear down the inner scope, removing all mounted children and their\n * reactive effects.\n */\n const teardown = (): void => {\n if (innerScope) {\n disposeScope(innerScope);\n innerScope = null;\n }\n };\n\n /**\n * Evaluate disabled/target and (re-)mount, tearing down the previous\n * mount first. Accepts pre-evaluated values to avoid redundant getter\n * invocations when called from within the tracking effect.\n */\n const apply = (disabled: boolean, target: Element | null): void => {\n teardown();\n\n if (disabled) {\n const parent = placeholder.parentNode;\n if (!parent) return;\n mountAt(parent, placeholder);\n return;\n }\n\n if (!target) {\n if (__DEV__) {\n warn(`[Portal] Target element not found: ${String(props.target)}`);\n }\n return;\n }\n mountAt(target);\n };\n\n // Track reactive deps immediately but defer DOM work until placeholder\n // is attached. On subsequent runs (reactive change) the effect runs\n // apply() directly with the freshly evaluated values — no redundant\n // double-evaluation.\n let mounted = false;\n\n const effectRunner = effect(() => {\n const disabled = evalDisabled(props);\n const target = disabled ? null : resolveTarget(props);\n\n if (mounted) {\n apply(disabled, target);\n }\n });\n\n onMount(() => {\n mounted = true;\n\n const disabled = evalDisabled(props);\n const target = disabled ? null : resolveTarget(props);\n\n // Try mounting synchronously — works when target is already in the document.\n if (disabled || target) {\n apply(disabled, target);\n return;\n }\n\n // Target may not be in the document yet (sibling elements mount bottom-up).\n // Defer to microtask — flushes before paint.\n queueMicrotask(() => {\n if (!placeholder.parentNode) return;\n apply(evalDisabled(props), resolveTarget(props));\n });\n });\n\n onCleanup(() => {\n effectRunner.stop();\n teardown();\n });\n\n return placeholder;\n}\n\nPortal[PORTAL_COMPONENT] = true;\n\n/**\n * Hydration adoption for Portal.\n *\n * Returns the SSR call-site anchor as placeholder on match, `null` on mismatch\n * (falls back to CSR mount path).\n */\nfunction tryHydratePortal(props: PortalProps): Comment | null {\n if (evalDisabled(props)) return null;\n\n const anchor = consumeTeleportAnchor();\n if (!anchor) {\n if (__DEV__) {\n warn('[Portal] hydration mismatch: no <!--teleport-anchor--> at call site.');\n }\n return null;\n }\n\n const target = resolveTarget(props);\n if (!target) {\n if (__DEV__) {\n warn(`[Portal] hydration mismatch: target not found: ${String(props.target)}`);\n }\n return null;\n }\n\n const block = consumeTeleportBlock(target);\n if (!block) {\n if (__DEV__) {\n warn(\n `[Portal] hydration mismatch: no <!--teleport-start--> in target ${String(props.target)}`,\n );\n }\n return null;\n }\n\n anchor[PORTAL_COMPONENT] = true;\n return anchor;\n}\n\n/**\n * Check if a node is a Portal component.\n *\n * @param node - Node to check.\n * @returns True if node is a Portal.\n */\nexport function isPortal(node: unknown): boolean {\n return !!node && !!node[PORTAL_COMPONENT];\n}\n","import { isBrowser, isFunction, isPromise, warn } from '@estjs/shared';\nimport { isComputed, isSignal } from '@estjs/signals';\nimport { provide } from '../provide';\nimport { createScope, disposeScope, getActiveScope, onCleanup, runWithScope } from '../scope';\nimport { insert } from '../dom';\nimport { SUSPENSE_COMPONENT } from '../constants';\nimport type { AnyNode } from '../types';\n\n/**\n * Deeply resolve a node-ish value for insertion: unwrap thunks and\n * signals/computed at every level, and recurse into arrays so nested\n * `() => signal` / signal entries become concrete nodes/values. `insert()`\n * then normalizes the result into DOM nodes.\n */\nexport function resolveNodeValue(value: unknown): unknown {\n let current = value;\n\n while (isFunction(current)) {\n current = (current as Function)();\n }\n\n if (isSignal(current) || isComputed(current)) {\n return resolveNodeValue((current as any).value);\n }\n\n if (Array.isArray(current)) {\n return current.map((item) => resolveNodeValue(item));\n }\n\n return current;\n}\n\nexport interface SuspenseProps {\n /** The content to render. Can be a Promise for async loading. */\n children?: Node | Node[] | Promise<Node | Node[]>;\n /** Fallback content to display while children is loading (Promise pending). */\n fallback?: Node;\n /** Optional key for reconciliation. */\n key?: string;\n}\n\nexport const SuspenseContext = Symbol('SuspenseContext');\n\nexport interface SuspenseContextType {\n register: (promise: Promise<any>) => void;\n increment: () => void;\n decrement: () => void;\n}\n\n/**\n * Suspense — handles async content with a fallback UI.\n *\n * Rendering model: content is built offscreen into the Suspense fragment\n * first. If async resources register during\n * that mount, the content nodes are parked in an offscreen fragment while\n * fallback is shown. When all resources settle, content is moved back in one\n * step. No \"insert → remove → re-insert\" dance — content is moved at most once.\n *\n * Wrapper-free: the boundary is a `<!--suspense-->…<!--/suspense-->` comment\n * pair, not a `display:contents` div.\n *\n * @example\n * ```tsx\n * <Suspense fallback={<div>Loading...</div>}>{asyncContent}</Suspense>\n * ```\n */\nexport function Suspense(props: SuspenseProps): Node {\n // SSR: render the fallback, deterministic, never touch DOM.\n if (!isBrowser()) {\n return props.fallback ?? ('' as unknown as Node);\n }\n\n const owner = getActiveScope();\n const start = document.createComment('suspense');\n const end = document.createComment('/suspense');\n const frag = document.createDocumentFragment();\n frag.append(start, end);\n\n let mounted = true;\n let pending = 0;\n let mounting = false;\n\n // Content: a child scope + its nodes live between `start` and `end` in the\n // fragment. When fallback is shown, the nodes move to `parked`.\n let contentScope: ReturnType<typeof createScope> | null = null;\n let parked: DocumentFragment | null = null;\n\n // Fallback: transient, destroyed when content is restored.\n let fallbackScope: ReturnType<typeof createScope> | null = null;\n\n let resolved: AnyNode | AnyNode[] | null = null;\n\n // ── DOM helpers ──────────────────────────────────────────────────────────\n\n /** Move every node between `start` and `end` into an offscreen fragment. */\n const parkContent = (): void => {\n const off = document.createDocumentFragment();\n while (end.previousSibling && end.previousSibling !== start) {\n off.prepend(end.previousSibling);\n }\n parked = off;\n };\n\n /** Move parked nodes back before `end`, then clear the parked fragment. */\n const restoreContent = (): void => {\n if (!parked) return;\n // `end` may now live in the host (framework moved frag children). Always\n // target its current parent, falling back to the original fragment.\n const parent = end.parentNode ?? frag;\n while (parked.firstChild) {\n parent.insertBefore(parked.firstChild, end);\n }\n parked = null;\n };\n\n const mountFallback = (): void => {\n if (props.fallback == null || fallbackScope) return;\n fallbackScope = createScope(owner);\n runWithScope(fallbackScope, () => {\n // Lazy-parent: same pattern as For/Portal. Before flush `end.parentNode`\n // is the fragment; after flush it's the real host.\n insert(end.parentNode ?? frag, () => resolveNodeValue(props.fallback) as AnyNode, end);\n });\n };\n\n const disposeFallback = (): void => {\n if (!fallbackScope) return;\n disposeScope(fallbackScope);\n fallbackScope = null;\n };\n\n const mountContent = (children: AnyNode | AnyNode[]): void => {\n mounting = true;\n contentScope = createScope(owner);\n runWithScope(contentScope, () => {\n insert(end.parentNode ?? frag, () => resolveNodeValue(children) as AnyNode, end);\n });\n mounting = false;\n // A resource registered synchronously during mount — park content.\n if (pending && !parked) {\n parkContent();\n mountFallback();\n }\n };\n\n // ── State transitions ────────────────────────────────────────────────────\n\n const showFallback = (): void => {\n if (parked) return; // already showing fallback\n if (mounting) return; // mountContent will reconcile\n parkContent();\n mountFallback();\n };\n\n const showContent = (): void => {\n if (!parked) return;\n\n const hasSyncChildren = props.children != null && !isPromise(props.children);\n if (contentScope == null && resolved == null && !hasSyncChildren) return;\n\n disposeFallback();\n restoreContent();\n\n // First time: mount the resolved value (Promise path)\n // On the Promise path contentScope was never created — we must mount now.\n // On the sync-resource path (register during mount), contentScope exists but\n // its nodes were parked; restoring covers it (the `contentScope != null`\n // check above would be true, so we don't enter here).\n if (!contentScope) {\n if (resolved) {\n mountContent(resolved);\n } else if (hasSyncChildren) {\n mountContent(props.children as AnyNode);\n }\n }\n };\n\n // ── Context (created before children handling so register() is available) ─\n\n const settle = () => {\n if (!mounted) return;\n if (--pending === 0) showContent();\n };\n\n const ctx: SuspenseContextType = {\n register: (promise: Promise<any>) => {\n pending++;\n showFallback();\n promise.then(settle).catch((error) => {\n if (__DEV__) warn('[Suspense] Resource failed:', error);\n settle();\n });\n },\n increment: () => {\n pending++;\n showFallback();\n },\n decrement: () => {\n pending = Math.max(0, pending - 1);\n if (pending === 0) showContent();\n },\n };\n\n provide(SuspenseContext, ctx);\n\n // ── Initial render ───────────────────────────────────────────────────────\n\n const children = props.children;\n\n if (isPromise(children)) {\n children\n .then((value) => {\n resolved = value as AnyNode | AnyNode[];\n })\n .catch(() => {\n /* handled by register() */\n });\n ctx.register(children);\n } else if (children != null) {\n mountContent(children as AnyNode);\n } else if (props.fallback != null) {\n showFallback();\n }\n\n // ── Cleanup ──────────────────────────────────────────────────────────────\n\n onCleanup(() => {\n mounted = false;\n pending = 0;\n resolved = null;\n if (contentScope) disposeScope(contentScope);\n if (fallbackScope) disposeScope(fallbackScope);\n contentScope = fallbackScope = null;\n parked = null;\n start.remove();\n end.remove();\n });\n\n return frag;\n}\n\nSuspense[SUSPENSE_COMPONENT] = true;\n\n/**\n * Check if a node is a Suspense component.\n *\n * @param node - Node to check.\n * @returns {boolean} True if node is a Suspense.\n */\nexport function isSuspense(node: unknown): boolean {\n return !!node && !!node[SUSPENSE_COMPONENT];\n}\n","import { type Signal, signal } from '@estjs/signals';\nimport { inject } from '../provide';\nimport { SuspenseContext } from './Suspense';\n\nexport type ResourceState = 'pending' | 'ready' | 'errored';\n\nexport interface Resource<T> {\n (): T | undefined;\n loading: Signal<boolean>;\n error: Signal<Error | null>;\n state: Signal<ResourceState>;\n}\n\nexport interface ResourceActions<T> {\n mutate: (value: T) => void;\n refetch: () => Promise<void>;\n}\n\nexport interface ResourceOptions<T> {\n initialValue?: T;\n}\n\n/**\n * Create a resource for async data fetching.\n * Inspired by SolidJS createResource.\n *\n * @param fetcher - Function that returns a Promise with the data.\n * @param options - Optional configuration.\n * @returns {[Resource<T>, ResourceActions<T>]} Tuple of [resource, actions].\n */\nexport function createResource<T>(\n fetcher: () => Promise<T>,\n options?: ResourceOptions<T>,\n): [Resource<T>, ResourceActions<T>] {\n // Internal state\n const value = signal<T | undefined>(options?.initialValue);\n const loading = signal<boolean>(true);\n const error = signal<Error | null>(null);\n const state = signal<ResourceState>('pending');\n\n let fetchId = 0;\n\n let currentPromise: Promise<void> | null = null;\n let suspenseRegistered = false;\n const suspenseContext = inject<any>(SuspenseContext, null);\n\n /**\n * Fetch function.\n */\n const fetch = async (): Promise<void> => {\n const currentFetchId = ++fetchId;\n loading.value = true;\n state.value = 'pending';\n error.value = null;\n suspenseRegistered = false;\n if (suspenseContext) {\n // Track pending fetches even when callers branch on loading/state before reading the resource.\n suspenseContext.increment();\n }\n\n try {\n const promise = fetcher();\n currentPromise = promise as any; // Track original promise for Suspense\n promise.catch(() => {}); // Prevent unhandled rejection\n const result = await promise;\n\n // Only update if this is still the latest fetch\n if (currentFetchId === fetchId) {\n value.value = result;\n state.value = 'ready';\n loading.value = false;\n }\n } catch (error_) {\n // Only update if this is still the latest fetch\n if (currentFetchId === fetchId) {\n error.value = error_ instanceof Error ? error_ : new Error(String(error_));\n state.value = 'errored';\n loading.value = false;\n }\n } finally {\n if (suspenseContext) {\n suspenseContext.decrement();\n }\n }\n };\n\n // Start initial fetch\n fetch();\n\n // Resource accessor function\n const resource = (() => {\n // Register with Suspense only once per fetch cycle\n if (!suspenseRegistered && loading.value && currentPromise && suspenseContext) {\n suspenseRegistered = true;\n // @ts-ignore\n suspenseContext.register(currentPromise);\n }\n return value.value;\n }) as Resource<T>;\n resource.loading = loading;\n resource.error = error;\n resource.state = state;\n\n // Actions\n const actions: ResourceActions<T> = {\n mutate: (newValue: T) => {\n value.value = newValue;\n state.value = 'ready';\n loading.value = false;\n error.value = null;\n },\n refetch: async () => {\n await fetch();\n },\n };\n\n return [resource, actions];\n}\n","import { isFunction } from '@estjs/shared';\nimport { inject } from '../provide';\nimport { onDestroy } from '../lifecycle';\nimport { createScope, disposeScope, getActiveScope, runWithScope } from '../scope';\nimport { insert } from '../dom';\nimport { Component } from '../component';\nimport { SuspenseContext, type SuspenseContextType } from './Suspense';\nimport type { AnyNode, ComponentFn, ComponentProps } from '../types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface AsyncComponentOptions {\n /**\n * Component to render while the async component is loading.\n * Only shown after `delay` ms has elapsed (prevents flash of loading state).\n */\n loading?: ComponentFn;\n\n /**\n * Component to render when the async component fails to load.\n * Receives `{ error, retry }` as props.\n */\n error?: ComponentFn<{ error: Error; retry: () => void }>;\n\n /** Delay in ms before showing the `loading` component (default: 200). */\n delay?: number;\n\n /** Timeout in ms. If loading exceeds this, the error component is shown. */\n timeout?: number;\n\n /**\n * SSR rendering strategy (default: `'blocking'`).\n *\n * - `'blocking'` — Pre-calls the loader at definition time. If the module\n * resolves before the component body runs, the real component is inlined.\n * - `'client-only'` — Renders `null` on the server; loads only in browser.\n */\n ssr?: 'blocking' | 'client-only';\n\n /** Called when loading fails. Useful for logging or error tracking. */\n onError?: (error: Error, retry: () => void) => void;\n}\n\ntype LoaderResult<P> = { default: ComponentFn<P> } | ComponentFn<P>;\ntype Loader<P> = () => Promise<LoaderResult<P>>;\n\n/** Resolve the default export (or the function itself) from a loaded module. */\nfunction resolveModule<P>(mod: LoaderResult<P>): ComponentFn<P> {\n return isFunction(mod) ? (mod as ComponentFn<P>) : (mod as { default: ComponentFn<P> }).default;\n}\n\n// ============================================================================\n// Server-side rendering\n// ============================================================================\n\nfunction defineServerAsyncComponent<P extends ComponentProps>(\n loader: Loader<P>,\n ssr: 'blocking' | 'client-only',\n): ComponentFn<P> {\n if (ssr === 'client-only') {\n const placeholder: ComponentFn<P> = () => '' as unknown as AnyNode;\n (placeholder as any).__asyncLoader = loader;\n (placeholder as any).__asyncResolved = () => null;\n return placeholder;\n }\n\n // 'blocking': pre-call the loader so an already-cached module renders inline.\n let resolved: ComponentFn<P> | null = null;\n let promise: Promise<void> | null = null;\n\n const load = (): Promise<void> =>\n (promise ??= loader()\n .then((mod) => {\n resolved = resolveModule(mod);\n })\n .catch(() => {}));\n\n load();\n\n const wrapper: ComponentFn<P> = (props: P) =>\n resolved ? resolved(props) : ('' as unknown as AnyNode);\n (wrapper as any).__asyncLoader = load;\n (wrapper as any).__asyncResolved = () => resolved;\n return wrapper;\n}\n\n// ============================================================================\n// Client-side\n// ============================================================================\n\nfunction defineClientAsyncComponent<P extends ComponentProps>(\n loader: Loader<P>,\n options: AsyncComponentOptions,\n): ComponentFn<P> {\n const { loading, error: errorComp, delay = 200, timeout, onError } = options;\n\n // Module-level cache: all instances share one loader invocation.\n let component: ComponentFn<P> | null = null;\n let error: Error | null = null;\n let status: 'pending' | 'resolved' | 'errored' = 'pending';\n let loadPromise: Promise<void> | null = null;\n\n const load = (): Promise<void> =>\n (loadPromise ??= loader()\n .then((mod) => {\n component = resolveModule(mod);\n status = 'resolved';\n })\n .catch((error_) => {\n error = error_ instanceof Error ? error_ : new Error(String(error_));\n status = 'errored';\n loadPromise = null; // allow retry\n }));\n\n load();\n\n function AsyncWrapper(props: P): AnyNode {\n // Wrapper-free: returns a fragment whose sole child is the end anchor of a\n // `<!--async-->` anchored range. Each state transition (loading / resolved\n // / error) creates a fresh child scope and mounts a Component before that\n // anchor using `insert()`. The returning `<For>`-style fragment also works\n // here — the framework moves the fragment's children into the host.\n const owner = getActiveScope();\n const end = document.createComment('async');\n const frag = document.createDocumentFragment();\n frag.appendChild(end);\n\n let alive = true;\n let viewScope: ReturnType<typeof createScope> | null = null;\n let delayTimer: ReturnType<typeof setTimeout> | null = null;\n let timeoutTimer: ReturnType<typeof setTimeout> | null = null;\n\n const clearTimers = () => {\n if (delayTimer != null) clearTimeout(delayTimer);\n if (timeoutTimer != null) clearTimeout(timeoutTimer);\n delayTimer = timeoutTimer = null;\n };\n\n /** Dispose old view, mount `fn` as the new one before `end`. */\n const render = (fn: ComponentFn<any> | null, fnProps?: any): void => {\n if (!alive) return;\n if (viewScope) { disposeScope(viewScope); viewScope = null; }\n if (!fn) return;\n viewScope = createScope(owner);\n runWithScope(viewScope, () => {\n // Lazy-parent: before flush end is in frag, after flush it's in the host.\n insert(end.parentNode ?? frag, () => new Component(fn, fnProps), end);\n });\n };\n\n onDestroy(() => {\n alive = false;\n clearTimers();\n if (viewScope) { disposeScope(viewScope); viewScope = null; }\n end.remove();\n });\n\n /** Build a retry handler bound to the given props. */\n const retryWith =\n (retryProps: P): (() => void) =>\n () => {\n loadPromise = null;\n status = 'pending';\n error = null;\n if (loading) render(loading);\n load().then(() => settle(retryProps));\n };\n\n /** Reflect the current cache status into the rendered view. */\n const settle = (renderProps: P): void => {\n if (!alive) return;\n clearTimers();\n if (status === 'resolved' && component) {\n render(component, renderProps);\n } else if (status === 'errored' && error) {\n if (errorComp) render(errorComp, { error, retry: retryWith(renderProps) });\n if (onError) onError(error, retryWith(renderProps));\n }\n };\n\n // ── Fast paths: cache already settled ─────────────────────────────────\n\n if (status === 'resolved' && component) {\n render(component, props);\n return frag as unknown as AnyNode;\n }\n if (status === 'errored' && error) {\n if (errorComp) render(errorComp, { error, retry: retryWith(props) });\n return frag as unknown as AnyNode;\n }\n\n // ── Pending ──────────────────────────────────────────────────────────\n\n const pending = load().then(() => settle(props));\n\n // Notify an enclosing Suspense boundary about this pending work.\n inject<SuspenseContextType>(SuspenseContext)?.register(pending);\n\n if (delay > 0) {\n delayTimer = setTimeout(() => {\n if (alive && status === 'pending' && loading) render(loading);\n }, delay);\n } else if (loading) {\n render(loading);\n }\n\n if (timeout != null) {\n timeoutTimer = setTimeout(() => {\n if (!alive || status !== 'pending') return;\n error = new Error(`[defineAsyncComponent] Timeout after ${timeout}ms`);\n status = 'errored';\n if (errorComp) render(errorComp, { error, retry: retryWith(props) });\n if (onError) onError(error, retryWith(props));\n }, timeout);\n }\n\n return frag as unknown as AnyNode;\n }\n\n (AsyncWrapper as any).__asyncLoader = load;\n (AsyncWrapper as any).__asyncResolved = () => component;\n return AsyncWrapper;\n}\n\n// ============================================================================\n// defineAsyncComponent\n// ============================================================================\n\n/**\n * Define an async (lazy-loaded) component. Works on client, SSR, and SSG, and\n * integrates with `<Suspense>` via `SuspenseContext` when nested in a boundary.\n *\n * @param loader - The async loader function.\n * @param options - Configuration options.\n *\n * @example\n * ```tsx\n * const Chart = defineAsyncComponent(() => import('./Chart'), {\n * loading: () => <Spinner />,\n * error: ({ error, retry }) => <button onClick={retry}>{error.message}</button>,\n * delay: 200,\n * timeout: 10_000,\n * });\n * ```\n */\nexport function defineAsyncComponent<P extends ComponentProps = ComponentProps>(\n loader: Loader<P>,\n options: AsyncComponentOptions = {},\n): ComponentFn<P> {\n return typeof window === 'undefined'\n ? defineServerAsyncComponent(loader, options.ssr ?? 'blocking')\n : defineClientAsyncComponent(loader, options);\n}\n\n/**\n * Returns true if a function was created by `defineAsyncComponent`.\n *\n * @param fn - The function to check.\n * @returns {boolean} True if it is an async component.\n */\nexport function isAsyncComponent(fn: unknown): boolean {\n return isFunction(fn) && !!(fn as any).__asyncLoader;\n}\n","import { type Signal, effect, isSignal } from '@estjs/signals';\nimport { isFunction } from '@estjs/shared';\nimport {\n type Scope,\n createScope,\n disposeScope,\n getActiveScope,\n onCleanup,\n runWithScope,\n} from '../scope';\nimport { FOR_COMPONENT } from '../constants';\nimport { isComponent } from '../component';\nimport { insertNode, normalizeNode } from '../dom';\nimport { getSequence } from '../reconcile';\nimport type { AnyNode } from '../types';\nimport type { Component } from '../component';\n\nexport interface ForProps<T> {\n each: T[] | Signal<T[]> | (() => T[]);\n children: (item: T, index: number) => AnyNode;\n key?: (item: T, index: number) => unknown;\n fallback?: () => AnyNode;\n}\n\ninterface ItemEntry {\n key: unknown;\n item: unknown;\n nodes: Node[];\n scope: Scope; // Track scope for cleanup\n}\n\n/**\n * Optimized For Component\n * - Uses createDetachedScope to avoid parent.children Set overhead (SolidJS style)\n * - Uses DocumentFragment batching for mass creation\n * - Inlines scope switching for performance\n */\nexport function For<T>(props: ForProps<T>): Node {\n const fragment = document.createDocumentFragment();\n const marker = document.createComment('');\n fragment.appendChild(marker);\n\n let entries: ItemEntry[] = [];\n let fallbackNodes: Node[] = [];\n\n const keyFn = props.key;\n // The JSX babel pipeline wraps a single arrow child in a 1-element array —\n // `<For>{(item) => …}</For>` becomes `children: [(item) => …]` at runtime.\n // Unwrap it here so the rest of the component only deals with a function.\n const raw = props.children as unknown;\n const renderFn: ForProps<T>['children'] =\n Array.isArray(raw) && raw.length === 1 && isFunction(raw[0])\n ? (raw[0] as ForProps<T>['children'])\n : (props.children as ForProps<T>['children']);\n if (!isFunction(renderFn)) {\n throw new TypeError('<For> requires `children` to be a function (item, index) => Node');\n }\n\n const getList = (): T[] => {\n const input = props.each;\n if (isSignal(input)) return (input as Signal<T[]>).value ?? [];\n if (isFunction(input)) return (input as () => T[])() ?? [];\n return (input as T[]) ?? [];\n };\n\n const getKey = (item: T, index: number): unknown => (keyFn ? keyFn(item, index) : item);\n\n // Resolve whatever `children(item, index)` returned into actual DOM nodes\n // and insert them at `before`. Accepts arrays (recursed), Components\n // (mounted via insertNode), primitives (text via normalizeNode), and\n // `null`/`false` (skipped — lets children short-circuit a row).\n const mountValue = (value: AnyNode, parent: Node, before: Node | null): Node[] => {\n if (value == null || value === false) return [];\n\n if (Array.isArray(value)) {\n const nodes: Node[] = [];\n for (const child of value) nodes.push(...mountValue(child as AnyNode, parent, before));\n return nodes;\n }\n\n if (isComponent(value)) {\n insertNode(parent, value, before ?? undefined);\n // Safe to return the live array: Component only ever reassigns\n // `renderedNodes` (mount/destroy), never mutates it in place, and For\n // treats `entry.nodes` as read-only.\n return (value as Component).renderedNodes;\n }\n\n const node = normalizeNode(value);\n insertNode(parent, node, before ?? undefined);\n return [node];\n };\n\n const mountFallback = (parent: Node, before: Node | null) => {\n if (!props.fallback) return;\n const nodes = mountValue(props.fallback(), parent, before);\n fallbackNodes = nodes;\n };\n\n const clearFallback = () => {\n for (const node of fallbackNodes) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n fallbackNodes = [];\n };\n\n // Capture the scope that is active when <For> is first evaluated. The list\n // effect below re-runs through the scheduler, where the template-level\n // `activeScope` is no longer set (it's a module-global restored only inside\n // runWithScope). Without re-establishing it, `renderItem` → getActiveScope()\n // returns null on updates, so rows added later become detached scopes and\n // `inject()` inside them fails. Mirrors the parentScope capture in insert().\n const ownerScope = getActiveScope();\n\n /**\n * Render item with a child scope under the captured owner scope.\n */\n const renderItem = (\n item: T,\n index: number,\n parent: Node,\n before: Node | null,\n key = getKey(item, index),\n ): ItemEntry => {\n // Prefer the live active scope (correct on initial synchronous mount), but\n // fall back to the captured owner scope on reactive re-runs when the\n // template scope context has not been re-established.\n const parentScope = getActiveScope() ?? ownerScope;\n const scope = createScope(parentScope);\n let mountedNodes: Node[] = [];\n runWithScope(scope, () => {\n mountedNodes = mountValue(renderFn(item, index), parent, before);\n });\n\n return { key, item, nodes: mountedNodes, scope };\n };\n\n const disposeItem = (entry: ItemEntry) => {\n disposeScope(entry.scope);\n for (const node of entry.nodes) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n };\n\n const effectRunner = effect(() => {\n const newItems = getList();\n\n const parent = marker.parentNode;\n\n // Initial mount (parent is null because fragment is not attached yet)\n if (!parent) {\n if (newItems.length === 0) {\n mountFallback(fragment, marker);\n } else {\n entries = new Array(newItems.length);\n let idx = 0;\n for (const newItem of newItems) {\n entries[idx] = renderItem(newItem, idx, fragment, marker);\n idx++;\n }\n }\n // Skip reconcile on initial mount — entries are already created\n return;\n }\n\n // Before the fragment is attached, `marker.parentNode` is the fragment\n // itself; afterwards it is the real host (e.g. the container the user\n // mounted into). All reconciliation must target the live parent, or\n // `insertBefore(node, marker)` throws NotFoundError because `marker`\n // already moved out of the fragment on the first flush.\n reconcile(parent, newItems);\n });\n\n /**\n * Reconciles the rendered entries against the latest item list.\n *\n * @param parent - The parent node.\n * @param newItems - The new items list.\n * @returns {void}\n */\n function reconcile(parent: Node, newItems: T[]): void {\n const oldLen = entries.length;\n const newLen = newItems.length;\n\n // ===== FAST PATH 1: Clear all =====\n if (newLen === 0) {\n for (let i = 0; i < oldLen; i++) {\n disposeItem(entries[i]);\n }\n entries = [];\n\n if (props.fallback && fallbackNodes.length === 0) {\n mountFallback(parent, marker);\n }\n return;\n }\n\n // ===== FAST PATH 2: Create all (from empty/fallback) =====\n if (oldLen === 0 || fallbackNodes.length > 0) {\n if (fallbackNodes.length > 0) {\n clearFallback();\n }\n\n entries = new Array(newLen);\n\n // Batch creation in fragment\n const batchFragment = document.createDocumentFragment();\n\n for (let i = 0; i < newLen; i++) {\n // Render to batchFragment, append to end (before=null)\n entries[i] = renderItem(newItems[i], i, batchFragment, null);\n }\n\n parent.insertBefore(batchFragment, marker);\n return;\n }\n\n // ===== Keyed reconciliation =====\n //\n // Each `oldKeyMap` value preserves the entry together with its original\n // index. The index is the fuel for the LIS-based move minimisation\n // further down: by mapping each new position to an old position we can\n // find the longest slice that is already in order and leave it alone.\n const oldKeyMap = new Map<unknown, Array<[ItemEntry, number]>>();\n for (let i = 0; i < oldLen; i++) {\n const entry = entries[i];\n const list = oldKeyMap.get(entry.key);\n const pair: [ItemEntry, number] = [entry, i];\n if (list) list.push(pair);\n else oldKeyMap.set(entry.key, [pair]);\n }\n\n const newEntries: ItemEntry[] = new Array(newLen);\n const toRemove: ItemEntry[] = [];\n\n // Batch new nodes in a fragment so multiple creations turn into a\n // single native DOM insertion. Created lazily — only when a fresh\n // item is actually rendered so we avoid the allocation when every\n // entry is reused.\n let batchFragment: DocumentFragment | null = null;\n\n // `newIndexToOldIndex[i] === 0` → newEntries[i] is freshly created.\n // `newIndexToOldIndex[i] === k + 1` → reused from `entries[k]`.\n const newIndexToOldIndex = new Int32Array(newLen);\n let moved = false;\n let maxOldSeen = 0;\n\n // Pre-compute keys for all new items to avoid redundant getKey calls\n const newKeys = new Array<unknown>(newLen);\n for (let i = 0; i < newLen; i++) {\n newKeys[i] = getKey(newItems[i], i);\n }\n\n for (let i = 0; i < newLen; i++) {\n const item = newItems[i];\n const key = newKeys[i];\n const oldList = oldKeyMap.get(key);\n\n if (oldList && oldList.length > 0) {\n const [reused, oldIndex] = oldList.shift()!;\n if (Object.is(reused.item, item)) {\n reused.item = item;\n newEntries[i] = reused;\n newIndexToOldIndex[i] = oldIndex + 1;\n if (oldIndex < maxOldSeen) moved = true;\n else maxOldSeen = oldIndex;\n } else {\n if (!batchFragment) batchFragment = document.createDocumentFragment();\n disposeItem(reused);\n newEntries[i] = renderItem(item, i, batchFragment, null, key);\n }\n } else {\n if (!batchFragment) batchFragment = document.createDocumentFragment();\n newEntries[i] = renderItem(item, i, batchFragment, null, key);\n // newIndexToOldIndex[i] remains 0 (fresh entry).\n }\n }\n\n for (const list of oldKeyMap.values()) {\n for (const [entry] of list) toRemove.push(entry);\n }\n for (const entry of toRemove) disposeItem(entry);\n\n // ===== Position correction with LIS =====\n // We walk the new array right-to-left using `marker` as the initial\n // anchor, which lets us use `insertBefore(node, nextNode)` uniformly.\n const lis = moved ? getSequence(newIndexToOldIndex) : [];\n let lisCursor = lis.length - 1;\n let nextNode: Node = marker;\n\n for (let i = newLen - 1; i >= 0; i--) {\n const entry = newEntries[i];\n const nodes = entry.nodes;\n const isFresh = newIndexToOldIndex[i] === 0;\n const inLis = !isFresh && moved && lisCursor >= 0 && i === lis[lisCursor];\n\n if (inLis) {\n // Stable skeleton — leave every node untouched, but still update\n // `nextNode` so the next iteration has the correct anchor.\n lisCursor--;\n for (let j = nodes.length - 1; j >= 0; j--) nextNode = nodes[j];\n continue;\n }\n\n // Fresh entry OR reused entry that is out of place → (re)insert each\n // node. The nextSibling guard keeps us from redundant writes for\n // multi-node rows whose internal order is already correct.\n for (let j = nodes.length - 1; j >= 0; j--) {\n const node = nodes[j];\n if (node.nextSibling !== nextNode) {\n parent.insertBefore(node, nextNode);\n }\n nextNode = node;\n }\n }\n\n entries = newEntries;\n }\n\n onCleanup(() => {\n effectRunner.stop();\n for (const entry of entries) {\n disposeItem(entry);\n }\n entries = [];\n clearFallback();\n if (marker.parentNode) {\n marker.parentNode.removeChild(marker);\n }\n });\n\n return fragment;\n}\n\nFor[FOR_COMPONENT] = true;\n\nexport function isFor(node: unknown): boolean {\n return !!node && !!(node as Record<symbol, boolean>)[FOR_COMPONENT];\n}\n","import { effect } from '@estjs/signals';\nimport { warn } from '@estjs/shared';\nimport { onCleanup } from '../scope';\nimport { onMount } from '../lifecycle';\nimport { TRANSITION_COMPONENT } from '../constants';\nimport { isComponent } from '../component';\nimport { useChildren } from '../utils';\nimport type { AnyNode } from '../types';\nimport type { Component } from '../component';\n\nexport interface TransitionProps {\n name?: string;\n css?: boolean;\n type?: 'transition' | 'animation';\n appear?: boolean;\n duration?: number | { enter: number; leave: number };\n enterFromClass?: string;\n enterActiveClass?: string;\n enterToClass?: string;\n appearFromClass?: string;\n appearActiveClass?: string;\n appearToClass?: string;\n leaveFromClass?: string;\n leaveActiveClass?: string;\n leaveToClass?: string;\n onBeforeEnter?: (el: Element) => void;\n onEnter?: (el: Element, done: () => void) => void;\n onAfterEnter?: (el: Element) => void;\n onEnterCancelled?: (el: Element) => void;\n onBeforeLeave?: (el: Element) => void;\n onLeave?: (el: Element, done: () => void) => void;\n onAfterLeave?: (el: Element) => void;\n onLeaveCancelled?: (el: Element) => void;\n children?: AnyNode | (() => AnyNode);\n}\n\n// ---------------------------------------------------------------------------\n// Pure helpers (exported — tests + consumers rely on these)\n// ---------------------------------------------------------------------------\n\nexport interface TransitionClassNames {\n enterFrom: string;\n enterActive: string;\n enterTo: string;\n leaveFrom: string;\n leaveActive: string;\n leaveTo: string;\n appearFrom: string;\n appearActive: string;\n appearTo: string;\n}\n\nexport function resolveTransitionClasses(props: TransitionProps): TransitionClassNames {\n const n = props.name ?? 'v';\n const enterFrom = props.enterFromClass ?? `${n}-enter-from`;\n const enterActive = props.enterActiveClass ?? `${n}-enter-active`;\n const enterTo = props.enterToClass ?? `${n}-enter-to`;\n return {\n enterFrom,\n enterActive,\n enterTo,\n leaveFrom: props.leaveFromClass ?? `${n}-leave-from`,\n leaveActive: props.leaveActiveClass ?? `${n}-leave-active`,\n leaveTo: props.leaveToClass ?? `${n}-leave-to`,\n appearFrom: props.appearFromClass ?? enterFrom,\n appearActive: props.appearActiveClass ?? enterActive,\n appearTo: props.appearToClass ?? enterTo,\n };\n}\n\nexport interface TransitionInfo {\n event: 'transitionend' | 'animationend';\n timeout: number;\n}\n\nconst toMs = (s: string): number => {\n if (!s) return 0;\n if (s.endsWith('ms')) return Number(s.slice(0, -2).replace(',', '.'));\n return Number(s.slice(0, -1).replace(',', '.')) * 1000;\n};\n\nfunction sumMs(delays: string, durations: string): number {\n const d = delays.split(', ');\n const u = durations.split(', ');\n let max = 0;\n for (const [i, dur] of u.entries()) {\n const total = toMs(dur) + toMs(d[i % d.length] || '0s');\n if (total > max) max = total;\n }\n return max;\n}\n\nexport function getTransitionInfo(\n el: Element,\n type?: 'transition' | 'animation',\n): TransitionInfo | null {\n const s = getComputedStyle(el);\n const tt = type !== 'animation' ? sumMs(s.transitionDelay, s.transitionDuration) : 0;\n const at = type !== 'transition' ? sumMs(s.animationDelay, s.animationDuration) : 0;\n if (tt === 0 && at === 0) return null;\n return tt >= at\n ? { event: 'transitionend', timeout: tt }\n : { event: 'animationend', timeout: at };\n}\n\n// ---------------------------------------------------------------------------\n// Shared DOM helpers (exported — TransitionGroup reuses these so we don't\n// fork the same primitives across two files)\n// ---------------------------------------------------------------------------\n\nexport function addClass(el: Element, cls: string): void {\n for (const c of cls.split(/\\s+/)) if (c) el.classList.add(c);\n}\n\nexport function removeClass(el: Element, cls: string): void {\n for (const c of cls.split(/\\s+/)) if (c) el.classList.remove(c);\n}\n\nexport function nextFrame(cb: () => void): void {\n requestAnimationFrame(() => requestAnimationFrame(cb));\n}\n\nexport function forceReflow(el: Element): void {\n void (el as HTMLElement).offsetHeight;\n}\n\n/**\n * Wait for a transition/animation on `el` to finish, then call `resolve`.\n * If `explicit` is set, use that as a fixed timeout ; otherwise probe computed style for the longest active timing\n * and listen for the matching end event with a +1ms safety net.\n */\nexport function whenTransitionEnds(\n el: Element,\n type: TransitionProps['type'],\n explicit: number | null,\n resolve: () => void,\n): void {\n if (explicit != null) {\n setTimeout(resolve, explicit);\n return;\n }\n const info = getTransitionInfo(el, type);\n if (!info) {\n resolve();\n return;\n }\n let done = false;\n const finish = (): void => {\n if (done) return;\n done = true;\n el.removeEventListener(info.event, onEnd);\n resolve();\n };\n const onEnd = (): void => finish();\n el.addEventListener(info.event, onEnd);\n setTimeout(finish, info.timeout + 1);\n}\n\nexport function resolveDuration(\n d: TransitionProps['duration'],\n dir: 'enter' | 'leave',\n): number | null {\n if (d == null) return null;\n if (typeof d === 'number') return d;\n return d[dir];\n}\n\nfunction validateSlot(value: unknown): Element | null {\n if (value == null || value === false) return null;\n if (Array.isArray(value)) {\n if (__DEV__) {\n throw new Error(\n '[essor] <Transition> expects a single root child. Use <TransitionGroup> for multiple children.',\n );\n }\n return value[0] instanceof Element ? value[0] : null;\n }\n if (value instanceof Element) return value;\n // A Component instance was passed (e.g. `<Transition><EFoo/></Transition>`):\n // mount it into a detached fragment so we can pluck its rendered root\n // Element, then return that. The Component owns its scope/cleanup, so\n // its disposal will happen via the outer mount tree just like a normal\n // child. We only need the DOM node for class manipulation / events.\n //\n // Note: Transition can only animate a SINGLE root element. If the child\n // component renders multiple roots (fragment-style return), only the\n // first one participates — the rest stay in the detached fragment and\n // never reach the DOM. Surface that as a dev warning.\n if (isComponent(value)) {\n const comp = value as Component;\n if (comp.scope == null) {\n const fragment = document.createDocumentFragment();\n comp.mount(fragment);\n }\n if (__DEV__ && comp.renderedNodes.length > 1) {\n warn(\n '[Transition] child component rendered multiple root nodes; ' +\n 'only the first is animated. Wrap the children in a single element ' +\n 'or use <TransitionGroup>.',\n );\n }\n const first = comp.firstChild;\n if (first instanceof Element) return first;\n if (__DEV__) {\n warn('[Transition] child component did not render an Element root.');\n }\n return null;\n }\n if (__DEV__) {\n warn('[Transition] received a non-element child; animation will be skipped.');\n }\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Transition component\n//\n// Architecture:\n// - Slot is read inside a single `effect()` via `useChildren()`. The effect\n// body ONLY reads the slot and queues a microtask — it never invokes user\n// hooks. This keeps signal writes (e.g. counters incremented in onEnter)\n// out of the effect's tracking phase, eliminating dep-link corruption.\n// - The state machine runs in `flushCommit()` after the microtask drains.\n// - Cancellation uses Symbol-keyed callbacks on the element itself\n// robust across reentrancy and\n// mid-flight reversals.\n// - End-of-animation detection is centralized in `whenTransitionEnds()`:\n// explicit `duration` wins; otherwise observe the appropriate end event\n// with a `+1ms` safety net (in case the browser drops the event).\n// ---------------------------------------------------------------------------\n\nconst ENTER_CB = Symbol('enter_cb');\nconst LEAVE_CB = Symbol('leave_cb');\n\ntype CancelCb = ((cancelled?: boolean) => void) | undefined;\n\ntype State = 'idle' | 'entering' | 'entered' | 'leaving';\n\nexport function Transition(props: TransitionProps): Node {\n const anchor = document.createComment('');\n const classes = resolveTransitionClasses(props);\n const useCss = props.css !== false;\n const readSlot = useChildren<unknown>(props);\n\n let state: State = 'idle';\n let currentEl: Element | null = null;\n let leavingEl: Element | null = null; // mid-leave element awaiting cleanup\n let mounted = false;\n\n // Microtask scheduling — keeps the state machine outside the effect's\n // tracking phase, so user hooks that write signals don't corrupt deps.\n // We stash the RAW slot value (pre-validation) so the initial validation\n // can be deferred to onMount; otherwise the multi-child throw would fire\n // during component setup instead of during the mount phase.\n let pendingRaw: unknown = undefined;\n let hasPending = false;\n let scheduled = false;\n let disposed = false;\n\n const enter = (el: Element, phase: 'enter' | 'appear'): void => {\n // Cancel any in-flight leave on the same element.\n const prevLeave = (el as unknown as Record<symbol, CancelCb>)[LEAVE_CB];\n if (prevLeave) prevLeave(true);\n\n state = 'entering';\n const fromCls = phase === 'appear' ? classes.appearFrom : classes.enterFrom;\n const activeCls = phase === 'appear' ? classes.appearActive : classes.enterActive;\n const toCls = phase === 'appear' ? classes.appearTo : classes.enterTo;\n\n props.onBeforeEnter?.(el);\n\n if (useCss) {\n addClass(el, fromCls);\n addClass(el, activeCls);\n }\n\n let called = false;\n const done = (cancelled?: boolean): void => {\n if (called) return;\n called = true;\n (el as unknown as Record<symbol, CancelCb>)[ENTER_CB] = undefined;\n if (useCss) {\n removeClass(el, fromCls);\n removeClass(el, activeCls);\n removeClass(el, toCls);\n }\n if (cancelled) {\n props.onEnterCancelled?.(el);\n } else {\n state = 'entered';\n props.onAfterEnter?.(el);\n }\n };\n (el as unknown as Record<symbol, CancelCb>)[ENTER_CB] = done;\n\n nextFrame(() => {\n if (called) return;\n if (useCss) {\n removeClass(el, fromCls);\n addClass(el, toCls);\n }\n\n if (props.onEnter) {\n props.onEnter(el, () => done(false));\n } else if (useCss) {\n const explicit = resolveDuration(props.duration, 'enter');\n whenTransitionEnds(el, props.type, explicit, () => done(false));\n } else {\n // css=false and no JS hook — no animation\n done(false);\n }\n });\n };\n\n const leave = (el: Element, after: () => void): void => {\n // Cancel any in-flight enter on the same element, then settle a reflow so\n // the swap to leave-from/leave-active takes effect cleanly\n const prevEnter = (el as unknown as Record<symbol, CancelCb>)[ENTER_CB];\n if (prevEnter) {\n prevEnter(true);\n forceReflow(el);\n }\n\n state = 'leaving';\n props.onBeforeLeave?.(el);\n\n if (useCss) {\n addClass(el, classes.leaveFrom);\n addClass(el, classes.leaveActive);\n }\n\n let called = false;\n const done = (cancelled?: boolean): void => {\n if (called) return;\n called = true;\n (el as unknown as Record<symbol, CancelCb>)[LEAVE_CB] = undefined;\n if (useCss) {\n removeClass(el, classes.leaveFrom);\n removeClass(el, classes.leaveActive);\n removeClass(el, classes.leaveTo);\n }\n if (cancelled) {\n props.onLeaveCancelled?.(el);\n } else {\n state = 'idle';\n after();\n props.onAfterLeave?.(el);\n }\n };\n (el as unknown as Record<symbol, CancelCb>)[LEAVE_CB] = done;\n\n // Decide whether there is any animation to wait for. We must query\n // computed style AFTER applying leave-active so the rule on that class\n // is visible.\n const explicit = resolveDuration(props.duration, 'leave');\n const hasCssInfo =\n useCss && !props.onLeave && explicit == null ? !!getTransitionInfo(el, props.type) : false;\n\n if (!props.onLeave && explicit == null && !hasCssInfo) {\n // No animation path — tear down synchronously to preserve the\n // no-animation contract relied on by tests and the SSR sanity checks.\n done(false);\n return;\n }\n\n nextFrame(() => {\n if (called) return;\n if (useCss) {\n removeClass(el, classes.leaveFrom);\n addClass(el, classes.leaveTo);\n }\n\n if (props.onLeave) {\n props.onLeave(el, () => done(false));\n } else if (useCss) {\n whenTransitionEnds(el, props.type, explicit, () => done(false));\n } else {\n done(false);\n }\n });\n };\n\n const commit = (next: Element | null, isFirst: boolean): void => {\n // Leave → Enter reversal — revive the still-leaving element rather than\n // mounting a fresh node from the slot .\n if (next && state === 'leaving' && leavingEl) {\n const reviving = leavingEl;\n const leaveCb = (reviving as unknown as Record<symbol, CancelCb>)[LEAVE_CB];\n if (leaveCb) leaveCb(true); // fires onLeaveCancelled + scrubs leave classes\n leavingEl = null;\n currentEl = reviving;\n enter(reviving, 'enter');\n return;\n }\n\n if (next === currentEl) return;\n\n const outgoing = currentEl;\n currentEl = next;\n\n if (outgoing) {\n leavingEl = outgoing;\n const captured = outgoing;\n leave(captured, () => {\n if (captured.parentNode) captured.parentNode.removeChild(captured);\n if (leavingEl === captured) leavingEl = null;\n });\n }\n\n if (next && anchor.parentNode) {\n anchor.parentNode.insertBefore(next, anchor);\n if (isFirst && !props.appear) {\n // Initial mount, no `appear` — render immediately, skip animation.\n state = 'entered';\n } else {\n enter(next, isFirst && props.appear ? 'appear' : 'enter');\n }\n } else if (!outgoing && !next) {\n state = 'idle';\n }\n };\n\n const flush = (): void => {\n scheduled = false;\n if (disposed || !hasPending) return;\n const raw = pendingRaw;\n hasPending = false;\n pendingRaw = undefined;\n try {\n commit(validateSlot(raw), false);\n } catch (error) {\n if (__DEV__) console.error('[essor] <Transition>', error);\n }\n };\n\n const scheduleCommit = (raw: unknown): void => {\n pendingRaw = raw;\n hasPending = true;\n if (scheduled) return;\n scheduled = true;\n queueMicrotask(flush);\n };\n\n // ---------- Lifecycle ----------\n\n // Effect: pure read. Tracks slot deps, never writes signals. Validation is\n // deferred to commit() so the initial throw lands at mount time, matching\n // the legacy contract (T16 tests).\n const effectRunner = effect(() => {\n const raw = readSlot();\n if (mounted) {\n scheduleCommit(raw);\n } else {\n pendingRaw = raw;\n hasPending = true;\n }\n });\n\n onMount(() => {\n mounted = true;\n const initial = hasPending ? validateSlot(pendingRaw) : null;\n hasPending = false;\n pendingRaw = undefined;\n commit(initial, true);\n });\n\n onCleanup(() => {\n disposed = true;\n effectRunner.stop();\n for (const el of [currentEl, leavingEl]) {\n if (!el) continue;\n const ec = (el as unknown as Record<symbol, CancelCb>)[ENTER_CB];\n const lc = (el as unknown as Record<symbol, CancelCb>)[LEAVE_CB];\n ec?.(true);\n lc?.(true);\n if (el.parentNode) el.parentNode.removeChild(el);\n }\n currentEl = null;\n leavingEl = null;\n state = 'idle';\n });\n\n return anchor;\n}\n\n(Transition as unknown as Record<symbol, true>)[TRANSITION_COMPONENT] = true;\n\n/**\n * Check if a node is a Transition component.\n *\n * @param node - Node to check.\n * @returns True if node is a Transition.\n */\nexport function isTransition(node: unknown): boolean {\n return !!node && !!(node as Record<symbol, unknown>)[TRANSITION_COMPONENT];\n}\n","import { type Signal, effect, isSignal } from '@estjs/signals';\nimport { isFunction, warn } from '@estjs/shared';\nimport {\n type Scope,\n createScope,\n disposeScope,\n getActiveScope,\n onCleanup,\n runWithScope,\n} from '../scope';\nimport { onMount } from '../lifecycle';\nimport { TRANSITION_GROUP_COMPONENT } from '../constants';\nimport { isComponent } from '../component';\nimport {\n type TransitionProps,\n addClass,\n forceReflow,\n nextFrame,\n removeClass,\n resolveDuration,\n resolveTransitionClasses,\n whenTransitionEnds,\n} from './Transition';\nimport type { Component } from '../component';\n\n/**\n * Props for `<TransitionGroup>`.\n *\n * Inherits every enter/leave knob from {@link TransitionProps} (name, css,\n * type, duration, JS hooks, custom class overrides) and adds:\n *\n * - `each` / `key` — same shape as `<For>`; required for stable identity.\n * - `tag` — wrapper element. Required so we have a layout root to measure\n * positions against and to anchor leaving items absolutely. Defaults to\n * `'div'`.\n * - `moveClass` — class applied to elements during the FLIP move animation.\n * Defaults to `${name}-move`.\n * - `children` — render function per item. May return an Element or a\n * Component instance (the latter is mounted, its first rendered Element\n * participates in the animations).\n *\n * `appear` is intentionally NOT supported: items mounted on the initial\n * render do NOT animate. The appear-related props from {@link TransitionProps}\n * are therefore omitted from this type. If you need first-frame animation,\n * mount the group with an empty list and push items after mount.\n */\ntype GroupBaseProps = Omit<\n TransitionProps,\n 'children' | 'appear' | 'appearFromClass' | 'appearActiveClass' | 'appearToClass'\n>;\n\nexport interface TransitionGroupProps<T = unknown> extends GroupBaseProps {\n each: T[] | Signal<T[]> | (() => T[]);\n key: (item: T, index: number) => unknown;\n tag?: string;\n moveClass?: string;\n children: (item: T, index: number) => unknown;\n}\n\ntype CancelCb = (cancelled?: boolean) => void;\n\ninterface Entry {\n key: unknown;\n item: unknown;\n /** The DOM element that participates in class manipulation + FLIP. */\n el: HTMLElement;\n /** Set when the row's render output was a Component instance. */\n comp: Component | null;\n /** Per-row scope so effects inside `children()` clean up on removal. */\n scope: Scope;\n /** Lifecycle state. */\n state: 'entering' | 'present' | 'leaving';\n /** Snapshot of bounding rect taken BEFORE the reconcile DOM mutation. */\n prevRect?: DOMRect;\n /** Cancellation hooks for in-flight enter/leave animations. */\n cancelEnter?: CancelCb;\n cancelLeave?: CancelCb;\n /**\n * Saved inline styles that we override during leave (`position:absolute`\n * + locked geometry). Restored if a leave is cancelled mid-flight.\n */\n savedStyles?: SavedStyles;\n}\n\ninterface SavedStyles {\n position: string;\n top: string;\n left: string;\n width: string;\n height: string;\n}\n\n/**\n * Pull a single root Element out of whatever `children(item, index)` returned.\n *\n * Component instances are mounted into the wrapper so they observe normal\n * scope/lifecycle, then their first rendered Element is returned. Arrays\n * (the babel-emitted shape for a single child) are unwrapped recursively.\n */\nfunction resolveItemElement(\n raw: unknown,\n parent: Element,\n): { el: HTMLElement | null; comp: Component | null } {\n if (raw == null || raw === false) return { el: null, comp: null };\n if (Array.isArray(raw) && raw.length === 1) {\n return resolveItemElement(raw[0], parent);\n }\n if (isFunction(raw)) {\n return resolveItemElement((raw as () => unknown)(), parent);\n }\n if (raw instanceof HTMLElement) {\n return { el: raw, comp: null };\n }\n if (isComponent(raw)) {\n const comp = raw as Component;\n if (comp.scope == null) {\n // Mount into the wrapper directly. The Component lays itself out as a\n // normal child; we just snag the first rendered HTMLElement for FLIP.\n comp.mount(parent);\n }\n if (__DEV__ && comp.renderedNodes.length > 1) {\n warn(\n '[TransitionGroup] child component rendered multiple root nodes; ' +\n 'only the first participates in enter/leave/move animations.',\n );\n }\n const first = comp.firstChild;\n if (first instanceof HTMLElement) return { el: first, comp };\n return { el: null, comp };\n }\n if (__DEV__) {\n warn(\n '[TransitionGroup] child render returned a non-element value; ' +\n 'animations require Element or Component roots.',\n );\n }\n return { el: null, comp: null };\n}\n\nfunction saveStyles(el: HTMLElement): SavedStyles {\n return {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n };\n}\n\nfunction restoreStyles(el: HTMLElement, s: SavedStyles): void {\n el.style.position = s.position;\n el.style.top = s.top;\n el.style.left = s.left;\n el.style.width = s.width;\n el.style.height = s.height;\n}\n\n/**\n * Animated keyed list with three coordinated animations:\n *\n * - **enter** — new items fade/slide in using `${name}-enter-*` classes\n * - **leave** — removed items animate out (positioned absolutely so the\n * remaining items can reflow under FLIP), then are detached\n * - **move** — items that stayed but changed position run FLIP: snapshot\n * `getBoundingClientRect()` before reconcile, compute delta after,\n * invert via `transform`, then transition to identity under `moveClass`\n *\n * Each row owns its own scope (mirroring `<For>`), so signals/effects\n * created inside `children()` are torn down when the row leaves.\n *\n * @example\n * ```tsx\n * <TransitionGroup name=\"list\" each={items} key={(it) => it.id} tag=\"ul\">\n * {(item) => <li>{item.label}</li>}\n * </TransitionGroup>\n * ```\n */\nexport function TransitionGroup<T>(props: TransitionGroupProps<T>): Element {\n const tag = props.tag ?? 'div';\n const wrapper = document.createElement(tag);\n // `resolveTransitionClasses` only reads class-prop / name fields; cast to\n // bridge the structural mismatch on `children` (which it ignores anyway).\n const classes = resolveTransitionClasses(props as unknown as TransitionProps);\n const useCss = props.css !== false;\n const moveClass = props.moveClass ?? `${props.name ?? 'v'}-move`;\n\n const keyFn = props.key;\n // Babel wraps a single arrow child in a 1-element array — `{(item) => …}`\n // compiles to `children: [(item) => …]`. Unwrap so the rest of this\n // component only sees the function.\n const rawChildren = props.children as unknown;\n const childrenFn: TransitionGroupProps<T>['children'] =\n Array.isArray(rawChildren) && rawChildren.length === 1 && isFunction(rawChildren[0])\n ? (rawChildren[0] as TransitionGroupProps<T>['children'])\n : (props.children as TransitionGroupProps<T>['children']);\n if (!isFunction(childrenFn) || !isFunction(keyFn)) {\n throw new TypeError(\n '<TransitionGroup> requires `children: (item, index) => Node` and `key: (item, index) => unknown`',\n );\n }\n\n const getList = (): T[] => {\n const input = props.each;\n if (isSignal(input)) return (input as Signal<T[]>).value ?? [];\n if (isFunction(input)) return (input as () => T[])() ?? [];\n return (input as T[]) ?? [];\n };\n\n let entries: Entry[] = [];\n let mounted = false;\n\n // -----------------------------------------------------------------------\n // Per-item lifecycle helpers\n // -----------------------------------------------------------------------\n\n /** Render one row inside a fresh scope and return its initial Entry. */\n const renderEntry = (item: T, index: number): Entry | null => {\n const parentScope = getActiveScope();\n const scope = createScope(parentScope);\n let raw: unknown;\n runWithScope(scope, () => {\n raw = childrenFn(item, index);\n });\n const { el, comp } = resolveItemElement(raw, wrapper);\n if (!el) {\n disposeScope(scope);\n return null;\n }\n return {\n key: keyFn(item, index),\n item,\n el,\n comp,\n scope,\n state: 'entering',\n };\n };\n\n /**\n * Detach a row's DOM nodes from the wrapper. For Component-backed rows we\n * remove every rendered root, not just `entry.el` — multi-root Components\n * would otherwise leak their trailing siblings into the wrapper indefinitely\n * (FLIP only animates the first root, but cleanup must reclaim all of them).\n */\n const detachEntryDom = (entry: Entry): void => {\n if (entry.comp) {\n for (const node of entry.comp.renderedNodes) {\n if (node.parentNode === wrapper) wrapper.removeChild(node);\n }\n return;\n }\n if (entry.el.parentNode === wrapper) wrapper.removeChild(entry.el);\n };\n\n const disposeEntry = (entry: Entry): void => {\n entry.cancelEnter?.(true);\n entry.cancelLeave?.(true);\n if (entry.comp) entry.comp.destroy();\n detachEntryDom(entry);\n disposeScope(entry.scope);\n };\n\n const runEnter = (entry: Entry): void => {\n const el = entry.el;\n // If the same element was in the middle of a leave, cancel it first so\n // saved styles are restored and the leave classes are scrubbed.\n entry.cancelLeave?.(true);\n\n if (!useCss) {\n entry.state = 'present';\n props.onAfterEnter?.(el);\n return;\n }\n\n props.onBeforeEnter?.(el);\n addClass(el, classes.enterFrom);\n addClass(el, classes.enterActive);\n\n let called = false;\n const done: CancelCb = (cancelled) => {\n if (called) return;\n called = true;\n entry.cancelEnter = undefined;\n removeClass(el, classes.enterFrom);\n removeClass(el, classes.enterActive);\n removeClass(el, classes.enterTo);\n if (cancelled) {\n props.onEnterCancelled?.(el);\n } else {\n entry.state = 'present';\n props.onAfterEnter?.(el);\n }\n };\n entry.cancelEnter = done;\n entry.state = 'entering';\n\n nextFrame(() => {\n if (called) return;\n removeClass(el, classes.enterFrom);\n addClass(el, classes.enterTo);\n if (props.onEnter) {\n props.onEnter(el, () => done(false));\n } else {\n const explicit = resolveDuration(props.duration, 'enter');\n whenTransitionEnds(el, props.type, explicit, () => done(false));\n }\n });\n };\n\n const runLeave = (entry: Entry, prevRect: DOMRect): void => {\n const el = entry.el;\n // Cancel any pending enter on the same element so leave-from/leave-active\n // actually take effect.\n if (entry.cancelEnter) {\n entry.cancelEnter(true);\n forceReflow(el);\n }\n entry.state = 'leaving';\n\n // Pin the leaving element at its previous slot so its siblings can reflow\n // freely while it animates out.\n entry.savedStyles = saveStyles(el);\n const parentRect = wrapper.getBoundingClientRect();\n el.style.position = 'absolute';\n el.style.top = `${prevRect.top - parentRect.top}px`;\n el.style.left = `${prevRect.left - parentRect.left}px`;\n el.style.width = `${prevRect.width}px`;\n el.style.height = `${prevRect.height}px`;\n\n if (!useCss) {\n // No-animation contract: tear down immediately.\n if (entry.savedStyles) restoreStyles(el, entry.savedStyles);\n detachEntryDom(entry);\n disposeScope(entry.scope);\n if (entry.comp) entry.comp.destroy();\n props.onAfterLeave?.(el);\n return;\n }\n\n props.onBeforeLeave?.(el);\n addClass(el, classes.leaveFrom);\n addClass(el, classes.leaveActive);\n\n let called = false;\n const done: CancelCb = (cancelled) => {\n if (called) return;\n called = true;\n entry.cancelLeave = undefined;\n removeClass(el, classes.leaveFrom);\n removeClass(el, classes.leaveActive);\n removeClass(el, classes.leaveTo);\n\n if (cancelled) {\n // Cancelled mid-leave (likely because the same key was re-added).\n if (entry.savedStyles) restoreStyles(el, entry.savedStyles);\n entry.savedStyles = undefined;\n props.onLeaveCancelled?.(el);\n return;\n }\n\n if (entry.savedStyles) restoreStyles(el, entry.savedStyles);\n entry.savedStyles = undefined;\n detachEntryDom(entry);\n disposeScope(entry.scope);\n if (entry.comp) entry.comp.destroy();\n props.onAfterLeave?.(el);\n };\n entry.cancelLeave = done;\n\n nextFrame(() => {\n if (called) return;\n removeClass(el, classes.leaveFrom);\n addClass(el, classes.leaveTo);\n if (props.onLeave) {\n props.onLeave(el, () => done(false));\n } else {\n const explicit = resolveDuration(props.duration, 'leave');\n whenTransitionEnds(el, props.type, explicit, () => done(false));\n }\n });\n };\n\n /**\n * FLIP move. Called for items that stayed but may have changed position.\n * Caller passes the rect snapshotted BEFORE the DOM mutation; we measure\n * the current rect and animate the delta away.\n *\n * NOTE: There is no separate `move` direction on `duration`. To keep\n * move animations honor the **enter** duration when `duration` is set.\n */\n const runMove = (entry: Entry, prevRect: DOMRect): void => {\n if (!useCss || entry.state !== 'present') return;\n const el = entry.el;\n const newRect = el.getBoundingClientRect();\n const dx = prevRect.left - newRect.left;\n const dy = prevRect.top - newRect.top;\n if (!dx && !dy) return;\n\n // Invert: jump back to old position with no transition, then play.\n const savedTransform = el.style.transform;\n const savedTransition = el.style.transitionDuration;\n el.style.transform = `translate(${dx}px, ${dy}px)`;\n el.style.transitionDuration = '0s';\n addClass(el, moveClass);\n forceReflow(el);\n // Play: restore transition, clear transform → browser animates to identity.\n el.style.transform = savedTransform;\n el.style.transitionDuration = savedTransition;\n\n const explicit = resolveDuration(props.duration, 'enter');\n whenTransitionEnds(el, props.type, explicit, () => {\n removeClass(el, moveClass);\n });\n };\n\n // -----------------------------------------------------------------------\n // Reconcile\n // -----------------------------------------------------------------------\n\n /**\n * Snapshot rects for entries that are currently laid out — anything\n * `entering` or `present`. Skipped for `leaving` because their geometry is\n * already pinned via inline styles.\n */\n const snapshotPositions = (): void => {\n for (const entry of entries) {\n if (entry.state === 'leaving') continue;\n entry.prevRect = entry.el.getBoundingClientRect();\n }\n };\n\n /**\n * Diff `entries` against the new item list and produce the next entry\n * array. Side effects:\n * - Reorders DOM children to match `newItems` order.\n * - Creates fresh entries for new keys (each is queued for enter).\n * - Returns entries that disappeared so the caller can drive leave.\n *\n * One map serves both present and leaving entries. A re-added key pulls the\n * old entry out of the map regardless of its state — `runEnter` (called by\n * the caller for non-`present` entries) handles the leave-cancel.\n */\n const reconcile = (newItems: T[]): { next: Entry[]; leaving: Entry[] } => {\n const byKey = new Map<unknown, Entry>();\n for (const entry of entries) byKey.set(entry.key, entry);\n\n const next: Entry[] = [];\n for (const [i, item] of newItems.entries()) {\n const key = keyFn(item, i);\n const reused = byKey.get(key);\n if (reused) {\n byKey.delete(key);\n reused.item = item;\n next.push(reused);\n } else {\n const fresh = renderEntry(item, i);\n if (fresh) next.push(fresh);\n }\n }\n\n // Whatever stayed in `byKey` no longer appears in newItems. Skip entries\n // that were already leaving — they're mid-animation; don't restart them.\n const leaving: Entry[] = [];\n for (const entry of byKey.values()) {\n if (entry.state !== 'leaving') leaving.push(entry);\n }\n\n // Apply DOM ordering — walk `next` from the tail so each `insertBefore`\n // uses the already-correct following sibling as the anchor.\n let anchor: Node | null = null;\n for (let i = next.length - 1; i >= 0; i--) {\n const el = next[i].el;\n if (el.parentNode !== wrapper || el.nextSibling !== anchor) {\n wrapper.insertBefore(el, anchor);\n }\n anchor = el;\n }\n\n return { next, leaving };\n };\n\n /**\n * The full update pass: snapshot → reconcile → apply enter/leave/move.\n * Initial mount short-circuits all three (no snapshot, no leave, just\n * insert + skip enter to match the convention that first-frame items\n * appear without animation).\n */\n const update = (newItems: T[], isInitial: boolean): void => {\n if (isInitial) {\n // Fresh mount — no animation by default.\n const initial: Entry[] = [];\n for (const [i, item] of newItems.entries()) {\n const entry = renderEntry(item, i);\n if (!entry) continue;\n if (entry.el.parentNode !== wrapper) wrapper.appendChild(entry.el);\n entry.state = 'present';\n initial.push(entry);\n }\n entries = initial;\n return;\n }\n\n snapshotPositions();\n const { next, leaving } = reconcile(newItems);\n\n // Run enter on freshly-created or resurrected entries.\n for (const entry of next) {\n if (entry.state !== 'present') runEnter(entry);\n }\n\n // Run leave on departing entries. By construction every entry coming\n // out of `reconcile` as `leaving` had a non-`leaving` state during the\n // immediately preceding `snapshotPositions`, so its `prevRect` is always\n // set. We assert that invariant here rather than masking a future bug\n // behind a silent fallback.\n for (const entry of leaving) {\n const rect = entry.prevRect;\n if (!rect) {\n if (__DEV__) {\n warn('[TransitionGroup] leaving entry without prevRect — skipping leave animation');\n }\n continue;\n }\n runLeave(entry, rect);\n }\n\n // FLIP move for entries that stayed.\n for (const entry of next) {\n if (entry.state !== 'present' || !entry.prevRect) continue;\n runMove(entry, entry.prevRect);\n entry.prevRect = undefined;\n }\n\n // Stash leaving entries alongside the next set so cleanup can find them.\n entries = next.concat(leaving);\n };\n\n // -----------------------------------------------------------------------\n // Lifecycle\n // -----------------------------------------------------------------------\n\n let pendingItems: T[] | null = null;\n\n const effectRunner = effect(() => {\n const list = getList();\n if (!mounted) {\n pendingItems = list;\n return;\n }\n // Reactive update — run synchronously inside the effect. The render\n // function below is called inside a fresh per-row scope so any signals\n // it reads do NOT register against the outer TransitionGroup effect.\n update(list, false);\n });\n\n onMount(() => {\n mounted = true;\n if (pendingItems) {\n update(pendingItems, true);\n pendingItems = null;\n }\n });\n\n onCleanup(() => {\n effectRunner.stop();\n for (const entry of entries) disposeEntry(entry);\n entries = [];\n if (wrapper.parentNode) wrapper.parentNode.removeChild(wrapper);\n });\n\n return wrapper;\n}\n\n(TransitionGroup as unknown as Record<symbol, true>)[TRANSITION_GROUP_COMPONENT] = true;\n\n/**\n * Type guard for the TransitionGroup component reference.\n */\nexport function isTransitionGroup(node: unknown): boolean {\n return !!node && !!(node as Record<symbol, unknown>)[TRANSITION_GROUP_COMPONENT];\n}\n","import { __version } from './version';\n\nexport * from '@estjs/signals';\nexport * from '@estjs/template';\n\nif (globalThis) {\n globalThis.__essor_version__ = __version;\n}\n\nexport { __version };\n"]}
|