@wcstack/state 1.3.18 → 1.3.19

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/config.ts","../src/stateLoader/loadFromInnerScript.ts","../src/raiseError.ts","../src/stateLoader/loadFromJsonFile.ts","../src/stateLoader/loadFromScriptFile.ts","../src/stateLoader/loadFromScriptJson.ts","../src/bindings/initializeBindingPromiseByNode.ts","../src/bindings/replaceToReplaceNode.ts","../src/structural/resolveNodePath.ts","../src/bindings/getBindingInfos.ts","../src/bindings/getBindingsByNode.ts","../src/define.ts","../src/address/PathInfo.ts","../src/structural/define.ts","../src/filters/errorMessages.ts","../src/filters/builtinFilters.ts","../src/bindTextParser/parseFilterArgs.ts","../src/bindTextParser/parseFilters.ts","../src/bindTextParser/utils.ts","../src/bindTextParser/parsePropPart.ts","../src/bindTextParser/parseStatePart.ts","../src/bindTextParser/parseBindTextsForElement.ts","../src/bindings/parseCommentNode.ts","../src/bindTextParser/parseBindTextForEmbeddedNode.ts","../src/structural/fragmentInfoByUUID.ts","../src/bindings/getParseBindTextResults.ts","../src/bindings/getSubscriberNodes.ts","../src/bindings/collectNodesAndBindingInfos.ts","../src/list/loopContextByNode.ts","../src/proxy/symbols.ts","../src/event/handler.ts","../src/event/isPossibleTwoWay.ts","../src/event/twowayHandler.ts","../src/list/lastListValueByAbsoluteStateAddress.ts","../src/address/AbsolutePathInfo.ts","../src/address/AbsoluteStateAddress.ts","../src/apply/rootNodeByFragment.ts","../src/address/calcWildcardLen.ts","../src/list/getListIndexByBindingInfo.ts","../src/binding/getAbsoluteStateAddressByBinding.ts","../src/getCustomElement.ts","../src/webComponent/completeWebComponent.ts","../src/apply/applyChangeToAttribute.ts","../src/createEmptyArray.ts","../src/apply/getFilteredValue.ts","../src/apply/applyChangeToCheckbox.ts","../src/apply/applyChangeToClass.ts","../src/address/StateAddress.ts","../src/bindings/indexBindingsByContent.ts","../src/polyfills.ts","../src/getUUID.ts","../src/list/createListIndex.ts","../src/list/listIndexesByList.ts","../src/list/createListDiff.ts","../src/binding/getBindingSetByAbsoluteStateAddress.ts","../src/binding/getStateAddressByBindingInfo.ts","../src/bindings/bindingsByContent.ts","../src/bindings/nodesByContent.ts","../src/bindings/bindLoopContextToContent.ts","../src/structural/activateContent.ts","../src/createEmptySet.ts","../src/structural/contentsByNode.ts","../src/structural/createContent.ts","../src/apply/applyChangeToFor.ts","../src/apply/applyChangeToIf.ts","../src/apply/applyChangeToProperty.ts","../src/apply/applyChangeToRadio.ts","../src/apply/applyChangeToStyle.ts","../src/apply/applyChangeToText.ts","../src/apply/applyChangeToWebComponent.ts","../src/list/getIndexValueByLoopContext.ts","../src/apply/getValue.ts","../src/apply/applyChange.ts","../src/apply/applyChangeFromBindings.ts","../src/event/radioHandler.ts","../src/event/checkboxHandler.ts","../src/bindings/initializeBindings.ts","../src/mustache/convertMustacheToComments.ts","../src/structural/createNotFilter.ts","../src/structural/expandShorthandPaths.ts","../src/structural/getNodePath.ts","../src/structural/getFragmentNodeInfos.ts","../src/structural/optimizeFragment.ts","../src/structural/collectStructuralFragments.ts","../src/waitForStateInitialize.ts","../src/buildBindings.ts","../src/stateElementByName.ts","../src/list/loopContext.ts","../src/address/ResolvedAddress.ts","../src/proxy/apis/connectedCallback.ts","../src/proxy/apis/disconnectedCallback.ts","../src/cache/cacheEntryByAbsoluteStateAddress.ts","../src/proxy/methods/checkDependency.ts","../src/proxy/methods/getByAddress.ts","../src/proxy/methods/getContextListIndex.ts","../src/updater/updater.ts","../src/proxy/methods/swapInfo.ts","../src/dependency/walkDependency.ts","../src/proxy/methods/setByAddress.ts","../src/proxy/apis/resolve.ts","../src/proxy/apis/getAll.ts","../src/proxy/methods/getListIndex.ts","../src/proxy/apis/postUpdate.ts","../src/proxy/apis/trackDependency.ts","../src/proxy/apis/updatedCallback.ts","../src/proxy/methods/setLoopContext.ts","../src/proxy/traps/get.ts","../src/proxy/traps/set.ts","../src/proxy/StateHandler.ts","../src/webComponent/lastValueByAbsoluteStateAddress.ts","../src/webComponent/stateElementByWebComponent.ts","../src/webComponent/MappingRule.ts","../src/webComponent/meltFrozenObject.ts","../src/webComponent/innerState.ts","../src/webComponent/outerState.ts","../src/webComponent/plainOuterState.ts","../src/webComponent/bindWebComponent.ts","../src/components/State.ts","../src/registerComponents.ts","../src/bootstrapState.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["id","_cache","cacheFilterInfos","handlerByHandlerKey","bindingSetByHandlerKey","getHandlerKey","getEventName","_cacheNullListIndex","EMPTY_SET","trapGet","trapSet"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/config.ts","../src/stateLoader/loadFromInnerScript.ts","../src/raiseError.ts","../src/stateLoader/loadFromJsonFile.ts","../src/stateLoader/loadFromScriptFile.ts","../src/stateLoader/loadFromScriptJson.ts","../src/bindings/initializeBindingPromiseByNode.ts","../src/bindings/replaceToReplaceNode.ts","../src/structural/resolveNodePath.ts","../src/bindings/getBindingInfos.ts","../src/bindings/getBindingsByNode.ts","../src/define.ts","../src/address/PathInfo.ts","../src/structural/define.ts","../src/filters/errorMessages.ts","../src/filters/builtinFilters.ts","../src/bindTextParser/parseFilterArgs.ts","../src/bindTextParser/parseFilters.ts","../src/bindTextParser/utils.ts","../src/bindTextParser/parsePropPart.ts","../src/bindTextParser/parseStatePart.ts","../src/bindTextParser/parseBindTextsForElement.ts","../src/bindings/parseCommentNode.ts","../src/bindTextParser/parseBindTextForEmbeddedNode.ts","../src/structural/fragmentInfoByUUID.ts","../src/bindings/getParseBindTextResults.ts","../src/bindings/getSubscriberNodes.ts","../src/bindings/collectNodesAndBindingInfos.ts","../src/list/loopContextByNode.ts","../src/proxy/symbols.ts","../src/event/handler.ts","../src/getCustomElement.ts","../src/event/isPossibleTwoWay.ts","../src/event/twowayHandler.ts","../src/list/lastListValueByAbsoluteStateAddress.ts","../src/address/AbsolutePathInfo.ts","../src/address/AbsoluteStateAddress.ts","../src/apply/rootNodeByFragment.ts","../src/address/calcWildcardLen.ts","../src/list/getListIndexByBindingInfo.ts","../src/binding/getAbsoluteStateAddressByBinding.ts","../src/webComponent/completeWebComponent.ts","../src/apply/applyChangeToAttribute.ts","../src/createEmptyArray.ts","../src/apply/getFilteredValue.ts","../src/apply/applyChangeToCheckbox.ts","../src/apply/applyChangeToClass.ts","../src/address/StateAddress.ts","../src/bindings/indexBindingsByContent.ts","../src/polyfills.ts","../src/getUUID.ts","../src/list/createListIndex.ts","../src/list/listIndexesByList.ts","../src/list/createListDiff.ts","../src/binding/getBindingSetByAbsoluteStateAddress.ts","../src/binding/getStateAddressByBindingInfo.ts","../src/bindings/bindingsByContent.ts","../src/bindings/nodesByContent.ts","../src/bindings/bindLoopContextToContent.ts","../src/structural/activateContent.ts","../src/createEmptySet.ts","../src/structural/contentsByNode.ts","../src/structural/createContent.ts","../src/apply/applyChangeToFor.ts","../src/apply/applyChangeToIf.ts","../src/apply/applyChangeToProperty.ts","../src/apply/applyChangeToRadio.ts","../src/apply/applyChangeToStyle.ts","../src/apply/applyChangeToText.ts","../src/apply/applyChangeToWebComponent.ts","../src/list/getIndexValueByLoopContext.ts","../src/apply/getValue.ts","../src/apply/applyChange.ts","../src/apply/applyChangeFromBindings.ts","../src/event/radioHandler.ts","../src/event/checkboxHandler.ts","../src/bindings/initializeBindings.ts","../src/mustache/convertMustacheToComments.ts","../src/structural/createNotFilter.ts","../src/structural/expandShorthandPaths.ts","../src/structural/getNodePath.ts","../src/structural/getFragmentNodeInfos.ts","../src/structural/optimizeFragment.ts","../src/structural/collectStructuralFragments.ts","../src/waitForStateInitialize.ts","../src/buildBindings.ts","../src/stateElementByName.ts","../src/list/loopContext.ts","../src/address/ResolvedAddress.ts","../src/proxy/apis/connectedCallback.ts","../src/proxy/apis/disconnectedCallback.ts","../src/cache/cacheEntryByAbsoluteStateAddress.ts","../src/proxy/methods/checkDependency.ts","../src/proxy/methods/getByAddress.ts","../src/proxy/methods/getContextListIndex.ts","../src/updater/updater.ts","../src/proxy/methods/swapInfo.ts","../src/dependency/walkDependency.ts","../src/proxy/methods/setByAddress.ts","../src/proxy/apis/resolve.ts","../src/proxy/apis/getAll.ts","../src/proxy/methods/getListIndex.ts","../src/proxy/apis/postUpdate.ts","../src/proxy/apis/trackDependency.ts","../src/proxy/apis/updatedCallback.ts","../src/proxy/methods/setLoopContext.ts","../src/proxy/traps/get.ts","../src/proxy/traps/set.ts","../src/proxy/StateHandler.ts","../src/webComponent/lastValueByAbsoluteStateAddress.ts","../src/webComponent/stateElementByWebComponent.ts","../src/webComponent/MappingRule.ts","../src/webComponent/meltFrozenObject.ts","../src/webComponent/innerState.ts","../src/webComponent/outerState.ts","../src/webComponent/plainOuterState.ts","../src/webComponent/bindWebComponent.ts","../src/components/State.ts","../src/registerComponents.ts","../src/bootstrapState.ts"],"sourcesContent":["import { IConfig, IWritableConfig } from \"./types.js\";\r\n\r\ninterface IInternalConfig {\r\n bindAttributeName: string;\r\n commentTextPrefix: string;\r\n commentForPrefix: string;\r\n commentIfPrefix: string;\r\n commentElseIfPrefix: string;\r\n commentElsePrefix: string;\r\n tagNames: {\r\n state: string;\r\n };\r\n locale: string;\r\n debug: boolean;\r\n enableMustache: boolean;\r\n}\r\n\r\nconst _config: IInternalConfig = {\r\n bindAttributeName: 'data-wcs',\r\n commentTextPrefix: 'wcs-text',\r\n commentForPrefix: 'wcs-for',\r\n commentIfPrefix: 'wcs-if',\r\n commentElseIfPrefix: 'wcs-elseif',\r\n commentElsePrefix: 'wcs-else',\r\n tagNames: {\r\n state: 'wcs-state',\r\n },\r\n locale: 'en',\r\n debug: false,\r\n enableMustache: true,\r\n};\r\n\r\n// backward compatible export (read-only usage)\r\nexport const config: IConfig = _config as IConfig;\r\n\r\nexport function setConfig(partialConfig: IWritableConfig): void {\r\n if (partialConfig.tagNames) {\r\n Object.assign(_config.tagNames, partialConfig.tagNames);\r\n }\r\n if (typeof partialConfig.bindAttributeName === \"string\") {\r\n _config.bindAttributeName = partialConfig.bindAttributeName;\r\n }\r\n if (typeof partialConfig.commentTextPrefix === \"string\") {\r\n _config.commentTextPrefix = partialConfig.commentTextPrefix;\r\n }\r\n if (typeof partialConfig.commentForPrefix === \"string\") {\r\n _config.commentForPrefix = partialConfig.commentForPrefix;\r\n }\r\n if (typeof partialConfig.commentIfPrefix === \"string\") {\r\n _config.commentIfPrefix = partialConfig.commentIfPrefix;\r\n }\r\n if (typeof partialConfig.commentElseIfPrefix === \"string\") {\r\n _config.commentElseIfPrefix = partialConfig.commentElseIfPrefix;\r\n }\r\n if (typeof partialConfig.commentElsePrefix === \"string\") {\r\n _config.commentElsePrefix = partialConfig.commentElsePrefix;\r\n }\r\n if (typeof partialConfig.locale === \"string\") {\r\n _config.locale = partialConfig.locale;\r\n }\r\n if (typeof partialConfig.debug === \"boolean\") {\r\n _config.debug = partialConfig.debug;\r\n }\r\n if (typeof partialConfig.enableMustache === \"boolean\") {\r\n _config.enableMustache = partialConfig.enableMustache;\r\n }\r\n}\r\n","import { IState } from \"../types\";\r\n\r\ntype ScriptModule = { default?: unknown };\r\n\r\nexport async function loadFromInnerScript(script: HTMLScriptElement, name: string): Promise<IState> {\r\n let scriptModule: ScriptModule | null = null;\r\n const uniq_comment = `\\n//# sourceURL=${name}\\n`;\r\n if (typeof URL.createObjectURL === 'function') {\r\n // Create a blob URL for the script and dynamically import it\r\n const blob = new Blob([script.text + uniq_comment], { type: \"application/javascript\" });\r\n const url = URL.createObjectURL(blob);\r\n try {\r\n scriptModule = await import(url) as ScriptModule;\r\n } finally {\r\n // Clean up blob URL to prevent memory leak\r\n URL.revokeObjectURL(url);\r\n }\r\n } else {\r\n // Fallback: Base64 encoding method (for test environment)\r\n // Convert script to Base64 and import via data: URL\r\n const b64 = btoa(String.fromCodePoint(...new TextEncoder().encode(script.text + uniq_comment)));\r\n scriptModule = await import(`data:application/javascript;base64,${b64}`) as ScriptModule;\r\n }\r\n return (scriptModule && typeof scriptModule.default === 'object') ? scriptModule.default as IState : {};\r\n}\r\n","\r\nexport function raiseError(message: string): never {\r\n throw new Error(`[@wcstack/state] ${message}`);\r\n}","import { raiseError } from \"../raiseError\";\r\nimport { IState } from \"../types\";\r\n\r\nexport async function loadFromJsonFile(url: string): Promise<IState> {\r\n try {\r\n const response = await fetch(url);\r\n if (!response.ok) {\r\n raiseError(`Failed to fetch JSON file: ${response.statusText}`);\r\n }\r\n const data = await response.json();\r\n return data;\r\n } catch (e) {\r\n console.error('Failed to load JSON file:', e);\r\n return {};\r\n }\r\n}","import { raiseError } from \"../raiseError\";\r\nimport { IState } from \"../types\";\r\n\r\nexport async function loadFromScriptFile(url: string): Promise<IState> {\r\n try {\r\n const module = await import(/* @vite-ignore */ url);\r\n return module.default || {};\r\n } catch (e) {\r\n raiseError(`Failed to load script file: ${e}`);\r\n }\r\n}\r\n","import { raiseError } from \"../raiseError\";\r\nimport { IState } from \"../types\";\r\n\r\n\r\nexport function loadFromScriptJson(id: string): IState {\r\n const script = document.getElementById(id) as HTMLScriptElement;\r\n if (script && script.type === 'application/json') {\r\n try {\r\n const data = JSON.parse(script.textContent || '{}');\r\n return data;\r\n } catch (e) {\r\n raiseError('Failed to parse JSON from script element:' + e);\r\n }\r\n }\r\n return {};\r\n}","import { IInitializeBindingPromise } from \"./types\";\r\n\r\nconst bindingPromiseByNode = new WeakMap<Node, IInitializeBindingPromise>();\r\n\r\nlet id = 0;\r\n\r\nexport function getInitializeBindingPromiseByNode(node: Node): IInitializeBindingPromise {\r\n let bindingPromise = bindingPromiseByNode.get(node) || null;\r\n if (bindingPromise !== null) {\r\n return bindingPromise;\r\n }\r\n let resolveFn = undefined;\r\n const promise = new Promise<void>((resolve) => {\r\n resolveFn = resolve;\r\n });\r\n bindingPromise = {\r\n id: ++id,\r\n promise,\r\n resolve: resolveFn!\r\n };\r\n bindingPromiseByNode.set(node, bindingPromise);\r\n return bindingPromise;\r\n}\r\n\r\nexport async function waitInitializeBinding(node: Node): Promise<void> {\r\n const bindingPromise = getInitializeBindingPromiseByNode(node);\r\n await bindingPromise.promise;\r\n}\r\n\r\nexport function resolveInitializedBinding(node: Node): void {\r\n const bindingPromise = getInitializeBindingPromiseByNode(node);\r\n bindingPromise.resolve();\r\n}\r\n","import { IBindingInfo } from \"../types.js\";\r\n\r\nexport function replaceToReplaceNode(bindingInfo: IBindingInfo): void {\r\n const node = bindingInfo.node;\r\n const replaceNode = bindingInfo.replaceNode;\r\n if (node === replaceNode) {\r\n return;\r\n }\r\n if (node.parentNode === null) {\r\n // already replaced\r\n return;\r\n }\r\n node.parentNode.replaceChild(replaceNode, node);\r\n}\r\n","\r\nexport function resolveNodePath(root: Node, path: number[]): Node | null {\r\n let currentNode = root;\r\n if (path.length === 0) return currentNode;\r\n // path.reduce()だと途中でnullになる可能性があるので、\r\n for(let i = 0; i < path.length; i++) {\r\n currentNode = currentNode?.childNodes[path[i]] ?? null;\r\n if (currentNode === null) break;\r\n }\r\n return currentNode;\r\n}","import { IBindingInfo } from \"../types\";\r\nimport { ParseBindTextResult } from \"../bindTextParser/types\";\r\n\r\nexport function getBindingInfos(node: Node, parseBindingTextResults: ParseBindTextResult[]): IBindingInfo[] {\r\n const bindingInfos: IBindingInfo[] = [];\r\n for (const parseBindingTextResult of parseBindingTextResults) {\r\n if (parseBindingTextResult.bindingType !== 'text') {\r\n bindingInfos.push({\r\n ...parseBindingTextResult,\r\n node: node,\r\n replaceNode: node,\r\n });\r\n } else {\r\n const replaceNode = document.createTextNode('');\r\n bindingInfos.push({\r\n ...parseBindingTextResult,\r\n node: node,\r\n replaceNode: replaceNode,\r\n });\r\n }\r\n }\r\n return bindingInfos;\r\n}\r\n","import { IBindingInfo } from \"../binding/types\";\r\n\r\nconst bindingsByNode = new WeakMap<Node, IBindingInfo[]>();\r\n\r\nexport function getBindingsByNode(node: Node): IBindingInfo[] | null {\r\n return bindingsByNode.get(node) || null;\r\n}\r\n\r\nexport function setBindingsByNode(node: Node, bindings: IBindingInfo[]): void {\r\n bindingsByNode.set(node, bindings);\r\n}\r\n\r\nexport function addBindingByNode(node: Node, binding: IBindingInfo): void {\r\n const bindings = getBindingsByNode(node);\r\n if (bindings === null) {\r\n setBindingsByNode(node, [binding]);\r\n } else {\r\n bindings.push(binding);\r\n }\r\n}","export const DELIMITER = '.';\r\nexport const WILDCARD = '*';\r\nexport const MAX_WILDCARD_DEPTH = 128;\r\nexport const MAX_LOOP_DEPTH = 128;\r\n\r\n/**\r\n * stackIndexByIndexName\r\n * インデックス名からスタックインデックスへのマッピング\r\n * $1 => 0\r\n * $2 => 1\r\n * :\r\n * ${i + 1} => i\r\n * i < MAX_WILDCARD_DEPTH\r\n */\r\nconst tmpIndexByIndexName: { [key: PropertyKey]: number } = {};\r\nfor (let i = 0; i < MAX_WILDCARD_DEPTH; i++) {\r\n tmpIndexByIndexName[`$${i+1}`] = i;\r\n}\r\nexport const INDEX_BY_INDEX_NAME: { [key: PropertyKey]: number } = Object.freeze(tmpIndexByIndexName);\r\n\r\nexport const NO_SET_TIMEOUT = 60 * 1000; // 1分\r\n\r\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\r\n\r\nexport const STATE_CONNECTED_CALLBACK_NAME = \"$connectedCallback\";\r\nexport const STATE_DISCONNECTED_CALLBACK_NAME = \"$disconnectedCallback\";\r\nexport const STATE_UPDATED_CALLBACK_NAME = \"$updatedCallback\";\r\n\r\nexport const WEBCOMPONENT_STATE_READY_CALLBACK_NAME = \"$stateReadyCallback\";\r\n","import { WILDCARD } from \"../define.js\";\r\nimport { IPathInfo } from \"./types.js\";\r\n\r\nconst _cache: Map<string, IPathInfo> = new Map();\r\n\r\nlet id: number = 0;\r\nexport function getPathInfo(path: string): IPathInfo {\r\n let pathInfo = _cache.get(path);\r\n if (typeof pathInfo !== \"undefined\") {\r\n return pathInfo;\r\n }\r\n pathInfo = Object.freeze(new PathInfo(path));\r\n _cache.set(path, pathInfo);\r\n return pathInfo;\r\n}\r\n\r\nclass PathInfo implements IPathInfo {\r\n readonly id: number = ++id;\r\n readonly path: string;\r\n readonly segments: string[];\r\n readonly lastSegment: string;\r\n readonly cumulativePaths: string[];\r\n readonly cumulativePathSet: Set<string>;\r\n readonly cumulativePathInfos: IPathInfo[];\r\n readonly cumulativePathInfoSet: Set<IPathInfo>;\r\n readonly parentPath: string | null;\r\n readonly wildcardPaths: string[];\r\n readonly wildcardPathSet: Set<string>;\r\n readonly indexByWildcardPath: Record<string, number>;\r\n readonly wildcardPathInfos: IPathInfo[];\r\n readonly wildcardPathInfoSet: Set<IPathInfo>;\r\n readonly wildcardParentPaths: string[];\r\n readonly wildcardParentPathSet: Set<string>;\r\n readonly wildcardParentPathInfos: IPathInfo[];\r\n readonly wildcardParentPathInfoSet: Set<IPathInfo>;\r\n readonly wildcardPositions: number[];\r\n readonly lastWildcardPath: string | null;\r\n readonly lastWildcardInfo: IPathInfo | null;\r\n readonly wildcardCount: number;\r\n readonly parentPathInfo: IPathInfo | null;\r\n constructor(path: string) {\r\n // Helper to get or create StructuredPathInfo instances, avoiding redundant creation for self-reference\r\n const getPattern = (_path: string): IPathInfo => {\r\n return (path === _path) ? this : getPathInfo(_path);\r\n };\r\n \r\n // Split the pattern into individual path segments (e.g., \"items.*.name\" → [\"items\", \"*\", \"name\"])\r\n const segments = path.split(\".\");\r\n \r\n // Arrays to track all cumulative paths from root to each segment\r\n const cumulativePaths = [];\r\n const cumulativePathInfos: IPathInfo[] = [];\r\n \r\n // Arrays to track wildcard-specific information\r\n const wildcardPaths = [];\r\n const indexByWildcardPath: Record<string, number> = {}; // Maps wildcard path to its index position\r\n const wildcardPathInfos = [];\r\n const wildcardParentPaths = []; // Paths of parent segments for each wildcard\r\n const wildcardParentPathInfos = [];\r\n const wildcardPositions = [];\r\n \r\n let currentPatternPath = \"\", prevPatternPath = \"\";\r\n let wildcardCount = 0;\r\n \r\n // Iterate through each segment to build cumulative paths and identify wildcards\r\n for(let i = 0; i < segments.length; i++) {\r\n currentPatternPath += segments[i];\r\n \r\n // If this segment is a wildcard, track it with all wildcard-specific metadata\r\n if (segments[i] === WILDCARD) {\r\n wildcardPaths.push(currentPatternPath);\r\n indexByWildcardPath[currentPatternPath] = wildcardCount; // Store wildcard's ordinal position\r\n wildcardPathInfos.push(getPattern(currentPatternPath));\r\n wildcardParentPaths.push(prevPatternPath); // Parent path is the previous cumulative path\r\n wildcardParentPathInfos.push(getPattern(prevPatternPath));\r\n wildcardPositions.push(i);\r\n wildcardCount++;\r\n }\r\n \r\n // Track all cumulative paths for hierarchical navigation (e.g., \"items\", \"items.*\", \"items.*.name\")\r\n cumulativePaths.push(currentPatternPath);\r\n cumulativePathInfos.push(getPattern(currentPatternPath));\r\n \r\n // Save current path as previous for next iteration, then add separator\r\n prevPatternPath = currentPatternPath;\r\n currentPatternPath += \".\";\r\n }\r\n \r\n // Determine the deepest (last) wildcard path and the parent path of the entire pattern\r\n const lastWildcardPath = wildcardPaths.length > 0 ? wildcardPaths[wildcardPaths.length - 1] : null;\r\n const parentPath = cumulativePaths.length > 1 ? cumulativePaths[cumulativePaths.length - 2] : null;\r\n \r\n // Assign all analyzed data to readonly properties\r\n this.path = path;\r\n this.segments = segments;\r\n this.lastSegment = segments[segments.length - 1];\r\n this.cumulativePaths = cumulativePaths;\r\n this.cumulativePathSet = new Set(cumulativePaths); // Set for fast lookup\r\n this.cumulativePathInfos = cumulativePathInfos;\r\n this.cumulativePathInfoSet = new Set(cumulativePathInfos);\r\n this.wildcardPaths = wildcardPaths;\r\n this.wildcardPathSet = new Set(wildcardPaths);\r\n this.indexByWildcardPath = indexByWildcardPath;\r\n this.wildcardPathInfos = wildcardPathInfos;\r\n this.wildcardPathInfoSet = new Set(wildcardPathInfos);\r\n this.wildcardParentPaths = wildcardParentPaths;\r\n this.wildcardParentPathSet = new Set(wildcardParentPaths);\r\n this.wildcardParentPathInfos = wildcardParentPathInfos;\r\n this.wildcardParentPathInfoSet = new Set(wildcardParentPathInfos);\r\n this.wildcardPositions = wildcardPositions;\r\n this.lastWildcardPath = lastWildcardPath;\r\n this.lastWildcardInfo = lastWildcardPath ? getPattern(lastWildcardPath) : null;\r\n this.parentPath = parentPath;\r\n this.parentPathInfo = parentPath ? getPattern(parentPath) : null;\r\n this.wildcardCount = wildcardCount;\r\n }\r\n}\r\n","import { BindingType } from \"../types.js\";\r\n\r\nexport const STRUCTURAL_BINDING_TYPE_SET: Set<BindingType> = new Set([\r\n \"if\",\r\n \"elseif\",\r\n \"else\",\r\n \"for\",\r\n]);\r\n","/**\r\n * errorMessages.ts\r\n *\r\n * Error message generation utilities used by filter functions.\r\n *\r\n * Main responsibilities:\r\n * - Throws clear error messages when filter options or value type checks fail\r\n * - Takes function name as argument to specify which filter caused the error\r\n *\r\n * Design points:\r\n * - optionsRequired: Error when required option is not specified\r\n * - optionMustBeNumber: Error when option value is not a number\r\n * - valueMustBeNumber: Error when value is not a number\r\n * - valueMustBeBoolean: Error when value is not boolean\r\n * - valueMustBeDate: Error when value is not a Date\r\n */\r\nimport { raiseError } from \"../raiseError\";\r\n\r\n/**\r\n * Throws error when filter requires at least one option but none provided.\r\n * \r\n * @param fnName - Name of the filter function\r\n * @returns Never returns (always throws)\r\n */\r\nexport function optionsRequired(fnName:string): never {\r\n raiseError(`filter ${fnName} requires at least one option`);\r\n}\r\n\r\n/**\r\n * Throws error when filter option must be a number but invalid value provided.\r\n * \r\n * @param fnName - Name of the filter function\r\n * @returns Never returns (always throws)\r\n */\r\nexport function optionMustBeNumber(fnName:string): never {\r\n raiseError(`filter ${fnName} requires a number as option`);\r\n}\r\n\r\n/**\r\n * Throws error when filter requires numeric value but non-number provided.\r\n * \r\n * @param fnName - Name of the filter function\r\n * @returns Never returns (always throws)\r\n */\r\nexport function valueMustBeNumber(fnName:string): never {\r\n raiseError(`filter ${fnName} requires a number value`);\r\n}\r\n\r\n/**\r\n * Throws error when filter requires numeric value but non-number provided.\r\n * \r\n * @param fnName - Name of the filter function\r\n * @returns Never returns (always throws)\r\n */\r\nexport function valueMustBeString(fnName:string): never {\r\n raiseError(`filter ${fnName} requires a string value`);\r\n}\r\n\r\n/**\r\n * Throws error when filter requires boolean value but non-boolean provided.\r\n * \r\n * @param fnName - Name of the filter function\r\n * @returns Never returns (always throws)\r\n */\r\nexport function valueMustBeBoolean(fnName:string): never {\r\n raiseError(`filter ${fnName} requires a boolean value`);\r\n} \r\n\r\n/**\r\n * Throws error when filter requires Date value but non-Date provided.\r\n * \r\n * @param fnName - Name of the filter function\r\n * @returns Never returns (always throws)\r\n */\r\nexport function valueMustBeDate(fnName:string): never {\r\n raiseError(`filter ${fnName} requires a date value`);\r\n}","/**\r\n * builtinFilters.ts\r\n *\r\n * Implementation file for built-in filter functions available in Structive.\r\n *\r\n * Main responsibilities:\r\n * - Provides filters for conversion, comparison, formatting, and validation of numbers, strings, dates, booleans, etc.\r\n * - Defines functions with options for each filter name, enabling flexible use during binding\r\n * - Designed for common use as both input and output filters\r\n *\r\n * Design points:\r\n * - Comprehensive coverage of diverse filters: eq, ne, lt, gt, inc, fix, locale, uc, lc, cap, trim, slice, pad, int, float, round, date, time, ymd, falsy, truthy, defaults, boolean, number, string, null, etc.\r\n * - Rich type checking and error handling for option values\r\n * - Centralized management of filter functions with FilterWithOptions type, easy to extend\r\n * - Dynamic retrieval of filter functions from filter names and options via builtinFilterFn\r\n */\r\nimport { config } from \"../config.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { optionMustBeNumber, optionsRequired, valueMustBeBoolean, valueMustBeDate, valueMustBeNumber } from \"./errorMessages.js\";\r\nimport { FilterFn, FilterWithOptions } from \"./types\";\r\n\r\nfunction validateNumberString(value: string): boolean {\r\n if (!value || isNaN(Number(value))) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * Equality filter - compares value with option.\r\n * \r\n * @param options - Array with comparison value as first element\r\n * @returns Filter function that returns boolean\r\n */\r\nconst eq = (options?:string[]): FilterFn<boolean> => {\r\n const opt = options?.[0] ?? optionsRequired('eq');\r\n return (value: unknown): boolean => {\r\n // Align types for comparison\r\n if (typeof value === 'number') {\r\n if (!validateNumberString(opt)) {optionMustBeNumber('eq');}\r\n return value === Number(opt);\r\n }\r\n if (typeof value === 'string') {\r\n return value === opt;\r\n }\r\n // Strict equality for others\r\n return value === opt;\r\n }\r\n}\r\n\r\n/**\r\n * Inequality filter - compares value with option.\r\n * \r\n * @param options - Array with comparison value as first element\r\n * @returns Filter function that returns boolean\r\n */\r\nconst ne = (options?:string[]): FilterFn<boolean> => {\r\n const opt = options?.[0] ?? optionsRequired('ne');\r\n return (value: unknown): boolean => {\r\n // Align types for comparison\r\n if (typeof value === 'number') {\r\n if (!validateNumberString(opt)) {optionMustBeNumber('ne');}\r\n return value !== Number(opt);\r\n }\r\n if (typeof value === 'string') {\r\n return value !== opt;\r\n }\r\n // Strict equality for others\r\n return value !== opt;\r\n }\r\n}\r\n\r\n/**\r\n * Boolean NOT filter - inverts boolean value.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns inverted boolean\r\n */\r\nconst not = (_options?:string[]): FilterFn<boolean> => {\r\n return (value: unknown): boolean => {\r\n if (typeof value !== 'boolean') {valueMustBeBoolean('not');}\r\n return !value;\r\n }\r\n}\r\n\r\n/**\r\n * Less than filter - checks if value is less than option.\r\n * \r\n * @param options - Array with comparison number as first element\r\n * @returns Filter function that returns boolean\r\n */\r\nconst lt = (options?:string[]): FilterFn<boolean> => {\r\n const opt = options?.[0] ?? optionsRequired('lt');\r\n if (!validateNumberString(opt)) {optionMustBeNumber('lt');}\r\n return (value: unknown): boolean => {\r\n if (typeof value !== 'number') {valueMustBeNumber('lt');}\r\n return value < Number(opt);\r\n }\r\n}\r\n\r\n/**\r\n * Less than or equal filter - checks if value is less than or equal to option.\r\n * \r\n * @param options - Array with comparison number as first element\r\n * @returns Filter function that returns boolean\r\n */\r\nconst le = (options?:string[]): FilterFn<boolean> => {\r\n const opt = options?.[0] ?? optionsRequired('le');\r\n if (!validateNumberString(opt)) {optionMustBeNumber('le');}\r\n return (value: unknown): boolean => {\r\n if (typeof value !== 'number') {valueMustBeNumber('le');}\r\n return value <= Number(opt);\r\n }\r\n}\r\n\r\n/**\r\n * Greater than filter - checks if value is greater than option.\r\n * \r\n * @param options - Array with comparison number as first element\r\n * @returns Filter function that returns boolean\r\n */\r\nconst gt = (options?:string[]): FilterFn<boolean> => {\r\n const opt = options?.[0] ?? optionsRequired('gt');\r\n if (!validateNumberString(opt)) {optionMustBeNumber('gt');}\r\n return (value: unknown): boolean => {\r\n if (typeof value !== 'number') {valueMustBeNumber('gt');}\r\n return value > Number(opt);\r\n }\r\n}\r\n\r\n/**\r\n * Greater than or equal filter - checks if value is greater than or equal to option.\r\n * \r\n * @param options - Array with comparison number as first element\r\n * @returns Filter function that returns boolean\r\n */\r\nconst ge = (options?:string[]): FilterFn<boolean> => {\r\n const opt = options?.[0] ?? optionsRequired('ge');\r\n if (!validateNumberString(opt)) {optionMustBeNumber('ge');}\r\n return (value: unknown): boolean => {\r\n if (typeof value !== 'number') {valueMustBeNumber('ge');}\r\n return value >= Number(opt);\r\n }\r\n}\r\n\r\n/**\r\n * Increment filter - adds option value to input value.\r\n * \r\n * @param options - Array with increment number as first element\r\n * @returns Filter function that returns incremented number\r\n */\r\nconst inc = (options?:string[]): FilterFn<number> => {\r\n const opt = options?.[0] ?? optionsRequired('inc');\r\n if (!validateNumberString(opt)) {optionMustBeNumber('inc');}\r\n return (value: unknown): number => {\r\n if (typeof value !== 'number') {valueMustBeNumber('inc');}\r\n return value + Number(opt);\r\n }\r\n}\r\n\r\n/**\r\n * Decrement filter - subtracts option value from input value.\r\n * \r\n * @param options - Array with decrement number as first element\r\n * @returns Filter function that returns decremented number\r\n */\r\nconst dec = (options?:string[]): FilterFn<number> => {\r\n const opt = options?.[0] ?? optionsRequired('dec');\r\n if (!validateNumberString(opt)) {optionMustBeNumber('dec');}\r\n return (value: unknown): number => {\r\n if (typeof value !== 'number') {valueMustBeNumber('dec');}\r\n return value - Number(opt);\r\n }\r\n}\r\n\r\n/**\r\n * Multiply filter - multiplies value by option.\r\n * \r\n * @param options - Array with multiplier number as first element\r\n * @returns Filter function that returns multiplied number\r\n */\r\nconst mul = (options?:string[]): FilterFn<number> => {\r\n const opt = options?.[0] ?? optionsRequired('mul');\r\n if (!validateNumberString(opt)) {optionMustBeNumber('mul');}\r\n return (value: unknown): number => {\r\n if (typeof value !== 'number') {valueMustBeNumber('mul');}\r\n return value * Number(opt);\r\n }\r\n}\r\n\r\n/**\r\n * Divide filter - divides value by option.\r\n * \r\n * @param options - Array with divisor number as first element\r\n * @returns Filter function that returns divided number\r\n */\r\nconst div = (options?:string[]): FilterFn<number> => {\r\n const opt = options?.[0] ?? optionsRequired('div');\r\n if (!validateNumberString(opt)) {optionMustBeNumber('div');}\r\n return (value: unknown): number => {\r\n if (typeof value !== 'number') {valueMustBeNumber('div');}\r\n return value / Number(opt);\r\n }\r\n}\r\n\r\n/**\r\n * Modulo filter - returns remainder of division.\r\n * \r\n * @param options - Array with divisor number as first element\r\n * @returns Filter function that returns remainder\r\n */\r\nconst mod = (options?:string[]): FilterFn<number> => {\r\n const opt = options?.[0] ?? optionsRequired('mod');\r\n if (!validateNumberString(opt)) {optionMustBeNumber('mod');}\r\n return (value: unknown): number => {\r\n if (typeof value !== 'number') {valueMustBeNumber('mod');}\r\n return value % Number(opt);\r\n }\r\n}\r\n\r\n/**\r\n * Fixed decimal filter - formats number to fixed decimal places.\r\n * \r\n * @param options - Array with decimal places as first element (default: 0)\r\n * @returns Filter function that returns formatted string\r\n */\r\nconst fix = (options?:string[]): FilterFn<string> => {\r\n const opt = options?.[0] ?? \"0\";\r\n if (!validateNumberString(opt)) {optionMustBeNumber('fix');}\r\n return (value: unknown): string => {\r\n if (typeof value !== 'number') {valueMustBeNumber('fix');}\r\n return value.toFixed(Number(opt));\r\n }\r\n}\r\n\r\n/**\r\n * Locale number filter - formats number according to locale.\r\n * \r\n * @param options - Array with locale string as first element (default: config.locale)\r\n * @returns Filter function that returns localized number string\r\n */\r\nconst locale = (options?:string[]): FilterFn<string> => {\r\n const opt = options?.[0] ?? config.locale;\r\n return (value: unknown): string => {\r\n if (typeof value !== 'number') {valueMustBeNumber('locale');}\r\n return value.toLocaleString(opt);\r\n }\r\n}\r\n\r\n/**\r\n * Uppercase filter - converts string to uppercase.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns uppercase string\r\n */\r\nconst uc = (_options?:string[]): FilterFn<string> => {\r\n return (value: unknown): string => {\r\n return String(value).toUpperCase();\r\n }\r\n}\r\n\r\n/**\r\n * Lowercase filter - converts string to lowercase.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns lowercase string\r\n */\r\nconst lc = (_options?:string[]): FilterFn<string> => {\r\n return (value: unknown): string => {\r\n return String(value).toLowerCase();\r\n }\r\n}\r\n\r\n/**\r\n * Capitalize filter - capitalizes first character of string.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns capitalized string\r\n */\r\nconst cap = (_options?:string[]): FilterFn<string> => {\r\n return (value: unknown): string => {\r\n const v = String(value);\r\n if (v.length === 0) {return v;}\r\n if (v.length === 1) {return v.toUpperCase();}\r\n return v.charAt(0).toUpperCase() + v.slice(1);\r\n }\r\n}\r\n\r\n/**\r\n * Trim filter - removes whitespace from both ends of string.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns trimmed string\r\n */\r\nconst trim = (_options?:string[]): FilterFn<string> => {\r\n return (value: unknown): string => {\r\n return String(value).trim();\r\n }\r\n}\r\n\r\n/**\r\n * Slice filter - extracts portion of string from specified index.\r\n * \r\n * @param options - Array with start index and optional end index\r\n * @returns Filter function that returns sliced string\r\n */\r\nconst slice = (options?:string[]): FilterFn<string> => {\r\n const numberedOpts: number[] = [];\r\n const opt1 = options?.[0] ?? optionsRequired('slice');\r\n if (!validateNumberString(opt1)) {optionMustBeNumber('slice');}\r\n numberedOpts.push(Number(opt1));\r\n const opt2 = options?.[1];\r\n if (typeof opt2 !== 'undefined') {\r\n if (!validateNumberString(opt2)) {optionMustBeNumber('slice');}\r\n numberedOpts.push(Number(opt2));\r\n }\r\n return (value: unknown): string => {\r\n return String(value).slice(...numberedOpts);\r\n }\r\n}\r\n\r\n/**\r\n * Substring filter - extracts substring from specified position and length.\r\n * \r\n * @param options - Array with start index and length\r\n * @returns Filter function that returns substring\r\n */\r\nconst substr = (options?:string[]): FilterFn<string> => {\r\n const opt1 = options?.[0] ?? optionsRequired('substr');\r\n if (!validateNumberString(opt1)) {optionMustBeNumber('substr');}\r\n const opt2 = options?.[1] ?? optionsRequired('substr');\r\n if (!validateNumberString(opt2)) {optionMustBeNumber('substr');}\r\n return (value: unknown): string => {\r\n return String(value).substr(Number(opt1), Number(opt2));\r\n }\r\n}\r\n\r\n/**\r\n * Pad filter - pads string to specified length from start.\r\n * \r\n * @param options - Array with target length and pad string (default: '0')\r\n * @returns Filter function that returns padded string\r\n */\r\nconst pad = (options?:string[]): FilterFn<string> => {\r\n const opt1 = options?.[0] ?? optionsRequired('pad');\r\n if (!validateNumberString(opt1)) {optionMustBeNumber('pad');}\r\n const opt2 = options?.[1] ?? '0';\r\n return (value: unknown): string => {\r\n return String(value).padStart(Number(opt1), opt2);\r\n }\r\n}\r\n\r\n/**\r\n * Repeat filter - repeats string specified number of times.\r\n * \r\n * @param options - Array with repeat count as first element\r\n * @returns Filter function that returns repeated string\r\n */\r\nconst rep = (options?:string[]): FilterFn<string> => {\r\n const opt = options?.[0] ?? optionsRequired('rep');\r\n if (!validateNumberString(opt)) {optionMustBeNumber('rep');}\r\n return (value: unknown): string => {\r\n return String(value).repeat(Number(opt));\r\n }\r\n}\r\n\r\n/**\r\n * Reverse filter - reverses character order in string.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns reversed string\r\n */\r\nconst rev = (_options?:string[]): FilterFn<string> => {\r\n return (value: unknown): string => {\r\n return String(value).split('').reverse().join('');\r\n }\r\n}\r\n\r\n/**\r\n * Integer filter - parses value to integer.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns integer\r\n */\r\nconst int = (_options?:string[]): FilterFn<number> => {\r\n return (value: unknown): number => {\r\n return parseInt(String(value), 10);\r\n }\r\n}\r\n\r\n/**\r\n * Float filter - parses value to floating point number.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns float\r\n */\r\nconst float = (_options?:string[]): FilterFn<number> => {\r\n return (value: unknown): number => {\r\n return parseFloat(String(value));\r\n }\r\n}\r\n\r\n/**\r\n * Round filter - rounds number to specified decimal places.\r\n * \r\n * @param options - Array with decimal places as first element (default: 0)\r\n * @returns Filter function that returns rounded number\r\n */\r\nconst round = (options?:string[]): FilterFn<number> => {\r\n const opt = options?.[0] ?? '0';\r\n if (!validateNumberString(opt)) {optionMustBeNumber('round');}\r\n return (value: unknown): number => {\r\n if (typeof value !== 'number') {valueMustBeNumber('round');}\r\n const optValue = Math.pow(10, Number(opt));\r\n return Math.round(value * optValue) / optValue;\r\n }\r\n}\r\n\r\n/**\r\n * Floor filter - rounds number down to specified decimal places.\r\n * \r\n * @param options - Array with decimal places as first element (default: 0)\r\n * @returns Filter function that returns floored number\r\n */\r\nconst floor = (options?:string[]): FilterFn<number> => {\r\n const opt = options?.[0] ?? '0';\r\n if (!validateNumberString(opt)) {optionMustBeNumber('floor');}\r\n return (value: unknown): number => {\r\n if (typeof value !== 'number') {valueMustBeNumber('floor');}\r\n const optValue = Math.pow(10, Number(opt));\r\n return Math.floor(value * optValue) / optValue;\r\n }\r\n}\r\n\r\n/**\r\n * Ceiling filter - rounds number up to specified decimal places.\r\n * \r\n * @param options - Array with decimal places as first element (default: 0)\r\n * @returns Filter function that returns ceiled number\r\n */\r\nconst ceil = (options?:string[]): FilterFn<number> => {\r\n const opt = options?.[0] ?? '0';\r\n if (!validateNumberString(opt)) {optionMustBeNumber('ceil');}\r\n return (value: unknown): number => {\r\n if (typeof value !== 'number') {valueMustBeNumber('ceil');}\r\n const optValue = Math.pow(10, Number(opt));\r\n return Math.ceil(value * optValue) / optValue;\r\n }\r\n}\r\n\r\n/**\r\n * Percent filter - formats number as percentage string.\r\n * \r\n * @param options - Array with decimal places as first element (default: 0)\r\n * @returns Filter function that returns percentage string with '%'\r\n */\r\nconst percent = (options?:string[]): FilterFn<string> => {\r\n const opt = options?.[0] ?? '0';\r\n if (!validateNumberString(opt)) {optionMustBeNumber('percent');}\r\n return (value: unknown): string => {\r\n if (typeof value !== 'number') {valueMustBeNumber('percent');}\r\n return `${(value * 100).toFixed(Number(opt))}%`;\r\n }\r\n}\r\n\r\n/**\r\n * Date filter - formats Date object as localized date string.\r\n * \r\n * @param options - Array with locale string as first element (default: config.locale)\r\n * @returns Filter function that returns date string\r\n */\r\nconst date = (options?:string[]): FilterFn<string> => {\r\n const opt = options?.[0] ?? config.locale;\r\n return (value: unknown): string => {\r\n if (!(value instanceof Date)) {valueMustBeDate('date');}\r\n return value.toLocaleDateString(opt);\r\n }\r\n}\r\n\r\n/**\r\n * Time filter - formats Date object as localized time string.\r\n * \r\n * @param options - Array with locale string as first element (default: config.locale)\r\n * @returns Filter function that returns time string\r\n */\r\nconst time = (options?:string[]): FilterFn<string> => {\r\n const opt = options?.[0] ?? config.locale;\r\n return (value: unknown): string => {\r\n if (!(value instanceof Date)) {valueMustBeDate('time');}\r\n return value.toLocaleTimeString(opt);\r\n }\r\n}\r\n\r\n/**\r\n * DateTime filter - formats Date object as localized date and time string.\r\n * \r\n * @param options - Array with locale string as first element (default: config.locale)\r\n * @returns Filter function that returns datetime string\r\n */\r\nconst datetime = (options?:string[]): FilterFn<string> => {\r\n const opt = options?.[0] ?? config.locale;\r\n return (value: unknown): string => {\r\n if (!(value instanceof Date)) {valueMustBeDate('datetime');}\r\n return value.toLocaleString(opt);\r\n }\r\n}\r\n\r\n/**\r\n * Year-Month-Day filter - formats Date object as YYYY-MM-DD string.\r\n * \r\n * @param options - Array with separator string as first element (default: '-')\r\n * @returns Filter function that returns formatted date string\r\n */\r\nconst ymd = (options?:string[]): FilterFn<string> => {\r\n const opt = options?.[0] ?? '-';\r\n return (value: unknown): string => {\r\n if (!(value instanceof Date)) {valueMustBeDate('ymd');}\r\n const year = value.getFullYear().toString();\r\n const month = (value.getMonth() + 1).toString().padStart(2, '0');\r\n const day = value.getDate().toString().padStart(2, '0');\r\n return `${year}${opt}${month}${opt}${day}`;\r\n }\r\n}\r\n\r\n/**\r\n * Falsy filter - checks if value is falsy.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns true for false/null/undefined/0/''/NaN\r\n */\r\nconst falsy = (_options?:string[]): FilterFn<boolean> => {\r\n return (value: unknown): boolean => value === false || value === null || value === undefined || value === 0 || value === '' || Number.isNaN(value);\r\n}\r\n\r\n/**\r\n * Truthy filter - checks if value is truthy.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns true for non-falsy values\r\n */\r\nconst truthy = (_options?:string[]): FilterFn<boolean> => {\r\n return (value: unknown): boolean =>value !== false && value !== null && value !== undefined && value !== 0 && value !== '' && !Number.isNaN(value);\r\n}\r\n\r\n/**\r\n * Default filter - returns default value if input is falsy.\r\n * \r\n * @param options - Array with default value as first element\r\n * @returns Filter function that returns value or default\r\n */\r\nconst defaults = (options?:string[]): FilterFn<unknown> => {\r\n const opt = options?.[0] ?? optionsRequired('defaults');\r\n return (value: unknown): unknown => {\r\n if (value === false || value === null || value === undefined || value === 0 || value === '' || Number.isNaN(value)) {return opt;}\r\n return value;\r\n }\r\n}\r\n\r\n/**\r\n * Boolean filter - converts value to boolean.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns boolean\r\n */\r\nconst boolean = (_options?:string[]): FilterFn<boolean> => {\r\n return (value: unknown): boolean => {\r\n return Boolean(value);\r\n }\r\n}\r\n\r\n/**\r\n * Number filter - converts value to number.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns number\r\n */\r\nconst number = (_options?:string[]): FilterFn<number> => {\r\n return (value: unknown): number => {\r\n return Number(value);\r\n }\r\n}\r\n\r\n/**\r\n * String filter - converts value to string.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns string\r\n */\r\nconst string = (_options?:string[]): FilterFn<string> => {\r\n return (value: unknown): string => {\r\n return String(value);\r\n }\r\n}\r\n\r\n/**\r\n * Null filter - converts empty string to null.\r\n * \r\n * @param options - Unused\r\n * @returns Filter function that returns null for empty string, otherwise original value\r\n */\r\nconst _null = (_options?:string[]): FilterFn<unknown> => {\r\n return (value: unknown): unknown => {\r\n return (value === \"\") ? null : value;\r\n } \r\n}\r\n\r\nconst builtinFilters: FilterWithOptions = {\r\n \"eq\": eq,\r\n \"ne\": ne,\r\n \"not\": not,\r\n\r\n \"lt\": lt,\r\n \"le\": le,\r\n \"gt\": gt,\r\n \"ge\": ge,\r\n\r\n \"inc\": inc,\r\n \"dec\": dec,\r\n \"mul\": mul,\r\n \"div\": div,\r\n \"mod\": mod,\r\n\r\n \"fix\": fix,\r\n \"locale\": locale,\r\n \"uc\": uc,\r\n \"lc\": lc,\r\n \"cap\": cap,\r\n \"trim\": trim,\r\n \"slice\": slice,\r\n \"substr\": substr,\r\n \"pad\": pad,\r\n \"rep\": rep,\r\n \"rev\": rev,\r\n\r\n \"int\": int,\r\n \"float\": float,\r\n \"round\": round,\r\n \"floor\": floor,\r\n \"ceil\": ceil,\r\n \"percent\": percent,\r\n\r\n \"date\": date,\r\n \"time\": time,\r\n \"datetime\": datetime,\r\n \"ymd\": ymd,\r\n\r\n \"falsy\": falsy,\r\n \"truthy\": truthy,\r\n \"defaults\": defaults,\r\n\r\n \"boolean\": boolean,\r\n \"number\": number,\r\n \"string\": string,\r\n \"null\": _null,\r\n};\r\n\r\nexport const outputBuiltinFilters = builtinFilters;\r\nexport const inputBuiltinFilters = builtinFilters;\r\n\r\nexport const builtinFiltersByFilterIOType = {\r\n \"input\": inputBuiltinFilters,\r\n \"output\": outputBuiltinFilters,\r\n} as const;\r\n\r\n/**\r\n * Retrieves built-in filter function by name and options.\r\n * \r\n * @param name - Filter name\r\n * @param options - Array of option strings\r\n * @returns Function that takes FilterWithOptions and returns filter function\r\n */\r\nexport const builtinFilterFn = (name:string, options: string[]) => (filters: FilterWithOptions) => {\r\n const filter = filters[name];\r\n if (!filter) {\r\n raiseError(`filter not found: ${name}`);\r\n }\r\n return filter(options);\r\n}\r\n\r\n","export function parseFilterArgs(argsText: string): string[] {\r\n const args: string[] = [];\r\n let current = '';\r\n let inQuote: string | null = null;\r\n \r\n for (let i = 0; i < argsText.length; i++) {\r\n const char = argsText[i];\r\n \r\n if (inQuote) {\r\n if (char === inQuote) {\r\n inQuote = null;\r\n } else {\r\n current += char;\r\n }\r\n } else if (char === '\"' || char === \"'\") {\r\n inQuote = char;\r\n } else if (char === ',') {\r\n args.push(current.trim());\r\n current = '';\r\n } else {\r\n current += char;\r\n }\r\n }\r\n \r\n if (current.trim()) {\r\n args.push(current.trim());\r\n }\r\n \r\n return args;\r\n}","import { builtinFilterFn, builtinFiltersByFilterIOType } from \"../filters/builtinFilters\";\r\nimport { FilterFn, FilterIOType } from \"../filters/types\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { IFilterInfo } from \"../types\";\r\nimport { parseFilterArgs } from \"./parseFilterArgs\";\r\n\r\nconst filterFnByKey: Map<string, FilterFn<unknown>> = new Map();\r\n\r\n// format: filterName(arg1,arg2) or filterName\r\n\r\nexport function parseFilters(filterTextList: string[], filterIOType: FilterIOType): IFilterInfo[] {\r\n const builtinFilters = builtinFiltersByFilterIOType[filterIOType];\r\n const filters: IFilterInfo[] = filterTextList.map((filterText) => {\r\n const openParenIndex = filterText.indexOf('(');\r\n const closeParenIndex = filterText.lastIndexOf(')');\r\n // check parentheses\r\n if (openParenIndex !== -1 && closeParenIndex === -1) {\r\n raiseError(`Invalid filter format: missing closing parenthesis in \"${filterText}\"`);\r\n }\r\n if (closeParenIndex !== -1 && openParenIndex === -1) {\r\n raiseError(`Invalid filter format: missing opening parenthesis in \"${filterText}\"`);\r\n }\r\n if (openParenIndex === -1) {\r\n // no arguments\r\n const filterName = filterText.trim();\r\n const filterKey = `${filterName}():${filterIOType}`;\r\n let filterFn = filterFnByKey.get(filterKey);\r\n if (typeof filterFn === 'undefined') {\r\n filterFn = builtinFilterFn(filterName, [])(builtinFilters);\r\n filterFnByKey.set(filterKey, filterFn);\r\n }\r\n return {\r\n filterName: filterName,\r\n args: [],\r\n filterFn: filterFn,\r\n };\r\n } else {\r\n const argsText = filterText.substring(openParenIndex + 1, closeParenIndex);\r\n const filterName = filterText.substring(0, openParenIndex).trim();\r\n const args = parseFilterArgs(argsText);\r\n const filterKey = `${filterName}(${args.join(',')}):${filterIOType}`;\r\n let filterFn = filterFnByKey.get(filterKey);\r\n if (typeof filterFn === 'undefined') {\r\n filterFn = builtinFilterFn(filterName, args)(builtinFilters);\r\n filterFnByKey.set(filterKey, filterFn);\r\n }\r\n return {\r\n filterName,\r\n args,\r\n filterFn,\r\n };\r\n }\r\n });\r\n return filters;\r\n}","\r\nexport const trimFn = (s: string): string => s.trim();\r\n","import { IBindingInfo, IFilterInfo } from \"../types\";\r\nimport { parseFilters } from \"./parseFilters\";\r\nimport { trimFn } from \"./utils\";\r\n\r\ntype PropPartParseResult = Pick<IBindingInfo, 'propName' | 'propSegments' | 'propModifiers' | 'inFilters'>;\r\n\r\nconst cacheFilterInfos = new Map<string, IFilterInfo[]>();\r\n\r\n// format: propName#moodifier1,modifier2\r\n// propName-format: path.to.property (e.g., textContent, style.color, not include :)\r\n// special path: \r\n// 'attr.attributeName' for attributes (e.g., attr.href, attr.data-id)\r\n// 'style.propertyName' for style properties (e.g., style.backgroundColor, style.fontSize)\r\n// 'class.className' for class names (e.g., class.active, class.hidden)\r\n// 'onclick', 'onchange' etc. for event listeners\r\n\r\nexport function parsePropPart(propPart: string): PropPartParseResult {\r\n const pos = propPart.indexOf('|');\r\n let propText: string = '';\r\n let filterTexts: string[] = [];\r\n let filtersText = '';\r\n let filters: IFilterInfo[] = [];\r\n if (pos !== -1) {\r\n propText = propPart.slice(0, pos).trim();\r\n filtersText = propPart.slice(pos + 1).trim();\r\n if (cacheFilterInfos.has(filtersText)) {\r\n filters = cacheFilterInfos.get(filtersText)!;\r\n } else {\r\n filterTexts = filtersText.split('|').map(trimFn);\r\n filters = parseFilters(filterTexts, \"input\");\r\n cacheFilterInfos.set(filtersText, filters);\r\n }\r\n } else {\r\n propText = propPart.trim();\r\n }\r\n\r\n const [propName, propModifiersText] = propText.split('#').map(trimFn);\r\n const propSegments = propName.split('.').map(trimFn);\r\n const propModifiers = propModifiersText\r\n ? propModifiersText.split(',').map(trimFn)\r\n : [];\r\n return {\r\n propName,\r\n propSegments,\r\n propModifiers,\r\n inFilters: filters,\r\n };\r\n}","import { getPathInfo } from \"../address/PathInfo\";\r\nimport { IBindingInfo, IFilterInfo } from \"../types\";\r\nimport { parseFilters } from \"./parseFilters\";\r\nimport { trimFn } from \"./utils\";\r\n\r\ntype StatePartParseResult = Pick<IBindingInfo, \r\n 'stateName' | 'statePathName' | 'statePathInfo' | 'outFilters'>;\r\n\r\nconst cacheFilterInfos = new Map<string, IFilterInfo[]>();\r\n\r\n// format: statePath@stateName|filter|filter\r\n// statePath-format: path.to.property (e.g., user.name.first, users.*.name, users.0.name, not include @)\r\n// stateName: optional, default is 'default'\r\n// filters-format: filterName or filterName(arg1,arg2)\r\nexport function parseStatePart(statePart: string): StatePartParseResult {\r\n const pos = statePart.indexOf('|');\r\n let stateAndPath: string = '';\r\n let filterTexts: string[] = [];\r\n let filtersText = '';\r\n let filters: IFilterInfo[] = [];\r\n if (pos !== -1) {\r\n stateAndPath = statePart.slice(0, pos).trim();\r\n filtersText = statePart.slice(pos + 1).trim();\r\n if (cacheFilterInfos.has(filtersText)) {\r\n filters = cacheFilterInfos.get(filtersText)!;\r\n } else {\r\n filterTexts = filtersText.split('|').map(trimFn);\r\n filters = parseFilters(filterTexts, \"output\");\r\n cacheFilterInfos.set(filtersText, filters);\r\n }\r\n } else {\r\n stateAndPath = statePart.trim();\r\n }\r\n const [statePathName, stateName = 'default'] = stateAndPath.split('@').map(trimFn);\r\n const pathInfo = getPathInfo(statePathName);\r\n return {\r\n stateName,\r\n statePathName,\r\n statePathInfo: pathInfo,\r\n outFilters: filters,\r\n };\r\n}\r\n","import { getPathInfo } from \"../address/PathInfo.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { STRUCTURAL_BINDING_TYPE_SET } from \"../structural/define.js\";\r\nimport { parsePropPart } from \"./parsePropPart.js\";\r\nimport { parseStatePart } from \"./parseStatePart.js\";\r\nimport { ParseBindTextResult } from \"./types.js\";\r\nimport { trimFn } from \"./utils.js\";\r\n\r\n// format: propPart:statePart; propPart:statePart; ...\r\n// special-propPart:\r\n// if: statePart (single binding for conditional rendering)\r\n// else: (single binding for conditional rendering, and statePart is ignored)\r\n// elseif: statePart only (single binding for conditional rendering)\r\n// for: statePart only (single binding for loop rendering)\r\n// onclick: statePart, onchange: statePart etc. (event listeners)\r\n\r\nexport function parseBindTextsForElement(bindText: string): ParseBindTextResult[] {\r\n const [ ...bindTexts ] = bindText.split(';').map(trimFn).filter(s => s.length > 0);\r\n const results = bindTexts.map((bindText): ParseBindTextResult => {\r\n const separatorIndex = bindText.indexOf(':');\r\n if (separatorIndex === -1) {\r\n raiseError(`Invalid bindText: \"${bindText}\". Missing ':' separator between propPart and statePart.`);\r\n }\r\n const propPart = bindText.slice(0, separatorIndex).trim();\r\n const statePart = bindText.slice(separatorIndex + 1).trim();\r\n if (propPart === 'else') {\r\n const pathInfo = getPathInfo('#else');\r\n return {\r\n propName: 'else',\r\n propSegments: ['else'],\r\n propModifiers: [],\r\n statePathName: '#else',\r\n statePathInfo: pathInfo,\r\n stateName: '',\r\n inFilters: [],\r\n outFilters: [],\r\n bindingType: 'else',\r\n };\r\n } else if (propPart === 'if' \r\n || propPart === 'elseif' \r\n || propPart === 'for'\r\n || propPart === 'radio'\r\n || propPart === 'checkbox'\r\n ) {\r\n const stateResult = parseStatePart(statePart);\r\n return {\r\n propName: propPart,\r\n propSegments: [propPart],\r\n propModifiers: [],\r\n inFilters: [],\r\n ...stateResult,\r\n bindingType: propPart,\r\n };\r\n } else {\r\n const stateResult = parseStatePart(statePart);\r\n const propResult = parsePropPart(propPart);\r\n if (propResult.propSegments[0].startsWith('on')) {\r\n return {\r\n ...propResult,\r\n ...stateResult,\r\n bindingType: 'event',\r\n };\r\n } else {\r\n return {\r\n ...propResult,\r\n ...stateResult,\r\n bindingType: 'prop',\r\n };\r\n }\r\n }\r\n });\r\n // check for sigle binding for 'if', 'elseif', 'else', 'for'\r\n if (results.length > 1) {\r\n const isIncludeSingleBinding = results.some(r => STRUCTURAL_BINDING_TYPE_SET.has(r.bindingType));\r\n if (isIncludeSingleBinding) {\r\n raiseError(`Invalid bindText: \"${bindText}\". 'if', 'elseif', 'else', and 'for' bindings must be single binding.`);\r\n }\r\n }\r\n return results;\r\n}\r\n\r\n","import { config } from \"../config\";\r\n\r\nconst bindTextByNode = new WeakMap<Node, string>();\r\n\r\n// format: <!--@@wcs-text:path-->\r\n// bind-stateはconfig.commentTextPrefixで変更可能\r\n// format: <!--@@wcs-for:UUID-->\r\n// bind-stateはconfig.commentForPrefixで変更可能\r\n// format: <!--@@wcs-if:UUID-->\r\n// bind-stateはconfig.commentIfPrefixで変更可能\r\n// format: <!--@@wcs-else:UUID-->\r\n// bind-stateはconfig.commentElsePrefixで変更可能\r\n// format: <!--@@wcs-elseif:UUID-->\r\n// bind-stateはconfig.commentElseIfPrefixで変更可能\r\nconst bindingTypeKeywordSet: Set<string> = new Set<string>([\r\n config.commentTextPrefix,\r\n config.commentForPrefix,\r\n config.commentIfPrefix,\r\n config.commentElseIfPrefix,\r\n config.commentElsePrefix,\r\n]);\r\n\r\n// format: <!--@@:path-->は<!--@@wcs-text:path-->と同義にする\r\nconst EMBEDDED_REGEX = new RegExp(`^\\\\s*@@\\\\s*(.*?)\\\\s*:\\\\s*(.+?)\\\\s*$`);\r\n\r\nexport function parseCommentNode(node: Node): string | null {\r\n const savedText = bindTextByNode.get(node);\r\n if (typeof savedText === \"string\") {\r\n return savedText;\r\n }\r\n if (node.nodeType !== Node.COMMENT_NODE) {\r\n return null;\r\n }\r\n const commentNode = node as Comment;\r\n const text = commentNode.data.trim();\r\n const match = EMBEDDED_REGEX.exec(text);\r\n if (match === null) {\r\n return null;\r\n }\r\n // 空の場合は wcs-text として扱う\r\n const keyword = match[1] || config.commentTextPrefix;\r\n if (!bindingTypeKeywordSet.has(keyword)) {\r\n return null;\r\n }\r\n bindTextByNode.set(node, match[2]);\r\n return match[2];\r\n}\r\n\r\nexport function getCommentNodeBindText(node: Node): string | null {\r\n return bindTextByNode.get(node) || null;\r\n}","import { parseStatePart } from \"./parseStatePart.js\";\r\nimport { ParseBindTextResult } from \"./types.js\";\r\n\r\nexport function parseBindTextForEmbeddedNode(bindText: string): ParseBindTextResult {\r\n const stateResult = parseStatePart(bindText);\r\n return {\r\n propName: 'textContent',\r\n propSegments: ['textContent'],\r\n propModifiers: [],\r\n inFilters: [],\r\n ...stateResult,\r\n bindingType: 'text',\r\n }\r\n}","import { raiseError } from \"../raiseError\";\r\nimport { getStateElementByName } from \"../stateElementByName\";\r\nimport { IFragmentInfo } from \"./types\";\r\n\r\nconst fragmentInfoByUUID = new Map<string, IFragmentInfo>();\r\n\r\nexport function setFragmentInfoByUUID(uuid: string, rootNode: Node, fragmentInfo: IFragmentInfo | null): void {\r\n if (fragmentInfo === null) {\r\n fragmentInfoByUUID.delete(uuid);\r\n } else {\r\n fragmentInfoByUUID.set(uuid, fragmentInfo);\r\n const bindingPartial = fragmentInfo.parseBindTextResult;\r\n const stateElement = getStateElementByName(rootNode, bindingPartial.stateName);\r\n if (stateElement === null) {\r\n raiseError(`State element with name \"${bindingPartial.stateName}\" not found for fragment info.`);\r\n }\r\n stateElement.setPathInfo(bindingPartial.statePathName, bindingPartial.bindingType);\r\n for(const nodeInfo of fragmentInfo.nodeInfos) {\r\n for(const nodeBindingPartial of nodeInfo.parseBindTextResults) {\r\n const nodeStateElement = getStateElementByName(rootNode, nodeBindingPartial.stateName);\r\n if (nodeStateElement === null) {\r\n raiseError(`State element with name \"${nodeBindingPartial.stateName}\" not found for fragment info node.`);\r\n }\r\n nodeStateElement.setPathInfo(nodeBindingPartial.statePathName, nodeBindingPartial.bindingType);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function getFragmentInfoByUUID(uuid: string): IFragmentInfo | null {\r\n return fragmentInfoByUUID.get(uuid) || null;\r\n}","import { config } from \"../config\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { parseBindTextsForElement } from \"../bindTextParser/parseBindTextsForElement\";\r\nimport { parseCommentNode } from \"./parseCommentNode\";\r\nimport { parseBindTextForEmbeddedNode } from \"../bindTextParser/parseBindTextForEmbeddedNode\";\r\nimport { ParseBindTextResult } from \"../bindTextParser/types\";\r\nimport { getFragmentInfoByUUID } from \"../structural/fragmentInfoByUUID\";\r\n\r\nexport function getParseBindTextResults(node: Node): ParseBindTextResult[] {\r\n if (node.nodeType === Node.ELEMENT_NODE) {\r\n const element = node as Element;\r\n const bindText = element.getAttribute(config.bindAttributeName) || '';\r\n return parseBindTextsForElement(bindText);\r\n } else if (node.nodeType === Node.COMMENT_NODE) {\r\n const bindTextOrUUID = parseCommentNode(node);\r\n if (bindTextOrUUID === null) {\r\n raiseError(`Comment node binding text not found.`);\r\n }\r\n const fragmentInfo = getFragmentInfoByUUID(bindTextOrUUID);\r\n let parseBindingTextResult = fragmentInfo?.parseBindTextResult ?? null;\r\n let uuid: string | null = null;\r\n if (parseBindingTextResult === null) {\r\n // It is not a structural fragment UUID, so treat it as bindText\r\n parseBindingTextResult = parseBindTextForEmbeddedNode(bindTextOrUUID);\r\n uuid = null;\r\n } else {\r\n uuid = bindTextOrUUID;\r\n }\r\n return [{\r\n ...parseBindingTextResult,\r\n uuid: uuid,\r\n }]\r\n }\r\n return [];\r\n}","import { config } from \"../config\";\r\nimport { parseCommentNode } from \"./parseCommentNode\";\r\n\r\n/**\r\n * data-wcs 属性または埋め込みノード<!--{{}}-->を持つノードをすべて取得する\r\n * @param root \r\n * @returns \r\n */\r\n\r\nexport function getSubscriberNodes(root: Document | Element | DocumentFragment): Node[] {\r\n const subscriberNodes: Node[] = [];\r\n const walker = document.createTreeWalker(\r\n root, \r\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT, \r\n {\r\n acceptNode(node: Node) {\r\n if (node.nodeType === Node.ELEMENT_NODE) {\r\n const element = node as Element;\r\n const hasBinding = element.hasAttribute(config.bindAttributeName);\r\n return hasBinding\r\n ? NodeFilter.FILTER_ACCEPT\r\n : NodeFilter.FILTER_SKIP;\r\n } else {\r\n // Comment node\r\n return parseCommentNode(node) !== null\r\n ? NodeFilter.FILTER_ACCEPT \r\n : NodeFilter.FILTER_SKIP;\r\n }\r\n }\r\n }\r\n );\r\n \r\n while (walker.nextNode()) {\r\n subscriberNodes.push(walker.currentNode);\r\n }\r\n return subscriberNodes;\r\n}","import { raiseError } from \"../raiseError\";\r\nimport { resolveNodePath } from \"../structural/resolveNodePath\";\r\nimport { IFragmentNodeInfo } from \"../structural/types\";\r\nimport { IBindingInfo } from \"../types\";\r\nimport { getBindingInfos } from \"./getBindingInfos\";\r\nimport { setBindingsByNode } from \"./getBindingsByNode\";\r\nimport { getParseBindTextResults } from \"./getParseBindTextResults\";\r\nimport { getSubscriberNodes } from \"./getSubscriberNodes\";\r\nimport { resolveInitializedBinding } from \"./initializeBindingPromiseByNode\";\r\n\r\nconst registeredNodeSet = new WeakSet<Node>();\r\n\r\nexport function collectNodesAndBindingInfos(\r\n root: Document | Element | DocumentFragment\r\n): [ Node[], IBindingInfo[] ] {\r\n const subscriberNodes = getSubscriberNodes(root);\r\n const allBindings: IBindingInfo[] = [];\r\n for(const node of subscriberNodes) {\r\n if (!registeredNodeSet.has(node)) {\r\n registeredNodeSet.add(node);\r\n const parseBindingTextResults = getParseBindTextResults(node);\r\n const bindings = getBindingInfos(node, parseBindingTextResults);\r\n setBindingsByNode(node, bindings);\r\n resolveInitializedBinding(node);\r\n allBindings.push(...bindings);\r\n }\r\n }\r\n return [subscriberNodes, allBindings];\r\n}\r\n\r\nexport function collectNodesAndBindingInfosByFragment(\r\n root: DocumentFragment,\r\n nodeInfos: IFragmentNodeInfo[],\r\n): [ Node[], IBindingInfo[] ] {\r\n const nodes: Node[] = [];\r\n const allBindings: IBindingInfo[] = [];\r\n for(const nodeInfo of nodeInfos) {\r\n const node = resolveNodePath(root, nodeInfo.nodePath);\r\n if (node === null) {\r\n raiseError(`Node not found by path [${nodeInfo.nodePath.join(', ')}] in fragment.`);\r\n }\r\n if (!registeredNodeSet.has(node)) {\r\n registeredNodeSet.add(node);\r\n const bindings = getBindingInfos(node, nodeInfo.parseBindTextResults);\r\n setBindingsByNode(node, bindings);\r\n resolveInitializedBinding(node);\r\n allBindings.push(...bindings);\r\n nodes.push(node);\r\n }\r\n }\r\n return [nodes, allBindings];\r\n}\r\n\r\nexport function unregisterNode(node: Node): void {\r\n registeredNodeSet.delete(node);\r\n}","import { ILoopContext } from \"./types\";\r\n\r\nconst loopContextByNode = new WeakMap<Node, ILoopContext>();\r\n\r\nexport function getLoopContextByNode(node: Node): ILoopContext | null {\r\n let paramNode: Node | null = node;\r\n while (paramNode) {\r\n const loopContext = loopContextByNode.get(paramNode);\r\n if (loopContext) {\r\n return loopContext;\r\n }\r\n paramNode = paramNode.parentNode;\r\n }\r\n return null;\r\n}\r\n\r\nexport function setLoopContextByNode(node: Node, loopContext: ILoopContext | null): void {\r\n if (loopContext === null) {\r\n loopContextByNode.delete(node);\r\n return;\r\n }\r\n loopContextByNode.set(node, loopContext);\r\n}\r\n","\r\nexport const setLoopContextAsyncSymbol: unique symbol = Symbol(\"$$setLoopContextAsync\");\r\nexport const setLoopContextSymbol: unique symbol = Symbol(\"$$setLoopContext\");\r\nexport const getByAddressSymbol: unique symbol = Symbol(\"$$getByAddress\");\r\nexport const setByAddressSymbol: unique symbol = Symbol(\"$$setByAddress\");\r\nexport const connectedCallbackSymbol: unique symbol = Symbol(\"$$connectedCallback\");\r\nexport const disconnectedCallbackSymbol: unique symbol = Symbol(\"$$disconnectedCallback\");\r\nexport const updatedCallbackSymbol: unique symbol = Symbol(\"$$updatedCallback\");\r\n","import { getLoopContextByNode } from \"../list/loopContextByNode\";\r\nimport { setLoopContextSymbol } from \"../proxy/symbols\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { getStateElementByName } from \"../stateElementByName\";\r\nimport { IBindingInfo } from \"../types\";\r\n\r\nconst handlerByHandlerKey: Map<string, (event: Event) => any> = new Map();\r\nconst bindingSetByHandlerKey: Map<string, Set<IBindingInfo>> = new Map();\r\n\r\nfunction getHandlerKey(binding: IBindingInfo): string {\r\n const modifierKey = binding.propModifiers.filter(m => m === 'prevent' || m === 'stop').sort().join(',');\r\n return `${binding.stateName}::${binding.statePathName}::${modifierKey}`;\r\n}\r\n\r\nconst stateEventHandlerFunction = (\r\n stateName: string,\r\n handlerName: string,\r\n modifiers: string[]\r\n) => (event: Event): any => {\r\n if (modifiers.includes('prevent')) event.preventDefault();\r\n if (modifiers.includes('stop')) event.stopPropagation();\r\n\r\n const node = event.target as Element;\r\n const rootNode = node.getRootNode() as Node;\r\n const stateElement = getStateElementByName(rootNode, stateName);\r\n if (stateElement === null) {\r\n raiseError(`State element with name \"${stateName}\" not found for event handler.`);\r\n }\r\n\r\n const loopContext = getLoopContextByNode(node);\r\n stateElement.createStateAsync(\"writable\", async (state) => {\r\n state[setLoopContextSymbol](loopContext, () => {\r\n const handler = state[handlerName];\r\n if (typeof handler !== \"function\") {\r\n raiseError(`Handler \"${handlerName}\" is not a function on state \"${stateName}\".`);\r\n }\r\n return Reflect.apply(handler, state, [event, ...(loopContext?.listIndex.indexes ?? [])]);\r\n });\r\n });\r\n}\r\n\r\nexport function attachEventHandler(binding: IBindingInfo): boolean {\r\n if (!binding.propName.startsWith(\"on\")) {\r\n return false;\r\n }\r\n const key = getHandlerKey(binding);\r\n let stateEventHandler = handlerByHandlerKey.get(key);\r\n if (typeof stateEventHandler === \"undefined\") {\r\n stateEventHandler = stateEventHandlerFunction(binding.stateName, binding.statePathName, binding.propModifiers);\r\n handlerByHandlerKey.set(key, stateEventHandler);\r\n }\r\n\r\n const eventName = binding.propName.slice(2);\r\n (binding.node as Element).addEventListener(eventName, stateEventHandler);\r\n\r\n let bindingSet = bindingSetByHandlerKey.get(key);\r\n if (typeof bindingSet === \"undefined\") {\r\n bindingSet = new Set<IBindingInfo>([binding]);\r\n bindingSetByHandlerKey.set(key, bindingSet);\r\n } else {\r\n bindingSet.add(binding);\r\n }\r\n return true;\r\n}\r\n\r\nexport function detachEventHandler(binding: IBindingInfo): boolean {\r\n if (!binding.propName.startsWith(\"on\")) {\r\n return false;\r\n }\r\n const key = getHandlerKey(binding);\r\n const stateEventHandler = handlerByHandlerKey.get(key);\r\n if (typeof stateEventHandler === \"undefined\") {\r\n return false;\r\n }\r\n const eventName = binding.propName.slice(2);\r\n (binding.node as Element).removeEventListener(eventName, stateEventHandler);\r\n\r\n const bindingSet = bindingSetByHandlerKey.get(key);\r\n if (typeof bindingSet === \"undefined\") {\r\n return false;\r\n }\r\n bindingSet.delete(binding);\r\n if (bindingSet.size === 0) {\r\n handlerByHandlerKey.delete(key);\r\n bindingSetByHandlerKey.delete(key);\r\n }\r\n return true;\r\n}\r\n\r\nexport const __private__ = {\r\n handlerByHandlerKey,\r\n bindingSetByHandlerKey,\r\n};\r\n\r\n","\r\nconst cache = new WeakMap<Node, string | null>();\r\n\r\nexport function getCustomElement(node: Node): string | null {\r\n const cached = cache.get(node);\r\n if (cached !== undefined) {\r\n return cached;\r\n }\r\n let value: string | null = null;\r\n try {\r\n if (node.nodeType !== Node.ELEMENT_NODE) {\r\n return value;\r\n }\r\n const element = node as Element;\r\n const tagName = element.tagName.toLowerCase();\r\n if (tagName.includes(\"-\")) {\r\n return value = tagName;\r\n }\r\n if (element.hasAttribute(\"is\")) {\r\n const is = element.getAttribute(\"is\")!;\r\n if (is.includes(\"-\")) {\r\n return value = is;\r\n }\r\n }\r\n return value;\r\n } finally {\r\n cache.set(node, value);\r\n }\r\n}\r\n","import { getCustomElement } from \"../getCustomElement\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { IWcsReactivity } from \"./types\";\r\n\r\nconst CHECK_TYPES = new Set([ 'radio', 'checkbox' ]);\r\nconst DEFAULT_VALUE_PROP_NAMES = new Set([ 'value', 'valueAsNumber', 'valueAsDate' ]);\r\n\r\nexport function isPossibleTwoWay(node: Node, propName: string): boolean {\r\n if (node.nodeType !== Node.ELEMENT_NODE) {\r\n return false;\r\n }\r\n const element = node as Element;\r\n const tagName = element.tagName.toLowerCase();\r\n if (tagName === 'input') {\r\n const inputType = (element.getAttribute('type') || 'text').toLowerCase();\r\n if (inputType === 'button') {\r\n return false;\r\n }\r\n if (CHECK_TYPES.has(inputType) && propName === 'checked') {\r\n return true;\r\n }\r\n if (DEFAULT_VALUE_PROP_NAMES.has(propName)) {\r\n return true;\r\n }\r\n }\r\n if (tagName === 'select' && propName === 'value') {\r\n return true;\r\n }\r\n if (tagName === 'textarea' && propName === 'value') {\r\n return true;\r\n }\r\n const customTagName = getCustomElement(element);\r\n if (customTagName !== null) {\r\n const customClass = customElements.get(customTagName) as any;\r\n if (typeof customClass === \"undefined\") {\r\n raiseError(`Custom element <${customTagName}> is not defined. Cannot determine if property \"${propName}\" is suitable for two-way binding.`);\r\n }\r\n const reactivityInfo: IWcsReactivity | undefined = customClass.wcsReactivity;\r\n if (reactivityInfo) {\r\n if (reactivityInfo.properties?.includes(propName) \r\n || (reactivityInfo.propertyMap?.[propName] ?? null) !== null\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}","import { isPossibleTwoWay } from \"./isPossibleTwoWay\";\r\nimport { getLoopContextByNode } from \"../list/loopContextByNode\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { getStateElementByName } from \"../stateElementByName\";\r\nimport { IBindingInfo, IFilterInfo } from \"../types\";\r\nimport { setLoopContextSymbol } from \"../proxy/symbols\";\r\nimport { getCustomElement } from \"../getCustomElement\";\r\nimport { IWcsReactivity } from \"./types\";\r\n\r\nconst handlerByHandlerKey: Map<string, (event: Event) => any> = new Map();\r\nconst bindingSetByHandlerKey: Map<string, Set<IBindingInfo>> = new Map();\r\n\r\nfunction getHandlerKey(binding: IBindingInfo, eventName: string): string {\r\n const filterKey = binding.inFilters.map(f => f.filterName + '(' + f.args.join(',') + ')').join('|');\r\n return `${binding.stateName}::${binding.propName}::${binding.statePathName}::${eventName}::${filterKey}`;\r\n}\r\n\r\nfunction getEventName(binding: IBindingInfo): string {\r\n const tagName = (binding.node as Element).tagName.toLowerCase();\r\n // 1.default event name\r\n let eventName = (tagName === 'select') ? 'change' : 'input';\r\n // 2.protocol \r\n const customTagName = getCustomElement(binding.node as Element);\r\n if (customTagName !== null) {\r\n const customClass = customElements.get(customTagName) as any;\r\n if (typeof customClass === \"undefined\") {\r\n raiseError(`Custom element <${customTagName}> is not defined. Cannot determine event name for two-way binding.`);\r\n }\r\n const reactivityInfo: IWcsReactivity | undefined = customClass.wcsReactivity;\r\n if (reactivityInfo) {\r\n if (reactivityInfo.properties?.includes(binding.propName)) {\r\n eventName = reactivityInfo.defaultEvent;\r\n }\r\n if (reactivityInfo.propertyMap?.[binding.propName]) {\r\n eventName = reactivityInfo.propertyMap[binding.propName];\r\n }\r\n }\r\n }\r\n // 3.modifier\r\n for(const modifier of binding.propModifiers) {\r\n if (modifier.startsWith('on')) {\r\n eventName = modifier.slice(2);\r\n }\r\n }\r\n return eventName;\r\n}\r\n\r\nconst twowayEventHandlerFunction = (\r\n stateName: string,\r\n propName: string,\r\n statePathName: string,\r\n inFilters: IFilterInfo[],\r\n) => (event: Event): any => {\r\n const node = event.target as Element;\r\n if (node === null) {\r\n console.warn(`[@wcstack/state] event.target is null.`);\r\n return;\r\n }\r\n if (!(propName in node)) {\r\n console.warn(`[@wcstack/state] Property \"${propName}\" does not exist on target element.`);\r\n return;\r\n }\r\n const newValue = (node as any)[propName];\r\n let filteredNewValue = newValue;\r\n for(const filter of inFilters) {\r\n filteredNewValue = filter.filterFn(filteredNewValue);\r\n }\r\n\r\n const rootNode = node.getRootNode() as Node;\r\n const stateElement = getStateElementByName(rootNode, stateName);\r\n if (stateElement === null) {\r\n raiseError(`State element with name \"${stateName}\" not found for two-way binding.`);\r\n }\r\n\r\n const loopContext = getLoopContextByNode(node);\r\n stateElement.createState(\"writable\", (state) => {\r\n state[setLoopContextSymbol](loopContext, () => {\r\n state[statePathName] = filteredNewValue;\r\n });\r\n });\r\n}\r\n\r\nexport function attachTwowayEventHandler(binding: IBindingInfo): void {\r\n const customTagName = getCustomElement(binding.node as Element);\r\n if (customTagName !== null) {\r\n const customClass = customElements.get(customTagName);\r\n if (typeof customClass === \"undefined\") {\r\n customElements.whenDefined(customTagName).then(() => {\r\n attachTwowayEventHandler(binding);\r\n });\r\n return;\r\n }\r\n }\r\n\r\n if (isPossibleTwoWay(binding.node, binding.propName) && binding.propModifiers.indexOf('ro') === -1) {\r\n const eventName = getEventName(binding);\r\n const key = getHandlerKey(binding, eventName);\r\n let twowayEventHandler = handlerByHandlerKey.get(key);\r\n if (typeof twowayEventHandler === \"undefined\") {\r\n twowayEventHandler = twowayEventHandlerFunction(\r\n binding.stateName,\r\n binding.propName,\r\n binding.statePathName,\r\n binding.inFilters\r\n );\r\n handlerByHandlerKey.set(key, twowayEventHandler);\r\n }\r\n (binding.node as Element).addEventListener(eventName, twowayEventHandler);\r\n let bindingSet = bindingSetByHandlerKey.get(key);\r\n if (typeof bindingSet === \"undefined\") {\r\n bindingSet = new Set<IBindingInfo>([binding]);\r\n bindingSetByHandlerKey.set(key, bindingSet);\r\n } else {\r\n bindingSet.add(binding);\r\n }\r\n }\r\n}\r\n\r\nexport function detachTwowayEventHandler(binding: IBindingInfo): void {\r\n const customTagName = getCustomElement(binding.node as Element);\r\n if (customTagName !== null) {\r\n const customClass = customElements.get(customTagName);\r\n if (typeof customClass === \"undefined\") {\r\n customElements.whenDefined(customTagName).then(() => {\r\n detachTwowayEventHandler(binding);\r\n });\r\n return;\r\n }\r\n }\r\n\r\n if (isPossibleTwoWay(binding.node, binding.propName) && binding.propModifiers.indexOf('ro') === -1) {\r\n const eventName = getEventName(binding);\r\n const key = getHandlerKey(binding, eventName);\r\n const twowayEventHandler = handlerByHandlerKey.get(key);\r\n if (typeof twowayEventHandler === \"undefined\") {\r\n return;\r\n }\r\n (binding.node as Element).removeEventListener(eventName, twowayEventHandler);\r\n\r\n const bindingSet = bindingSetByHandlerKey.get(key);\r\n if (typeof bindingSet === \"undefined\") {\r\n return;\r\n }\r\n bindingSet.delete(binding);\r\n if (bindingSet.size === 0) {\r\n handlerByHandlerKey.delete(key);\r\n bindingSetByHandlerKey.delete(key);\r\n }\r\n }\r\n}\r\n\r\nexport const __private__ = {\r\n handlerByHandlerKey,\r\n bindingSetByHandlerKey,\r\n getHandlerKey,\r\n getEventName,\r\n twowayEventHandlerFunction,\r\n};\r\n","import { IAbsoluteStateAddress } from \"../address/types\";\r\n\r\nconst lastListValueByAbsoluteStateAddress: WeakMap<IAbsoluteStateAddress, readonly unknown[]> = new WeakMap();\r\n\r\nexport function getLastListValueByAbsoluteStateAddress(address: IAbsoluteStateAddress): readonly unknown[] {\r\n return lastListValueByAbsoluteStateAddress.get(address) ?? [];\r\n}\r\n\r\nexport function setLastListValueByAbsoluteStateAddress(address: IAbsoluteStateAddress, value: readonly unknown[]): void {\r\n lastListValueByAbsoluteStateAddress.set(address, value);\r\n}\r\n\r\nexport function clearLastListValueByAbsoluteStateAddress(address: IAbsoluteStateAddress): void {\r\n lastListValueByAbsoluteStateAddress.delete(address);\r\n}\r\n\r\nexport function hasLastListValueByAbsoluteStateAddress(address: IAbsoluteStateAddress): boolean {\r\n return lastListValueByAbsoluteStateAddress.has(address);\r\n}\r\n","import { IStateElement } from \"../components/types\";\r\nimport { IAbsolutePathInfo, IPathInfo } from \"./types\";\r\n\r\nconst _cache: WeakMap<IStateElement, WeakMap<IPathInfo, IAbsolutePathInfo>> = new WeakMap();\r\n\r\nexport function getAbsolutePathInfo(stateElement: IStateElement, pathInfo: IPathInfo): IAbsolutePathInfo {\r\n if (_cache.has(stateElement)) {\r\n const pathMap = _cache.get(stateElement)!;\r\n if (pathMap.has(pathInfo)) {\r\n return pathMap.get(pathInfo)!;\r\n }\r\n } else {\r\n _cache.set(stateElement, new WeakMap());\r\n }\r\n const absolutePathInfo = Object.freeze(new AbsolutePathInfo(stateElement, pathInfo));\r\n _cache.get(stateElement)!.set(pathInfo, absolutePathInfo);\r\n return absolutePathInfo;\r\n}\r\n\r\nclass AbsolutePathInfo implements IAbsolutePathInfo {\r\n readonly pathInfo: IPathInfo;\r\n readonly stateName: string;\r\n readonly stateElement: IStateElement;\r\n readonly parentAbsolutePathInfo: IAbsolutePathInfo | null;\r\n constructor(stateElement: IStateElement, pathInfo: IPathInfo) {\r\n this.pathInfo = pathInfo;\r\n this.stateName = stateElement.name;\r\n this.stateElement = stateElement;\r\n if (pathInfo.parentPathInfo === null) {\r\n this.parentAbsolutePathInfo = null;\r\n } else {\r\n this.parentAbsolutePathInfo = getAbsolutePathInfo(stateElement, pathInfo.parentPathInfo);\r\n }\r\n }\r\n}","import { WILDCARD } from \"../define\";\r\nimport { IListIndex } from \"../list/types\";\r\nimport { IAbsolutePathInfo, IAbsoluteStateAddress } from \"./types\";\r\n\r\nconst _cache: WeakMap<IListIndex, WeakMap<IAbsolutePathInfo, IAbsoluteStateAddress>> = new WeakMap();\r\nconst _cacheNullListIndex: WeakMap<IAbsolutePathInfo, IAbsoluteStateAddress> = new WeakMap();\r\n\r\nclass AbsoluteStateAddress implements IAbsoluteStateAddress {\r\n readonly absolutePathInfo: IAbsolutePathInfo;\r\n readonly listIndex: IListIndex | null;\r\n private _parentAbsoluteAddress: IAbsoluteStateAddress | null | undefined;\r\n\r\n constructor(absolutePathInfo: IAbsolutePathInfo, listIndex: IListIndex | null) {\r\n this.absolutePathInfo = absolutePathInfo;\r\n this.listIndex = listIndex;\r\n }\r\n\r\n get parentAbsoluteAddress(): IAbsoluteStateAddress | null {\r\n if (typeof this._parentAbsoluteAddress !== 'undefined') {\r\n return this._parentAbsoluteAddress;\r\n }\r\n const parentAbsolutePathInfo = this.absolutePathInfo.parentAbsolutePathInfo;\r\n if (parentAbsolutePathInfo === null) {\r\n return null;\r\n }\r\n const lastSegment = this.absolutePathInfo.pathInfo.segments[this.absolutePathInfo.pathInfo.segments.length - 1];\r\n let parentListIndex: IListIndex | null = null;\r\n if (lastSegment === WILDCARD) {\r\n parentListIndex = this.listIndex?.parentListIndex ?? null;\r\n } else {\r\n parentListIndex = this.listIndex;\r\n }\r\n return this._parentAbsoluteAddress = createAbsoluteStateAddress(\r\n parentAbsolutePathInfo,\r\n parentListIndex\r\n );\r\n }\r\n}\r\n\r\nexport function createAbsoluteStateAddress(absolutePathInfo: IAbsolutePathInfo, listIndex: IListIndex | null): IAbsoluteStateAddress {\r\n if (listIndex === null) {\r\n let cached = _cacheNullListIndex.get(absolutePathInfo);\r\n if (typeof cached !== \"undefined\") {\r\n return cached;\r\n }\r\n cached = new AbsoluteStateAddress(absolutePathInfo, null);\r\n _cacheNullListIndex.set(absolutePathInfo, cached);\r\n return cached;\r\n } else {\r\n let cacheByAbsolutePathInfo = _cache.get(listIndex);\r\n if (typeof cacheByAbsolutePathInfo === \"undefined\") {\r\n cacheByAbsolutePathInfo = new WeakMap<IAbsolutePathInfo, IAbsoluteStateAddress>();\r\n _cache.set(listIndex, cacheByAbsolutePathInfo);\r\n }\r\n let cached = cacheByAbsolutePathInfo.get(absolutePathInfo);\r\n if (typeof cached !== \"undefined\") {\r\n return cached;\r\n }\r\n cached = new AbsoluteStateAddress(absolutePathInfo, listIndex);\r\n cacheByAbsolutePathInfo.set(absolutePathInfo, cached);\r\n return cached;\r\n }\r\n}\r\n","\r\nconst rootNodeByFragment: WeakMap<DocumentFragment, Node> = new WeakMap();\r\n\r\nexport function setRootNodeByFragment(fragment: DocumentFragment, rootNode: Node | null): void {\r\n if (rootNode === null) {\r\n rootNodeByFragment.delete(fragment);\r\n } else {\r\n rootNodeByFragment.set(fragment, rootNode);\r\n }\r\n}\r\n\r\nexport function getRootNodeByFragment(fragment: DocumentFragment): Node | null {\r\n return rootNodeByFragment.get(fragment) || null;\r\n}\r\n","import { IPathInfo } from \"./types.js\";\r\n\r\nconst cacheCalcWildcardLen: Map<string, number> = new Map(); \r\n\r\nexport function calcWildcardLen(pathInfo: IPathInfo, targetPathInfo: IPathInfo): number {\r\n let path1: IPathInfo;\r\n let path2: IPathInfo;\r\n if (pathInfo.wildcardCount === 0 || targetPathInfo.wildcardCount === 0) {\r\n return 0;\r\n }\r\n if (pathInfo.wildcardCount === 1 \r\n && targetPathInfo.wildcardCount > 0 \r\n && targetPathInfo.wildcardPathSet.has(pathInfo.path)) {\r\n return 1;\r\n }\r\n if (pathInfo.id < targetPathInfo.id) {\r\n path1 = pathInfo;\r\n path2 = targetPathInfo;\r\n } else {\r\n path1 = targetPathInfo;\r\n path2 = pathInfo;\r\n }\r\n const key = `${path1.path}\\t${path2.path}`;\r\n let len = cacheCalcWildcardLen.get(key);\r\n if (typeof len !== \"undefined\") {\r\n return len;\r\n }\r\n const matchPath = path1.wildcardPathSet.intersection(path2.wildcardPathSet);\r\n len = matchPath.size;\r\n cacheCalcWildcardLen.set(key, len);\r\n return len;\r\n}\r\n\r\n","import { calcWildcardLen } from \"../address/calcWildcardLen\";\r\nimport { IBindingInfo } from \"../types\";\r\nimport { getLoopContextByNode } from \"./loopContextByNode\";\r\nimport { IListIndex, ILoopContext } from \"./types\";\r\n\r\nconst listIndexByBindingInfoByLoopContext: WeakMap<ILoopContext, WeakMap<IBindingInfo, IListIndex | null>> = new WeakMap();\r\n\r\nexport function getListIndexByBindingInfo(bindingInfo: IBindingInfo): IListIndex | null {\r\n const loopContext = getLoopContextByNode(bindingInfo.node);\r\n if (loopContext === null) {\r\n return null;\r\n }\r\n let listIndexByBindingInfo = listIndexByBindingInfoByLoopContext.get(loopContext);\r\n if (typeof listIndexByBindingInfo === \"undefined\") {\r\n listIndexByBindingInfo = new WeakMap<IBindingInfo, IListIndex | null>();\r\n listIndexByBindingInfoByLoopContext.set(loopContext, listIndexByBindingInfo);\r\n } else {\r\n const listIndex = listIndexByBindingInfo.get(bindingInfo);\r\n if (typeof listIndex !== \"undefined\") {\r\n return listIndex;\r\n }\r\n }\r\n\r\n let listIndex: IListIndex | null = null;\r\n try {\r\n const wildcardLen = calcWildcardLen(loopContext.pathInfo, bindingInfo.statePathInfo);\r\n if (wildcardLen > 0) {\r\n listIndex = loopContext.listIndex.at(wildcardLen - 1);\r\n }\r\n return listIndex;\r\n } finally {\r\n listIndexByBindingInfo.set(bindingInfo, listIndex);\r\n }\r\n\r\n}\r\n","import { getAbsolutePathInfo } from \"../address/AbsolutePathInfo\";\r\nimport { createAbsoluteStateAddress } from \"../address/AbsoluteStateAddress\";\r\nimport { IAbsoluteStateAddress } from \"../address/types\";\r\nimport { getRootNodeByFragment } from \"../apply/rootNodeByFragment\";\r\nimport { getListIndexByBindingInfo } from \"../list/getListIndexByBindingInfo\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { getStateElementByName } from \"../stateElementByName\";\r\nimport { IBindingInfo } from \"./types\";\r\n\r\nconst absoluteStateAddressByBinding: WeakMap<IBindingInfo, IAbsoluteStateAddress> = new WeakMap();\r\n\r\nexport function getAbsoluteStateAddressByBinding(binding: IBindingInfo): IAbsoluteStateAddress {\r\n // 切断されていても、キャッシュされていれば絶対状態アドレスを返す。\r\n let absoluteStateAddress: IAbsoluteStateAddress | null = null;\r\n absoluteStateAddress = absoluteStateAddressByBinding.get(binding) || null;\r\n if (absoluteStateAddress !== null) {\r\n return absoluteStateAddress;\r\n }\r\n\r\n let rootNode: Node | null = binding.replaceNode.getRootNode() as Node;\r\n // binding.replaceNodeはisConnected=trueになっていることが前提、切断されている場合はraiseErrorを返す\r\n if (binding.replaceNode.isConnected === false) {\r\n // DocumentFragmentでバッファリングされている場合は、ルートノードをDocumentFragmentから実際のルートノードに切り替える\r\n const rootNodeByFragment = getRootNodeByFragment(rootNode as DocumentFragment);\r\n if (rootNodeByFragment === null) {\r\n raiseError(`Cannot get absolute state address for disconnected binding: ${binding.bindingType} ${binding.statePathName} on ${binding.node.nodeName}`);\r\n } else {\r\n rootNode = rootNodeByFragment;\r\n }\r\n }\r\n\r\n const listIndex = getListIndexByBindingInfo(binding);\r\n const stateElement = getStateElementByName(rootNode, binding.stateName);\r\n if (stateElement === null) {\r\n raiseError(`State element with name \"${binding.stateName}\" not found for binding.`);\r\n }\r\n const absolutePathInfo = getAbsolutePathInfo(stateElement, binding.statePathInfo);\r\n absoluteStateAddress = \r\n createAbsoluteStateAddress(absolutePathInfo, listIndex);\r\n absoluteStateAddressByBinding.set(binding, absoluteStateAddress);\r\n return absoluteStateAddress;\r\n}\r\n\r\nexport function clearAbsoluteStateAddressByBinding(binding: IBindingInfo) {\r\n absoluteStateAddressByBinding.delete(binding);\r\n}","import { IStateElement } from \"../components/types\";\r\n\r\nconst completeByStateElementByWebComponent = new WeakMap<Element, WeakMap<IStateElement, boolean>>();\r\n\r\nexport function markWebComponentAsComplete(webComponent: Element, stateElement: IStateElement): void {\r\n let completeByStateElement = completeByStateElementByWebComponent.get(webComponent);\r\n if (!completeByStateElement) {\r\n completeByStateElement = new WeakMap<IStateElement, boolean>();\r\n completeByStateElementByWebComponent.set(webComponent, completeByStateElement);\r\n }\r\n completeByStateElement.set(stateElement, true);\r\n}\r\n\r\nexport function isWebComponentComplete(webComponent: Element, stateElement: IStateElement): boolean {\r\n const completeByStateElement = completeByStateElementByWebComponent.get(webComponent);\r\n if (!completeByStateElement) {\r\n return false;\r\n }\r\n return completeByStateElement.get(stateElement) === true;\r\n}\r\n","import { IBindingInfo } from \"../types\";\r\nimport { IApplyContext } from \"./types\";\r\n\r\nexport function applyChangeToAttribute(binding: IBindingInfo, _context: IApplyContext, newValue: unknown): void {\r\n const element = binding.node as Element;\r\n const attrName = binding.propSegments[1];\r\n if (element.getAttribute(attrName) !== newValue) {\r\n element.setAttribute(attrName, newValue as string);\r\n }\r\n}\r\n","\r\nexport function createEmptyArray<T>(): Readonly<Array<T>> {\r\n return Object.freeze<Array<T>>([]);\r\n}\r\n","import { IFilterInfo } from \"../binding/types.js\";\r\n\r\nexport function getFilteredValue(value: any, filters: IFilterInfo[]) {\r\n let filteredValue = value;\r\n for(const filter of filters) {\r\n filteredValue = filter.filterFn(filteredValue);\r\n }\r\n return filteredValue;\r\n}\r\n","import { createEmptyArray } from \"../createEmptyArray\";\r\nimport { IBindingInfo } from \"../types\";\r\nimport { getFilteredValue } from \"./getFilteredValue\";\r\nimport { IApplyContext } from \"./types\";\r\n\r\nconst EMPTY_ARRAY = createEmptyArray<unknown>();\r\n\r\nexport function applyChangeToCheckbox(binding: IBindingInfo, _context: IApplyContext, newValue: unknown): void {\r\n const element = binding.node as HTMLInputElement;\r\n const elementValue = element.value;\r\n const elementFilteredValue = getFilteredValue(elementValue, binding.inFilters);\r\n const normalizedNewValue = Array.isArray(newValue) ? newValue : EMPTY_ARRAY;\r\n element.checked = normalizedNewValue.includes(elementFilteredValue);\r\n}\r\n","import { raiseError } from \"../raiseError\";\r\nimport { IBindingInfo } from \"../types\";\r\nimport { IApplyContext } from \"./types\";\r\n\r\nexport function applyChangeToClass(binding: IBindingInfo, _context: IApplyContext, newValue: unknown): void {\r\n const element = binding.node as Element;\r\n const className = binding.propSegments[1];\r\n if (typeof newValue !== 'boolean') {\r\n raiseError(`Invalid value for class application: expected boolean, got ${typeof newValue}`);\r\n }\r\n element.classList.toggle(className, newValue as boolean);\r\n}","import { WILDCARD } from \"../define\";\r\nimport { IListIndex } from \"../list/types\";\r\nimport { IPathInfo, IStateAddress } from \"./types\";\r\n\r\nconst _cache: WeakMap<IListIndex, WeakMap<IPathInfo, IStateAddress>> = new WeakMap();\r\nconst _cacheNullListIndex: WeakMap<IPathInfo, IStateAddress> = new WeakMap();\r\n\r\nclass StateAddress implements IStateAddress {\r\n readonly pathInfo: IPathInfo;\r\n readonly listIndex: IListIndex | null;\r\n private _parentAddress: IStateAddress | null | undefined;\r\n\r\n constructor(pathInfo: IPathInfo, listIndex: IListIndex | null) {\r\n this.pathInfo = pathInfo;\r\n this.listIndex = listIndex;\r\n }\r\n\r\n get parentAddress(): IStateAddress | null {\r\n if (typeof this._parentAddress !== 'undefined') {\r\n return this._parentAddress;\r\n }\r\n const parentPathInfo = this.pathInfo.parentPathInfo;\r\n if (parentPathInfo === null) {\r\n return null;\r\n }\r\n const lastSegment = this.pathInfo.segments[this.pathInfo.segments.length - 1];\r\n let parentListIndex: IListIndex | null = null;\r\n if (lastSegment === WILDCARD) {\r\n parentListIndex = this.listIndex?.parentListIndex ?? null;\r\n } else {\r\n parentListIndex = this.listIndex;\r\n }\r\n return this._parentAddress = createStateAddress(parentPathInfo, parentListIndex);\r\n }\r\n}\r\n\r\nexport function createStateAddress(pathInfo: IPathInfo, listIndex: IListIndex | null): IStateAddress {\r\n if (listIndex === null) {\r\n let cached = _cacheNullListIndex.get(pathInfo);\r\n if (typeof cached !== \"undefined\") {\r\n return cached;\r\n }\r\n cached = new StateAddress(pathInfo, null);\r\n _cacheNullListIndex.set(pathInfo, cached);\r\n return cached;\r\n } else {\r\n let cacheByPathInfo = _cache.get(listIndex);\r\n if (typeof cacheByPathInfo === \"undefined\") {\r\n cacheByPathInfo = new WeakMap<IPathInfo, IStateAddress>();\r\n _cache.set(listIndex, cacheByPathInfo);\r\n }\r\n let cached = cacheByPathInfo.get(pathInfo);\r\n if (typeof cached !== \"undefined\") {\r\n return cached;\r\n }\r\n cached = new StateAddress(pathInfo, listIndex);\r\n cacheByPathInfo.set(pathInfo, cached);\r\n return cached;\r\n }\r\n}","import { IContent } from \"../structural/types\";\r\nimport { IBindingInfo } from \"../types\";\r\n\r\nconst indexBindingsByContent: WeakMap<IContent, IBindingInfo[]> = new WeakMap();\r\n\r\nexport function getIndexBindingsByContent(content: IContent): IBindingInfo[] {\r\n return indexBindingsByContent.get(content) ?? [];\r\n}\r\n\r\nexport function setIndexBindingsByContent(content: IContent, bindings: IBindingInfo[]): void {\r\n indexBindingsByContent.set(content, bindings);\r\n}\r\n","/* v8 ignore file */\r\nexport {};\r\n\r\ndeclare global {\r\n interface Set<T> {\r\n difference(other: Set<T>): Set<T>;\r\n intersection(other: Set<T>): Set<T>;\r\n }\r\n}\r\n\r\nif (!Set.prototype.difference) {\r\n Set.prototype.difference = function <T>(this: Set<T>, other: Set<T>): Set<T> {\r\n const result = new Set(this);\r\n for (const elem of other) {\r\n result.delete(elem);\r\n }\r\n return result;\r\n };\r\n}\r\n\r\nif (!Set.prototype.intersection) {\r\n Set.prototype.intersection = function <T>(this: Set<T>, other: Set<T>): Set<T> {\r\n const result = new Set<T>();\r\n for (const elem of other) {\r\n if (this.has(elem)) {\r\n result.add(elem);\r\n }\r\n }\r\n return result;\r\n };\r\n}\r\n","\r\nlet count = 0;\r\nexport function getUUID(): string {\r\n return `u${(count++).toString(36)}`;\r\n}\r\n","import { getUUID } from \"../getUUID\";\r\nimport { IListIndex } from \"./types\";\r\n\r\nlet version = 0;\r\n\r\nclass ListIndex implements IListIndex {\r\n readonly uuid = getUUID();\r\n readonly parentListIndex: IListIndex | null;\r\n readonly position: number;\r\n readonly length: number;\r\n\r\n private _index: number;\r\n private _version: number;\r\n private _indexes: number[] | undefined;\r\n private _listIndexes: WeakRef<IListIndex>[] | undefined;\r\n\r\n /**\r\n * Creates a new ListIndex instance.\r\n * \r\n * @param parentListIndex - Parent list index for nested loops, or null for top-level\r\n * @param index - Current index value in the loop\r\n */\r\n constructor(parentListIndex: IListIndex | null, index: number) {\r\n this.parentListIndex = parentListIndex;\r\n this.position = parentListIndex ? parentListIndex.position + 1 : 0;\r\n this.length = this.position + 1;\r\n this._index = index;\r\n this._version = version;\r\n }\r\n\r\n /**\r\n * Gets current index value.\r\n * \r\n * @returns Current index number\r\n */\r\n get index() {\r\n return this._index;\r\n }\r\n \r\n /**\r\n * Sets index value and updates version.\r\n * \r\n * @param value - New index value\r\n */\r\n set index(value: number) {\r\n this._index = value;\r\n this._version = ++version;\r\n this.indexes[this.position] = value;\r\n }\r\n\r\n /**\r\n * Gets current version number for change detection.\r\n * \r\n * @returns Version number\r\n */\r\n get version(): number {\r\n return this._version;\r\n }\r\n\r\n /**\r\n * Checks if parent indexes have changed since last access.\r\n * \r\n * @returns true if parent has newer version, false otherwise\r\n */\r\n get dirty(): boolean {\r\n if (this.parentListIndex === null) {\r\n return false;\r\n } else {\r\n return this.parentListIndex.dirty || this.parentListIndex.version > this._version;\r\n }\r\n }\r\n\r\n /**\r\n * Gets array of all index values from root to current level.\r\n * Rebuilds array if parent indexes have changed (dirty).\r\n * \r\n * @returns Array of index values\r\n */\r\n get indexes(): number[] {\r\n if (this.parentListIndex === null) {\r\n if (typeof this._indexes === \"undefined\") {\r\n this._indexes = [this._index];\r\n }\r\n } else {\r\n if (typeof this._indexes === \"undefined\" || this.dirty) {\r\n this._indexes = [...this.parentListIndex.indexes, this._index];\r\n this._version = version;\r\n }\r\n }\r\n return this._indexes;\r\n }\r\n\r\n /**\r\n * Gets array of WeakRef to all ListIndex instances from root to current level.\r\n * \r\n * @returns Array of WeakRef<IListIndex>\r\n */\r\n get listIndexes(): WeakRef<IListIndex>[] {\r\n if (this.parentListIndex === null) {\r\n if (typeof this._listIndexes === \"undefined\") {\r\n this._listIndexes = [new WeakRef(this)];\r\n }\r\n } else {\r\n if (typeof this._listIndexes === \"undefined\") {\r\n this._listIndexes = [...this.parentListIndex.listIndexes, new WeakRef(this)];\r\n }\r\n }\r\n return this._listIndexes;\r\n }\r\n\r\n /**\r\n * Gets variable name for this loop index ($1, $2, etc.).\r\n * \r\n * @returns Variable name string\r\n */\r\n get varName(): string {\r\n return `$${this.position + 1}`;\r\n }\r\n\r\n /**\r\n * Gets ListIndex at specified position in hierarchy.\r\n * Supports negative indexing from end.\r\n * \r\n * @param pos - Position index (0-based, negative for from end)\r\n * @returns ListIndex at position or null if not found/garbage collected\r\n */\r\n at(pos: number): IListIndex | null {\r\n if (pos >= 0) {\r\n return this.listIndexes[pos]?.deref() || null;\r\n } else {\r\n return this.listIndexes[this.listIndexes.length + pos]?.deref() || null;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create ListIndex instance.\r\n * \r\n * @param parentListIndex - Parent list index for nested loops, or null for top-level\r\n * @param index - Current index value in the loop\r\n * @returns New IListIndex instance\r\n */\r\nexport function createListIndex(parentListIndex: IListIndex | null, index: number): IListIndex {\r\n return new ListIndex(parentListIndex, index);\r\n}\r\n","import { IListIndex } from \"./types\";\r\n\r\nconst listIndexesByList = new WeakMap<readonly unknown[], IListIndex[]>();\r\n\r\nexport function getListIndexesByList(list: readonly unknown[]): IListIndex[] | null {\r\n return listIndexesByList.get(list) || null;\r\n}\r\n\r\nexport function setListIndexesByList(list: readonly unknown[], listIndexes: IListIndex[] | null): void {\r\n if (listIndexes === null) {\r\n listIndexesByList.delete(list);\r\n return;\r\n }\r\n listIndexesByList.set(list, listIndexes);\r\n}","import \"../polyfills\";\r\nimport { createListIndex } from \"./createListIndex\";\r\nimport { getListIndexesByList, setListIndexesByList } from \"./listIndexesByList\";\r\nimport { IListDiff, IListIndex } from \"./types\";\r\n\r\nconst listDiffByOldListByNewList = new WeakMap<readonly unknown[], WeakMap<readonly unknown[], IListDiff>>();\r\n\r\nconst EMPTY_LIST = Object.freeze([]);\r\nconst EMPTY_SET = new Set<IListIndex>();\r\n\r\nfunction getListDiff(rawOldList: readonly unknown[], rawNewList: readonly unknown[]): IListDiff | null {\r\n const oldList = (Array.isArray(rawOldList) && rawOldList.length > 0) ? rawOldList : EMPTY_LIST;\r\n const newList = (Array.isArray(rawNewList) && rawNewList.length > 0) ? rawNewList : EMPTY_LIST;\r\n let diffByNewList = listDiffByOldListByNewList.get(oldList);\r\n if (!diffByNewList) {\r\n return null;\r\n }\r\n return diffByNewList.get(newList) || null;\r\n}\r\n\r\nfunction setListDiff(oldList: readonly unknown[], newList: readonly unknown[], diff: IListDiff): void {\r\n let diffByNewList = listDiffByOldListByNewList.get(oldList);\r\n if (!diffByNewList) {\r\n diffByNewList = new WeakMap<readonly unknown[], IListDiff>();\r\n listDiffByOldListByNewList.set(oldList, diffByNewList);\r\n }\r\n diffByNewList.set(newList, diff);\r\n}\r\n/**\r\n * Checks if two lists are identical by comparing length and each element.\r\n * @param oldList - Previous list to compare\r\n * @param newList - New list to compare\r\n * @returns True if lists are identical, false otherwise\r\n */\r\nfunction isSameList(oldList: readonly unknown[], newList: readonly unknown[]): boolean {\r\n if (oldList.length !== newList.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < oldList.length; i++) {\r\n if (oldList[i] !== newList[i]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Creates or updates list indexes by comparing old and new lists.\r\n * Optimizes by reusing existing list indexes when values match.\r\n * @param parentListIndex - Parent list index for nested lists, or null for top-level\r\n * @param oldList - Previous list (will be normalized to array)\r\n * @param newList - New list (will be normalized to array)\r\n * @param oldIndexes - Array of existing list indexes to potentially reuse\r\n * @returns Array of list indexes for the new list\r\n */\r\nexport function createListDiff(\r\n parentListIndex: IListIndex | null,\r\n rawOldList: unknown,\r\n rawNewList: unknown,\r\n): IListDiff {\r\n // Normalize inputs to arrays (handles null/undefined)\r\n const oldList: readonly unknown[] = (Array.isArray(rawOldList) && rawOldList.length > 0) ? rawOldList : EMPTY_LIST;\r\n const newList: readonly unknown[] = (Array.isArray(rawNewList) && rawNewList.length > 0) ? rawNewList : EMPTY_LIST;\r\n const cachedDiff = getListDiff(oldList, newList);\r\n if (cachedDiff) {\r\n return cachedDiff;\r\n }\r\n const oldIndexes = getListIndexesByList(oldList) || [];\r\n let retValue: IListDiff | undefined;\r\n try {\r\n // Early return for empty list\r\n if (newList.length === 0) {\r\n return retValue = {\r\n oldIndexes: oldIndexes,\r\n newIndexes: [] as IListIndex[],\r\n changeIndexSet: EMPTY_SET,\r\n deleteIndexSet: new Set<IListIndex>(oldIndexes),\r\n addIndexSet: EMPTY_SET,\r\n };\r\n }\r\n // If old list was empty, create all new indexes\r\n let newIndexes: IListIndex[] | null = getListIndexesByList(newList);\r\n if (oldList.length === 0) {\r\n if (newIndexes === null) {\r\n newIndexes = [];\r\n for(let i = 0; i < newList.length; i++) {\r\n const newListIndex = createListIndex(parentListIndex, i);\r\n newIndexes.push(newListIndex);\r\n }\r\n }\r\n return retValue = {\r\n oldIndexes: oldIndexes,\r\n newIndexes: newIndexes,\r\n changeIndexSet: EMPTY_SET,\r\n deleteIndexSet: EMPTY_SET,\r\n addIndexSet: new Set<IListIndex>(newIndexes),\r\n };\r\n }\r\n // If lists are identical, return existing indexes unchanged (optimization)\r\n if (isSameList(oldList, newList)) {\r\n return retValue = {\r\n oldIndexes: oldIndexes,\r\n newIndexes: oldIndexes,\r\n changeIndexSet: EMPTY_SET,\r\n deleteIndexSet: EMPTY_SET,\r\n addIndexSet: EMPTY_SET,\r\n };\r\n }\r\n // Use index-based map for efficiency\r\n // Supports duplicate values by storing array of indexes\r\n const indexByValue = new Map<unknown, number[]>();\r\n for(let i = 0; i < oldList.length; i++) {\r\n const val = oldList[i];\r\n let indexes = indexByValue.get(val);\r\n if (!indexes) {\r\n indexes = [];\r\n indexByValue.set(val, indexes);\r\n }\r\n indexes.push(i);\r\n }\r\n if (newIndexes !== null) {\r\n return calcDiffIndexes(oldList, newList, oldIndexes, newIndexes, indexByValue);\r\n }\r\n newIndexes = [];\r\n\r\n // Build new indexes array by matching values with old list\r\n const changeIndexSet: Set<IListIndex> = new Set();\r\n const addIndexSet: Set<IListIndex> = new Set();\r\n for(let i = 0; i < newList.length; i++) {\r\n const newValue = newList[i];\r\n const existingIndexes = indexByValue.get(newValue);\r\n const oldIndex = existingIndexes && existingIndexes.length > 0 ? existingIndexes.shift() : undefined;\r\n \r\n if (typeof oldIndex === \"undefined\") {\r\n // New element\r\n const newListIndex = createListIndex(parentListIndex, i);\r\n newIndexes.push(newListIndex);\r\n addIndexSet.add(newListIndex);\r\n } else {\r\n // Reuse existing element\r\n const existingListIndex = oldIndexes[oldIndex];\r\n // Update index if position changed\r\n if (existingListIndex.index !== i) {\r\n existingListIndex.index = i;\r\n changeIndexSet.add(existingListIndex);\r\n }\r\n newIndexes.push(existingListIndex);\r\n }\r\n }\r\n \r\n const deleteIndexSet: Set<IListIndex> = (new Set(oldIndexes)).difference(new Set(newIndexes));\r\n return retValue = {\r\n oldIndexes: oldIndexes,\r\n newIndexes: newIndexes,\r\n changeIndexSet: changeIndexSet,\r\n deleteIndexSet: deleteIndexSet,\r\n addIndexSet: addIndexSet,\r\n };\r\n } finally {\r\n if (typeof retValue !== \"undefined\") {\r\n setListDiff(oldList, newList, retValue);\r\n setListIndexesByList(newList, retValue.newIndexes);\r\n }\r\n }\r\n}\r\n\r\nfunction calcDiffIndexes(\r\n oldList: readonly unknown[],\r\n newList: readonly unknown[],\r\n oldIndexes: IListIndex[],\r\n newIndexes: IListIndex[],\r\n indexByValue: Map<unknown, number[]>\r\n): IListDiff {\r\n const newIndexSet: Set<IListIndex> = new Set(newIndexes);\r\n const oldIndexSet: Set<IListIndex> = new Set(oldIndexes);\r\n const changeIndexSet: Set<IListIndex> = new Set();\r\n const addIndexSet: Set<IListIndex> = newIndexSet.difference(oldIndexSet);\r\n const deleteIndexSet: Set<IListIndex> = oldIndexSet.difference(newIndexSet);\r\n for(let i = 0; i < newList.length; i++) {\r\n const newValue = newList[i];\r\n const existingIndexes = indexByValue.get(newValue);\r\n const oldIndex = existingIndexes && existingIndexes.length > 0 ? existingIndexes.shift() : undefined;\r\n if (typeof oldIndex !== \"undefined\") {\r\n const existingListIndex = oldIndexes[oldIndex];\r\n if (existingListIndex.index !== i) {\r\n // 位置が違うことだけを記録 \r\n changeIndexSet.add(existingListIndex);\r\n }\r\n }\r\n }\r\n return {\r\n oldIndexes: oldIndexes,\r\n newIndexes: newIndexes,\r\n changeIndexSet: changeIndexSet,\r\n deleteIndexSet: deleteIndexSet,\r\n addIndexSet: addIndexSet,\r\n };\r\n}","import { IAbsoluteStateAddress } from \"../address/types\";\r\nimport { IBindingInfo } from \"./types\";\r\n\r\nconst bindingSetByAbsoluteStateAddress: WeakMap<IAbsoluteStateAddress, Set<IBindingInfo>> = new WeakMap();\r\n\r\nexport function getBindingSetByAbsoluteStateAddress(absoluteStateAddress: IAbsoluteStateAddress): Set<IBindingInfo> {\r\n let bindingSet: Set<IBindingInfo> | null = null;\r\n bindingSet = bindingSetByAbsoluteStateAddress.get(absoluteStateAddress) || null;\r\n if (bindingSet === null) {\r\n bindingSet = new Set();\r\n bindingSetByAbsoluteStateAddress.set(absoluteStateAddress, bindingSet);\r\n }\r\n return bindingSet;\r\n}\r\n\r\nexport function addBindingByAbsoluteStateAddress(absoluteStateAddress: IAbsoluteStateAddress, binding: IBindingInfo): void {\r\n const bindingSet = getBindingSetByAbsoluteStateAddress(absoluteStateAddress);\r\n bindingSet.add(binding);\r\n}\r\n\r\nexport function clearBindingSetByAbsoluteStateAddress(absoluteStateAddress: IAbsoluteStateAddress): void {\r\n bindingSetByAbsoluteStateAddress.delete(absoluteStateAddress);\r\n}\r\n\r\nexport function removeBindingByAbsoluteStateAddress(absoluteStateAddress: IAbsoluteStateAddress, binding: IBindingInfo): void {\r\n const bindingSet = getBindingSetByAbsoluteStateAddress(absoluteStateAddress);\r\n bindingSet.delete(binding);\r\n}","import { createStateAddress } from \"../address/StateAddress\";\r\nimport { IStateAddress } from \"../address/types\";\r\nimport { getListIndexByBindingInfo } from \"../list/getListIndexByBindingInfo\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { IBindingInfo } from \"../types\";\r\n\r\nconst stateAddressByBindingInfo: WeakMap<IBindingInfo, IStateAddress> = new WeakMap();\r\n\r\nexport function getStateAddressByBindingInfo(bindingInfo: IBindingInfo) {\r\n let stateAddress: IStateAddress | null = null;\r\n stateAddress = stateAddressByBindingInfo.get(bindingInfo) || null;\r\n if (stateAddress !== null) {\r\n return stateAddress;\r\n }\r\n if (bindingInfo.statePathInfo.wildcardCount > 0) {\r\n const listIndex = getListIndexByBindingInfo(bindingInfo);\r\n if (listIndex === null) {\r\n raiseError(`Cannot resolve state address for binding with wildcard statePathName \"${bindingInfo.statePathName}\" because list index is null.`);\r\n }\r\n stateAddress = createStateAddress(bindingInfo.statePathInfo, listIndex);\r\n } else {\r\n stateAddress = createStateAddress(bindingInfo.statePathInfo, null);\r\n }\r\n stateAddressByBindingInfo.set(bindingInfo, stateAddress);\r\n return stateAddress;\r\n}\r\n\r\n// call for change loopContext\r\nexport function clearStateAddressByBindingInfo(bindingInfo: IBindingInfo) {\r\n stateAddressByBindingInfo.delete(bindingInfo);\r\n}","import { IContent } from \"../structural/types\";\r\nimport { IBindingInfo } from \"../types\";\r\n\r\nconst bindingsByContent: WeakMap<IContent, IBindingInfo[]> = new WeakMap();\r\n\r\nexport function getBindingsByContent(content: IContent): IBindingInfo[] {\r\n return bindingsByContent.get(content) ?? [];\r\n}\r\n\r\nexport function setBindingsByContent(content: IContent, bindings: IBindingInfo[]): void {\r\n bindingsByContent.set(content, bindings);\r\n}\r\n","import { IContent } from \"../structural/types\";\r\n\r\nconst nodesByContent: WeakMap<IContent, Node[]> = new WeakMap();\r\n\r\nexport function getNodesByContent(content: IContent): Node[] {\r\n return nodesByContent.get(content) ?? [];\r\n}\r\n\r\nexport function setNodesByContent(content: IContent, nodes: Node[]): void {\r\n nodesByContent.set(content, nodes);\r\n}\r\n","import { setLoopContextByNode } from \"../list/loopContextByNode\";\r\nimport { ILoopContext } from \"../list/types\";\r\nimport { IContent } from \"../structural/types\";\r\nimport { getNodesByContent } from \"./nodesByContent\";\r\n\r\nexport function bindLoopContextToContent(content: IContent, loopContext: ILoopContext | null): void {\r\n const nodes = getNodesByContent(content);\r\n for(const node of nodes) {\r\n setLoopContextByNode(node, loopContext);\r\n }\r\n}\r\n\r\nexport function unbindLoopContextToContent(content: IContent): void {\r\n const nodes = getNodesByContent(content);\r\n for(const node of nodes) {\r\n setLoopContextByNode(node, null);\r\n }\r\n}\r\n","import { applyChange } from \"../apply/applyChange\";\r\nimport { IApplyContext } from \"../apply/types\";\r\nimport { clearAbsoluteStateAddressByBinding, getAbsoluteStateAddressByBinding } from \"../binding/getAbsoluteStateAddressByBinding\";\r\nimport { addBindingByAbsoluteStateAddress, removeBindingByAbsoluteStateAddress } from \"../binding/getBindingSetByAbsoluteStateAddress\";\r\nimport { clearStateAddressByBindingInfo } from \"../binding/getStateAddressByBindingInfo\";\r\nimport { getBindingsByContent } from \"../bindings/bindingsByContent\";\r\nimport { bindLoopContextToContent, unbindLoopContextToContent } from \"../bindings/bindLoopContextToContent\";\r\nimport { ILoopContext } from \"../list/types\";\r\nimport { IContent } from \"./types\";\r\n\r\nexport function activateContent(\r\n content: IContent, \r\n loopContext: ILoopContext | null,\r\n context: IApplyContext,\r\n): void {\r\n bindLoopContextToContent(content, loopContext);\r\n const bindings = getBindingsByContent(content);\r\n for(const binding of bindings) {\r\n const absoluteStateAddress = getAbsoluteStateAddressByBinding(binding);\r\n addBindingByAbsoluteStateAddress(absoluteStateAddress, binding);\r\n applyChange(binding, context);\r\n }\r\n}\r\n\r\nexport function deactivateContent(\r\n content: IContent\r\n): void {\r\n if (!content.mounted) {\r\n return;\r\n }\r\n const bindings = getBindingsByContent(content);\r\n for(const binding of bindings) {\r\n const absoluteStateAddress = getAbsoluteStateAddressByBinding(binding);\r\n removeBindingByAbsoluteStateAddress(absoluteStateAddress, binding);\r\n clearAbsoluteStateAddressByBinding(binding);\r\n clearStateAddressByBindingInfo(binding);\r\n }\r\n unbindLoopContextToContent(content);\r\n}\r\n\r\n","\r\nexport function createEmptySet<T>(): Readonly<Set<T>> {\r\n return Object.freeze(new Set<T>());\r\n}\r\n","import { createEmptySet } from \"../createEmptySet\";\r\nimport { IContent } from \"./types\";\r\n\r\nconst contentSetByNode = new WeakMap<Node, Set<IContent>>();\r\n\r\nconst EMPTY_SET = createEmptySet<IContent>();\r\n\r\nexport function setContentByNode(node: Node, content: IContent): void {\r\n const contents = contentSetByNode.get(node);\r\n if (contents) {\r\n contents.add(content);\r\n } else {\r\n contentSetByNode.set(node, new Set([content]));\r\n }\r\n}\r\n\r\nexport function getContentSetByNode(node: Node): Readonly<Set<IContent>> {\r\n const contents = contentSetByNode.get(node);\r\n if (typeof contents !== \"undefined\") {\r\n return contents;\r\n }\r\n return EMPTY_SET;\r\n}\r\n\r\nexport function deleteContentByNode(node: Node, content: IContent): void {\r\n const contents = contentSetByNode.get(node);\r\n if (contents) {\r\n contents.delete(content);\r\n if (contents.size === 0) {\r\n contentSetByNode.delete(node);\r\n }\r\n }\r\n}","import { clearAbsoluteStateAddressByBinding } from \"../binding/getAbsoluteStateAddressByBinding.js\";\r\nimport { clearStateAddressByBindingInfo } from \"../binding/getStateAddressByBindingInfo.js\";\r\nimport { getBindingsByContent, setBindingsByContent } from \"../bindings/bindingsByContent.js\";\r\nimport { setIndexBindingsByContent } from \"../bindings/indexBindingsByContent.js\";\r\nimport { initializeBindingsByFragment } from \"../bindings/initializeBindings.js\";\r\nimport { setNodesByContent } from \"../bindings/nodesByContent.js\";\r\nimport { INDEX_BY_INDEX_NAME } from \"../define.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { IBindingInfo } from \"../types.js\";\r\nimport { getContentSetByNode, setContentByNode } from \"./contentsByNode.js\";\r\nimport { getFragmentInfoByUUID } from \"./fragmentInfoByUUID.js\";\r\nimport { IContent } from \"./types.js\";\r\n\r\nconst recursiveBindingTypes = new Set(['if', 'elseif', 'else', 'for']);\r\n\r\nclass Content implements IContent {\r\n private _content: DocumentFragment;\r\n private _childNodeArray: Node[] = [];\r\n private _firstNode: Node | null = null;\r\n private _lastNode: Node | null = null;\r\n private _mounted: boolean = false;\r\n constructor(content: DocumentFragment) {\r\n this._content = content;\r\n this._childNodeArray = Array.from(this._content.childNodes);\r\n this._firstNode = this._childNodeArray.length > 0 ? this._childNodeArray[0] : null;\r\n this._lastNode = this._childNodeArray.length > 0 ? this._childNodeArray[this._childNodeArray.length - 1] : null;\r\n }\r\n\r\n get firstNode(): Node | null {\r\n return this._firstNode;\r\n }\r\n\r\n get lastNode(): Node | null {\r\n return this._lastNode;\r\n }\r\n\r\n get mounted(): boolean {\r\n return this._mounted;\r\n }\r\n\r\n appendTo(targetNode: Node): void {\r\n for(const node of this._childNodeArray) {\r\n targetNode.appendChild(node);\r\n }\r\n this._mounted = true;\r\n }\r\n\r\n mountAfter(targetNode: Node): void {\r\n const parentNode = targetNode.parentNode;\r\n const nextSibling = targetNode.nextSibling;\r\n if (parentNode) {\r\n for(const node of this._childNodeArray) {\r\n parentNode.insertBefore(node, nextSibling);\r\n }\r\n }\r\n this._mounted = true;\r\n }\r\n\r\n unmount(): void {\r\n for(const node of this._childNodeArray) {\r\n if (node.parentNode !== null) {\r\n node.parentNode.removeChild(node);\r\n }\r\n }\r\n const bindings = getBindingsByContent(this);\r\n for(const binding of bindings) {\r\n if (recursiveBindingTypes.has(binding.bindingType)) {\r\n const contents = getContentSetByNode(binding.node);\r\n for (const content of contents) {\r\n content.unmount();\r\n }\r\n }\r\n clearStateAddressByBindingInfo(binding);\r\n clearAbsoluteStateAddressByBinding(binding);\r\n }\r\n this._mounted = false;\r\n }\r\n}\r\n\r\nexport function createContent(\r\n bindingInfo: IBindingInfo, \r\n): IContent {\r\n if (typeof bindingInfo.uuid === 'undefined' || bindingInfo.uuid === null) {\r\n raiseError(`BindingInfo.uuid is null.`);\r\n }\r\n const fragmentInfo = getFragmentInfoByUUID(bindingInfo.uuid);\r\n if (!fragmentInfo) {\r\n raiseError(`Fragment with UUID \"${bindingInfo.uuid}\" not found.`);\r\n }\r\n const cloneFragment = document.importNode(fragmentInfo.fragment, true);\r\n const initialInfo = initializeBindingsByFragment(cloneFragment, fragmentInfo.nodeInfos);\r\n const content = new Content(cloneFragment);\r\n setBindingsByContent(content, initialInfo.bindingInfos);\r\n const indexBindings: IBindingInfo[] = [];\r\n for(const binding of initialInfo.bindingInfos) {\r\n if (binding.statePathName in INDEX_BY_INDEX_NAME) {\r\n indexBindings.push(binding);\r\n }\r\n }\r\n setIndexBindingsByContent(content, indexBindings);\r\n setNodesByContent(content, initialInfo.nodes);\r\n setContentByNode(bindingInfo.node, content);\r\n return content;\r\n}\r\n","import { getPathInfo } from \"../address/PathInfo\";\r\nimport { createStateAddress } from \"../address/StateAddress\";\r\nimport { getAbsoluteStateAddressByBinding } from \"../binding/getAbsoluteStateAddressByBinding\";\r\nimport { getIndexBindingsByContent } from \"../bindings/indexBindingsByContent\";\r\nimport { WILDCARD } from \"../define\";\r\nimport { createListDiff } from \"../list/createListDiff\";\r\nimport { getListIndexByBindingInfo } from \"../list/getListIndexByBindingInfo\";\r\nimport { getLastListValueByAbsoluteStateAddress } from \"../list/lastListValueByAbsoluteStateAddress\";\r\nimport { IListIndex } from \"../list/types\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { activateContent, deactivateContent } from \"../structural/activateContent\";\r\nimport { createContent } from \"../structural/createContent\";\r\nimport { IContent } from \"../structural/types\";\r\nimport { IBindingInfo } from \"../types\";\r\nimport { applyChange } from \"./applyChange\";\r\nimport { setRootNodeByFragment } from \"./rootNodeByFragment\";\r\nimport { IApplyContext } from \"./types\";\r\n\r\nconst lastNodeByNode: WeakMap<Node, Node> = new WeakMap();\r\nconst contentByListIndexByNode: WeakMap<Node, WeakMap<IListIndex, IContent>> = new WeakMap();\r\nconst pooledContentsByNode: WeakMap<Node, IContent[]> = new WeakMap();\r\nconst isOnlyNodeInParentContentByNode: WeakMap<Node, boolean> = new WeakMap();\r\n\r\n// テスト用ヘルパー(内部状態の操作)\r\nexport function __test_setContentByListIndex(node: Node, index: IListIndex, content: IContent | null): void {\r\n setContent(node, index, content);\r\n}\r\n\r\nexport function __test_deleteLastNodeByNode(node: Node): void {\r\n lastNodeByNode.delete(node);\r\n}\r\n\r\nexport function __test_deleteContentByNode(node: Node): void {\r\n contentByListIndexByNode.delete(node);\r\n}\r\n\r\nfunction getPooledContents(bindingInfo: IBindingInfo): IContent[] {\r\n return pooledContentsByNode.get(bindingInfo.node) || [];\r\n}\r\n\r\nfunction setPooledContent(bindingInfo: IBindingInfo, content: IContent): void {\r\n const contents = pooledContentsByNode.get(bindingInfo.node);\r\n if (typeof contents === 'undefined') {\r\n pooledContentsByNode.set(bindingInfo.node, [content]);\r\n } else {\r\n contents.push(content);\r\n }\r\n}\r\n\r\nfunction isOnlyNodeInParentContent(firstNode: Node, lastNode: Node): boolean {\r\n let prevCheckNode = firstNode.previousSibling;\r\n let nextCheckNode = lastNode.nextSibling;\r\n let onlyNode = true;\r\n while(prevCheckNode !== null) {\r\n if (prevCheckNode.nodeType === Node.ELEMENT_NODE \r\n || (prevCheckNode.nodeType === Node.TEXT_NODE && (prevCheckNode.textContent?.trim() ?? '') !== '')) {\r\n onlyNode = false;\r\n break;\r\n }\r\n prevCheckNode = prevCheckNode.previousSibling;\r\n }\r\n while(nextCheckNode !== null) {\r\n if (nextCheckNode.nodeType === Node.ELEMENT_NODE \r\n || (nextCheckNode.nodeType === Node.TEXT_NODE && (nextCheckNode.textContent?.trim() ?? '') !== '')) {\r\n onlyNode = false;\r\n break;\r\n }\r\n nextCheckNode = nextCheckNode.nextSibling;\r\n }\r\n return onlyNode;\r\n}\r\n\r\nfunction getContent(node: Node, listIndex: IListIndex): IContent | null {\r\n let contentByListIndex = contentByListIndexByNode.get(node);\r\n if (typeof contentByListIndex === 'undefined') {\r\n return null;\r\n }\r\n const content = contentByListIndex.get(listIndex);\r\n return typeof content === 'undefined' ? null : content;\r\n}\r\n\r\nfunction setContent(node: Node, listIndex: IListIndex, content: IContent | null): void {\r\n let contentByListIndex = contentByListIndexByNode.get(node);\r\n if (typeof contentByListIndex === 'undefined') {\r\n if (content === null) {\r\n return;\r\n }\r\n contentByListIndex = new WeakMap<IListIndex, IContent>();\r\n contentByListIndexByNode.set(node, contentByListIndex);\r\n }\r\n if (content === null) {\r\n contentByListIndex.delete(listIndex);\r\n } else {\r\n contentByListIndex.set(listIndex, content);\r\n }\r\n}\r\n\r\nexport function applyChangeToFor(\r\n bindingInfo: IBindingInfo, \r\n context: IApplyContext,\r\n newValue: unknown, \r\n): void {\r\n const listPathInfo = bindingInfo.statePathInfo;\r\n const listIndex = getListIndexByBindingInfo(bindingInfo);\r\n const absAddress = getAbsoluteStateAddressByBinding(bindingInfo);\r\n const lastValue = getLastListValueByAbsoluteStateAddress(absAddress);\r\n const diff = createListDiff(listIndex, lastValue, newValue);\r\n context.newListValueByAbsAddress.set(absAddress, Array.isArray(newValue) ? newValue : []);\r\n\r\n if (Array.isArray(lastValue) \r\n && lastValue.length === diff.deleteIndexSet.size \r\n && diff.deleteIndexSet.size > 0\r\n && bindingInfo.node.parentNode !== null\r\n ) {\r\n let isOnlyNode = isOnlyNodeInParentContentByNode.get(bindingInfo.node);\r\n if (typeof isOnlyNode === 'undefined') {\r\n const lastNode = lastNodeByNode.get(bindingInfo.node) || bindingInfo.node;\r\n isOnlyNode = isOnlyNodeInParentContent(bindingInfo.node, lastNode);\r\n isOnlyNodeInParentContentByNode.set(bindingInfo.node, isOnlyNode);\r\n }\r\n if (isOnlyNode) {\r\n const parentNode = bindingInfo.node.parentNode;\r\n parentNode.textContent = '';\r\n parentNode.appendChild(bindingInfo.node);\r\n }\r\n }\r\n for(const deleteIndex of diff.deleteIndexSet) {\r\n const content = getContent(bindingInfo.node, deleteIndex);\r\n if (content !== null) {\r\n deactivateContent(content);\r\n content.unmount();\r\n setPooledContent(bindingInfo, content);\r\n setContent(bindingInfo.node, deleteIndex, null);\r\n }\r\n }\r\n\r\n let lastNode = bindingInfo.node;\r\n const elementPathInfo = getPathInfo(listPathInfo.path + '.' + WILDCARD);\r\n const loopContextStack = context.stateElement.loopContextStack;\r\n let fragment: DocumentFragment | null = null;\r\n if (diff.newIndexes.length == diff.addIndexSet.size \r\n && diff.newIndexes.length > 0\r\n && lastNode.isConnected\r\n ) {\r\n // 全部追加の場合はまとめて処理\r\n fragment = document.createDocumentFragment();\r\n setRootNodeByFragment(fragment, context.rootNode);\r\n }\r\n for(const index of diff.newIndexes) {\r\n let content: IContent | undefined;\r\n // add\r\n if (diff.addIndexSet.has(index)) {\r\n const stateAddress = createStateAddress(elementPathInfo, index);\r\n loopContextStack.createLoopContext(stateAddress, (loopContext) => {\r\n const pooledContents = getPooledContents(bindingInfo);\r\n content = pooledContents.pop();\r\n if (typeof content === 'undefined') {\r\n content = createContent(bindingInfo);\r\n }\r\n // コンテント活性化の前にDOMツリーに追加しておく必要がある\r\n if (fragment !== null) {\r\n content.appendTo(fragment);\r\n } else {\r\n // Update lastNode for next iteration to ensure correct order\r\n // Ensure content is in correct position (e.g. if previous siblings were deleted/moved)\r\n if (lastNode.nextSibling !== content.firstNode) {\r\n content.mountAfter(lastNode);\r\n }\r\n }\r\n // コンテントを活性化\r\n activateContent(content, loopContext, context);\r\n });\r\n if (typeof content === 'undefined') {\r\n raiseError(`Content not found for ListIndex: ${index.index} at path \"${listPathInfo.path}\"`);\r\n }\r\n } else {\r\n content = getContent(bindingInfo.node, index)!;\r\n if (diff.changeIndexSet.has(index)) {\r\n // change\r\n const indexBindings = getIndexBindingsByContent(content);\r\n for(const indexBinding of indexBindings) {\r\n applyChange(indexBinding, context);\r\n }\r\n }\r\n // Update lastNode for next iteration to ensure correct order\r\n // Ensure content is in correct position (e.g. if previous siblings were deleted/moved)\r\n if (content === null) {\r\n raiseError(`Content not found for ListIndex: ${index.index} at path \"${listPathInfo.path}\"`);\r\n }\r\n if (lastNode.nextSibling !== content.firstNode) {\r\n content.mountAfter(lastNode);\r\n }\r\n }\r\n lastNode = content.lastNode || lastNode;\r\n setContent(bindingInfo.node, index, content);\r\n }\r\n lastNodeByNode.set(bindingInfo.node, lastNode);\r\n if (fragment !== null) {\r\n // Mount all at once\r\n bindingInfo.node.parentNode!.insertBefore(fragment, bindingInfo.node.nextSibling);\r\n setRootNodeByFragment(fragment, null);\r\n }\r\n}\r\n","import { config } from \"../config\";\r\nimport { getLoopContextByNode } from \"../list/loopContextByNode\";\r\nimport { activateContent, deactivateContent } from \"../structural/activateContent\";\r\nimport { getContentSetByNode } from \"../structural/contentsByNode\";\r\nimport { createContent } from \"../structural/createContent\";\r\nimport { IContent } from \"../structural/types\";\r\nimport { IBindingInfo } from \"../types\";\r\nimport { IApplyContext } from \"./types\";\r\n\r\nconst lastConnectedByNode: WeakMap<Node, boolean> = new WeakMap();\r\n\r\nfunction bindingInfoText(bindingInfo: IBindingInfo): string {\r\n return `${bindingInfo.bindingType} ${bindingInfo.statePathName} ${bindingInfo.outFilters.map(f => f.filterName).join('|')} ${bindingInfo.node.isConnected ? '(connected)' : '(disconnected)'}`;\r\n}\r\n\r\nexport function applyChangeToIf(\r\n bindingInfo: IBindingInfo, \r\n context: IApplyContext,\r\n rawNewValue: unknown,\r\n): void {\r\n const currentConnected = bindingInfo.node.isConnected;\r\n const newValue = Boolean(rawNewValue);\r\n let content: IContent | undefined;\r\n const contents = getContentSetByNode(bindingInfo.node);\r\n if (contents.size === 0) {\r\n content = createContent(bindingInfo);\r\n } else {\r\n content = contents.values().next().value!;\r\n }\r\n try {\r\n if (!newValue) {\r\n if (config.debug) {\r\n console.log(`unmount if content : ${bindingInfoText(bindingInfo)}`);\r\n }\r\n deactivateContent(content);\r\n content.unmount();\r\n }\r\n if (newValue) {\r\n if (config.debug) {\r\n console.log(`mount if content : ${bindingInfoText(bindingInfo)}`);\r\n }\r\n content.mountAfter(bindingInfo.node);\r\n const loopContext = getLoopContextByNode(bindingInfo.node);\r\n activateContent(content, loopContext, context);\r\n }\r\n } finally {\r\n lastConnectedByNode.set(bindingInfo.node, currentConnected);\r\n }\r\n}\r\n\r\n","import { config } from \"../config\";\r\nimport { IBindingInfo } from \"../types\";\r\nimport { IApplyContext } from \"./types\";\r\n\r\nexport function applyChangeToProperty(binding: IBindingInfo, _context: IApplyContext, newValue: unknown): void {\r\n const element = binding.node as Element;\r\n const propSegments = binding.propSegments;\r\n if (propSegments.length === 1) {\r\n const firstSegment = propSegments[0];\r\n if ((element as any)[firstSegment] !== newValue) {\r\n (element as any)[firstSegment] = newValue;\r\n }\r\n return;\r\n }\r\n const firstSegment = propSegments[0];\r\n let subObject = (element as any)[firstSegment];\r\n for (let i = 1; i < propSegments.length - 1; i++) {\r\n const segment = propSegments[i];\r\n if (subObject == null) {\r\n return;\r\n }\r\n subObject = subObject[segment];\r\n }\r\n const oldValue = subObject[propSegments[propSegments.length - 1]];\r\n if (oldValue !== newValue) {\r\n if (Object.isFrozen(subObject)) {\r\n if (config.debug) {\r\n console.warn(`Attempting to set property on frozen object.`, {\r\n element,\r\n propSegments,\r\n oldValue,\r\n newValue\r\n });\r\n }\r\n return;\r\n }\r\n subObject[propSegments[propSegments.length - 1]] = newValue;\r\n }\r\n}\r\n","import { IBindingInfo } from \"../types\";\r\nimport { getFilteredValue } from \"./getFilteredValue\";\r\nimport { IApplyContext } from \"./types\";\r\n\r\nexport function applyChangeToRadio(binding: IBindingInfo, _context: IApplyContext, newValue: unknown): void {\r\n const element = binding.node as HTMLInputElement;\r\n const elementValue = element.value;\r\n const elementFilteredValue = getFilteredValue(elementValue, binding.inFilters);\r\n element.checked = newValue === elementFilteredValue;\r\n}\r\n","import { IBindingInfo } from \"../types\";\r\nimport { IApplyContext } from \"./types\";\r\n\r\nexport function applyChangeToStyle(binding: IBindingInfo, _context: IApplyContext, newValue: unknown): void {\r\n const styleName = binding.propSegments[1];\r\n const style = (binding.node as HTMLElement).style;\r\n const currentValue = (style as any)[styleName];\r\n if (currentValue !== newValue) {\r\n (style as any)[styleName] = newValue;\r\n }\r\n}\r\n","import { IBindingInfo } from \"../binding/types\";\r\nimport { IApplyContext } from \"./types\";\r\n\r\nexport function applyChangeToText(binding: IBindingInfo, _context: IApplyContext, newValue: unknown): void {\r\n if (binding.replaceNode.nodeValue !== newValue) {\r\n binding.replaceNode.nodeValue = newValue as string;\r\n }\r\n}\r\n","import { raiseError } from \"../raiseError\";\r\nimport { IBindingInfo } from \"../types\";\r\nimport { IApplyContext } from \"./types\";\r\n\r\nexport function applyChangeToWebComponent(binding: IBindingInfo, _context: IApplyContext, newValue: unknown): void {\r\n const element = binding.node as Element;\r\n const propSegments = binding.propSegments;\r\n if (propSegments.length <= 1) {\r\n raiseError(`Invalid propSegments for web component binding: ${propSegments.join(\".\")}`);\r\n }\r\n const [ firstSegment, ...restSegments ] = propSegments;\r\n const subObject = (element as any)[firstSegment] as Record<string, unknown> | undefined;\r\n if (typeof subObject === \"undefined\") {\r\n raiseError(`Property \"${firstSegment}\" not found on web component.`);\r\n }\r\n subObject[restSegments.join(\".\")] = newValue;\r\n}\r\n","import { INDEX_BY_INDEX_NAME } from \"../define\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { ILoopContext } from \"./types\";\r\n\r\n// indexName ... $1, $2, ...\r\nexport function getIndexValueByLoopContext(loopContext: ILoopContext, indexName: string): number | null {\r\n if (loopContext.listIndex === null) {\r\n raiseError(`ListIndex not found for loopContext:`);\r\n }\r\n const indexPos = INDEX_BY_INDEX_NAME[indexName];\r\n if (typeof indexPos === \"undefined\") {\r\n raiseError(`Invalid index name: ${indexName}`);\r\n }\r\n const listIndex = loopContext.listIndex.at(indexPos);\r\n if (listIndex === null) {\r\n raiseError(`Index not found at position ${indexPos} for loopContext:`);\r\n }\r\n return listIndex.index;\r\n}","import { getStateAddressByBindingInfo } from \"../binding/getStateAddressByBindingInfo\";\r\nimport { IBindingInfo } from \"../binding/types\";\r\nimport { INDEX_BY_INDEX_NAME } from \"../define\";\r\nimport { getIndexValueByLoopContext } from \"../list/getIndexValueByLoopContext\";\r\nimport { getLoopContextByNode } from \"../list/loopContextByNode\";\r\nimport { getByAddressSymbol } from \"../proxy/symbols\";\r\nimport { IStateProxy } from \"../proxy/types\";\r\nimport { raiseError } from \"../raiseError\";\r\n\r\nexport function getValue(state: IStateProxy, binding: IBindingInfo): any {\r\n const stateAddress = getStateAddressByBindingInfo(binding);\r\n if (stateAddress.pathInfo.path in INDEX_BY_INDEX_NAME) {\r\n const loopContext = getLoopContextByNode(binding.node);\r\n if (loopContext === null) {\r\n raiseError(`ListIndex not found for binding: ${binding.statePathName}`);\r\n }\r\n return getIndexValueByLoopContext(loopContext, stateAddress.pathInfo.path);\r\n } else {\r\n return state[getByAddressSymbol](stateAddress);\r\n }\r\n}\r\n","import { getAbsoluteStateAddressByBinding } from \"../binding/getAbsoluteStateAddressByBinding.js\";\r\nimport { getCustomElement } from \"../getCustomElement.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { getStateElementByName } from \"../stateElementByName.js\";\r\nimport { IBindingInfo } from \"../types.js\";\r\nimport { isWebComponentComplete } from \"../webComponent/completeWebComponent.js\";\r\nimport { applyChangeToAttribute } from \"./applyChangeToAttribute.js\";\r\nimport { applyChangeToCheckbox } from \"./applyChangeToCheckbox.js\";\r\nimport { applyChangeToClass } from \"./applyChangeToClass.js\";\r\nimport { applyChangeToFor } from \"./applyChangeToFor.js\";\r\nimport { applyChangeToIf } from \"./applyChangeToIf.js\";\r\nimport { applyChangeToProperty } from \"./applyChangeToProperty.js\";\r\nimport { applyChangeToRadio } from \"./applyChangeToRadio.js\";\r\nimport { applyChangeToStyle } from \"./applyChangeToStyle.js\";\r\nimport { applyChangeToText } from \"./applyChangeToText.js\";\r\nimport { applyChangeToWebComponent } from \"./applyChangeToWebComponent.js\";\r\nimport { getFilteredValue } from \"./getFilteredValue.js\";\r\nimport { getValue } from \"./getValue.js\";\r\nimport { getRootNodeByFragment } from \"./rootNodeByFragment.js\";\r\nimport { ApplyChangeFn, IApplyContext } from \"./types.js\";\r\n\r\nconst applyChangeByFirstSegment: { [key: string]: ApplyChangeFn } = {\r\n \"class\": applyChangeToClass,\r\n \"attr\": applyChangeToAttribute,\r\n \"style\": applyChangeToStyle,\r\n};\r\n\r\nconst applyChangeByBindingType: { [key: string]: ApplyChangeFn } = {\r\n \"text\": applyChangeToText,\r\n \"for\": applyChangeToFor,\r\n \"if\": applyChangeToIf,\r\n \"else\": applyChangeToIf,\r\n \"elseif\": applyChangeToIf,\r\n \"radio\": applyChangeToRadio,\r\n \"checkbox\": applyChangeToCheckbox,\r\n};\r\n\r\nfunction _applyChange(binding: IBindingInfo, context: IApplyContext): void {\r\n const value = getValue(context.state, binding);\r\n const filteredValue = getFilteredValue(value, binding.outFilters);\r\n\r\n let fn = applyChangeByBindingType[binding.bindingType];\r\n if (typeof fn === 'undefined') {\r\n const firstSegment = binding.propSegments[0];\r\n fn = applyChangeByFirstSegment[firstSegment];\r\n if (typeof fn === 'undefined') {\r\n if (isWebComponentComplete(binding.replaceNode as Element, context.stateElement)) {\r\n fn = applyChangeToWebComponent;\r\n } else {\r\n fn = applyChangeToProperty;\r\n }\r\n }\r\n }\r\n if (fn === applyChangeToProperty) {\r\n const element = binding.node as Element;\r\n if (element.tagName === 'SELECT') {\r\n const propName = binding.propSegments[0];\r\n if (propName === 'value' || propName === 'selectedIndex') {\r\n context.deferredSelectBindings.push({ binding, value: filteredValue });\r\n return;\r\n }\r\n }\r\n }\r\n fn(binding, context, filteredValue);\r\n}\r\n\r\nexport function applyChange(binding: IBindingInfo, context: IApplyContext): void {\r\n if (context.appliedBindingSet.has(binding)) {\r\n return;\r\n }\r\n context.appliedBindingSet.add(binding);\r\n const absAddress = getAbsoluteStateAddressByBinding(binding);\r\n if (context.updatedAbsAddressSetByStateElement.has(context.stateElement)) {\r\n const addressSet = context.updatedAbsAddressSetByStateElement.get(context.stateElement)!;\r\n addressSet.add(absAddress);\r\n } else {\r\n context.updatedAbsAddressSetByStateElement.set(context.stateElement, new Set([\r\n absAddress\r\n ]));\r\n }\r\n if (binding.bindingType === \"event\") {\r\n return;\r\n }\r\n const customTag = getCustomElement(binding.replaceNode);\r\n if (customTag) {\r\n if (customElements.get(customTag) === undefined) {\r\n // cutomElement側の初期化を期待\r\n return;\r\n }\r\n }\r\n let rootNode: Node | null = binding.replaceNode.getRootNode() as Node;\r\n if (rootNode instanceof DocumentFragment && !(rootNode instanceof ShadowRoot)) {\r\n rootNode = getRootNodeByFragment(rootNode);\r\n if (rootNode === null) {\r\n raiseError(`Root node for fragment not found for binding.`);\r\n }\r\n }\r\n if (binding.stateName !== context.stateName || rootNode !== context.rootNode) {\r\n const stateElement = getStateElementByName(rootNode, binding.stateName);\r\n if (stateElement === null) {\r\n raiseError(`State element with name \"${binding.stateName}\" not found for binding.`);\r\n }\r\n stateElement.createState(\"readonly\", (targetState) => {\r\n const newContext = {\r\n stateName: binding.stateName,\r\n rootNode: rootNode,\r\n stateElement: stateElement,\r\n state: targetState,\r\n appliedBindingSet: context.appliedBindingSet,\r\n newListValueByAbsAddress: context.newListValueByAbsAddress,\r\n updatedAbsAddressSetByStateElement: context.updatedAbsAddressSetByStateElement,\r\n deferredSelectBindings: context.deferredSelectBindings,\r\n }\r\n _applyChange(binding, newContext);\r\n });\r\n } else {\r\n _applyChange(binding, context);\r\n }\r\n}\r\n","import { IAbsoluteStateAddress } from \"../address/types\";\r\nimport { IStateElement } from \"../components/types\";\r\nimport { config } from \"../config\";\r\nimport { setLastListValueByAbsoluteStateAddress } from \"../list/lastListValueByAbsoluteStateAddress\";\r\nimport { updatedCallbackSymbol } from \"../proxy/symbols\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { getStateElementByName } from \"../stateElementByName\";\r\nimport { IBindingInfo } from \"../types\";\r\nimport { applyChange } from \"./applyChange\";\r\nimport { applyChangeToProperty } from \"./applyChangeToProperty\";\r\nimport { getRootNodeByFragment } from \"./rootNodeByFragment\";\r\nimport { IApplyContext, IDeferredSelectBinding } from \"./types\";\r\n\r\n/**\r\n * バインディング情報の配列を処理し、各バインディングに対して状態の変更を適用する。\r\n *\r\n * 2フェーズで処理:\r\n * Phase 1: 構造的更新(for/if) + 値更新(select以外) — select.value/selectedIndex は遅延収集\r\n * Phase 2: 遅延されたselect.value/selectedIndex を適用(option要素の生成後)\r\n *\r\n * 最適化のため、以下のグループ化を行う:\r\n * 同じ stateNameとrootNode を持つバインディングをグループ化 → createState の呼び出しを削減\r\n */\r\nexport function applyChangeFromBindings(bindings: IBindingInfo[]): void {\r\n let bindingIndex = 0;\r\n const appliedBindingSet: Set<IBindingInfo> = new Set();\r\n const newListValueByAbsAddress: Map<IAbsoluteStateAddress, readonly unknown[]> = new Map();\r\n const updatedAbsAddressSetByStateElement: Map<IStateElement, Set<IAbsoluteStateAddress>> = new Map();\r\n const deferredSelectBindings: IDeferredSelectBinding[] = [];\r\n\r\n // Phase 1: 構造的更新 + 値更新(select.value/selectedIndex は遅延)\r\n while(bindingIndex < bindings.length) {\r\n let binding = bindings[bindingIndex];\r\n const stateName = binding.stateName;\r\n if (binding.replaceNode.isConnected === false) {\r\n // 切断されているバインディングは無視、本来は事前に除去されているはず\r\n if (config.debug) {\r\n console.log(`applyChangeFromBindings: skip disconnected binding: ${binding.bindingType} ${binding.statePathName} on ${binding.node.nodeName}`, binding);\r\n }\r\n bindingIndex++;\r\n continue;\r\n }\r\n let rootNode: Node | null = binding.replaceNode.getRootNode() as Node;\r\n if (rootNode instanceof DocumentFragment && !(rootNode instanceof ShadowRoot)) {\r\n rootNode = getRootNodeByFragment(rootNode);\r\n if (rootNode === null) {\r\n raiseError(`Root node for fragment not found for binding.`);\r\n }\r\n }\r\n const stateElement = getStateElementByName(rootNode, stateName);\r\n if (stateElement === null) {\r\n raiseError(`State element with name \"${stateName}\" not found for binding.`);\r\n }\r\n\r\n stateElement.createState(\"readonly\", (state) => {\r\n const context: IApplyContext = {\r\n rootNode: rootNode,\r\n stateName: stateName,\r\n stateElement: stateElement,\r\n state: state,\r\n appliedBindingSet: appliedBindingSet,\r\n newListValueByAbsAddress: newListValueByAbsAddress,\r\n updatedAbsAddressSetByStateElement: updatedAbsAddressSetByStateElement,\r\n deferredSelectBindings: deferredSelectBindings,\r\n };\r\n\r\n do {\r\n applyChange(binding, context);\r\n bindingIndex++;\r\n\r\n const nextBindingInfo: IBindingInfo | undefined = bindings[bindingIndex];\r\n if (!nextBindingInfo) break; // 終端に到達\r\n const nextRootNode = nextBindingInfo.replaceNode.getRootNode() as Node;\r\n if (nextBindingInfo.stateName !== stateName || nextRootNode !== context.rootNode) break; // stateName が変わった\r\n binding = nextBindingInfo;\r\n } while(true); // eslint-disable-line no-constant-condition\r\n });\r\n }\r\n // Phase 2: 遅延されたselect.value/selectedIndex を適用\r\n // applyChangeToProperty は context を参照しないため null を渡す\r\n for (const { binding, value } of deferredSelectBindings) {\r\n applyChangeToProperty(binding, null as unknown as IApplyContext, value);\r\n }\r\n\r\n for(const [ absAddress, newListValue ] of newListValueByAbsAddress.entries()) {\r\n setLastListValueByAbsoluteStateAddress(absAddress, newListValue);\r\n }\r\n for(const [ stateElement, absAddressSet ] of updatedAbsAddressSetByStateElement.entries()) {\r\n stateElement.createState(\"writable\", (state) => {\r\n state[updatedCallbackSymbol](Array.from(absAddressSet));\r\n });\r\n }\r\n}\r\n","import { getLoopContextByNode } from \"../list/loopContextByNode\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { getStateElementByName } from \"../stateElementByName\";\r\nimport { IBindingInfo, IFilterInfo } from \"../types\";\r\nimport { setLoopContextSymbol } from \"../proxy/symbols\";\r\n\r\nconst handlerByHandlerKey: Map<string, (event: Event) => any> = new Map();\r\nconst bindingSetByHandlerKey: Map<string, Set<IBindingInfo>> = new Map();\r\n\r\nfunction getHandlerKey(binding: IBindingInfo, eventName: string): string {\r\n const filterKey = binding.inFilters.map(f => f.filterName + '(' + f.args.join(',') + ')').join('|');\r\n return `${binding.stateName}::${binding.statePathName}::${eventName}::${filterKey}`;\r\n}\r\n\r\nfunction getEventName(binding: IBindingInfo): string {\r\n let eventName = 'input';\r\n for(const modifier of binding.propModifiers) {\r\n if (modifier.startsWith('on')) {\r\n eventName = modifier.slice(2);\r\n }\r\n }\r\n return eventName;\r\n}\r\n\r\nconst radioEventHandlerFunction = (\r\n stateName: string,\r\n statePathName: string,\r\n inFilters: IFilterInfo[],\r\n) => (event: Event): any => {\r\n const node = event.target as HTMLInputElement;\r\n if (node === null) {\r\n console.warn(`[@wcstack/state] event.target is null.`);\r\n return;\r\n }\r\n if (node.type !== 'radio') {\r\n console.warn(`[@wcstack/state] event.target is not a radio input element.`);\r\n return;\r\n }\r\n if (node.checked === false) {\r\n return;\r\n }\r\n const newValue = node.value;\r\n let filteredNewValue: unknown = newValue;\r\n for(const filter of inFilters) {\r\n filteredNewValue = filter.filterFn(filteredNewValue);\r\n }\r\n\r\n const rootNode = node.getRootNode() as Node;\r\n const stateElement = getStateElementByName(rootNode, stateName);\r\n if (stateElement === null) {\r\n raiseError(`State element with name \"${stateName}\" not found for two-way binding.`);\r\n }\r\n\r\n const loopContext = getLoopContextByNode(node);\r\n stateElement.createState(\"writable\", (state) => {\r\n state[setLoopContextSymbol](loopContext, () => {\r\n state[statePathName] = filteredNewValue;\r\n });\r\n });\r\n}\r\n\r\nexport function attachRadioEventHandler(binding: IBindingInfo): boolean {\r\n if (binding.bindingType === \"radio\" && binding.propModifiers.indexOf('ro') === -1) {\r\n const eventName = getEventName(binding);\r\n const key = getHandlerKey(binding, eventName);\r\n let radioEventHandler = handlerByHandlerKey.get(key);\r\n if (typeof radioEventHandler === \"undefined\") {\r\n radioEventHandler = radioEventHandlerFunction(\r\n binding.stateName,\r\n binding.statePathName,\r\n binding.inFilters\r\n );\r\n handlerByHandlerKey.set(key, radioEventHandler);\r\n }\r\n (binding.node as Element).addEventListener(eventName, radioEventHandler);\r\n let bindingSet = bindingSetByHandlerKey.get(key);\r\n if (typeof bindingSet === \"undefined\") {\r\n bindingSet = new Set<IBindingInfo>([binding]);\r\n bindingSetByHandlerKey.set(key, bindingSet);\r\n } else {\r\n bindingSet.add(binding);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function detachRadioEventHandler(binding: IBindingInfo): boolean {\r\n if (binding.bindingType === \"radio\" && binding.propModifiers.indexOf('ro') === -1) {\r\n const eventName = getEventName(binding);\r\n const key = getHandlerKey(binding, eventName);\r\n const radioEventHandler = handlerByHandlerKey.get(key);\r\n if (typeof radioEventHandler === \"undefined\") {\r\n return false;\r\n }\r\n (binding.node as Element).removeEventListener(eventName, radioEventHandler);\r\n\r\n const bindingSet = bindingSetByHandlerKey.get(key);\r\n if (typeof bindingSet === \"undefined\") {\r\n return false;\r\n }\r\n bindingSet.delete(binding);\r\n if (bindingSet.size === 0) {\r\n handlerByHandlerKey.delete(key);\r\n bindingSetByHandlerKey.delete(key);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport const __private__ = {\r\n handlerByHandlerKey,\r\n bindingSetByHandlerKey,\r\n getHandlerKey,\r\n getEventName,\r\n radioEventHandlerFunction,\r\n};\r\n","import { getLoopContextByNode } from \"../list/loopContextByNode\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { getStateElementByName } from \"../stateElementByName\";\r\nimport { IBindingInfo, IFilterInfo } from \"../types\";\r\nimport { setLoopContextSymbol } from \"../proxy/symbols\";\r\n\r\nconst handlerByHandlerKey: Map<string, (event: Event) => any> = new Map();\r\nconst bindingSetByHandlerKey: Map<string, Set<IBindingInfo>> = new Map();\r\n\r\nfunction getHandlerKey(binding: IBindingInfo, eventName: string): string {\r\n const filterKey = binding.inFilters.map(f => f.filterName + '(' + f.args.join(',') + ')').join('|');\r\n return `${binding.stateName}::${binding.statePathName}::${eventName}::${filterKey}`;\r\n}\r\n\r\nfunction getEventName(binding: IBindingInfo): string {\r\n let eventName = 'input';\r\n for(const modifier of binding.propModifiers) {\r\n if (modifier.startsWith('on')) {\r\n eventName = modifier.slice(2);\r\n }\r\n }\r\n return eventName;\r\n}\r\n\r\nconst checkboxEventHandlerFunction = (\r\n stateName: string,\r\n statePathName: string,\r\n inFilters: IFilterInfo[],\r\n) => (event: Event): any => {\r\n const node = event.target as HTMLInputElement;\r\n if (node === null) {\r\n console.warn(`[@wcstack/state] event.target is null.`);\r\n return;\r\n }\r\n if (node.type !== 'checkbox') {\r\n console.warn(`[@wcstack/state] event.target is not a checkbox input element.`);\r\n return;\r\n }\r\n const checked = node.checked;\r\n const newValue = node.value;\r\n let filteredNewValue: unknown = newValue;\r\n for(const filter of inFilters) {\r\n filteredNewValue = filter.filterFn(filteredNewValue);\r\n }\r\n\r\n const rootNode = node.getRootNode() as Node;\r\n const stateElement = getStateElementByName(rootNode, stateName);\r\n if (stateElement === null) {\r\n raiseError(`State element with name \"${stateName}\" not found for two-way binding.`);\r\n }\r\n\r\n const loopContext = getLoopContextByNode(node);\r\n stateElement.createState(\"writable\", (state) => {\r\n state[setLoopContextSymbol](loopContext, () => {\r\n let currentValue = state[statePathName];\r\n if (Array.isArray(currentValue)) {\r\n if (checked) {\r\n if (currentValue.indexOf(filteredNewValue) === -1) {\r\n state[statePathName] = currentValue.concat(filteredNewValue);\r\n }\r\n } else {\r\n const index = currentValue.indexOf(filteredNewValue);\r\n if (index !== -1) {\r\n state[statePathName] = currentValue.toSpliced(index, 1);\r\n }\r\n }\r\n } else {\r\n if (checked) {\r\n state[statePathName] = [filteredNewValue];\r\n } else {\r\n state[statePathName] = [];\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function attachCheckboxEventHandler(binding: IBindingInfo): boolean {\r\n if (binding.bindingType === \"checkbox\" && binding.propModifiers.indexOf('ro') === -1) {\r\n const eventName = getEventName(binding);\r\n const key = getHandlerKey(binding, eventName);\r\n let checkboxEventHandler = handlerByHandlerKey.get(key);\r\n if (typeof checkboxEventHandler === \"undefined\") {\r\n checkboxEventHandler = checkboxEventHandlerFunction(\r\n binding.stateName,\r\n binding.statePathName,\r\n binding.inFilters\r\n );\r\n handlerByHandlerKey.set(key, checkboxEventHandler);\r\n }\r\n (binding.node as Element).addEventListener(eventName, checkboxEventHandler);\r\n let bindingSet = bindingSetByHandlerKey.get(key);\r\n if (typeof bindingSet === \"undefined\") {\r\n bindingSet = new Set<IBindingInfo>([binding]);\r\n bindingSetByHandlerKey.set(key, bindingSet);\r\n } else {\r\n bindingSet.add(binding);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function detachCheckboxEventHandler(binding: IBindingInfo): boolean {\r\n if (binding.bindingType === \"checkbox\" && binding.propModifiers.indexOf('ro') === -1) {\r\n const eventName = getEventName(binding);\r\n const key = getHandlerKey(binding, eventName);\r\n const checkboxEventHandler = handlerByHandlerKey.get(key);\r\n if (typeof checkboxEventHandler === \"undefined\") {\r\n return false;\r\n }\r\n (binding.node as Element).removeEventListener(eventName, checkboxEventHandler);\r\n\r\n const bindingSet = bindingSetByHandlerKey.get(key);\r\n if (typeof bindingSet === \"undefined\") {\r\n return false;\r\n }\r\n bindingSet.delete(binding);\r\n if (bindingSet.size === 0) {\r\n handlerByHandlerKey.delete(key);\r\n bindingSetByHandlerKey.delete(key);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport const __private__ = {\r\n handlerByHandlerKey,\r\n bindingSetByHandlerKey,\r\n getHandlerKey,\r\n getEventName,\r\n checkboxEventHandlerFunction,\r\n};\r\n","import { ILoopContext } from \"../list/types\";\r\nimport { IBindingInfo } from \"../types\";\r\nimport { getStateElementByName } from \"../stateElementByName\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { replaceToReplaceNode } from \"./replaceToReplaceNode\";\r\nimport { collectNodesAndBindingInfos, collectNodesAndBindingInfosByFragment } from \"./collectNodesAndBindingInfos\";\r\nimport { IFragmentNodeInfo } from \"../structural/types\";\r\nimport { attachEventHandler } from \"../event/handler\";\r\nimport { attachTwowayEventHandler } from \"../event/twowayHandler\";\r\nimport { setLoopContextByNode } from \"../list/loopContextByNode\";\r\nimport { applyChangeFromBindings } from \"../apply/applyChangeFromBindings\";\r\nimport { IInitialBindingInfo } from \"./types\";\r\nimport { getAbsoluteStateAddressByBinding } from \"../binding/getAbsoluteStateAddressByBinding\";\r\nimport { addBindingByAbsoluteStateAddress } from \"../binding/getBindingSetByAbsoluteStateAddress\";\r\nimport { attachRadioEventHandler } from \"../event/radioHandler\";\r\nimport { attachCheckboxEventHandler } from \"../event/checkboxHandler\";\r\n\r\nfunction _initializeBindings(\r\n allBindings: IBindingInfo[],\r\n): void {\r\n for(const binding of allBindings) {\r\n\r\n // replace node\r\n replaceToReplaceNode(binding);\r\n\r\n // event\r\n if (attachEventHandler(binding)) {\r\n continue;\r\n }\r\n\r\n // two-way binding\r\n attachTwowayEventHandler(binding);\r\n // radio binding\r\n attachRadioEventHandler(binding);\r\n // checkbox binding\r\n attachCheckboxEventHandler(binding);\r\n\r\n }\r\n}\r\n\r\nexport function initializeBindings(\r\n root: Document | DocumentFragment |Element, parentLoopContext: ILoopContext | null\r\n): void {\r\n const [subscriberNodes, allBindings] = collectNodesAndBindingInfos(root);\r\n for(const node of subscriberNodes) {\r\n setLoopContextByNode(node, parentLoopContext);\r\n }\r\n _initializeBindings(allBindings);\r\n // create absolute state address and register binding infos\r\n for(const binding of allBindings) {\r\n const absoluteStateAddress = getAbsoluteStateAddressByBinding(binding);\r\n addBindingByAbsoluteStateAddress(absoluteStateAddress, binding);\r\n const rootNode = binding.replaceNode.getRootNode() as Node;\r\n const stateElement = getStateElementByName(rootNode, binding.stateName);\r\n if (stateElement === null) {\r\n raiseError(`State element with name \"${binding.stateName}\" not found for binding.`);\r\n }\r\n if (binding.bindingType !== 'event') {\r\n stateElement.setPathInfo(binding.statePathName, binding.bindingType);\r\n }\r\n }\r\n // apply all at once\r\n applyChangeFromBindings(allBindings);\r\n}\r\n\r\nexport function initializeBindingsByFragment(\r\n root: DocumentFragment,\r\n nodeInfos: IFragmentNodeInfo[], \r\n): IInitialBindingInfo {\r\n const [subscriberNodes, allBindings] = collectNodesAndBindingInfosByFragment(root, nodeInfos);\r\n _initializeBindings(allBindings);\r\n return {\r\n nodes: subscriberNodes,\r\n bindingInfos: allBindings,\r\n };\r\n}\r\n","import { config } from \"../config.js\";\r\nimport { SVG_NAMESPACE } from \"../define.js\";\r\n\r\nconst MUSTACHE_REGEX = /\\{\\{\\s*(.+?)\\s*\\}\\}/g;\r\nconst SKIP_TAGS = new Set([\"SCRIPT\", \"STYLE\"]);\r\n\r\nexport function convertMustacheToComments(root: Document | Element | DocumentFragment): void {\r\n if (!config.enableMustache) {\r\n return;\r\n }\r\n\r\n convertTextNodes(root);\r\n\r\n const templates = Array.from(root.querySelectorAll(\"template\"));\r\n\r\n for (const template of templates) {\r\n if (template.namespaceURI === SVG_NAMESPACE) {\r\n const newTemplate = document.createElement(\"template\");\r\n const childNodes = Array.from(template.childNodes);\r\n for(let i = 0; i < childNodes.length; i++) {\r\n const childNode = childNodes[i];\r\n newTemplate.content.appendChild(childNode);\r\n }\r\n for(const attr of template.attributes) {\r\n newTemplate.setAttribute(attr.name, attr.value);\r\n }\r\n template.replaceWith(newTemplate);\r\n convertMustacheToComments(newTemplate.content);\r\n } else {\r\n convertMustacheToComments(template.content);\r\n }\r\n }\r\n}\r\n\r\nfunction convertTextNodes(root: Document | Element | DocumentFragment): void {\r\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);\r\n const textNodes: Text[] = [];\r\n\r\n while (walker.nextNode()) {\r\n textNodes.push(walker.currentNode as Text);\r\n }\r\n\r\n for (const textNode of textNodes) {\r\n if (textNode.parentElement && SKIP_TAGS.has(textNode.parentElement.tagName)) {\r\n continue;\r\n }\r\n replaceTextNode(textNode);\r\n }\r\n}\r\n\r\nfunction replaceTextNode(textNode: Text): void {\r\n const text = textNode.data;\r\n MUSTACHE_REGEX.lastIndex = 0;\r\n\r\n if (!MUSTACHE_REGEX.test(text)) {\r\n return;\r\n }\r\n\r\n MUSTACHE_REGEX.lastIndex = 0;\r\n const fragment = document.createDocumentFragment();\r\n let lastIndex = 0;\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = MUSTACHE_REGEX.exec(text)) !== null) {\r\n if (match.index > lastIndex) {\r\n fragment.appendChild(document.createTextNode(text.slice(lastIndex, match.index)));\r\n }\r\n\r\n const bindText = match[1];\r\n fragment.appendChild(document.createComment(`@@: ${bindText}`));\r\n\r\n lastIndex = match.index + match[0].length;\r\n }\r\n\r\n if (lastIndex < text.length) {\r\n fragment.appendChild(document.createTextNode(text.slice(lastIndex)));\r\n }\r\n\r\n textNode.parentNode!.replaceChild(fragment, textNode);\r\n}\r\n","import { builtinFilterFn, outputBuiltinFilters } from \"../filters/builtinFilters\";\r\nimport { IFilterInfo } from \"../types\";\r\n\r\nlet _notFilterInfo: IFilterInfo | undefined = undefined;\r\n\r\nexport function createNotFilter(): IFilterInfo {\r\n if (_notFilterInfo) {\r\n return _notFilterInfo;\r\n }\r\n const filterName = \"not\"\r\n const args: string[] = [];\r\n const filterFn = builtinFilterFn(filterName, args)(outputBuiltinFilters);\r\n _notFilterInfo = {\r\n filterName,\r\n args,\r\n filterFn,\r\n }\r\n return _notFilterInfo;\r\n}\r\n","import { config } from \"../config.js\";\r\nimport { DELIMITER, WILDCARD } from \"../define.js\";\r\n\r\nconst COMMENT_REGEX = /^(\\s*@@\\s*(?:.*?)\\s*:\\s*)(.+?)(\\s*)$/;\r\n\r\nfunction expandShorthandInStatePart(statePart: string, forPath: string): string {\r\n const prefix = forPath + DELIMITER + WILDCARD;\r\n const pipeIndex = statePart.indexOf('|');\r\n const atIndex = statePart.indexOf('@');\r\n let pathPart: string;\r\n let suffix: string;\r\n if (pipeIndex !== -1) {\r\n pathPart = statePart.slice(0, pipeIndex).trim();\r\n suffix = statePart.slice(pipeIndex);\r\n } else if (atIndex !== -1) {\r\n pathPart = statePart.slice(0, atIndex).trim();\r\n suffix = statePart.slice(atIndex);\r\n } else {\r\n pathPart = statePart.trim();\r\n suffix = '';\r\n }\r\n if (pathPart === '.') {\r\n pathPart = prefix;\r\n } else if (pathPart.startsWith('.')) {\r\n pathPart = prefix + DELIMITER + pathPart.slice(1);\r\n } else {\r\n return statePart;\r\n }\r\n if (suffix.length > 0) {\r\n return pathPart + suffix;\r\n }\r\n return pathPart;\r\n}\r\n\r\nfunction expandCommentData(data: string, forPath: string): string {\r\n const match = COMMENT_REGEX.exec(data);\r\n if (match === null) {\r\n return data;\r\n }\r\n const commentPrefix = match[1];\r\n const bindText = match[2];\r\n const commentSuffix = match[3];\r\n const expanded = expandShorthandInStatePart(bindText, forPath);\r\n return commentPrefix + expanded + commentSuffix;\r\n}\r\n\r\nfunction expandBindAttribute(attrValue: string, forPath: string): string {\r\n const parts = attrValue.split(';');\r\n let changed = false;\r\n const result = parts.map(part => {\r\n const trimmed = part.trim();\r\n if (trimmed.length === 0) return part;\r\n const colonIndex = trimmed.indexOf(':');\r\n if (colonIndex === -1) return part;\r\n const propPart = trimmed.slice(0, colonIndex).trim();\r\n const statePart = trimmed.slice(colonIndex + 1).trim();\r\n const expanded = expandShorthandInStatePart(statePart, forPath);\r\n if (expanded !== statePart) {\r\n changed = true;\r\n return `${propPart}: ${expanded}`;\r\n }\r\n return part;\r\n });\r\n if (!changed) return attrValue;\r\n return result.join(';');\r\n}\r\n\r\nexport function expandShorthandInBindAttribute(attrValue: string, forPath: string): string {\r\n return expandBindAttribute(attrValue, forPath);\r\n}\r\n\r\nexport function expandShorthandPaths(root: DocumentFragment, forPath: string): void {\r\n const bindAttr = config.bindAttributeName;\r\n const walker = document.createTreeWalker(\r\n root,\r\n NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_ELEMENT,\r\n );\r\n\r\n while (walker.nextNode()) {\r\n const node = walker.currentNode;\r\n if (node.nodeType === Node.COMMENT_NODE) {\r\n const comment = node as Comment;\r\n comment.data = expandCommentData(comment.data, forPath);\r\n continue;\r\n }\r\n const element = node as Element;\r\n if (element instanceof HTMLTemplateElement) {\r\n continue;\r\n }\r\n const attr = element.getAttribute(bindAttr);\r\n if (attr !== null) {\r\n const expanded = expandBindAttribute(attr, forPath);\r\n if (expanded !== attr) {\r\n element.setAttribute(bindAttr, expanded);\r\n }\r\n }\r\n }\r\n}\r\n","\r\nexport function getNodePath(node: Node): number[] {\r\n let currentNode: Node | null = node;\r\n const path: number[] = [];\r\n while(currentNode.parentNode !== null) {\r\n const nodes: Node[] = Array.from(currentNode.parentNode.childNodes);\r\n const index = nodes.indexOf(currentNode);\r\n path.unshift(index);\r\n currentNode = currentNode.parentNode;\r\n }\r\n return path;\r\n}\r\n","import { getParseBindTextResults } from \"../bindings/getParseBindTextResults\";\r\nimport { getSubscriberNodes } from \"../bindings/getSubscriberNodes\";\r\nimport { getNodePath } from \"./getNodePath\";\r\nimport { IFragmentNodeInfo } from \"./types\";\r\n\r\nexport function getFragmentNodeInfos(fragment: DocumentFragment): IFragmentNodeInfo[] {\r\n const fragmnentNodeInfos: IFragmentNodeInfo[] = [];\r\n const subscriberNodes = getSubscriberNodes(fragment);\r\n for(const subscriberNode of subscriberNodes) {\r\n const parseBindingTextResults = getParseBindTextResults(subscriberNode);\r\n fragmnentNodeInfos.push({\r\n nodePath: getNodePath(subscriberNode),\r\n parseBindTextResults: parseBindingTextResults,\r\n });\r\n }\r\n return fragmnentNodeInfos;\r\n}","\r\nexport function optimizeFragment(fragment: DocumentFragment): void {\r\n const childNodes = Array.from(fragment.childNodes);\r\n for(const childNode of childNodes) {\r\n if (childNode.nodeType === Node.TEXT_NODE) {\r\n const textContent = childNode.textContent || '';\r\n if (textContent.trim() === '') {\r\n // Remove empty text nodes\r\n fragment.removeChild(childNode);\r\n }\r\n }\r\n }\r\n}\r\n","import { getParseBindTextResults } from \"../bindings/getParseBindTextResults\";\r\nimport { parseBindTextsForElement } from \"../bindTextParser/parseBindTextsForElement\";\r\nimport { ParseBindTextResult } from \"../bindTextParser/types\";\r\nimport { config } from \"../config\";\r\nimport { getUUID } from \"../getUUID\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { BindingType } from \"../types\";\r\nimport { createNotFilter } from \"./createNotFilter\";\r\nimport { expandShorthandInBindAttribute, expandShorthandPaths } from \"./expandShorthandPaths\";\r\nimport { setFragmentInfoByUUID } from \"./fragmentInfoByUUID\";\r\nimport { getFragmentNodeInfos } from \"./getFragmentNodeInfos\";\r\nimport { getNodePath } from \"./getNodePath\";\r\nimport { optimizeFragment } from \"./optimizeFragment\";\r\nimport { IFragmentInfo } from \"./types\";\r\n\r\nconst keywordByBindingType: Map<BindingType, string> = new Map<BindingType, string>([\r\n [\"for\", config.commentForPrefix],\r\n [\"if\", config.commentIfPrefix],\r\n [\"elseif\", config.commentElseIfPrefix],\r\n [\"else\", config.commentElsePrefix],\r\n]);\r\n\r\nconst notFilter = createNotFilter();\r\n\r\nfunction cloneNotParseBindTextResult(\r\n bindingType: BindingType,\r\n parseBindTextResult: ParseBindTextResult\r\n): ParseBindTextResult {\r\n const filters = parseBindTextResult.outFilters;\r\n return {\r\n ...parseBindTextResult,\r\n outFilters: [...filters, notFilter],\r\n bindingType: bindingType,\r\n };\r\n}\r\n\r\nfunction _getFragmentInfo(\r\n rootNode: Node,\r\n fragment: DocumentFragment,\r\n parseBindingTextResult: ParseBindTextResult,\r\n forPath?: string\r\n): IFragmentInfo {\r\n optimizeFragment(fragment);\r\n if (typeof forPath === \"string\") {\r\n expandShorthandPaths(fragment, forPath);\r\n }\r\n collectStructuralFragments(rootNode, fragment, forPath);\r\n // after replacing and collect node infos on child fragment\r\n const fragmentInfo = {\r\n fragment: fragment,\r\n parseBindTextResult: parseBindingTextResult,\r\n nodeInfos: getFragmentNodeInfos(fragment),\r\n }\r\n return fragmentInfo;\r\n}\r\n\r\n\r\nexport function collectStructuralFragments(rootNode: Node, walkRoot: Document | Element | DocumentFragment, forPath?: string): void {\r\n const elseKeyword = config.commentElsePrefix;\r\n const walker = document.createTreeWalker(\r\n walkRoot, \r\n NodeFilter.SHOW_ELEMENT, \r\n {\r\n acceptNode(node: Node) {\r\n const element = node as Element;\r\n if (element.tagName.toLowerCase() === 'template') {\r\n const bindText = element.getAttribute(config.bindAttributeName) || '';\r\n if (bindText.length > 0) {\r\n return NodeFilter.FILTER_ACCEPT;\r\n }\r\n }\r\n return NodeFilter.FILTER_SKIP;\r\n }\r\n }\r\n );\r\n let lastIfFragmentInfo: IFragmentInfo | null = null; // for elseif chaining\r\n const elseFragmentInfos: IFragmentInfo[] = []; // for elseif chaining\r\n const templates: HTMLTemplateElement[] = [];\r\n while (walker.nextNode()) {\r\n const template = walker.currentNode as HTMLTemplateElement;\r\n templates.push(template);\r\n }\r\n\r\n for(const template of templates) {\r\n let bindText = template.getAttribute(config.bindAttributeName) || '';\r\n if (typeof forPath === \"string\") {\r\n bindText = expandShorthandInBindAttribute(bindText, forPath);\r\n }\r\n const parseBindTextResults = parseBindTextsForElement(bindText);\r\n let parseBindTextResult = parseBindTextResults[0];\r\n const keyword = keywordByBindingType.get(parseBindTextResult.bindingType);\r\n if (typeof keyword === 'undefined') {\r\n continue;\r\n }\r\n\r\n const bindingType = parseBindTextResult.bindingType;\r\n const fragment = template.content;\r\n const uuid = getUUID();\r\n let fragmentInfo: IFragmentInfo | null = null;\r\n\r\n // Determine childForPath for shorthand expansion\r\n const childForPath = bindingType === \"for\"\r\n ? parseBindTextResult.statePathName\r\n : forPath;\r\n\r\n if (bindingType === \"else\") {\r\n // check last 'if' or 'elseif' fragment info\r\n if (lastIfFragmentInfo === null) {\r\n raiseError(`'else' binding found without preceding 'if' or 'elseif' binding.`);\r\n }\r\n // else condition\r\n parseBindTextResult = cloneNotParseBindTextResult(\"else\", lastIfFragmentInfo.parseBindTextResult);\r\n fragmentInfo = _getFragmentInfo(rootNode, fragment, parseBindTextResult, childForPath);\r\n setFragmentInfoByUUID(uuid, rootNode, fragmentInfo);\r\n\r\n const lastElseFragmentInfo = elseFragmentInfos.at(-1);\r\n const placeHolder = document.createComment(`@@${keyword}:${uuid}`);\r\n if (typeof lastElseFragmentInfo !== \"undefined\") {\r\n template.remove();\r\n lastElseFragmentInfo.fragment.appendChild(placeHolder);\r\n lastElseFragmentInfo.nodeInfos.push({\r\n nodePath: getNodePath(placeHolder),\r\n parseBindTextResults: getParseBindTextResults(placeHolder),\r\n });\r\n } else {\r\n template.replaceWith(placeHolder);\r\n }\r\n } else if (bindingType === \"elseif\") {\r\n // check last 'if' or 'elseif' fragment info\r\n if (lastIfFragmentInfo === null) {\r\n raiseError(`'elseif' binding found without preceding 'if' or 'elseif' binding.`);\r\n }\r\n\r\n fragmentInfo = _getFragmentInfo(rootNode, fragment, parseBindTextResult, childForPath);\r\n setFragmentInfoByUUID(uuid, rootNode, fragmentInfo);\r\n const placeHolder = document.createComment(`@@${keyword}:${uuid}`);\r\n\r\n // create else fragment\r\n const elseUUID = getUUID();\r\n const elseFragmentInfo: IFragmentInfo = {\r\n fragment: document.createDocumentFragment(),\r\n parseBindTextResult: cloneNotParseBindTextResult(\"else\", lastIfFragmentInfo.parseBindTextResult),\r\n nodeInfos: [],\r\n };\r\n elseFragmentInfo.fragment.appendChild(placeHolder);\r\n elseFragmentInfo.nodeInfos.push({\r\n nodePath: getNodePath(placeHolder),\r\n parseBindTextResults: getParseBindTextResults(placeHolder),\r\n });\r\n setFragmentInfoByUUID(elseUUID, rootNode, elseFragmentInfo);\r\n const lastElseFragmentInfo = elseFragmentInfos.at(-1);\r\n elseFragmentInfos.push(elseFragmentInfo);\r\n const elsePlaceHolder = document.createComment(`@@${elseKeyword}:${elseUUID}`);\r\n\r\n if (typeof lastElseFragmentInfo !== \"undefined\") {\r\n template.remove();\r\n lastElseFragmentInfo.fragment.appendChild(elsePlaceHolder);\r\n lastElseFragmentInfo.nodeInfos.push({\r\n nodePath: getNodePath(elsePlaceHolder),\r\n parseBindTextResults: getParseBindTextResults(elsePlaceHolder),\r\n });\r\n } else {\r\n template.replaceWith(elsePlaceHolder);\r\n }\r\n\r\n } else {\r\n fragmentInfo = _getFragmentInfo(rootNode, fragment, parseBindTextResult, childForPath);\r\n setFragmentInfoByUUID(uuid, rootNode, fragmentInfo);\r\n const placeHolder = document.createComment(`@@${keyword}:${uuid}`);\r\n template.replaceWith(placeHolder);\r\n }\r\n\r\n // Update lastIfFragmentInfo for if/elseif/else chaining\r\n if (bindingType === \"if\") {\r\n elseFragmentInfos.length = 0; // start new if chain\r\n lastIfFragmentInfo = fragmentInfo;\r\n } else if (bindingType === \"elseif\") {\r\n lastIfFragmentInfo = fragmentInfo;\r\n } else if (bindingType === \"else\") {\r\n lastIfFragmentInfo = null;\r\n elseFragmentInfos.length = 0; // end if chain\r\n }\r\n }\r\n}\r\n","import { State } from \"./components/State\";\r\nimport { IStateElement } from \"./components/types\";\r\nimport { config } from \"./config\";\r\n\r\nexport async function waitForStateInitialize(root: Document | Element | DocumentFragment): Promise<void> {\r\n const elements = root.querySelectorAll(config.tagNames.state);\r\n const promises: Promise<void>[] = [];\r\n await customElements.whenDefined(config.tagNames.state);\r\n for(const element of elements) {\r\n const stateElement = element as State as IStateElement;\r\n promises.push(stateElement.initializePromise);\r\n }\r\n await Promise.all(promises);\r\n}\r\n","import { waitInitializeBinding } from \"./bindings/initializeBindingPromiseByNode\";\r\nimport { initializeBindings } from \"./bindings/initializeBindings\";\r\nimport { config } from \"./config\";\r\nimport { convertMustacheToComments } from \"./mustache/convertMustacheToComments\";\r\nimport { collectStructuralFragments } from \"./structural/collectStructuralFragments\";\r\nimport { waitForStateInitialize } from \"./waitForStateInitialize\";\r\n\r\nexport async function buildBindings(root: Document | ShadowRoot): Promise<void> {\r\n if (root === document) {\r\n // document配下のwcs-stateの初期化(connectedCallbackの完了)を待機する\r\n await waitForStateInitialize(document);\r\n // baindingを取得して、初期値をセットする\r\n convertMustacheToComments(document);\r\n collectStructuralFragments(document, document);\r\n initializeBindings(document.body, null);\r\n } else {\r\n const shadowRoot = root as ShadowRoot;\r\n if (shadowRoot.host.hasAttribute(config.bindAttributeName)) {\r\n // data-wcsを持つWebComponentは、WebComponentのbindingが完了するまで待機する。\r\n await waitInitializeBinding(shadowRoot.host);\r\n }\r\n // shadowRoot配下のwcs-stateの初期化(connectedCallbackの完了)を待機する\r\n await waitForStateInitialize(shadowRoot);\r\n // baindingを取得して、初期値をセットする\r\n convertMustacheToComments(shadowRoot);\r\n collectStructuralFragments(shadowRoot, shadowRoot);\r\n initializeBindings(shadowRoot, null);\r\n }\r\n}\r\n","import { buildBindings } from \"./buildBindings\";\r\nimport { IStateElement } from \"./components/types\";\r\nimport { config } from \"./config\";\r\nimport { raiseError } from \"./raiseError\";\r\n\r\nconst stateElementByNameByNode: WeakMap<Node, Map<string, IStateElement>> = new WeakMap();\r\n\r\nexport function getStateElementByName(rootNode:Node, name: string): IStateElement | null {\r\n let stateElementByName = stateElementByNameByNode.get(rootNode);\r\n if (!stateElementByName) {\r\n return null;\r\n }\r\n return stateElementByName.get(name) || null;\r\n}\r\n\r\nexport function setStateElementByName(rootNode:Node, name: string, element: IStateElement | null): void {\r\n\r\n let stateElementByName = stateElementByNameByNode.get(rootNode);\r\n\r\n if (element === null) {\r\n // 削除の場合、Mapが存在しない場合は何もしない\r\n if (!stateElementByName) {\r\n return;\r\n }\r\n stateElementByName.delete(name);\r\n if (stateElementByName.size === 0) {\r\n stateElementByNameByNode.delete(rootNode);\r\n }\r\n if (config.debug) {\r\n console.debug(`State element unregistered: name=\"${name}\"`);\r\n }\r\n } else {\r\n // 登録の場合\r\n if (!stateElementByName) {\r\n stateElementByName = new Map<string, IStateElement>();\r\n stateElementByNameByNode.set(rootNode, stateElementByName);\r\n // 初めてルートノードに登録する場合\r\n if (rootNode.constructor.name === 'HTMLDocument' || rootNode.constructor.name === 'Document') {\r\n queueMicrotask(() => {\r\n buildBindings(rootNode as Document);\r\n });\r\n } else if (rootNode.constructor.name === 'ShadowRoot') {\r\n queueMicrotask(() => {\r\n buildBindings(rootNode as ShadowRoot);\r\n });\r\n }\r\n }\r\n if (stateElementByName.has(name)) {\r\n raiseError(`State element with name \"${name}\" is already registered.`);\r\n }\r\n stateElementByName.set(name, element);\r\n if (config.debug) {\r\n console.debug(`State element registered: name=\"${name}\"`, element);\r\n }\r\n }\r\n}\r\n","import { IStateAddress } from \"../address/types\";\r\nimport { MAX_LOOP_DEPTH } from \"../define\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { ILoopContext, ILoopContextStack } from \"./types\";\r\n\r\ntype LoopContextCallback<T> = (loopContext: ILoopContext) => T | Promise<T>;\r\n\r\nclass LoopContextStack {\r\n private _loopContextStack: (ILoopContext | undefined)[] = Array(MAX_LOOP_DEPTH).fill(undefined);\r\n private _length: number = 0;\r\n\r\n createLoopContext(\r\n elementStateAddress: IStateAddress,\r\n callback: LoopContextCallback<void>\r\n ): void | Promise<void> {\r\n if (elementStateAddress.listIndex === null) {\r\n raiseError(`Cannot create loop context for a state address that does not have a list index.`);\r\n }\r\n const loopContext = elementStateAddress as ILoopContext;\r\n if (this._length >= MAX_LOOP_DEPTH) {\r\n raiseError(`Exceeded maximum loop context stack depth of ${MAX_LOOP_DEPTH}. Possible infinite loop.`);\r\n }\r\n const lastLoopContext = this._loopContextStack[this._length - 1];\r\n if (typeof lastLoopContext !== \"undefined\" ) {\r\n if (lastLoopContext.pathInfo.wildcardCount + 1 !== loopContext.pathInfo.wildcardCount) {\r\n raiseError(`Cannot push loop context for a list whose wildcard count is not exactly one more than the current active loop context.`);\r\n }\r\n // \r\n const prevWildcardPathInfo = loopContext.pathInfo.wildcardPathInfos[loopContext.pathInfo.wildcardPathInfos.length - 2];\r\n if (lastLoopContext.pathInfo !== prevWildcardPathInfo) {\r\n raiseError(`Cannot push loop context for a list whose parent wildcard path info does not match the current active loop context.`);\r\n }\r\n } else {\r\n if (loopContext.pathInfo.wildcardCount !== 1) {\r\n raiseError(`Cannot push loop context for a list with wildcard positions when there is no active loop context.`);\r\n }\r\n }\r\n this._loopContextStack[this._length] = loopContext;\r\n this._length++;\r\n let retValue : void | Promise<void> = void 0;\r\n try {\r\n retValue = callback(loopContext);\r\n } finally {\r\n if (retValue instanceof Promise) {\r\n retValue.finally(() => {\r\n this._length--;\r\n this._loopContextStack[this._length] = undefined;\r\n });\r\n } else {\r\n this._length--;\r\n this._loopContextStack[this._length] = undefined;\r\n }\r\n }\r\n return retValue;\r\n } \r\n}\r\n\r\nexport function createLoopContextStack(): ILoopContextStack {\r\n return new LoopContextStack();\r\n}\r\n\r\n","/**\r\n * getResolvedPathInfo.ts\r\n *\r\n * Utility for parsing and generating detailed path information (IResolvedPathInfo)\r\n * from State property names (path strings), including wildcard and index information.\r\n *\r\n * Main responsibilities:\r\n * - Breaks down property names to determine presence and type of wildcards and indexes\r\n * - Automatically determines wildcard type: context/all/partial/none\r\n * - Caches by path for reusability and performance\r\n * - Retrieves structured path information via getStructuredPathInfo\r\n *\r\n * Design points:\r\n * - Caches using Map to handle reserved words like \"constructor\" and \"toString\"\r\n * - Flexibly determines wildcards (*) and numeric indexes, storing them in wildcardIndexes\r\n * - context type indicates unresolved indexes, all type indicates all resolved indexes, partial type indicates mixed\r\n * - ResolvedPathInfo class centralizes path parsing and information management\r\n */\r\nimport { IResolvedAddress, WildcardType } from './types';\r\nimport { getPathInfo } from './PathInfo';\r\n\r\n/**\r\n * Cache for resolved path information.\r\n * Uses Map to safely handle property names including reserved words like \"constructor\" and \"toString\".\r\n */\r\nconst _cache: Map<string, IResolvedAddress> = new Map();\r\n\r\n/**\r\n * Class that parses and stores resolved path information.\r\n * \r\n * Analyzes property path strings to extract:\r\n * - Path segments and their hierarchy\r\n * - Wildcard locations and types\r\n * - Numeric indexes vs unresolved wildcards\r\n * - Wildcard type classification (none/context/all/partial)\r\n */\r\nclass ResolvedAddress implements IResolvedAddress {\r\n readonly path;\r\n readonly segments;\r\n readonly paths;\r\n readonly wildcardCount;\r\n readonly wildcardType;\r\n readonly wildcardIndexes;\r\n readonly pathInfo;\r\n \r\n /**\r\n * Constructs resolved path information from a property path string.\r\n * \r\n * Parses the path to identify wildcards (*) and numeric indexes,\r\n * classifies the wildcard type, and generates structured path information.\r\n * \r\n * @param name - Property path string (e.g., \"items.*.name\" or \"data.0.value\")\r\n */\r\n constructor(path: string) {\r\n // Split path into individual segments\r\n const segments = path.split(\".\");\r\n const tmpPatternSegments = segments.slice();\r\n const paths = [];\r\n let incompleteCount = 0; // Count of unresolved wildcards (*)\r\n let completeCount = 0; // Count of resolved wildcards (numeric indexes)\r\n let lastPath = \"\";\r\n let wildcardCount = 0;\r\n let wildcardType: WildcardType = \"none\";\r\n const wildcardIndexes: (number | null)[] = [];\r\n \r\n // Process each segment to identify wildcards and indexes\r\n for(let i = 0; i < segments.length; i++) {\r\n const segment = segments[i];\r\n if (segment === \"*\") {\r\n // Unresolved wildcard\r\n tmpPatternSegments[i] = \"*\";\r\n wildcardIndexes.push(null);\r\n incompleteCount++;\r\n wildcardCount++;\r\n } else {\r\n const number = Number(segment);\r\n if (!Number.isNaN(number)) {\r\n // Numeric index - treat as resolved wildcard\r\n tmpPatternSegments[i] = \"*\";\r\n wildcardIndexes.push(number);\r\n completeCount++;\r\n wildcardCount++;\r\n }\r\n }\r\n // Build cumulative path array\r\n lastPath += segment;\r\n paths.push(lastPath);\r\n lastPath += (i < segment.length - 1 ? \".\" : \"\");\r\n }\r\n // Generate pattern string with wildcards normalized\r\n const structuredPath = tmpPatternSegments.join(\".\");\r\n const pathInfo = getPathInfo(structuredPath);\r\n \r\n // Classify wildcard type based on resolved vs unresolved counts\r\n if (incompleteCount > 0 || completeCount > 0) {\r\n if (incompleteCount === wildcardCount) {\r\n // All wildcards are unresolved - need context to resolve\r\n wildcardType = \"context\";\r\n } else if (completeCount === wildcardCount) {\r\n // All wildcards are resolved with numeric indexes\r\n wildcardType = \"all\";\r\n } else {\r\n // Mix of resolved and unresolved wildcards\r\n wildcardType = \"partial\";\r\n }\r\n }\r\n this.path = path;\r\n this.segments = segments;\r\n this.paths = paths;\r\n this.wildcardCount = wildcardCount;\r\n this.wildcardType = wildcardType;\r\n this.wildcardIndexes = wildcardIndexes;\r\n this.pathInfo = pathInfo;\r\n }\r\n}\r\n\r\n/**\r\n * Retrieves or creates resolved path information for a property path.\r\n * \r\n * This function caches resolved path information for performance.\r\n * On first access, it parses the path and creates a ResolvedPathInfo instance.\r\n * Subsequent accesses return the cached result.\r\n * \r\n * @param name - Property path string (e.g., \"items.*.name\", \"data.0.value\")\r\n * @returns Resolved path information containing segments, wildcards, and type classification\r\n */\r\nexport function getResolvedAddress(name:string):IResolvedAddress {\r\n let nameInfo: IResolvedAddress | undefined;\r\n // Return cached value or create, cache, and return new instance\r\n return _cache.get(name) ?? (_cache.set(name, nameInfo = new ResolvedAddress(name)), nameInfo);\r\n}","/**\r\n * connectedCallback.ts\r\n *\r\n * StateClassのライフサイクルフック「$connectedCallback」を呼び出すユーティリティ関数です。\r\n *\r\n * 主な役割:\r\n * - オブジェクト(target)に$connectedCallbackメソッドが定義されていれば呼び出す\r\n * - コールバックはtargetのthisコンテキストで呼び出し、IReadonlyStateProxy(receiver)を引数として渡す\r\n * - 非同期関数として実行可能(await対応)\r\n *\r\n * 設計ポイント:\r\n * - Reflect.getで$connectedCallbackプロパティを安全に取得\r\n * - 存在しない場合は何もしない\r\n * - ライフサイクル管理やカスタム初期化処理に利用\r\n */\r\n\r\nimport { STATE_CONNECTED_CALLBACK_NAME } from \"../../define\";\r\nimport { IStateHandler } from \"../types\";\r\n\r\nexport async function connectedCallback(\r\n target: object, \r\n _prop: PropertyKey, \r\n receiver: any,\r\n _handler: IStateHandler\r\n):Promise<void> {\r\n const callback = Reflect.get(target, STATE_CONNECTED_CALLBACK_NAME);\r\n if (typeof callback === \"function\") {\r\n await callback.call(receiver);\r\n }\r\n}","/**\r\n * disconnectedCallback.ts\r\n *\r\n * StateClassのライフサイクルフック「$disconnectedCallback」を呼び出すユーティリティ関数です。\r\n *\r\n * 主な役割:\r\n * - オブジェクト(target)に$disconnectedCallbackメソッドが定義されていれば呼び出す\r\n * - コールバックはtargetのthisコンテキストで呼び出し、IReadonlyStateProxy(receiver)を引数として渡す\r\n *\r\n * 設計ポイント:\r\n * - Reflect.getで$disconnectedCallbackプロパティを安全に取得\r\n * - 存在しない場合は何もしない\r\n * - ライフサイクル管理やクリーンアップ処理に利用\r\n */\r\n\r\nimport { STATE_DISCONNECTED_CALLBACK_NAME } from \"../../define\";\r\nimport { IStateHandler } from \"../types\";\r\n\r\nexport function disconnectedCallback(\r\n target: object, \r\n _prop: PropertyKey, \r\n receiver: any,\r\n _handler: IStateHandler\r\n): void {\r\n const callback = Reflect.get(target, STATE_DISCONNECTED_CALLBACK_NAME);\r\n if (typeof callback === \"function\") {\r\n callback.call(receiver);\r\n }\r\n}\r\n","import { IAbsoluteStateAddress } from \"../address/types\";\r\nimport { ICacheEntry } from \"./types\";\r\n\r\nconst cacheEntryByAbsoluteStateAddress: WeakMap<IAbsoluteStateAddress, ICacheEntry> = new WeakMap();\r\n\r\nexport function getCacheEntryByAbsoluteStateAddress(\r\n address: IAbsoluteStateAddress\r\n): ICacheEntry | null {\r\n return cacheEntryByAbsoluteStateAddress.get(address) ?? null;\r\n}\r\n\r\nexport function setCacheEntryByAbsoluteStateAddress(\r\n address: IAbsoluteStateAddress,\r\n cacheEntry: ICacheEntry | null\r\n): void {\r\n if (cacheEntry === null) {\r\n cacheEntryByAbsoluteStateAddress.delete(address);\r\n } else {\r\n cacheEntryByAbsoluteStateAddress.set(address, cacheEntry);\r\n }\r\n}\r\n\r\nexport function dirtyCacheEntryByAbsoluteStateAddress(\r\n address: IAbsoluteStateAddress\r\n): void {\r\n const cacheEntry = cacheEntryByAbsoluteStateAddress.get(address);\r\n if (cacheEntry) {\r\n cacheEntry.dirty = true;\r\n }\r\n}","import { IStateAddress } from \"../../address/types\";\r\nimport { IStateHandler } from \"../types\";\r\n\r\nexport function checkDependency(\r\n handler: IStateHandler,\r\n address: IStateAddress,\r\n): void {\r\n // 動的依存関係の登録\r\n if (handler.addressStackLength > 0) {\r\n const lastInfo = handler.lastAddressStack?.pathInfo ?? null;\r\n const stateElement = handler.stateElement;\r\n if (lastInfo !== null) {\r\n if (stateElement.getterPaths.has(lastInfo.path) &&\r\n lastInfo.path !== address.pathInfo.path) {\r\n // lastInfo.pathはgetterの名前であり、address.pathInfo.pathは\r\n // そのgetterが参照している値のパスである\r\n stateElement.addDynamicDependency(address.pathInfo.path, lastInfo.path);\r\n }\r\n }\r\n }\r\n}","/**\r\n * getByAddress.ts\r\n *\r\n * StateClassの内部APIとして、構造化パス情報(IStructuredPathInfo)とリストインデックス(IListIndex)を指定して\r\n * 状態オブジェクト(target)から値を取得するための関数(getByAddress)の実装です。\r\n *\r\n * 主な役割:\r\n * - 指定されたパス・インデックスに対応するState値を取得(多重ループやワイルドカードにも対応)\r\n * - 依存関係の自動登録(checkDependencyで登録)\r\n * - キャッシュ機構(リストもキャッシュ対象)\r\n * - getter経由で値取得時はpushAddressでスコープを一時設定\r\n * - 存在しない場合は親pathAddressやlistIndexを辿って再帰的に値を取得\r\n *\r\n * 設計ポイント:\r\n * - checkDependencyで依存追跡を実行 \r\n * - キャッシュ有効時はstateAddressで値をキャッシュし、取得・再利用を最適化\r\n * - ワイルドカードや多重ループにも柔軟に対応し、再帰的な値取得を実現\r\n * - finallyでキャッシュへの格納を保証\r\n */\r\n\r\nimport { getAbsolutePathInfo } from \"../../address/AbsolutePathInfo\";\r\nimport { createAbsoluteStateAddress } from \"../../address/AbsoluteStateAddress\";\r\nimport { IStateAddress } from \"../../address/types\";\r\nimport { getCacheEntryByAbsoluteStateAddress, setCacheEntryByAbsoluteStateAddress } from \"../../cache/cacheEntryByAbsoluteStateAddress\";\r\nimport { IStateElement } from \"../../components/types\";\r\nimport { WILDCARD } from \"../../define\";\r\nimport { raiseError } from \"../../raiseError\";\r\nimport { IStateHandler } from \"../types\";\r\nimport { checkDependency } from \"./checkDependency\";\r\n\r\nfunction _getByAddress(\r\n target : object, \r\n address : IStateAddress,\r\n receiver : any,\r\n handler : IStateHandler,\r\n stateElement: IStateElement,\r\n): any {\r\n if (address.pathInfo.path in target) {\r\n // getterの中で参照の可能性があるので、addressをプッシュする\r\n if (stateElement.getterPaths.has(address.pathInfo.path)) {\r\n handler.pushAddress(address);\r\n try {\r\n return Reflect.get(target, address.pathInfo.path, receiver);\r\n } finally {\r\n handler.popAddress();\r\n }\r\n } else {\r\n return Reflect.get(target, address.pathInfo.path);\r\n }\r\n } else {\r\n const parentAddress = address.parentAddress ?? raiseError(`address.parentAddress is undefined path: ${address.pathInfo.path}`);\r\n const parentValue = getByAddress(target, parentAddress, receiver, handler);\r\n const lastSegment = address.pathInfo.segments[address.pathInfo.segments.length - 1];\r\n if (lastSegment === WILDCARD) {\r\n const index = address.listIndex?.index ?? raiseError(`address.listIndex?.index is undefined path: ${address.pathInfo.path}`);\r\n return Reflect.get(parentValue, index);\r\n } else {\r\n return Reflect.get(parentValue, lastSegment);\r\n }\r\n }\r\n}\r\n\r\nfunction _getByAddressWithCache(\r\n target : object, \r\n address : IStateAddress,\r\n receiver : any,\r\n handler : IStateHandler,\r\n stateElement: IStateElement\r\n): any {\r\n const absPathInfo = getAbsolutePathInfo(stateElement, address.pathInfo);\r\n const absAddress = createAbsoluteStateAddress(absPathInfo, address.listIndex);\r\n const cacheEntry = getCacheEntryByAbsoluteStateAddress(absAddress);\r\n if (cacheEntry !== null && cacheEntry.dirty === false) {\r\n return cacheEntry.value;\r\n }\r\n const value = _getByAddress(target, address, receiver, handler, stateElement);\r\n setCacheEntryByAbsoluteStateAddress(absAddress, {\r\n value: value,\r\n dirty: false\r\n });\r\n return value;\r\n}\r\n\r\nexport function getByAddress(\r\n target : object,\r\n address : IStateAddress,\r\n receiver : any,\r\n handler : IStateHandler\r\n): any {\r\n checkDependency(handler, address);\r\n const stateElement = handler.stateElement;\r\n const cacheable = address.pathInfo.wildcardCount > 0 || \r\n stateElement.getterPaths.has(address.pathInfo.path);\r\n if (cacheable) {\r\n return _getByAddressWithCache(target, address, receiver, handler, stateElement);\r\n } else {\r\n return _getByAddress(target, address, receiver, handler, stateElement);\r\n }\r\n}\r\n","/**\r\n * getContextListIndex.ts\r\n *\r\n * Stateの内部APIとして、現在のプロパティ参照スコープにおける\r\n * 指定したstructuredPath(ワイルドカード付きプロパティパス)に対応する\r\n * リストインデックス(IListIndex)を取得する関数です。\r\n *\r\n * 主な役割:\r\n * - handlerの最後にアクセスされたAddressから、指定パスに対応するリストインデックスを取得\r\n * - ワイルドカード階層に対応し、多重ループやネストした配列バインディングにも利用可能\r\n *\r\n * 設計ポイント:\r\n * - 直近のプロパティ参照情報を取得\r\n * - info.indexByWildcardPathからstructuredPathのインデックスを特定\r\n * - listIndex.at(index)で該当階層のリストインデックスを取得\r\n * - パスが一致しない場合や参照が存在しない場合はnullを返す\r\n */\r\n\r\nimport { IListIndex } from \"../../list/types\";\r\nimport { IStateHandler } from \"../types\";\r\n\r\nexport function getContextListIndex(\r\n handler: IStateHandler,\r\n structuredPath: string\r\n): IListIndex | null {\r\n if (handler.addressStackLength === 0) {\r\n return null;\r\n }\r\n const address = handler.lastAddressStack;\r\n if (address === null) {\r\n return null;\r\n }\r\n const index: number | undefined = address.pathInfo.indexByWildcardPath[structuredPath];\r\n if (typeof index === \"undefined\") {\r\n return null;\r\n }\r\n return address.listIndex?.at(index) ?? null;\r\n}\r\n","import { IAbsoluteStateAddress } from \"../address/types\";\r\nimport { applyChangeFromBindings } from \"../apply/applyChangeFromBindings\";\r\nimport { getBindingSetByAbsoluteStateAddress } from \"../binding/getBindingSetByAbsoluteStateAddress\";\r\nimport { IBindingInfo } from \"../types\";\r\n\r\nclass Updater {\r\n private _queueAbsoluteAddresses: IAbsoluteStateAddress[] = [];\r\n constructor() {\r\n }\r\n\r\n enqueueAbsoluteAddress(absoluteAddress: IAbsoluteStateAddress): void {\r\n const requireStartProcess = this._queueAbsoluteAddresses.length === 0;\r\n this._queueAbsoluteAddresses.push(absoluteAddress);\r\n if (requireStartProcess) {\r\n queueMicrotask(() => {\r\n const absoluteAddresses = this._queueAbsoluteAddresses;\r\n this._queueAbsoluteAddresses = [];\r\n this._applyChange(absoluteAddresses);\r\n });\r\n }\r\n }\r\n\r\n // テスト用に公開\r\n testApplyChange(absoluteAddresses: IAbsoluteStateAddress[]): void {\r\n this._applyChange(absoluteAddresses);\r\n }\r\n\r\n private _applyChange(absoluteAddresses: IAbsoluteStateAddress[]): void {\r\n // Note: AbsoluteStateAddress はキャッシュされているため、\r\n // 同一の (stateName, address) は同じインスタンスとなり、\r\n // Set による重複排除が正しく機能する \r\n const absoluteAddressSet = new Set(absoluteAddresses);\r\n const processBindings: IBindingInfo[] = [];\r\n for (const absoluteAddress of absoluteAddressSet) {\r\n const bindings = getBindingSetByAbsoluteStateAddress(absoluteAddress);\r\n for(const binding of bindings) {\r\n if (binding.replaceNode.isConnected === false) {\r\n // 切断されているバインディングは無視\r\n continue;\r\n }\r\n processBindings.push(binding);\r\n }\r\n }\r\n applyChangeFromBindings(\r\n processBindings\r\n );\r\n }\r\n\r\n}\r\n\r\nconst updater = new Updater();\r\n\r\nexport function getUpdater(): Updater {\r\n return updater;\r\n}\r\n\r\n// テスト用にprivateメソッドを公開\r\nexport const __private__ = {\r\n Updater,\r\n};\r\n","import { IStateAddress } from \"../../address/types\";\r\nimport { ISwapInfo } from \"./types\";\r\n\r\nconst swapInfoByStateAddress: WeakMap<IStateAddress, ISwapInfo> = new WeakMap();\r\n\r\nexport function getSwapInfoByAddress(address: IStateAddress): ISwapInfo | null {\r\n return swapInfoByStateAddress.get(address) ?? null;\r\n}\r\n\r\nexport function setSwapInfoByAddress(address: IStateAddress, swapInfo: ISwapInfo | null): void {\r\n if (swapInfo === null) {\r\n swapInfoByStateAddress.delete(address);\r\n } else {\r\n swapInfoByStateAddress.set(address, swapInfo);\r\n }\r\n}\r\n","import { getAbsolutePathInfo } from \"../address/AbsolutePathInfo\";\r\nimport { createAbsoluteStateAddress } from \"../address/AbsoluteStateAddress\";\r\nimport { calcWildcardLen } from \"../address/calcWildcardLen\";\r\nimport { getPathInfo } from \"../address/PathInfo\";\r\nimport { createStateAddress } from \"../address/StateAddress\";\r\nimport { IPathInfo, IStateAddress } from \"../address/types\";\r\nimport { IStateElement } from \"../components/types\";\r\nimport { config } from \"../config\";\r\nimport { WILDCARD } from \"../define\";\r\nimport { createListDiff } from \"../list/createListDiff\";\r\nimport { getLastListValueByAbsoluteStateAddress } from \"../list/lastListValueByAbsoluteStateAddress\";\r\nimport { IListDiff, IListIndex } from \"../list/types\";\r\nimport { getByAddressSymbol } from \"../proxy/symbols\";\r\nimport { IStateProxy } from \"../proxy/types\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { SearchType } from \"./types\";\r\n\r\nconst MAX_DEPENDENCY_DEPTH = 1000;\r\n\r\nfunction getIndexes(listDiff: IListDiff, searchType: SearchType): Iterable<IListIndex> {\r\n switch (searchType) {\r\n case \"old\":\r\n return listDiff.oldIndexes;\r\n case \"new\":\r\n return listDiff.newIndexes;\r\n case \"add\":\r\n return listDiff.addIndexSet;\r\n case \"change\":\r\n return listDiff.changeIndexSet;\r\n case \"delete\":\r\n return listDiff.deleteIndexSet;\r\n default: \r\n if (config.debug) {\r\n console.log(`Invalid search type: ${searchType}`);\r\n }\r\n return [];\r\n }\r\n}\r\n\r\ntype ExpandContext = {\r\n readonly stateName: string,\r\n readonly stateElement: IStateElement,\r\n readonly targetPathInfo: IPathInfo,\r\n readonly targetListIndexes: IListIndex[],\r\n readonly wildcardPaths: string[],\r\n readonly wildcardParentPaths: string[],\r\n readonly stateProxy: IStateProxy,\r\n readonly searchType: SearchType\r\n}\r\n\r\nfunction _walkExpandWildcard(\r\n context: ExpandContext, \r\n currentWildcardIndex: number,\r\n parentListIndex: IListIndex | null\r\n): void {\r\n const parentPath = context.wildcardParentPaths[currentWildcardIndex];\r\n const parentPathInfo = getPathInfo(parentPath);\r\n const parentAbsPathInfo = getAbsolutePathInfo(context.stateElement, parentPathInfo);\r\n const parentAddress = createStateAddress(parentPathInfo, parentListIndex);\r\n const parentAbsAddress = createAbsoluteStateAddress(parentAbsPathInfo, parentListIndex);\r\n const lastValue = getLastListValueByAbsoluteStateAddress(parentAbsAddress);\r\n const newValue = context.stateProxy[getByAddressSymbol](parentAddress);\r\n const listDiff = createListDiff(parentAddress.listIndex, lastValue, newValue);\r\n\r\n const loopIndexes = getIndexes(listDiff, context.searchType);\r\n if (currentWildcardIndex === context.wildcardPaths.length - 1) {\r\n context.targetListIndexes.push(...loopIndexes);\r\n } else {\r\n for(const listIndex of loopIndexes) {\r\n _walkExpandWildcard(\r\n context,\r\n currentWildcardIndex + 1,\r\n listIndex\r\n );\r\n }\r\n }\r\n}\r\n\r\ntype Context = {\r\n readonly stateName: string,\r\n readonly stateElement: IStateElement,\r\n readonly staticMap: Map<string, string[]>,\r\n readonly dynamicMap: Map<string, string[]>, \r\n readonly result: Set<IStateAddress>,\r\n readonly listPathSet: Set<string>,\r\n readonly visited: Set<IStateAddress>,\r\n readonly stateProxy: IStateProxy,\r\n readonly searchType: SearchType,\r\n}\r\n\r\ntype StackEntry = { address: IStateAddress, depth: number };\r\n\r\nfunction _walkDependency(\r\n context: Context,\r\n startAddress: IStateAddress,\r\n callback: (address: IStateAddress) => void\r\n): void {\r\n const stack: StackEntry[] = [{ address: startAddress, depth: 0 }];\r\n\r\n while (stack.length > 0) {\r\n const { address, depth } = stack.pop()!;\r\n if (depth > MAX_DEPENDENCY_DEPTH) {\r\n raiseError(`Maximum dependency depth of ${MAX_DEPENDENCY_DEPTH} exceeded. Possible circular dependency detected at path: ${address.pathInfo.path}`);\r\n }\r\n if (context.visited.has(address)) {\r\n continue;\r\n }\r\n context.visited.add(address);\r\n callback(address);\r\n const sourcePath = address.pathInfo.path;\r\n const nextDepth = depth + 1;\r\n\r\n // 依存アドレスを逆順でpushするための一時バッファ\r\n const nextEntries: StackEntry[] = [];\r\n\r\n /**\r\n * パスから依存関係をたどる\r\n * users.*.name <= users.* <= users\r\n * ただし、users がリストであれば users.* の依存関係は展開する\r\n */\r\n const staticDeps = context.staticMap.get(sourcePath);\r\n if (staticDeps) {\r\n for(const dep of staticDeps) {\r\n const depPathInfo = getPathInfo(dep);\r\n if (context.listPathSet.has(sourcePath) && depPathInfo.lastSegment === WILDCARD) {\r\n //expand indexes\r\n const newValue = context.stateProxy[getByAddressSymbol](address);\r\n const absPathInfo = getAbsolutePathInfo(context.stateElement, address.pathInfo);\r\n const absAddress = createAbsoluteStateAddress(absPathInfo, address.listIndex);\r\n const lastValue = getLastListValueByAbsoluteStateAddress(absAddress);\r\n const listDiff = createListDiff(address.listIndex, lastValue, newValue);\r\n for(const listIndex of listDiff.newIndexes) {\r\n const depAddress = createStateAddress(depPathInfo, listIndex);\r\n context.result.add(depAddress);\r\n nextEntries.push({ address: depAddress, depth: nextDepth });\r\n }\r\n } else {\r\n const depAddress = createStateAddress(depPathInfo, address.listIndex);\r\n context.result.add(depAddress);\r\n nextEntries.push({ address: depAddress, depth: nextDepth });\r\n }\r\n }\r\n }\r\n /**\r\n * 動的依存関係をたどる\r\n * 動的依存関係は、getterの実行時に決定される\r\n *\r\n * source, target\r\n *\r\n * products.*.price => products.*.tax\r\n * get \"products.*.tax\"() { return this[\"products.*.price\"] * 0.1; }\r\n *\r\n * products.*.price => products.summary\r\n * get \"products.summary\"() { return this.$getAll(\"products.*.price\", []).reduce(sum); }\r\n *\r\n * categories.*.name => categories.*.products.*.categoryName\r\n * get \"categories.*.products.*.categoryName\"() { return this[\"categories.*.name\"]; }\r\n */\r\n const dynamicDeps = context.dynamicMap.get(sourcePath);\r\n if (dynamicDeps) {\r\n for(const dep of dynamicDeps) {\r\n const depPathInfo = getPathInfo(dep);\r\n const listIndexes: (IListIndex | null)[] = [];\r\n if (depPathInfo.wildcardCount > 0) {\r\n // ワイルドカードを含む依存関係の処理\r\n // 同じ親を持つかをパスの集合積で判定する\r\n // polyfills.tsにてSetのintersectionメソッドを定義している\r\n const wildcardLen = calcWildcardLen(address.pathInfo, depPathInfo);\r\n const expandable = (depPathInfo.wildcardCount - wildcardLen) >= 1;\r\n if (expandable) {\r\n let listIndex: IListIndex | null;\r\n if (wildcardLen > 0) {\r\n // categories.*.name => categories.*.products.*.categoryName\r\n // ワイルドカードを含む同じ親(products.*)を持つのが、\r\n // さらに下位にワイルドカードがあるので展開する\r\n if (address.listIndex === null) {\r\n raiseError(`Cannot expand dynamic dependency with wildcard for non-list address: ${address.pathInfo.path}`);\r\n }\r\n listIndex = address.listIndex!.at(wildcardLen - 1);\r\n } else {\r\n // selectedIndex => items.*.selected\r\n // 同じ親を持たない場合はnullから開始\r\n listIndex = null;\r\n }\r\n const expandContext: ExpandContext = {\r\n stateName: context.stateName,\r\n stateElement: context.stateElement,\r\n targetPathInfo: depPathInfo,\r\n targetListIndexes: [],\r\n wildcardPaths: depPathInfo.wildcardPaths,\r\n wildcardParentPaths: depPathInfo.wildcardParentPaths,\r\n stateProxy: context.stateProxy,\r\n searchType: context.searchType,\r\n };\r\n _walkExpandWildcard(expandContext, wildcardLen, listIndex);\r\n listIndexes.push(...expandContext.targetListIndexes);\r\n } else {\r\n // products.*.price => products.*.tax\r\n // ワイルドカードを含む同じ親(products.*)を持つので、リストインデックスは引き継ぐ\r\n if (address.listIndex === null) {\r\n raiseError(`Cannot expand dynamic dependency with wildcard for non-list address: ${address.pathInfo.path}`);\r\n }\r\n const listIndex = address.listIndex.at(wildcardLen - 1);\r\n listIndexes.push(listIndex);\r\n }\r\n } else {\r\n // products.*.tax => currentTaxRate\r\n // 同じ親を持たないので、リストインデックスはnull\r\n listIndexes.push(null);\r\n }\r\n for(const listIndex of listIndexes) {\r\n const depAddress = createStateAddress(depPathInfo, listIndex);\r\n context.result.add(depAddress);\r\n nextEntries.push({ address: depAddress, depth: nextDepth });\r\n }\r\n }\r\n }\r\n\r\n // 逆順でpushして、元の再帰と同じ探索順序を保つ\r\n for(let i = nextEntries.length - 1; i >= 0; i--) {\r\n stack.push(nextEntries[i]);\r\n }\r\n }\r\n}\r\n\r\nexport function walkDependency(\r\n stateName: string,\r\n stateElement: IStateElement,\r\n startAddress: IStateAddress,\r\n staticDependency: Map<string, string[]>,\r\n dynamicDependency: Map<string, string[]>,\r\n listPathSet: Set<string>,\r\n stateProxy: IStateProxy,\r\n searchType: SearchType,\r\n callback: (address: IStateAddress) => void\r\n): IStateAddress[] {\r\n const context: Context = {\r\n stateName: stateName,\r\n stateElement: stateElement,\r\n staticMap: staticDependency,\r\n dynamicMap: dynamicDependency,\r\n result: new Set<IStateAddress>(),\r\n listPathSet: listPathSet,\r\n visited: new Set<IStateAddress>(),\r\n stateProxy: stateProxy,\r\n searchType: searchType,\r\n };\r\n _walkDependency(context, startAddress, callback);\r\n return Array.from(context.result);\r\n}\r\n","/**\r\n * setByAddress.ts\r\n *\r\n * Stateの内部APIとして、アドレス情報(IStateAddress)を指定して\r\n * 状態オブジェクト(target)に値を設定するための関数(setByAddress)の実装です。\r\n *\r\n * 主な役割:\r\n * - 指定されたパス・インデックスに対応するState値を設定(多重ループやワイルドカードにも対応)\r\n * - getter/setter経由で値設定時はpushAddressでスコープを一時設定\r\n * - 存在しない場合は親pathInfoやlistIndexを辿って再帰的に値を設定\r\n * - 設定後はupdater.enqueueUpdateAddressで更新情報を登録\r\n *\r\n * 設計ポイント:\r\n * - ワイルドカードや多重ループにも柔軟に対応し、再帰的な値設定を実現\r\n * - finallyで必ず更新情報を登録し、再描画や依存解決に利用\r\n * - getter/setter経由のスコープ切り替えも考慮した設計\r\n */\r\n\r\nimport { createAbsoluteStateAddress } from \"../../address/AbsoluteStateAddress\";\r\nimport { IAbsoluteStateAddress, IStateAddress } from \"../../address/types\";\r\nimport { WILDCARD } from \"../../define\";\r\nimport { createListIndex } from \"../../list/createListIndex\";\r\nimport { getListIndexesByList } from \"../../list/listIndexesByList\";\r\nimport { raiseError } from \"../../raiseError\";\r\nimport { getUpdater } from \"../../updater/updater\";\r\nimport { IStateHandler, IStateProxy } from \"../types\";\r\nimport { getByAddress } from \"./getByAddress\";\r\nimport { getSwapInfoByAddress, setSwapInfoByAddress } from \"./swapInfo\";\r\nimport { walkDependency } from \"../../dependency/walkDependency\";\r\nimport { dirtyCacheEntryByAbsoluteStateAddress, setCacheEntryByAbsoluteStateAddress } from \"../../cache/cacheEntryByAbsoluteStateAddress\";\r\nimport { getAbsolutePathInfo } from \"../../address/AbsolutePathInfo\";\r\n\r\nfunction _setByAddress(\r\n target : object, \r\n address : IStateAddress,\r\n absAddress: IAbsoluteStateAddress,\r\n value : any, \r\n receiver : any,\r\n handler : IStateHandler\r\n): any {\r\n try {\r\n if (address.pathInfo.path in target) {\r\n if (handler.stateElement.setterPaths.has(address.pathInfo.path)) {\r\n // setterの中で参照の可能性があるので、addressをプッシュする\r\n handler.pushAddress(address);\r\n try {\r\n return Reflect.set(target, address.pathInfo.path, value, receiver);\r\n } finally {\r\n handler.popAddress();\r\n }\r\n } else {\r\n return Reflect.set(target, address.pathInfo.path, value);\r\n }\r\n } else {\r\n const parentAddress = address.parentAddress ?? raiseError(`address.parentAddress is undefined path: ${address.pathInfo.path}`);\r\n const parentValue = getByAddress(target, parentAddress, receiver, handler);\r\n const lastSegment = address.pathInfo.segments[address.pathInfo.segments.length - 1];\r\n if (lastSegment === WILDCARD) {\r\n const index = address.listIndex?.index ?? raiseError(`address.listIndex?.index is undefined path: ${address.pathInfo.path}`);\r\n return Reflect.set(parentValue, index, value);\r\n } else {\r\n return Reflect.set(parentValue, lastSegment, value);\r\n }\r\n }\r\n } finally {\r\n const updater = getUpdater();\r\n updater.enqueueAbsoluteAddress(absAddress);\r\n // 依存関係のあるキャッシュを無効化(ダーティ)、更新対象として登録\r\n walkDependency(\r\n handler.stateName,\r\n handler.stateElement,\r\n address,\r\n handler.stateElement.staticDependency,\r\n handler.stateElement.dynamicDependency,\r\n handler.stateElement.listPaths,\r\n receiver as IStateProxy,\r\n \"new\",\r\n (depAddress: IStateAddress) => {\r\n // キャッシュを無効化(ダーティ)\r\n if (depAddress === address) return;\r\n const absDepPathInfo = getAbsolutePathInfo(handler.stateElement, depAddress.pathInfo);\r\n const absDepAddress = createAbsoluteStateAddress(absDepPathInfo, depAddress.listIndex);\r\n dirtyCacheEntryByAbsoluteStateAddress(absDepAddress);\r\n // 更新対象として登録\r\n updater.enqueueAbsoluteAddress(absDepAddress);\r\n }\r\n )\r\n }\r\n}\r\n\r\nfunction _setByAddressWithSwap(\r\n target : object, \r\n address : IStateAddress,\r\n absAddress: IAbsoluteStateAddress,\r\n value : any, \r\n receiver : any,\r\n handler : IStateHandler\r\n) {\r\n // elementsの場合はswapInfoを準備\r\n let parentAddress = address.parentAddress ?? raiseError(`address.parentAddress is undefined path: ${address.pathInfo.path}`);\r\n let swapInfo = getSwapInfoByAddress(parentAddress);\r\n if (swapInfo === null) {\r\n const parentValue = getByAddress(target, parentAddress, receiver, handler) ?? [];\r\n const listIndexes = getListIndexesByList(parentValue) ?? [];\r\n swapInfo = {\r\n value: [...parentValue], listIndexes: [...listIndexes]\r\n }\r\n setSwapInfoByAddress(parentAddress, swapInfo);\r\n }\r\n try {\r\n return _setByAddress(target, address, absAddress, value, receiver, handler);\r\n } finally {\r\n const index = swapInfo.value.indexOf(value);\r\n const currentParentValue = getByAddress(target, parentAddress, receiver, handler) ?? [];\r\n const currentListIndexes = Array.isArray(currentParentValue) ? (getListIndexesByList(currentParentValue) ?? []) : [];\r\n const curIndex = address.listIndex!.index;\r\n const listIndex = (index !== -1) ? \r\n swapInfo!.listIndexes[index] : \r\n createListIndex(parentAddress.listIndex, -1);\r\n currentListIndexes[curIndex] = listIndex;\r\n // 重複チェック\r\n // 重複していない場合、swapが完了したとみなし、インデックスを更新\r\n const listValueSet = new Set(currentParentValue);\r\n if (listValueSet.size === swapInfo!.value.length) {\r\n for(let i = 0; i < currentListIndexes.length; i++) {\r\n currentListIndexes[i].index = i;\r\n }\r\n // 完了したのでswapInfoを削除\r\n setSwapInfoByAddress(parentAddress, null);\r\n }\r\n }\r\n}\r\n\r\nexport function setByAddress(\r\n target : object, \r\n address : IStateAddress,\r\n value : any, \r\n receiver : any,\r\n handler : IStateHandler\r\n): any {\r\n const stateElement = handler.stateElement;\r\n const isSwappable = stateElement.elementPaths.has(address.pathInfo.path);\r\n const cacheable = address.pathInfo.wildcardCount > 0 || \r\n stateElement.getterPaths.has(address.pathInfo.path);\r\n const absPathInfo = getAbsolutePathInfo(stateElement, address.pathInfo);\r\n const absAddress = createAbsoluteStateAddress(absPathInfo, address.listIndex);\r\n try {\r\n if (isSwappable) {\r\n return _setByAddressWithSwap(target, address, absAddress, value, receiver, handler);\r\n } else {\r\n return _setByAddress(target, address, absAddress, value, receiver, handler);\r\n }\r\n } finally {\r\n if (cacheable) {\r\n setCacheEntryByAbsoluteStateAddress(absAddress, {\r\n value: value,\r\n dirty: false\r\n });\r\n }\r\n }\r\n}\r\n\r\n","/**\r\n * resolve.ts\r\n *\r\n * StateClassのAPIとして、パス(path)とインデックス(indexes)を指定して\r\n * Stateの値を取得・設定するための関数(resolve)の実装です。\r\n *\r\n * 主な役割:\r\n * - 文字列パス(path)とインデックス配列(indexes)から、該当するState値の取得・設定を行う\r\n * - ワイルドカードや多重ループを含むパスにも対応\r\n * - value未指定時は取得(getByRef)、指定時は設定(setByRef)を実行\r\n *\r\n * 設計ポイント:\r\n * - getStructuredPathInfoでパスを解析し、ワイルドカード階層ごとにリストインデックスを解決\r\n * - handler.engine.getListIndexesSetで各階層のリストインデックス集合を取得\r\n * - getByRef/setByRefで値の取得・設定を一元的に処理\r\n * - 柔軟なバインディングやAPI経由での利用が可能\r\n */\r\n\r\nimport { getPathInfo } from \"../../address/PathInfo\";\r\nimport { createStateAddress } from \"../../address/StateAddress\";\r\nimport { getListIndexesByList } from \"../../list/listIndexesByList\";\r\nimport { IListIndex } from \"../../list/types\";\r\nimport { raiseError } from \"../../raiseError\";\r\nimport { getByAddress } from \"../methods/getByAddress\";\r\nimport { setByAddress } from \"../methods/setByAddress\";\r\nimport { IStateHandler } from \"../types\";\r\n\r\ntype ResolveFunction = (path: string, indexes: number[], value?: any) => any;\r\n\r\nexport function resolve(\r\n target: object, \r\n _prop: PropertyKey, \r\n receiver: any,\r\n handler: IStateHandler\r\n): ResolveFunction {\r\n return (path: string, indexes: number[], value?: any): any => {\r\n const pathInfo = getPathInfo(path);\r\n if (handler.addressStackLength > 0) {\r\n const lastInfo = handler.lastAddressStack?.pathInfo ?? null;\r\n const stateElement = handler.stateElement;\r\n if (lastInfo !== null && lastInfo.path !== pathInfo.path) {\r\n // gettersに含まれる場合は依存関係を登録\r\n if (stateElement.getterPaths.has(lastInfo.path)) {\r\n stateElement.addDynamicDependency(pathInfo.path, lastInfo.path);\r\n }\r\n }\r\n }\r\n\r\n if (pathInfo.wildcardParentPathInfos.length > indexes.length) {\r\n raiseError(`indexes length is insufficient: ${path}`);\r\n }\r\n // ワイルドカード階層ごとにListIndexを解決していく\r\n let listIndex: IListIndex | null = null;\r\n for(let i = 0; i < pathInfo.wildcardParentPathInfos.length; i++) {\r\n const wildcardParentPathInfo = pathInfo.wildcardParentPathInfos[i];\r\n const wildcardAddress = createStateAddress(wildcardParentPathInfo, listIndex);\r\n const tmpValue = getByAddress(target, wildcardAddress, receiver, handler);\r\n const listIndexes = getListIndexesByList(tmpValue);\r\n if (listIndexes == null) {\r\n raiseError(`ListIndexes not found: ${wildcardParentPathInfo.path}`);\r\n }\r\n const index = indexes[i];\r\n listIndex = listIndexes[index] ?? \r\n raiseError(`ListIndex not found: ${wildcardParentPathInfo.path}`);\r\n }\r\n\r\n // ToDo:WritableかReadonlyかを判定して適切なメソッドを呼び出す\r\n const address = createStateAddress(pathInfo, listIndex);\r\n const hasSetValue = typeof value !== \"undefined\";\r\n if (!hasSetValue) {\r\n return getByAddress(target, address, receiver, handler);\r\n } else {\r\n setByAddress(target, address, value, receiver, handler);\r\n }\r\n };\r\n} ","/**\r\n * getAllReadonly\r\n *\r\n * ワイルドカードを含む State パスから、対象となる全要素を配列で取得する。\r\n * Throws: LIST-201(インデックス未解決)、BIND-201(ワイルドカード情報不整合)\r\n */\r\n\r\nimport { getPathInfo } from \"../../address/PathInfo\";\r\nimport { createStateAddress } from \"../../address/StateAddress\";\r\nimport { IPathInfo, IStateAddress } from \"../../address/types\";\r\nimport { createListDiff } from \"../../list/createListDiff\";\r\nimport { IListIndex } from \"../../list/types\";\r\nimport { raiseError } from \"../../raiseError\";\r\nimport { getByAddress } from \"../methods/getByAddress\";\r\nimport { getContextListIndex } from \"../methods/getContextListIndex\";\r\nimport { IStateHandler } from \"../types\";\r\nimport { resolve } from \"./resolve\";\r\n\r\n// ToDo: IAbsoluteStateAddressに変更する\r\nconst lastValueByListAddress = new WeakMap<IStateAddress, unknown[]>();\r\n\r\ntype GetAllFunction = (path: string, indexes?: number[]) => any[];\r\n\r\nexport function getAll(\r\n target: object, \r\n prop: PropertyKey, \r\n receiver: any,\r\n handler: IStateHandler\r\n): GetAllFunction {\r\n const resolveFn = resolve(target, prop, receiver, handler);\r\n return (path: string, indexes?: number[]): any[] => {\r\n const newValueByAddress: Map<IStateAddress, any> = new Map();\r\n const pathInfo = getPathInfo(path);\r\n if (handler.addressStackLength > 0) {\r\n const lastInfo = handler.lastAddressStack?.pathInfo ?? null;\r\n const stateElement = handler.stateElement;\r\n if (lastInfo !== null && lastInfo.path !== pathInfo.path) {\r\n // gettersに含まれる場合は依存関係を登録\r\n if (stateElement.getterPaths.has(lastInfo.path)) {\r\n stateElement.addDynamicDependency(pathInfo.path, lastInfo.path);\r\n }\r\n }\r\n }\r\n \r\n if (typeof indexes === \"undefined\") {\r\n for(let i = 0; i < pathInfo.wildcardParentPathInfos.length; i++) {\r\n const wildcardPattern = pathInfo.wildcardParentPathInfos[i];\r\n const listIndex = getContextListIndex(handler, wildcardPattern.path);\r\n if (listIndex) {\r\n indexes = listIndex.indexes;\r\n break;\r\n }\r\n }\r\n if (typeof indexes === \"undefined\") {\r\n indexes = [];\r\n }\r\n }\r\n const walkWildcardPattern = (\r\n wildcardParentPathInfos: IPathInfo[],\r\n wildcardIndexPos: number,\r\n listIndex: IListIndex | null,\r\n indexes: number[],\r\n indexPos: number,\r\n parentIndexes: number[],\r\n results: number[][]\r\n ) => {\r\n const wildcardParentPathInfo = wildcardParentPathInfos[wildcardIndexPos] ?? null;\r\n if (wildcardParentPathInfo === null) {\r\n results.push(parentIndexes);\r\n return;\r\n }\r\n const wildcardAddress = createStateAddress(wildcardParentPathInfo, listIndex);\r\n const oldValue = lastValueByListAddress.get(wildcardAddress);\r\n const newValue = getByAddress(target, wildcardAddress, receiver, handler);\r\n const listDiff = createListDiff(listIndex, oldValue, newValue);\r\n const listIndexes = listDiff.newIndexes;\r\n const index = indexes[indexPos] ?? null;\r\n newValueByAddress.set(wildcardAddress, newValue);\r\n if (index === null) {\r\n for(let i = 0; i < listIndexes.length; i++) {\r\n const listIndex = listIndexes[i];\r\n walkWildcardPattern(\r\n wildcardParentPathInfos, \r\n wildcardIndexPos + 1, \r\n listIndex, \r\n indexes, \r\n indexPos + 1, \r\n parentIndexes.concat(listIndex.index),\r\n results);\r\n }\r\n } else {\r\n const listIndex = listIndexes[index] ?? \r\n raiseError(`ListIndex not found: ${wildcardParentPathInfo.path}`);\r\n if ((wildcardIndexPos + 1) < wildcardParentPathInfos.length) {\r\n walkWildcardPattern(\r\n wildcardParentPathInfos, \r\n wildcardIndexPos + 1, \r\n listIndex, \r\n indexes, \r\n indexPos + 1, \r\n parentIndexes.concat(listIndex.index),\r\n results\r\n );\r\n } else {\r\n // 最終ワイルドカード層まで到達しているので、結果を確定\r\n results.push(parentIndexes.concat(listIndex.index));\r\n }\r\n }\r\n }\r\n const resultIndexes: number[][] = [];\r\n walkWildcardPattern(\r\n pathInfo.wildcardParentPathInfos, \r\n 0, \r\n null, \r\n indexes, \r\n 0, \r\n [], \r\n resultIndexes\r\n );\r\n const resultValues: any[] = [];\r\n for(let i = 0; i < resultIndexes.length; i++) {\r\n resultValues.push(resolveFn(\r\n pathInfo.path,\r\n resultIndexes[i]\r\n ));\r\n }\r\n for(const [address, newValue] of newValueByAddress.entries()) {\r\n lastValueByListAddress.set(address, newValue);\r\n }\r\n return resultValues;\r\n }\r\n }\r\n","/**\r\n * getListIndex.ts\r\n *\r\n * StateClassの内部APIとして、パス情報(IResolvedAddress)から\r\n * 対応するリストインデックス(IListIndex)を取得する関数です。\r\n *\r\n * 主な役割:\r\n * - パスのワイルドカード種別(context/all/partial/none)に応じてリストインデックスを解決\r\n * - context型は現在のループコンテキストからリストインデックスを取得\r\n * - all型は各階層のリストインデックス集合からインデックスを辿って取得\r\n * - partial型やnone型は未実装またはnullを返す\r\n *\r\n * 設計ポイント:\r\n * - ワイルドカードや多重ループ、ネストした配列バインディングに柔軟に対応\r\n * - getListIndexesByListで各階層のリストインデックス集合を取得\r\n * - エラー時はraiseErrorで例外を投げる\r\n */\r\n\r\nimport { createStateAddress } from \"../../address/StateAddress\";\r\nimport { IResolvedAddress } from \"../../address/types\";\r\nimport { getListIndexesByList } from \"../../list/listIndexesByList\";\r\nimport { IListIndex } from \"../../list/types\";\r\nimport { raiseError } from \"../../raiseError\";\r\nimport { IStateHandler } from \"../types\";\r\nimport { getByAddress } from \"./getByAddress\";\r\nimport { getContextListIndex } from \"./getContextListIndex\";\r\n\r\nexport function getListIndex(\r\n target : object, \r\n resolvedAddress: IResolvedAddress, \r\n receiver: any,\r\n handler: IStateHandler\r\n): IListIndex | null {\r\n const pathInfo = resolvedAddress.pathInfo;\r\n switch (resolvedAddress.wildcardType) {\r\n case \"none\":\r\n return null;\r\n case \"context\": {\r\n const lastWildcardPath = pathInfo.wildcardPaths.at(-1) ?? \r\n raiseError(`lastWildcardPath is null: ${resolvedAddress.pathInfo.path}`);\r\n return getContextListIndex(handler, lastWildcardPath) ?? \r\n raiseError(`ListIndex not found: ${resolvedAddress.pathInfo.path}`);\r\n }\r\n case \"all\": {\r\n let parentListIndex: IListIndex | null = null;\r\n for(let i = 0; i < resolvedAddress.pathInfo.wildcardCount; i++) {\r\n const wildcardParentPathInfo = resolvedAddress.pathInfo.wildcardParentPathInfos[i] ?? \r\n raiseError(`wildcardParentPathInfo is null: ${resolvedAddress.pathInfo.path}`);\r\n const wildcardParentAddress = createStateAddress(wildcardParentPathInfo, parentListIndex);\r\n const wildcardParentValue = getByAddress(target, wildcardParentAddress, receiver, handler);\r\n const wildcardParentListIndexes: IListIndex[] = getListIndexesByList(wildcardParentValue) ?? \r\n raiseError( `ListIndex not found: ${wildcardParentPathInfo.path}`);\r\n const wildcardIndex = resolvedAddress.wildcardIndexes[i] ?? \r\n raiseError(`wildcardIndex is null: ${resolvedAddress.pathInfo.path}`);\r\n parentListIndex = wildcardParentListIndexes[wildcardIndex] ?? \r\n raiseError(`ListIndex not found: ${wildcardParentPathInfo.path}`);\r\n }\r\n return parentListIndex;\r\n }\r\n case \"partial\": {\r\n raiseError(`Partial wildcard type is not supported yet: ${resolvedAddress.pathInfo.path}`);\r\n }\r\n }\r\n}\r\n","import { getAbsolutePathInfo } from \"../../address/AbsolutePathInfo\";\r\nimport { createAbsoluteStateAddress } from \"../../address/AbsoluteStateAddress\";\r\nimport { getResolvedAddress } from \"../../address/ResolvedAddress\";\r\nimport { createStateAddress } from \"../../address/StateAddress\";\r\nimport { IStateAddress } from \"../../address/types\";\r\nimport { dirtyCacheEntryByAbsoluteStateAddress } from \"../../cache/cacheEntryByAbsoluteStateAddress\";\r\nimport { walkDependency } from \"../../dependency/walkDependency\";\r\nimport { getUpdater } from \"../../updater/updater\";\r\nimport { getListIndex } from \"../methods/getListIndex\";\r\nimport { IStateHandler, IStateProxy } from \"../types\";\r\n\r\n\r\ntype PostFunction = (path: string) => void;\r\n\r\nexport function postUpdate(\r\n target: object, \r\n _prop: PropertyKey, \r\n receiver: any,\r\n handler: IStateHandler\r\n): PostFunction {\r\n const stateElement = handler.stateElement;\r\n return (path: string): void => {\r\n const resolvedAddress = getResolvedAddress(path);\r\n const listIndex = getListIndex(target, resolvedAddress, receiver, handler);\r\n const address = createStateAddress(resolvedAddress.pathInfo, listIndex);\r\n const absPathInfo = getAbsolutePathInfo(stateElement, address.pathInfo);\r\n const absAddress = createAbsoluteStateAddress(absPathInfo, address.listIndex);\r\n const updater = getUpdater();\r\n updater.enqueueAbsoluteAddress(absAddress);\r\n // 依存関係のあるキャッシュを無効化(ダーティ)、更新対象として登録\r\n walkDependency(\r\n handler.stateName,\r\n handler.stateElement,\r\n address,\r\n handler.stateElement.staticDependency,\r\n handler.stateElement.dynamicDependency,\r\n handler.stateElement.listPaths,\r\n receiver as IStateProxy,\r\n \"new\",\r\n (depAddress: IStateAddress) => {\r\n // キャッシュを無効化(ダーティ)\r\n const absDepPathInfo = getAbsolutePathInfo(stateElement, depAddress.pathInfo);\r\n const absDepAddress = createAbsoluteStateAddress(absDepPathInfo, depAddress.listIndex);\r\n dirtyCacheEntryByAbsoluteStateAddress(absDepAddress);\r\n // 更新対象として登録\r\n updater.enqueueAbsoluteAddress(absDepAddress);\r\n }\r\n );\r\n }\r\n}","/**\r\n * trackDependency.ts\r\n *\r\n * StateClassのAPIとして、getterチェーン中に参照されたパス間の\r\n * 依存関係を動的に登録するための関数(trackDependency)の実装です。\r\n *\r\n * 主な役割:\r\n * - 現在解決中のStatePropertyRef(lastRefStack)を取得\r\n * - pathManager.gettersに登録されているgetterの場合のみ依存を追跡\r\n * - 自身と同一パターンでない参照に対してaddDynamicDependencyを呼び出す\r\n *\r\n * 設計ポイント:\r\n * - lastRefStackが存在しない場合はSTATE-202エラーを発生させる\r\n * - getter同士の再帰(自己依存)は登録しない\r\n * - 動的依存はpathManagerに集約し、キャッシュの無効化に利用する\r\n */\r\n\r\nimport { raiseError } from \"../../raiseError\";\r\nimport { IStateHandler } from \"../types\";\r\n\r\n/**\r\n * 現在解決中のgetterから、指定されたパスへの動的依存を登録する関数を返します。\r\n *\r\n * - pathManager.gettersに登録されているgetterのみ依存追跡を行う\r\n * - 自己参照は除外し、異なるパターン間の依存だけを記録\r\n * - 動的依存はpathManager.addDynamicDependencyで集中管理される\r\n *\r\n * @param target プロキシ対象オブジェクト\r\n * @param prop アクセスされたプロパティキー\r\n * @param receiver プロキシレシーバ\r\n * @param handler StateClassハンドラ\r\n * @returns 引数pathで指定されたパターンへの依存を登録する無名関数\r\n */\r\n\r\ntype TrackDependencyFunction = (path: string) => void;\r\n\r\nexport function trackDependency(\r\n _target: object, \r\n _prop: PropertyKey, \r\n _receiver: any,\r\n handler: IStateHandler\r\n): TrackDependencyFunction {\r\n return (path: string): void => {\r\n if (handler.addressStackLength === 0) {\r\n raiseError(`No active state reference to track dependency for path \"${path}\".`);\r\n }\r\n const lastInfo = handler.lastAddressStack?.pathInfo ?? \r\n raiseError('Internal error: lastAddressStack is null');\r\n const stateElement = handler.stateElement;\r\n if (handler.stateElement.getterPaths.has(lastInfo.path) &&\r\n lastInfo.path !== path) {\r\n stateElement.addDynamicDependency(path, lastInfo.path);\r\n }\r\n };\r\n}\r\n","/**\r\n * updatedCallback.ts\r\n *\r\n * Utility function to invoke the StateClass lifecycle hook \"$updatedCallback\".\r\n *\r\n * Main responsibilities:\r\n * - Invokes $updatedCallback method if defined on the object (target)\r\n * - Callback is invoked with target's this context, passing IReadonlyStateProxy (receiver) as argument\r\n * - Executable as async function (await compatible)\r\n *\r\n * Design points:\r\n * - Safely retrieves $updatedCallback property using Reflect.get\r\n * - Does nothing if the callback doesn't exist\r\n * - Used for lifecycle management and update handling logic\r\n */\r\n\r\nimport { IAbsoluteStateAddress } from \"../../address/types\";\r\nimport { STATE_UPDATED_CALLBACK_NAME } from \"../../define\";\r\nimport { IStateHandler } from \"../types\";\r\n\r\n/**\r\n * Invokes the $updatedCallback lifecycle hook if defined on the target.\r\n * Aggregates updated paths and their indexes before passing to the callback.\r\n * @param target - Target object to check for callback\r\n * @param refs - Array of state property references that were updated\r\n * @param receiver - State proxy to pass as this context\r\n * @param handler - State handler (unused but part of signature)\r\n * @returns Promise or void depending on callback implementation\r\n */\r\nexport function updatedCallback(\r\n target: object, \r\n refs: IAbsoluteStateAddress[], \r\n receiver: any,\r\n handler: IStateHandler\r\n): unknown {\r\n const callback: unknown = Reflect.get(target, STATE_UPDATED_CALLBACK_NAME);\r\n if (typeof callback === \"function\") {\r\n const paths: Set<string> = new Set();\r\n // ToDo:現状では1階層のみのワイルドカードに対応。多階層対応は後回し\r\n const indexesListByPath: Record<string, Array<number[]>> = {};\r\n for (const ref of refs) {\r\n const pathInfo = ref.absolutePathInfo.pathInfo;\r\n let pathName;\r\n if (ref.absolutePathInfo.stateName === handler.stateName) {\r\n pathName = pathInfo.path;\r\n } else {\r\n pathName = pathInfo.path + \"@\" + ref.absolutePathInfo.stateName;\r\n }\r\n paths.add(pathName);\r\n if (pathInfo.wildcardCount > 0) {\r\n const indexes = ref.listIndex!.indexes ?? [];\r\n const indexesList = indexesListByPath[pathName];\r\n if (typeof indexesList === \"undefined\") {\r\n indexesListByPath[pathName] = [indexes];\r\n } else {\r\n indexesList.push(indexes);\r\n }\r\n }\r\n }\r\n return callback.call(receiver, Array.from(paths), indexesListByPath);\r\n }\r\n}","/**\r\n * setLoopContext.ts\r\n *\r\n * StateClassの内部APIとして、ループコンテキスト(ILoopContext)を一時的に設定し、\r\n * 指定した同期/非同期コールバックをそのスコープ内で実行するための関数です。\r\n *\r\n * 主な役割:\r\n * - handler.loopContextにループコンテキストを一時的に設定\r\n * - 既にループコンテキストが設定されている場合はエラーを投げる\r\n * - 常にスコープを設定しコールバックを実行\r\n * - finallyで必ずloopContextをnullに戻し、スコープ外への影響を防止\r\n *\r\n * 設計ポイント:\r\n * - ループバインディングや多重ループ時のスコープ管理を安全に行う\r\n * - finallyで状態復元を保証し、例外発生時も安全\r\n * - 非同期処理にも対応\r\n */\r\n\r\nimport { ILoopContext } from \"../../list/types\";\r\nimport { raiseError } from \"../../raiseError\";\r\nimport { IStateHandler } from \"../types\";\r\n\r\nfunction _setLoopContext<T>(\r\n handler: IStateHandler,\r\n loopContext: ILoopContext | null,\r\n callback: () => T\r\n): T {\r\n if (typeof handler.loopContext !== \"undefined\") {\r\n raiseError('already in loop context');\r\n }\r\n handler.setLoopContext(loopContext);\r\n try {\r\n handler.pushAddress(loopContext);\r\n try {\r\n return callback();\r\n } finally {\r\n handler.popAddress();\r\n }\r\n } finally {\r\n handler.clearLoopContext();\r\n }\r\n}\r\n\r\nexport function setLoopContext(\r\n handler: IStateHandler,\r\n loopContext: ILoopContext | null,\r\n callback: () => any\r\n): any {\r\n return _setLoopContext(handler, loopContext, callback);\r\n}\r\n\r\nexport async function setLoopContextAsync(\r\n handler: IStateHandler,\r\n loopContext: ILoopContext | null,\r\n callback: () => Promise<any>\r\n): Promise<any> {\r\n return await _setLoopContext(handler, loopContext, callback);\r\n}\r\n","/**\r\n * get.ts\r\n *\r\n * StateClassのProxyトラップとして、プロパティアクセス時の値取得処理を担う関数(get)の実装です。\r\n *\r\n * 主な役割:\r\n * - 文字列プロパティの場合、特殊プロパティ($1〜$9, $resolve, $getAll, $navigate)に応じた値やAPIを返却\r\n * - 通常のプロパティはgetResolvedPathInfoでパス情報を解決し、getListIndexでリストインデックスを取得\r\n * - getByRefで構造化パス・リストインデックスに対応した値を取得\r\n * - シンボルプロパティの場合はhandler.callableApi経由でAPIを呼び出し\r\n * - それ以外はReflect.getで通常のプロパティアクセスを実行\r\n *\r\n * 設計ポイント:\r\n * - $1〜$9は直近のStatePropertyRefのリストインデックス値を返す特殊プロパティ\r\n * - $resolve, $getAll, $navigateはAPI関数やルーターインスタンスを返す\r\n * - 通常のプロパティアクセスもバインディングや多重ループに対応\r\n * - シンボルAPIやReflect.getで拡張性・互換性も確保\r\n */\r\n\r\nimport { getResolvedAddress } from \"../../address/ResolvedAddress\";\r\nimport { createStateAddress } from \"../../address/StateAddress\";\r\nimport { IAbsoluteStateAddress, IStateAddress } from \"../../address/types\";\r\nimport { INDEX_BY_INDEX_NAME } from \"../../define\";\r\nimport { raiseError } from \"../../raiseError\";\r\nimport { connectedCallback } from \"../apis/connectedCallback\";\r\nimport { disconnectedCallback } from \"../apis/disconnectedCallback\";\r\nimport { getAll } from \"../apis/getAll\";\r\nimport { postUpdate } from \"../apis/postUpdate\";\r\nimport { resolve } from \"../apis/resolve\";\r\nimport { trackDependency } from \"../apis/trackDependency\";\r\nimport { updatedCallback } from \"../apis/updatedCallback\";\r\nimport { getByAddress } from \"../methods/getByAddress\";\r\nimport { getListIndex } from \"../methods/getListIndex\";\r\nimport { setByAddress } from \"../methods/setByAddress\";\r\nimport { setLoopContext, setLoopContextAsync } from \"../methods/setLoopContext\";\r\nimport { connectedCallbackSymbol, disconnectedCallbackSymbol, getByAddressSymbol, setByAddressSymbol, setLoopContextAsyncSymbol, setLoopContextSymbol, updatedCallbackSymbol } from \"../symbols\";\r\nimport { IStateHandler } from \"../types\";\r\n\r\nexport function get(\r\n target : object, \r\n prop : PropertyKey, \r\n receiver: any,\r\n handler : IStateHandler\r\n): any {\r\n const index = INDEX_BY_INDEX_NAME[prop];\r\n if (typeof index !== \"undefined\") {\r\n if (handler.addressStackLength === 0) {\r\n raiseError(`No active state reference to get list index for \"${prop.toString()}\".`);\r\n }\r\n const listIndex = handler.lastAddressStack?.listIndex;\r\n return listIndex?.indexes[index] ?? raiseError(`ListIndex not found: ${prop.toString()}`);\r\n }\r\n if (typeof prop === \"string\") {\r\n if (prop[0] === '$') {\r\n switch (prop) {\r\n case \"$stateElement\": {\r\n return handler.stateElement;\r\n }\r\n case \"$getAll\": {\r\n return (path: string, indexes?: number[]): any[] => {\r\n return getAll(\r\n target, \r\n prop, \r\n receiver,\r\n handler\r\n )(path, indexes);\r\n }\r\n }\r\n case \"$postUpdate\": {\r\n return (path: string): void => {\r\n return postUpdate(\r\n target, \r\n prop, \r\n receiver,\r\n handler\r\n )(path);\r\n }\r\n }\r\n case \"$resolve\": {\r\n return (path: string, indexes: number[], value?: any): any => {\r\n return resolve(\r\n target, \r\n prop, \r\n receiver,\r\n handler\r\n )(path, indexes, value);\r\n }\r\n }\r\n case \"$trackDependency\": {\r\n return (path: string): void => {\r\n return trackDependency(\r\n target, \r\n prop, \r\n receiver,\r\n handler\r\n )(path);\r\n }\r\n }\r\n }\r\n } else {\r\n const resolvedAddress = getResolvedAddress(prop);\r\n const listIndex = getListIndex(target, resolvedAddress, receiver, handler);\r\n const stateAddress = createStateAddress(resolvedAddress.pathInfo, listIndex);\r\n return getByAddress(\r\n target, \r\n stateAddress,\r\n receiver,\r\n handler\r\n );\r\n }\r\n } else if (typeof prop === \"symbol\") {\r\n switch (prop) {\r\n case setLoopContextAsyncSymbol: {\r\n return (loopContext: any, callback = async (): Promise<any> => {}): Promise<any> => {\r\n return setLoopContextAsync(handler, loopContext, callback);\r\n };\r\n }\r\n case setLoopContextSymbol: {\r\n return (loopContext: any, callback = (): any => {}): any => {\r\n return setLoopContext(handler, loopContext, callback);\r\n };\r\n }\r\n case getByAddressSymbol: {\r\n return (address: IStateAddress): any => {\r\n return getByAddress(\r\n target,\r\n address,\r\n receiver,\r\n handler\r\n );\r\n }\r\n }\r\n case setByAddressSymbol: {\r\n return (address: IStateAddress, value: any): void => {\r\n return setByAddress(\r\n target,\r\n address,\r\n value,\r\n receiver,\r\n handler\r\n );\r\n }\r\n }\r\n case connectedCallbackSymbol: {\r\n return (): Promise<void> => {\r\n return connectedCallback(\r\n target,\r\n prop,\r\n receiver,\r\n handler\r\n );\r\n }\r\n }\r\n case disconnectedCallbackSymbol: {\r\n return (): void => {\r\n return disconnectedCallback(\r\n target,\r\n prop,\r\n receiver,\r\n handler\r\n );\r\n }\r\n }\r\n case updatedCallbackSymbol: {\r\n return (\r\n refs: IAbsoluteStateAddress[]\r\n ): unknown => {\r\n return updatedCallback(\r\n target,\r\n refs,\r\n receiver,\r\n handler\r\n );\r\n }\r\n }\r\n }\r\n\r\n return Reflect.get(\r\n target, \r\n prop, \r\n receiver\r\n );\r\n }\r\n}\r\n","/**\r\n * set.ts\r\n *\r\n * StateClassのProxyトラップとして、プロパティ設定時の値セット処理を担う関数(set)の実装です。\r\n *\r\n * 主な役割:\r\n * - 文字列プロパティの場合、getResolvedPathInfoでパス情報を解決し、getListIndexでリストインデックスを取得\r\n * - setByRefで構造化パス・リストインデックスに対応した値設定を実行\r\n * - それ以外(シンボル等)の場合はReflect.setで通常のプロパティ設定を実行\r\n *\r\n * 設計ポイント:\r\n * - バインディングや多重ループ、ワイルドカードを含むパスにも柔軟に対応\r\n * - setByRefを利用することで、依存解決や再描画などの副作用も一元管理\r\n * - Reflect.setで標準的なプロパティ設定の互換性も確保\r\n */\r\n\r\nimport { getResolvedAddress } from \"../../address/ResolvedAddress\";\r\nimport { IStateHandler } from \"../types\";\r\nimport { getListIndex } from \"../methods/getListIndex\";\r\nimport { createStateAddress } from \"../../address/StateAddress\";\r\nimport { setByAddress } from \"../methods/setByAddress\";\r\n\r\nexport function set(\r\n target : object, \r\n prop : PropertyKey, \r\n value : any, \r\n receiver: any,\r\n handler : IStateHandler\r\n): boolean {\r\n if (typeof prop === \"string\") {\r\n const resolvedAddress = getResolvedAddress(prop);\r\n const listIndex = getListIndex(target, resolvedAddress, receiver, handler);\r\n const stateAddress = createStateAddress(resolvedAddress.pathInfo, listIndex);\r\n return setByAddress(\r\n target, \r\n stateAddress,\r\n value, \r\n receiver,\r\n handler\r\n );\r\n } else {\r\n return Reflect.set(\r\n target, \r\n prop, \r\n value, \r\n receiver\r\n );\r\n }\r\n}\r\n","import { IStateAddress } from \"../address/types\";\r\nimport { IStateElement } from \"../components/types\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { getStateElementByName } from \"../stateElementByName\";\r\nimport { IStateHandler, IStateProxy, Mutability } from \"./types\";\r\nimport { get as trapGet } from \"./traps/get\";\r\nimport { set as trapSet } from \"./traps/set\";\r\nimport { ILoopContext } from \"../list/types\";\r\nimport { IState } from \"../types\";\r\nimport { MAX_LOOP_DEPTH } from \"../define\";\r\n\r\nclass StateHandler implements IStateHandler {\r\n private _stateElement: IStateElement;\r\n private _stateName: string;\r\n private _addressStack: (IStateAddress | null | undefined)[] = Array(MAX_LOOP_DEPTH).fill(undefined);\r\n private _addressStackIndex: number = -1;\r\n private _loopContext: ILoopContext | null | undefined;\r\n private _mutability: Mutability;\r\n \r\n constructor(\r\n rootNode: Node,\r\n stateName: string,\r\n mutability: Mutability\r\n ) {\r\n this._stateName = stateName;\r\n const stateElement = getStateElementByName(rootNode, this._stateName);\r\n if (stateElement === null) {\r\n raiseError(`StateHandler: State element with name \"${this._stateName}\" not found.`);\r\n }\r\n this._stateElement = stateElement;\r\n this._mutability = mutability;\r\n }\r\n\r\n get stateName(): string {\r\n return this._stateName;\r\n }\r\n\r\n get stateElement(): IStateElement {\r\n return this._stateElement;\r\n }\r\n\r\n get lastAddressStack(): IStateAddress | null {\r\n let address: IStateAddress | null | undefined = undefined;\r\n if (this._addressStackIndex >= 0) {\r\n address = this._addressStack[this._addressStackIndex];\r\n }\r\n if (typeof address === \"undefined\") {\r\n raiseError(`Last address stack is undefined.`);\r\n }\r\n return address;\r\n }\r\n\r\n get addressStackLength(): number {\r\n return this._addressStackIndex + 1;\r\n }\r\n\r\n get loopContext(): ILoopContext | null | undefined {\r\n return this._loopContext;\r\n }\r\n\r\n pushAddress(address: IStateAddress | null): void {\r\n this._addressStackIndex++;\r\n if (this._addressStackIndex >= MAX_LOOP_DEPTH) {\r\n raiseError(`Exceeded maximum address stack depth of ${MAX_LOOP_DEPTH}. Possible infinite loop.`);\r\n }\r\n this._addressStack[this._addressStackIndex] = address;\r\n }\r\n\r\n popAddress(): IStateAddress | null {\r\n if (this._addressStackIndex < 0) {\r\n return null;\r\n }\r\n const address = this._addressStack[this._addressStackIndex];\r\n if (typeof address === \"undefined\") {\r\n raiseError(`Address stack at index ${this._addressStackIndex} is undefined.`);\r\n }\r\n this._addressStack[this._addressStackIndex] = undefined;\r\n this._addressStackIndex--;\r\n return address;\r\n }\r\n\r\n setLoopContext(loopContext: ILoopContext | null): void {\r\n this._loopContext = loopContext;\r\n }\r\n\r\n clearLoopContext(): void {\r\n this._loopContext = undefined;\r\n }\r\n\r\n get(\r\n target : object, \r\n prop : PropertyKey, \r\n receiver: any\r\n ): any {\r\n return trapGet(target, prop, receiver, this);\r\n }\r\n\r\n set(\r\n target : object, \r\n prop : PropertyKey, \r\n value : any, \r\n receiver: any\r\n ): boolean {\r\n if (this._mutability === \"readonly\") {\r\n raiseError(`State \"${this._stateName}\" is readonly.`);\r\n }\r\n return trapSet(target, prop, value, receiver, this);\r\n }\r\n\r\n has(\r\n target: object, \r\n prop : PropertyKey\r\n ): boolean {\r\n return Reflect.has(target, prop);\r\n// return Reflect.has(target, prop) || this.symbols.has(prop) || this.apis.has(prop);\r\n }\r\n\r\n}\r\n\r\nexport function createStateProxy(\r\n rootNode: Node,\r\n state: IState,\r\n stateName: string,\r\n mutability: Mutability\r\n): IStateProxy {\r\n const handler = new StateHandler(rootNode, stateName, mutability);\r\n const stateProxy = new Proxy<IStateProxy>(state as IStateProxy, handler);\r\n return stateProxy;\r\n}\r\n\r\nexport const __private__ = {\r\n StateHandler,\r\n};","\r\n// WebComponent専用のキャッシュ\r\n// outerState.tsからのアクセスで、これを返す\r\n\r\nimport { IAbsoluteStateAddress } from \"../address/types\";\r\n\r\nconst lastValueByAbsoluteStateAddress: WeakMap<IAbsoluteStateAddress, any> = new WeakMap();\r\n\r\nexport function setLastValueByAbsoluteStateAddress(absoluteStateAddress: IAbsoluteStateAddress, value: any): void {\r\n lastValueByAbsoluteStateAddress.set(absoluteStateAddress, value);\r\n}\r\n\r\nexport function getLastValueByAbsoluteStateAddress(absoluteStateAddress: IAbsoluteStateAddress): any {\r\n return lastValueByAbsoluteStateAddress.get(absoluteStateAddress);\r\n}\r\n","import { IStateElement } from \"../components/types\";\r\n\r\nconst stateElementByWebComponent: WeakMap<Element, Map<string, IStateElement>> = new WeakMap();\r\n\r\nexport function setStateElementByWebComponent(webComponent: Element, stateName: string, stateElement: IStateElement): void {\r\n let stateMap = stateElementByWebComponent.get(webComponent);\r\n if (!stateMap) {\r\n stateMap = new Map();\r\n stateElementByWebComponent.set(webComponent, stateMap);\r\n }\r\n stateMap.set(stateName, stateElement);\r\n}\r\n\r\nexport function getStateElementByWebComponent(webComponent: Element, stateName: string): IStateElement | null {\r\n const stateMap = stateElementByWebComponent.get(webComponent);\r\n if (!stateMap) {\r\n return null;\r\n }\r\n return stateMap.get(stateName) ?? null;\r\n}","import { getAbsolutePathInfo } from \"../address/AbsolutePathInfo\";\r\nimport { getPathInfo } from \"../address/PathInfo\";\r\nimport { IAbsolutePathInfo } from \"../address/types\";\r\nimport { getAbsoluteStateAddressByBinding } from \"../binding/getAbsoluteStateAddressByBinding\";\r\nimport { IBindingInfo } from \"../binding/types\";\r\nimport { addBindingByNode } from \"../bindings/getBindingsByNode\";\r\nimport { IStateElement } from \"../components/types\";\r\nimport { DELIMITER } from \"../define\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { getStateElementByName } from \"../stateElementByName\";\r\nimport { getStateElementByWebComponent } from \"./stateElementByWebComponent\";\r\n\r\nexport interface IMappingRule {\r\n innerAbsPathInfo: IAbsolutePathInfo;\r\n outerAbsPathInfo: IAbsolutePathInfo;\r\n}\r\n\r\nconst innerMappingByElement: WeakMap<Element, Map<IAbsolutePathInfo, IAbsolutePathInfo>> = new WeakMap();\r\nconst outerMappingByElement: WeakMap<Element, Map<IAbsolutePathInfo, IAbsolutePathInfo>> = new WeakMap();\r\nconst primaryMappingRuleSetByElement: WeakMap<Element, Set<IMappingRule>> = new WeakMap();\r\nconst primaryBindingByMappingRule: WeakMap<IMappingRule, IBindingInfo> = new WeakMap();\r\n\r\nfunction createMappingRuleByBinding(innerState: IStateElement, binding: IBindingInfo): IMappingRule {\r\n const innerPathInfo = getPathInfo(binding.propSegments.slice(1).join(DELIMITER));\r\n const innerAbsPathInfo = getAbsolutePathInfo(innerState, innerPathInfo);\r\n const outerAbsStateAddress = getAbsoluteStateAddressByBinding(binding);\r\n const outerAbsPathInfo = outerAbsStateAddress.absolutePathInfo;\r\n return { innerAbsPathInfo, outerAbsPathInfo };\r\n}\r\n\r\nexport function buildPrimaryMappingRule(webComponent: Element, stateName: string, bindings: IBindingInfo[]): void {\r\n if (bindings.length === 0) {\r\n return;\r\n }\r\n const innerState = getStateElementByWebComponent(webComponent, stateName);\r\n if (innerState === null) {\r\n raiseError('State element not found for web component.');\r\n }\r\n const innerMappingRule = new Map<IAbsolutePathInfo, IAbsolutePathInfo>();\r\n const outerMappingRule = new Map<IAbsolutePathInfo, IAbsolutePathInfo>();\r\n for (const binding of bindings) {\r\n const mappingRule = createMappingRuleByBinding(innerState, binding);\r\n let primaryMappingRuleSet = primaryMappingRuleSetByElement.get(webComponent);\r\n if (typeof primaryMappingRuleSet === 'undefined') {\r\n primaryMappingRuleSetByElement.set(webComponent, new Set([mappingRule]));\r\n } else {\r\n primaryMappingRuleSet.add(mappingRule);\r\n }\r\n const innerAbsPathInfo = mappingRule.innerAbsPathInfo;\r\n const outerAbsPathInfo = mappingRule.outerAbsPathInfo;\r\n primaryBindingByMappingRule.set(mappingRule, binding);\r\n innerMappingRule.set(innerAbsPathInfo, outerAbsPathInfo);\r\n outerMappingRule.set(outerAbsPathInfo, innerAbsPathInfo);\r\n }\r\n innerMappingByElement.set(webComponent, innerMappingRule);\r\n outerMappingByElement.set(webComponent, outerMappingRule);\r\n}\r\n\r\nexport function getInnerAbsolutePathInfo(webComponent: Element, outerAbsPathInfo: IAbsolutePathInfo): IAbsolutePathInfo | null {\r\n const mapping = outerMappingByElement.get(webComponent);\r\n if (typeof mapping === 'undefined') {\r\n return null;\r\n }\r\n return mapping.get(outerAbsPathInfo) ?? null;\r\n}\r\n\r\nexport function getOuterAbsolutePathInfo(webComponent: Element, innerAbsPathInfo: IAbsolutePathInfo): IAbsolutePathInfo | null {\r\n let innerMapping = innerMappingByElement.get(webComponent);\r\n if (typeof innerMapping === 'undefined') {\r\n innerMapping = new Map<IAbsolutePathInfo, IAbsolutePathInfo>();\r\n innerMappingByElement.set(webComponent, innerMapping);\r\n }\r\n if (innerMapping.has(innerAbsPathInfo)) {\r\n return innerMapping.get(innerAbsPathInfo)!\r\n }\r\n let outerMapping = outerMappingByElement.get(webComponent);\r\n if (typeof outerMapping === 'undefined') {\r\n outerMapping = new Map<IAbsolutePathInfo, IAbsolutePathInfo>();\r\n outerMappingByElement.set(webComponent, outerMapping);\r\n }\r\n // 内側からのアクセスの場合、ルールがなければプライマリルールから新たにルールとバインディングを生成する\r\n const primaryMappingRuleSet = primaryMappingRuleSetByElement.get(webComponent);\r\n if (typeof primaryMappingRuleSet === 'undefined') {\r\n // マッピングルールが存在しない場合はnullを返し、ローカル状態へのフォールバックを許可する\r\n return null;\r\n }\r\n let primaryMappingRule: IMappingRule | null = null;\r\n for(const currentPrimaryMappingRule of primaryMappingRuleSet) {\r\n // innerPathInfoがprimaryMappingRuleのinnerPathInfoを包含しているか\r\n if (!innerAbsPathInfo.pathInfo.cumulativePathInfoSet.has(currentPrimaryMappingRule.innerAbsPathInfo.pathInfo)) {\r\n continue;\r\n }\r\n if (currentPrimaryMappingRule.innerAbsPathInfo.pathInfo.segments.length === innerAbsPathInfo.pathInfo.segments.length) {\r\n raiseError('Duplicate mapping rule for web component.');\r\n }\r\n primaryMappingRule = currentPrimaryMappingRule;\r\n break;\r\n }\r\n if (primaryMappingRule === null) {\r\n // マッピングルールに一致しない場合はnullを返し、ローカル状態へのフォールバックを許可する\r\n return null;\r\n }\r\n // マッチした残りのパスをouterPathInfoに付与して新たなルールを生成\r\n const primaryBinding = primaryBindingByMappingRule.get(primaryMappingRule);\r\n /* c8 ignore start */\r\n if (typeof primaryBinding === 'undefined') {\r\n raiseError('Binding not found for primary mapping rule on web component.');\r\n }\r\n /* c8 ignore stop */\r\n const outerRemainingSegments = innerAbsPathInfo.pathInfo.segments.slice(primaryMappingRule.innerAbsPathInfo.pathInfo.segments.length);\r\n const outerSegments = primaryMappingRule.outerAbsPathInfo.pathInfo.segments.concat(outerRemainingSegments);\r\n const outerPathInfo = getPathInfo(outerSegments.join(DELIMITER));\r\n const rootNode = webComponent.getRootNode() as Node;\r\n const outerStateElement = getStateElementByName(rootNode, primaryBinding.stateName);\r\n if (outerStateElement === null) {\r\n raiseError(`State element with name \"${primaryBinding.stateName}\" not found for web component.`);\r\n }\r\n const outerAbsPathInfo = getAbsolutePathInfo(outerStateElement, outerPathInfo);\r\n innerMapping.set(innerAbsPathInfo, outerAbsPathInfo);\r\n outerMapping.set(outerAbsPathInfo, innerAbsPathInfo);\r\n\r\n // ルールに対応するバインディングを生成\r\n const newBinding: IBindingInfo = {\r\n ...primaryBinding,\r\n propName: innerAbsPathInfo.pathInfo.path,\r\n propSegments: innerAbsPathInfo.pathInfo.segments,\r\n statePathName: outerAbsPathInfo.pathInfo.path,\r\n statePathInfo: outerAbsPathInfo.pathInfo,\r\n }\r\n addBindingByNode(webComponent, newBinding);\r\n\r\n return outerAbsPathInfo;\r\n}","\r\nfunction cloneWithDescriptors(obj: object) {\r\n const proto = Object.getPrototypeOf(obj);\r\n const clone = Object.create(proto);\r\n const descriptors = Object.getOwnPropertyDescriptors(obj);\r\n for(const key in descriptors) {\r\n const descriptor = descriptors[key];\r\n if (descriptor.writable === false) {\r\n descriptor.writable = true;\r\n }\r\n }\r\n Object.defineProperties(clone, descriptors);\r\n return clone;\r\n}\r\n\r\nexport function meltFrozenObject(frozenObj: object) {\r\n return cloneWithDescriptors(frozenObj);\r\n}","import { getAbsolutePathInfo } from \"../address/AbsolutePathInfo\";\r\nimport { createAbsoluteStateAddress } from \"../address/AbsoluteStateAddress\";\r\nimport { getPathInfo } from \"../address/PathInfo\";\r\nimport { IStateElement } from \"../components/types\";\r\nimport { getLoopContextByNode } from \"../list/loopContextByNode\";\r\nimport { IListIndex } from \"../list/types\";\r\nimport { setLoopContextSymbol } from \"../proxy/symbols\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { setLastValueByAbsoluteStateAddress } from \"./lastValueByAbsoluteStateAddress\";\r\nimport { getOuterAbsolutePathInfo } from \"./MappingRule\";\r\nimport { meltFrozenObject } from \"./meltFrozenObject\";\r\nimport { getStateElementByWebComponent } from \"./stateElementByWebComponent\";\r\nimport { IInnerState } from \"./types\";\r\n\r\nclass InnerStateProxyHandler implements ProxyHandler<IInnerState> {\r\n private _webComponent: Element;\r\n private _innerStateElement: IStateElement;\r\n constructor(webComponent: Element, stateName: string) {\r\n this._webComponent = webComponent;\r\n this._innerStateElement = getStateElementByWebComponent(webComponent, stateName) ?? raiseError('State element not found for web component.');\r\n }\r\n\r\n get(target: IInnerState, prop: string | symbol, receiver: any): any {\r\n if (typeof prop === 'string') {\r\n if (prop === \"then\") {\r\n // Promiseのthenと誤認識されるのを防ぐため、Promiseに存在するプロパティはProxyのgetで処理しない\r\n return undefined;\r\n }\r\n if (prop[0] === '$') {\r\n return undefined;\r\n }\r\n // 1. getter完全一致 → ローカル計算(this = receiverで依存自動追跡)\r\n if (this._innerStateElement.getterPaths.has(prop) && prop in target) {\r\n return Reflect.get(target, prop, receiver);\r\n }\r\n // 2 & 3. マッピング完全一致 / サブパス → 親の状態\r\n const innerPathInfo = getPathInfo(prop);\r\n const innerAbsPathInfo = getAbsolutePathInfo(this._innerStateElement, innerPathInfo);\r\n const outerAbsPathInfo = getOuterAbsolutePathInfo(this._webComponent, innerAbsPathInfo);\r\n if (outerAbsPathInfo !== null) {\r\n const loopContext = getLoopContextByNode(this._webComponent);\r\n let value = undefined;\r\n outerAbsPathInfo.stateElement.createState(\"readonly\", (state) => {\r\n state[setLoopContextSymbol](loopContext, () => {\r\n value = state[outerAbsPathInfo.pathInfo.path];\r\n let listIndex: IListIndex | null = null;\r\n if (loopContext !== null && loopContext.listIndex !== null) {\r\n if (outerAbsPathInfo.pathInfo.wildcardCount > 0) {\r\n // wildcardPathSetとloopContextのpathInfoSetのintersectionのうち、segment数が最も多いものをouterAbsPathInfoにする\r\n // 例: outerPathInfoが \"todos.*.name\"で、loopContextのpathInfoSetに \"todos.0.name\", \"todos.1.name\"がある場合、\"todos.0.name\"や\"todos.1.name\"をouterAbsPathInfoにする\r\n listIndex = loopContext.listIndex.at(outerAbsPathInfo.pathInfo.wildcardCount - 1);\r\n }\r\n }\r\n const absStateAddress = createAbsoluteStateAddress(outerAbsPathInfo, listIndex);\r\n setLastValueByAbsoluteStateAddress(absStateAddress, value);\r\n });\r\n });\r\n return value;\r\n }\r\n // 4. ローカルデータプロパティ → ローカル値\r\n if (prop in target) {\r\n return Reflect.get(target, prop, receiver);\r\n }\r\n // 5. エラー\r\n raiseError(`Property \"${prop}\" not found in inner state: no mapping rule and no local state property.`);\r\n } else {\r\n return Reflect.get(target, prop, receiver);\r\n }\r\n }\r\n\r\n set(target: IInnerState, prop: string | symbol, value: any, receiver: any): boolean {\r\n if (typeof prop === 'string') {\r\n // 1. setter完全一致 → ローカル処理(this = receiverで親への書き込み可能)\r\n if (this._innerStateElement.setterPaths.has(prop) && prop in target) {\r\n return Reflect.set(target, prop, value, receiver);\r\n }\r\n // 2 & 3. マッピング完全一致 / サブパス → 親に書く\r\n const innerPathInfo = getPathInfo(prop);\r\n const innerAbsPathInfo = getAbsolutePathInfo(this._innerStateElement, innerPathInfo);\r\n const outerAbsPathInfo = getOuterAbsolutePathInfo(this._webComponent, innerAbsPathInfo);\r\n if (outerAbsPathInfo !== null) {\r\n const loopContext = getLoopContextByNode(this._webComponent);\r\n outerAbsPathInfo.stateElement.createState(\"writable\", (state) => {\r\n state[setLoopContextSymbol](loopContext, () => {\r\n state[outerAbsPathInfo.pathInfo.path] = value;\r\n });\r\n });\r\n return true;\r\n }\r\n // 4. ローカルデータプロパティ → ローカルに書く\r\n if (prop in target) {\r\n return Reflect.set(target, prop, value, receiver);\r\n }\r\n // 5. エラー\r\n raiseError(`Property \"${prop}\" not found in inner state: no mapping rule and no local state property.`);\r\n } else {\r\n return Reflect.set(target, prop, value, receiver);\r\n }\r\n }\r\n\r\n has(target: IInnerState, prop: string | symbol): boolean {\r\n if (typeof prop === 'string') {\r\n if (prop[0] === '$') {\r\n return false;\r\n }\r\n // 1. getter/setter完全一致\r\n if ((this._innerStateElement.getterPaths.has(prop) || this._innerStateElement.setterPaths.has(prop)) && prop in target) {\r\n return true;\r\n }\r\n // 2 & 3. マッピング\r\n const innerPathInfo = getPathInfo(prop);\r\n const innerAbsPathInfo = getAbsolutePathInfo(this._innerStateElement, innerPathInfo);\r\n const outerAbsPathInfo = getOuterAbsolutePathInfo(this._webComponent, innerAbsPathInfo);\r\n if (outerAbsPathInfo !== null) {\r\n return true;\r\n }\r\n // 4. ローカルデータ\r\n if (prop in target) {\r\n return true;\r\n }\r\n // 5. 存在しない\r\n return false;\r\n } else {\r\n return Reflect.has(target, prop);\r\n }\r\n }\r\n\r\n}\r\n\r\nexport function createInnerState(webComponent: Element, stateName: string): IInnerState {\r\n const handler = new InnerStateProxyHandler(webComponent, stateName);\r\n const innerState = getStateElementByWebComponent(webComponent, stateName);\r\n /* c8 ignore start */\r\n if (innerState === null) {\r\n raiseError('State element not found for web component.');\r\n }\r\n /* c8 ignore stop */\r\n if (innerState.boundComponentStateProp === null) {\r\n raiseError('State element is not bound to any component state prop.');\r\n }\r\n if (!(innerState.boundComponentStateProp in webComponent)) {\r\n raiseError(`State element is not bound to a valid component state prop: ${innerState.boundComponentStateProp}`);\r\n }\r\n const state = (webComponent as any)[innerState.boundComponentStateProp];\r\n if (typeof state !== 'object' || state === null) {\r\n raiseError(`Invalid state object for component state prop: ${innerState.boundComponentStateProp}`);\r\n }\r\n return new Proxy(meltFrozenObject(state), handler);\r\n}","import { getAbsolutePathInfo } from \"../address/AbsolutePathInfo\";\r\nimport { createAbsoluteStateAddress } from \"../address/AbsoluteStateAddress\";\r\nimport { getPathInfo } from \"../address/PathInfo\";\r\nimport { IStateElement } from \"../components/types\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { getLastValueByAbsoluteStateAddress } from \"./lastValueByAbsoluteStateAddress\";\r\nimport { getStateElementByWebComponent } from \"./stateElementByWebComponent\";\r\nimport { IOuterState } from \"./types\";\r\n\r\nclass OuterStateProxyHandler implements ProxyHandler<IOuterState> {\r\n private _innerStateElement: IStateElement;\r\n constructor(webComponent: Element, stateName: string) {\r\n this._innerStateElement = getStateElementByWebComponent(webComponent, stateName) ?? raiseError('State element not found for web component.');\r\n }\r\n\r\n get(target: IOuterState, prop: string | symbol, receiver: any): any {\r\n if (typeof prop === 'string') {\r\n const innerPathInfo = getPathInfo(prop);\r\n const innerAbsPathInfo = getAbsolutePathInfo(this._innerStateElement, innerPathInfo);\r\n const absStateAddress = createAbsoluteStateAddress(innerAbsPathInfo, null);\r\n return getLastValueByAbsoluteStateAddress(absStateAddress);\r\n } else {\r\n return Reflect.get(target, prop, receiver);\r\n }\r\n }\r\n\r\n set(target: IOuterState, prop: string | symbol, value: any, receiver: any): boolean {\r\n if (typeof prop === 'string') {\r\n const innerPathInfo = getPathInfo(prop);\r\n const innerAbsPathInfo = getAbsolutePathInfo(this._innerStateElement, innerPathInfo);\r\n this._innerStateElement.createState(\"readonly\", (state) => {\r\n state.$postUpdate(innerAbsPathInfo.pathInfo.path);\r\n });\r\n return true;\r\n } else {\r\n return Reflect.set(target, prop, value, receiver);\r\n }\r\n }\r\n}\r\n\r\nexport function createOuterState(webComponent: Element, stateName: string): IOuterState {\r\n const handler = new OuterStateProxyHandler(webComponent, stateName);\r\n return new Proxy({}, handler);\r\n}\r\n","import { IStateElement } from \"../components/types\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { getStateElementByWebComponent } from \"./stateElementByWebComponent\";\r\nimport { IOuterState } from \"./types\";\r\n\r\nclass PlainOuterStateProxyHandler implements ProxyHandler<IOuterState> {\r\n private _innerStateElement: IStateElement;\r\n constructor(webComponent: Element, stateName: string) {\r\n this._innerStateElement = getStateElementByWebComponent(webComponent, stateName) ?? raiseError('State element not found for web component.');\r\n }\r\n\r\n get(target: IOuterState, prop: string | symbol, receiver: any): any {\r\n if (typeof prop === 'string') {\r\n let value;\r\n this._innerStateElement.createState(\"readonly\", (state) => {\r\n value = state[prop];\r\n });\r\n return value;\r\n } else {\r\n return Reflect.get(target, prop, receiver);\r\n }\r\n }\r\n\r\n set(target: IOuterState, prop: string | symbol, value: any, receiver: any): boolean {\r\n if (typeof prop === 'string') {\r\n this._innerStateElement.createState(\"writable\", (state) => {\r\n state[prop] = value;\r\n });\r\n return true;\r\n } else {\r\n return Reflect.set(target, prop, value, receiver);\r\n }\r\n }\r\n}\r\n\r\nexport function createPlainOuterState(webComponent: Element, stateName: string): IOuterState {\r\n const handler = new PlainOuterStateProxyHandler(webComponent, stateName);\r\n return new Proxy({}, handler);\r\n}\r\n","import { getBindingsByNode } from \"../bindings/getBindingsByNode\";\r\nimport { IStateElement } from \"../components/types\";\r\nimport { config } from \"../config\";\r\nimport { WEBCOMPONENT_STATE_READY_CALLBACK_NAME } from \"../define\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { markWebComponentAsComplete } from \"./completeWebComponent\";\r\nimport { createInnerState } from \"./innerState\";\r\nimport { buildPrimaryMappingRule } from \"./MappingRule\";\r\nimport { meltFrozenObject } from \"./meltFrozenObject\";\r\nimport { createOuterState } from \"./outerState\";\r\nimport { createPlainOuterState } from \"./plainOuterState\";\r\nimport { setStateElementByWebComponent } from \"./stateElementByWebComponent\";\r\nimport { IOuterState } from \"./types\";\r\n\r\nconst getOuter = (outerState: IOuterState) => (): IOuterState => outerState;\r\n\r\nexport function bindWebComponent(\r\n innerStateElement: IStateElement,\r\n component: Element,\r\n stateProp: string,\r\n state: Record<string, any>\r\n): void {\r\n setStateElementByWebComponent(component, stateProp, innerStateElement);\r\n if (component.hasAttribute(config.bindAttributeName)) {\r\n const bindings = (getBindingsByNode(component) ?? []).filter(\r\n binding => binding.propSegments[0] === stateProp\r\n );\r\n buildPrimaryMappingRule(component, stateProp, bindings);\r\n const outerState = createOuterState(component, stateProp);\r\n const innerState = createInnerState(component, stateProp);\r\n innerStateElement.setInitialState(innerState);\r\n Object.defineProperty(component, stateProp, {\r\n get: getOuter(outerState),\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n } else {\r\n innerStateElement.setInitialState(meltFrozenObject(state));\r\n const outerState = createPlainOuterState(component, stateProp);\r\n Object.defineProperty(component, stateProp, {\r\n get: getOuter(outerState),\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n }\r\n markWebComponentAsComplete(component, innerStateElement);\r\n if (WEBCOMPONENT_STATE_READY_CALLBACK_NAME in component) {\r\n const func = (component as any)[WEBCOMPONENT_STATE_READY_CALLBACK_NAME];\r\n if (typeof func === 'function') {\r\n func.call(component, stateProp).catch((error: any) => {\r\n raiseError(`Error in ${WEBCOMPONENT_STATE_READY_CALLBACK_NAME}: ${error instanceof Error ? error.message : String(error)}`);\r\n });\r\n } else {\r\n raiseError(`${WEBCOMPONENT_STATE_READY_CALLBACK_NAME} is not a function.`);\r\n }\r\n }\r\n}\r\n","import { config } from \"../config\";\r\nimport { loadFromInnerScript } from \"../stateLoader/loadFromInnerScript\";\r\nimport { loadFromJsonFile } from \"../stateLoader/loadFromJsonFile\";\r\nimport { loadFromScriptFile } from \"../stateLoader/loadFromScriptFile\";\r\nimport { loadFromScriptJson } from \"../stateLoader/loadFromScriptJson\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { BindingType, IState } from \"../types\";\r\nimport { IStateElement } from \"./types\";\r\nimport { setStateElementByName } from \"../stateElementByName\";\r\nimport { ILoopContextStack } from \"../list/types\";\r\nimport { createLoopContextStack } from \"../list/loopContext\";\r\nimport { NO_SET_TIMEOUT, STATE_CONNECTED_CALLBACK_NAME, STATE_DISCONNECTED_CALLBACK_NAME, WILDCARD } from \"../define\";\r\nimport { getPathInfo } from \"../address/PathInfo\";\r\nimport { IStateProxy, Mutability } from \"../proxy/types\";\r\nimport { createStateProxy } from \"../proxy/StateHandler\";\r\nimport { bindWebComponent } from \"../webComponent/bindWebComponent\";\r\nimport { connectedCallbackSymbol, disconnectedCallbackSymbol } from \"../proxy/symbols\";\r\nimport { waitInitializeBinding } from \"../bindings/initializeBindingPromiseByNode\";\r\nimport { getCustomElement } from \"../getCustomElement\";\r\n\r\ntype Descriptors = Record<string, PropertyDescriptor>;\r\n\r\nfunction getAllPropertyDescriptors(obj: object): Descriptors {\r\n let descriptors: Descriptors = {};\r\n let proto = obj;\r\n while (proto && proto !== Object.prototype) {\r\n Object.assign(descriptors, Object.getOwnPropertyDescriptors(proto));\r\n proto = Object.getPrototypeOf(proto);\r\n }\r\n return descriptors;\r\n}\r\n\r\nfunction getStateInfo(\r\n state: IState\r\n): { \r\n getterPaths: Set<string>,\r\n setterPaths: Set<string>,\r\n} {\r\n const getterPaths: Set<string> = new Set<string>();\r\n const setterPaths: Set<string> = new Set<string>();\r\n const descriptors = getAllPropertyDescriptors(state);\r\n for(const [ key, descriptor ] of Object.entries(descriptors)) {\r\n if (typeof descriptor.get === \"function\") {\r\n getterPaths.add(key);\r\n }\r\n if (typeof descriptor.set === \"function\") {\r\n setterPaths.add(key);\r\n }\r\n }\r\n return {\r\n getterPaths, setterPaths\r\n };\r\n}\r\n\r\nexport class State extends HTMLElement implements IStateElement {\r\n private __state: IState | undefined;\r\n private _name: string = 'default';\r\n private _initialized: boolean = false;\r\n private _initializePromise: Promise<void>;\r\n private _resolveInitialize: (() => void) | null = null;\r\n private _loadingPromise: Promise<void>;\r\n private _resolveLoading: (() => void) | null = null;\r\n private _setStatePromise: Promise<Record<string, any>> | null = null;\r\n private _resolveSetState: ((value: Record<string, any>) => void) | null = null;\r\n private _listPaths: Set<string> = new Set<string>();\r\n private _elementPaths: Set<string> = new Set<string>();\r\n private _getterPaths: Set<string> = new Set<string>();\r\n private _setterPaths: Set<string> = new Set<string>();\r\n private _loopContextStack: ILoopContextStack = createLoopContextStack();\r\n private _dynamicDependency: Map<string, string[]> = new Map<string, string[]>();\r\n private _staticDependency: Map<string, string[]> = new Map<string, string[]>();\r\n private _pathSet: Set<string> = new Set<string>();\r\n private _version = 0;\r\n private _rootNode: Node | null = null;\r\n private _boundComponent: Element | null = null;\r\n private _boundComponentStateProp: string | null = null;\r\n\r\n constructor() {\r\n super();\r\n this._initializePromise = new Promise<void>((resolve) => {\r\n this._resolveInitialize = resolve;\r\n });\r\n this._loadingPromise = new Promise<void>((resolve) => {\r\n this._resolveLoading = resolve;\r\n });\r\n this._setStatePromise = new Promise<Record<string, any>>((resolve) => {\r\n this._resolveSetState = resolve;\r\n });\r\n }\r\n\r\n private get _state(): IState {\r\n if (typeof this.__state === \"undefined\") {\r\n raiseError(`${config.tagNames.state} _state is not initialized yet.`);\r\n }\r\n return this.__state;\r\n }\r\n\r\n private set _state(value: IState) {\r\n this.__state = value;\r\n this._listPaths.clear();\r\n this._elementPaths.clear();\r\n this._getterPaths.clear();\r\n this._pathSet.clear();\r\n const stateInfo = getStateInfo(value);\r\n for(const path of stateInfo.getterPaths) {\r\n this._getterPaths.add(path);\r\n }\r\n for(const path of stateInfo.setterPaths) {\r\n this._setterPaths.add(path);\r\n }\r\n this._resolveLoading?.();\r\n }\r\n\r\n get name(): string {\r\n return this._name;\r\n }\r\n\r\n private async _initialize() {\r\n try {\r\n if (this.hasAttribute('state')) {\r\n const state = this.getAttribute('state');\r\n this._state = loadFromScriptJson(state!);\r\n } else if (this.hasAttribute('src')) {\r\n const src = this.getAttribute('src');\r\n if (src && src.endsWith('.json')) {\r\n this._state = await loadFromJsonFile(src);\r\n } else if (src && src.endsWith('.js')) {\r\n this._state = await loadFromScriptFile(src);\r\n } else {\r\n raiseError(`Unsupported src file type: ${src}`);\r\n }\r\n } else if (this.hasAttribute('json')) {\r\n const json = this.getAttribute('json');\r\n this._state = JSON.parse(json!);\r\n } else {\r\n const script = this.querySelector<HTMLScriptElement>('script[type=\"module\"]');\r\n if (script) {\r\n this._state = await loadFromInnerScript(script, `state#${this._name}`);\r\n } else {\r\n const timerId = setTimeout(() => {\r\n console.warn(`[@wcstack/state] Warning: No state source found for <${config.tagNames.state}> element with name=\"${this._name}\".`);\r\n }, NO_SET_TIMEOUT);\r\n // 要注意!!!APIでセットする場合はここで待機する必要がある --(1)\r\n this._state = await this._setStatePromise!;\r\n clearTimeout(timerId);\r\n }\r\n }\r\n } catch(e) {\r\n raiseError(`Failed to initialize state: ${e}`);\r\n }\r\n await this._loadingPromise;\r\n this._name = this.getAttribute('name') || 'default';\r\n setStateElementByName(this.rootNode!, this._name, this);\r\n }\r\n\r\n private async _initializeBindWebComponent() {\r\n if (this.hasAttribute(\"bind-component\")) {\r\n // wcs-stateはコンポーネントのトップレベル要素であること\r\n // ShadowDOM直下: parentNodeがShadowRoot → hostが親コンポーネント\r\n // LightDOM/ShadowDOM内のLightDOM: parentNodeがElement → それが親コンポーネント\r\n const parentNode = this.parentNode;\r\n const boundComponent = parentNode instanceof ShadowRoot\r\n ? parentNode.host\r\n : parentNode instanceof Element\r\n ? parentNode\r\n : null;\r\n const customTagName = boundComponent ? getCustomElement(boundComponent) : null;\r\n if (boundComponent === null || customTagName === null) {\r\n raiseError(`\"bind-component\" requires <${config.tagNames.state}> to be a direct child of a custom element.`);\r\n }\r\n // LightDOMの場合、名前空間が上位スコープと共有されるためnameが必須\r\n if (!(parentNode instanceof ShadowRoot) && !this.hasAttribute(\"name\")) {\r\n raiseError(`\"bind-component\" in Light DOM requires a \"name\" attribute to avoid namespace conflicts with the parent scope.`);\r\n }\r\n const boundComponentStateProp = this.getAttribute(\"bind-component\")!;\r\n await customElements.whenDefined(customTagName.toLowerCase());\r\n // data-wcs属性がある場合は、上位の状態によりbinding情報の設定が完了するまで待機する\r\n if (boundComponent.hasAttribute(config.bindAttributeName)) {\r\n await waitInitializeBinding(boundComponent);\r\n }\r\n if (!(boundComponentStateProp in boundComponent)) {\r\n raiseError(`Component does not have property \"${boundComponentStateProp}\" for state binding.`);\r\n }\r\n const state = (boundComponent as any)[boundComponentStateProp] as Record<string, any>;\r\n if (typeof state !== 'object' || state === null) {\r\n raiseError(`Component property \"${boundComponentStateProp}\" is not an object for state binding.`);\r\n }\r\n this._boundComponent = boundComponent;\r\n this._boundComponentStateProp = boundComponentStateProp;\r\n bindWebComponent(this, this._boundComponent, this._boundComponentStateProp, state);\r\n }\r\n }\r\n\r\n private async _callStateConnectedCallback(): Promise<void> {\r\n await this.createStateAsync(\"writable\", async (state) => {\r\n // stateに\"$connectedCallback\"があるか確認し、connectedCallbackAPIを呼び出す\r\n if (STATE_CONNECTED_CALLBACK_NAME in state) {\r\n await state[connectedCallbackSymbol]();\r\n }\r\n });\r\n }\r\n\r\n private _callStateDisconnectedCallback(): void {\r\n this.createState(\"writable\", (state) => {\r\n // stateに\"$disconnectedCallback\"があるか確認し、disconnectedCallbackAPIを呼び出す\r\n if (STATE_DISCONNECTED_CALLBACK_NAME in state) {\r\n state[disconnectedCallbackSymbol]();\r\n }\r\n });\r\n }\r\n\r\n async connectedCallback() {\r\n this._rootNode = this.getRootNode() as Node;\r\n if (!this._initialized) {\r\n await this._initializeBindWebComponent();\r\n await this._initialize();\r\n this._initialized = true;\r\n this._resolveInitialize?.();\r\n }\r\n await this._callStateConnectedCallback();\r\n }\r\n\r\n disconnectedCallback() {\r\n if (this._rootNode !== null) {\r\n this._callStateDisconnectedCallback();\r\n setStateElementByName(this.rootNode, this._name, null);\r\n this._rootNode = null;\r\n }\r\n }\r\n\r\n get initializePromise(): Promise<void> {\r\n return this._initializePromise;\r\n }\r\n\r\n get listPaths(): Set<string> {\r\n return this._listPaths;\r\n }\r\n\r\n get elementPaths(): Set<string> {\r\n return this._elementPaths;\r\n }\r\n\r\n get getterPaths(): Set<string> {\r\n return this._getterPaths;\r\n }\r\n\r\n get setterPaths(): Set<string> {\r\n return this._setterPaths;\r\n }\r\n\r\n get loopContextStack(): ILoopContextStack {\r\n return this._loopContextStack;\r\n }\r\n\r\n get dynamicDependency(): Map<string, string[]> {\r\n return this._dynamicDependency;\r\n }\r\n\r\n get staticDependency(): Map<string, string[]> {\r\n return this._staticDependency;\r\n }\r\n\r\n get version(): number {\r\n return this._version;\r\n }\r\n\r\n get rootNode(): Node {\r\n if (this._rootNode === null) {\r\n raiseError('State rootNode is not available.');\r\n }\r\n return this._rootNode;\r\n }\r\n\r\n get boundComponentStateProp(): string | null {\r\n return this._boundComponentStateProp;\r\n }\r\n\r\n private _addDependency(\r\n map: Map<string, string[]>, \r\n sourcePath: string, \r\n targetPath: string\r\n ): boolean {\r\n const deps = map.get(sourcePath);\r\n if (deps === undefined) {\r\n map.set(sourcePath, [targetPath]);\r\n return true;\r\n } else if (!deps.includes(targetPath)) {\r\n deps.push(targetPath);\r\n return true;\r\n }\r\n return false;\r\n } \r\n\r\n /**\r\n * source, target\r\n * \r\n * products.*.price => products.*.tax \r\n * get \"products.*.tax\"() { return this[\"products.*.price\"] * 0.1; }\r\n * \r\n * products.*.price => products.summary \r\n * get \"products.summary\"() { return this.$getAll(\"products.*.price\", []).reduce(sum); }\r\n * \r\n * categories.*.name => categories.*.products.*.categoryName \r\n * get \"categories.*.products.*.categoryName\"() { return this[\"categories.*.name\"]; }\r\n * \r\n * @param sourcePath \r\n * @param targetPath \r\n */\r\n addDynamicDependency(sourcePath: string, targetPath: string): boolean {\r\n return this._addDependency(this._dynamicDependency, sourcePath, targetPath);\r\n }\r\n\r\n /**\r\n * source, target\r\n * products => products.*\r\n * products.* => products.*.price\r\n * products.* => products.*.name\r\n * \r\n * @param sourcePath \r\n * @param targetPath \r\n */\r\n addStaticDependency(sourcePath: string, targetPath: string): boolean {\r\n return this._addDependency(this._staticDependency, sourcePath, targetPath);\r\n }\r\n\r\n setPathInfo(path: string, bindingType: BindingType): void {\r\n if (bindingType === \"for\") {\r\n this._listPaths.add(path);\r\n this._elementPaths.add(path + '.' + WILDCARD);\r\n }\r\n if (!this._pathSet.has(path)) {\r\n const pathInfo = getPathInfo(path);\r\n this._pathSet.add(path);\r\n if (pathInfo.parentPath !== null) {\r\n let currentPathInfo = pathInfo;\r\n while(currentPathInfo.parentPath !== null) {\r\n if (!this.addStaticDependency(currentPathInfo.parentPath, currentPathInfo.path)) {\r\n break;\r\n }\r\n currentPathInfo = getPathInfo(currentPathInfo.parentPath);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _createState<T>(rootNode: Node, mutability: Mutability, callback: (state: IStateProxy) => T): T {\r\n try {\r\n const stateProxy = createStateProxy(rootNode, this._state, this._name, mutability);\r\n return callback(stateProxy);\r\n } finally {\r\n // cleanup if needed\r\n }\r\n }\r\n\r\n async createStateAsync(mutability: Mutability, callback: (state: IStateProxy) => Promise<void>): Promise<void> {\r\n return await this._createState(this.rootNode, mutability, callback);\r\n }\r\n\r\n createState(mutability: Mutability, callback: (state: IStateProxy) => void): void {\r\n this._createState(this.rootNode, mutability, callback);\r\n }\r\n\r\n nextVersion(): number {\r\n this._version++;\r\n return this._version;\r\n }\r\n\r\n bindProperty(prop: string, desc: PropertyDescriptor): void {\r\n Object.defineProperty(this._state, prop, desc);\r\n }\r\n\r\n setInitialState(state: Record<string, any>): void {\r\n if (!this._initialized) {\r\n this._resolveSetState?.(state);\r\n } else {\r\n this._state = state;\r\n }\r\n }\r\n}\r\n","import { State } from \"./components/State\";\r\nimport { config } from \"./config\";\r\n\r\nexport function registerComponents() {\r\n // Register custom element\r\n if (!customElements.get(config.tagNames.state)) {\r\n customElements.define(config.tagNames.state, State);\r\n }\r\n}","import { setConfig } from \"./config\";\r\nimport { registerComponents } from \"./registerComponents\";\r\nimport { IWritableConfig } from \"./types\";\r\n\r\nexport function bootstrapState(config?: IWritableConfig): void {\r\n if (config) {\r\n setConfig(config);\r\n }\r\n registerComponents();\r\n}"],"names":["id","_cache","cacheFilterInfos","handlerByHandlerKey","bindingSetByHandlerKey","getHandlerKey","getEventName","_cacheNullListIndex","EMPTY_SET","trapGet","trapSet"],"mappings":"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"}