@craft-ts/component 0.7.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/package.json +36 -0
- package/src/index.d.ts +40 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +38 -0
- package/src/index.js.map +1 -0
- package/src/lib/a11y-control.d.ts +58 -0
- package/src/lib/a11y-control.d.ts.map +1 -0
- package/src/lib/a11y-control.js +74 -0
- package/src/lib/a11y-control.js.map +1 -0
- package/src/lib/a11y.d.ts +87 -0
- package/src/lib/a11y.d.ts.map +1 -0
- package/src/lib/a11y.js +96 -0
- package/src/lib/a11y.js.map +1 -0
- package/src/lib/ai/ai-context-menu.d.ts +140 -0
- package/src/lib/ai/ai-context-menu.d.ts.map +1 -0
- package/src/lib/ai/ai-context-menu.js +66 -0
- package/src/lib/ai/ai-context-menu.js.map +1 -0
- package/src/lib/ai/ai-send-dialog.d.ts +1263 -0
- package/src/lib/ai/ai-send-dialog.d.ts.map +1 -0
- package/src/lib/ai/ai-send-dialog.js +288 -0
- package/src/lib/ai/ai-send-dialog.js.map +1 -0
- package/src/lib/ai/send-context-to-ai.d.ts +29 -0
- package/src/lib/ai/send-context-to-ai.d.ts.map +1 -0
- package/src/lib/ai/send-context-to-ai.js +127 -0
- package/src/lib/ai/send-context-to-ai.js.map +1 -0
- package/src/lib/assert-defined-input.d.ts +26 -0
- package/src/lib/assert-defined-input.d.ts.map +1 -0
- package/src/lib/assert-defined-input.js +47 -0
- package/src/lib/assert-defined-input.js.map +1 -0
- package/src/lib/block.d.ts +36 -0
- package/src/lib/block.d.ts.map +1 -0
- package/src/lib/block.js +55 -0
- package/src/lib/block.js.map +1 -0
- package/src/lib/bootstrap.d.ts +32 -0
- package/src/lib/bootstrap.d.ts.map +1 -0
- package/src/lib/bootstrap.js +60 -0
- package/src/lib/bootstrap.js.map +1 -0
- package/src/lib/bridge.d.ts +56 -0
- package/src/lib/bridge.d.ts.map +1 -0
- package/src/lib/bridge.js +81 -0
- package/src/lib/bridge.js.map +1 -0
- package/src/lib/component.d.ts +46 -0
- package/src/lib/component.d.ts.map +1 -0
- package/src/lib/component.js +118 -0
- package/src/lib/component.js.map +1 -0
- package/src/lib/composition.d.ts +17 -0
- package/src/lib/composition.d.ts.map +1 -0
- package/src/lib/composition.js +28 -0
- package/src/lib/composition.js.map +1 -0
- package/src/lib/craft-defaults.d.ts +2 -0
- package/src/lib/craft-defaults.d.ts.map +1 -0
- package/src/lib/craft-defaults.js +41 -0
- package/src/lib/craft-defaults.js.map +1 -0
- package/src/lib/craft-host-tokens.d.ts +6 -0
- package/src/lib/craft-host-tokens.d.ts.map +1 -0
- package/src/lib/craft-host-tokens.js +7 -0
- package/src/lib/craft-host-tokens.js.map +1 -0
- package/src/lib/craft-router-outlet.d.ts +15 -0
- package/src/lib/craft-router-outlet.d.ts.map +1 -0
- package/src/lib/craft-router-outlet.js +10 -0
- package/src/lib/craft-router-outlet.js.map +1 -0
- package/src/lib/css-vars.d.ts +31 -0
- package/src/lib/css-vars.d.ts.map +1 -0
- package/src/lib/css-vars.js +43 -0
- package/src/lib/css-vars.js.map +1 -0
- package/src/lib/css-vars.type.d.ts +151 -0
- package/src/lib/css-vars.type.d.ts.map +1 -0
- package/src/lib/css-vars.type.js +1 -0
- package/src/lib/css-vars.type.js.map +1 -0
- package/src/lib/defer.d.ts +31 -0
- package/src/lib/defer.d.ts.map +1 -0
- package/src/lib/defer.js +19 -0
- package/src/lib/defer.js.map +1 -0
- package/src/lib/directive.d.ts +9 -0
- package/src/lib/directive.d.ts.map +1 -0
- package/src/lib/directive.js +31 -0
- package/src/lib/directive.js.map +1 -0
- package/src/lib/each-scheduling.d.ts +59 -0
- package/src/lib/each-scheduling.d.ts.map +1 -0
- package/src/lib/each-scheduling.js +120 -0
- package/src/lib/each-scheduling.js.map +1 -0
- package/src/lib/each.d.ts +29 -0
- package/src/lib/each.d.ts.map +1 -0
- package/src/lib/each.js +23 -0
- package/src/lib/each.js.map +1 -0
- package/src/lib/factory-runtime.d.ts +5 -0
- package/src/lib/factory-runtime.d.ts.map +1 -0
- package/src/lib/factory-runtime.js +26 -0
- package/src/lib/factory-runtime.js.map +1 -0
- package/src/lib/field-exception-block.d.ts +96 -0
- package/src/lib/field-exception-block.d.ts.map +1 -0
- package/src/lib/field-exception-block.js +44 -0
- package/src/lib/field-exception-block.js.map +1 -0
- package/src/lib/host-runtime.d.ts +60 -0
- package/src/lib/host-runtime.d.ts.map +1 -0
- package/src/lib/host-runtime.js +16 -0
- package/src/lib/host-runtime.js.map +1 -0
- package/src/lib/hydrate.d.ts +15 -0
- package/src/lib/hydrate.d.ts.map +1 -0
- package/src/lib/hydrate.js +79 -0
- package/src/lib/hydrate.js.map +1 -0
- package/src/lib/hyperscript.d.ts +148 -0
- package/src/lib/hyperscript.d.ts.map +1 -0
- package/src/lib/hyperscript.js +96 -0
- package/src/lib/hyperscript.js.map +1 -0
- package/src/lib/if-block.d.ts +8 -0
- package/src/lib/if-block.d.ts.map +1 -0
- package/src/lib/if-block.js +16 -0
- package/src/lib/if-block.js.map +1 -0
- package/src/lib/locator.d.ts +170 -0
- package/src/lib/locator.d.ts.map +1 -0
- package/src/lib/locator.js +151 -0
- package/src/lib/locator.js.map +1 -0
- package/src/lib/match-block.d.ts +38 -0
- package/src/lib/match-block.d.ts.map +1 -0
- package/src/lib/match-block.js +29 -0
- package/src/lib/match-block.js.map +1 -0
- package/src/lib/pending-block.d.ts +125 -0
- package/src/lib/pending-block.d.ts.map +1 -0
- package/src/lib/pending-block.js +48 -0
- package/src/lib/pending-block.js.map +1 -0
- package/src/lib/project.d.ts +19 -0
- package/src/lib/project.d.ts.map +1 -0
- package/src/lib/project.js +56 -0
- package/src/lib/project.js.map +1 -0
- package/src/lib/render/hydration-metadata.d.ts +3 -0
- package/src/lib/render/hydration-metadata.d.ts.map +1 -0
- package/src/lib/render/hydration-metadata.js +8 -0
- package/src/lib/render/hydration-metadata.js.map +1 -0
- package/src/lib/render/hydration.d.ts +24 -0
- package/src/lib/render/hydration.d.ts.map +1 -0
- package/src/lib/render/hydration.js +181 -0
- package/src/lib/render/hydration.js.map +1 -0
- package/src/lib/render/interpreter.d.ts +32 -0
- package/src/lib/render/interpreter.d.ts.map +1 -0
- package/src/lib/render/interpreter.js +3588 -0
- package/src/lib/render/interpreter.js.map +1 -0
- package/src/lib/render/server-style-collector.d.ts +6 -0
- package/src/lib/render/server-style-collector.d.ts.map +1 -0
- package/src/lib/render/server-style-collector.js +23 -0
- package/src/lib/render/server-style-collector.js.map +1 -0
- package/src/lib/render/ssr-coordinator.d.ts +20 -0
- package/src/lib/render/ssr-coordinator.d.ts.map +1 -0
- package/src/lib/render/ssr-coordinator.js +99 -0
- package/src/lib/render/ssr-coordinator.js.map +1 -0
- package/src/lib/render/string-dom.d.ts +9 -0
- package/src/lib/render/string-dom.d.ts.map +1 -0
- package/src/lib/render/string-dom.js +377 -0
- package/src/lib/render/string-dom.js.map +1 -0
- package/src/lib/render/style-registry.d.ts +14 -0
- package/src/lib/render/style-registry.d.ts.map +1 -0
- package/src/lib/render/style-registry.js +79 -0
- package/src/lib/render/style-registry.js.map +1 -0
- package/src/lib/render/style-scope.d.ts +30 -0
- package/src/lib/render/style-scope.d.ts.map +1 -0
- package/src/lib/render/style-scope.js +261 -0
- package/src/lib/render/style-scope.js.map +1 -0
- package/src/lib/render/vnode.d.ts +330 -0
- package/src/lib/render/vnode.d.ts.map +1 -0
- package/src/lib/render/vnode.js +293 -0
- package/src/lib/render/vnode.js.map +1 -0
- package/src/lib/server-render.d.ts +34 -0
- package/src/lib/server-render.d.ts.map +1 -0
- package/src/lib/server-render.js +84 -0
- package/src/lib/server-render.js.map +1 -0
- package/src/lib/start.d.ts +13 -0
- package/src/lib/start.d.ts.map +1 -0
- package/src/lib/start.js +20 -0
- package/src/lib/start.js.map +1 -0
- package/src/lib/template-contract.d.ts +347 -0
- package/src/lib/template-contract.d.ts.map +1 -0
- package/src/lib/template-contract.js +1 -0
- package/src/lib/template-contract.js.map +1 -0
- package/src/lib/template.d.ts +11 -0
- package/src/lib/template.d.ts.map +1 -0
- package/src/lib/template.js +21 -0
- package/src/lib/template.js.map +1 -0
- package/src/lib/testing.d.ts +157 -0
- package/src/lib/testing.d.ts.map +1 -0
- package/src/lib/testing.js +416 -0
- package/src/lib/testing.js.map +1 -0
- package/src/lib/types.d.ts +442 -0
- package/src/lib/types.d.ts.map +1 -0
- package/src/lib/types.js +22 -0
- package/src/lib/types.js.map +1 -0
- package/testing/public-api.d.ts +3 -0
- package/testing/public-api.d.ts.map +1 -0
- package/testing/public-api.js +3 -0
- package/testing/public-api.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../../../../../../libs/component/src/lib/render/interpreter.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CRAFT_SERVICE_PROVIDER_BRAND,\n CRAFT_DOM_EVENT_HOOK,\n CRAFT_NODE_DIRECTIVE,\n CRAFT_NODE_EFFECT_FACTORY,\n CRAFT_FIELD_EXCEPTION_BOUNDARY,\n CRAFT_FIELD_EXCEPTION_SOURCE,\n CRAFT_TEMPORAL_RUNTIME,\n COMPONENT_REGISTER,\n ComponentRegister,\n craftEffect,\n craftLazy,\n createBrowserDomAdapter,\n registerCraftSyncTemplateFlush,\n executeYieldable,\n HOST_TAG_LIST,\n executeTemplateTrace,\n isCraftException,\n isCraftGenShortCircuit,\n isCraftNotSettled,\n ɵwithSettledReadObserver,\n type CraftSettledReadNotice,\n type CraftSettledReadObserver,\n isGeneratorFunction,\n isCraftField,\n isGenerator,\n markYieldableValue,\n markYieldableMethod,\n isYieldableValue,\n isYieldableMethod,\n isYieldableReactiveValue,\n DEEP_YIELDABLE,\n provideHostName,\n rawReactiveFacade,\n rawReactiveValue,\n toYieldable,\n yieldableInvocation,\n ɵfallbackComponentRegister,\n ɵregisterCraftTarget,\n ɵcraftInjectorFromHost,\n type CraftServiceProvider,\n type CraftDomAdapter,\n type CraftDomEvent,\n type CraftDomEventHook,\n type CraftNodeDirectiveContext,\n type AnyCraftException,\n type CraftFieldExceptionSource,\n type FieldExceptionBoundaryRegistration,\n fieldExceptionVisibilityMatches,\n YIELDABLE_VALUE,\n type TemporalTaskHandle,\n type TemplateTraceContext,\n RealCraftTemporalRuntime,\n CRAFT_HYDRATION_ID,\n childCraftRenderIdentity,\n createCraftRenderIdentity,\n type CraftRenderIdentity,\n CRAFT_SSR_POLICY,\n CRAFT_MATCH,\n type CraftSsrPolicy,\n} from '@craft-ts/core';\nimport { executeCraftComponentFactory } from '../factory-runtime';\nimport {\n computed,\n createEnvironmentInjector,\n ElementRef,\n EnvironmentInjector,\n Injector,\n reflectComponentType,\n runInInjectionContext,\n signal,\n untracked,\n type EffectRef,\n type Provider,\n type ProviderToken,\n} from '../host-runtime';\nimport type { HostProps } from '../hyperscript';\nimport {\n CRAFT_COMPONENT,\n CRAFT_DIRECTIVE,\n CONTENT_DECLARATION_CONTEXT,\n type CraftComponent,\n} from '../types';\nimport { cssVarStyles, type CssVarDisposition } from '../css-vars';\nimport {\n normalizeChildren,\n mergeHostProps,\n type AppliedCraftNodeDirective,\n type CraftDirectiveNode,\n type CraftNode,\n type CraftNodeChildren,\n type CraftTextBinding,\n type DeferNode,\n type EachNode,\n type IfBlockNode,\n type HeadingNode,\n type HeadingSectionNode,\n type ElementNodeBase,\n type CatchBlockNode,\n type MatchBlockNode,\n type ProjectionNode,\n type TemplateNode,\n type FieldExceptionBlockNode,\n type PendingBlockNode,\n withCraftRenderContext,\n CRAFT_NODE_DIRECTIVES,\n} from './vnode';\nimport {\n CraftUnhandledPendingError,\n resolvePendingBlockHandler,\n type PendingBlockHandler,\n type PendingBlockPosition,\n} from '../pending-block';\nimport {\n CraftUnhandledExceptionError,\n resolveCatchBlockHandler,\n type CatchBlockPosition,\n} from '../block';\nimport type {\n FieldExceptionHandler,\n FieldExceptionHandlers,\n} from '../field-exception-block';\nimport {\n EACH_SCHEDULER,\n createEachScheduler,\n type CancelHandle,\n type EachSchedulePolicy,\n type EachScheduler,\n} from '../each-scheduling';\nimport { executeCraftComponentFactoryAsync } from '../factory-runtime';\nimport {\n CRAFT_STYLE_REGISTRY,\n CraftStyleRegistry,\n ɵfallbackCraftStyleRegistry,\n} from './style-registry';\nimport { scopeCss, scopeIdFor, validateStyleScope } from './style-scope';\nimport {\n CRAFT_LOCATOR_CONTENT_NAMES,\n directCraftContentNames,\n findCraftTemplateLocator,\n type RuntimeLocatorCriteria,\n} from '../locator';\nimport { HydrationMismatchError, type HydrationCursor } from './hydration';\nimport { setNodeHydrationKey } from './hydration-metadata';\nimport type { CraftSsrCoordinator } from './ssr-coordinator';\nimport type { CraftServerStyleCollector } from './server-style-collector';\n\ndeclare const ngDevMode: boolean | undefined;\n\ntype NativeNode = Node;\ntype NativeParent = Node;\n\ninterface RenderContext {\n readonly renderer: CraftDomAdapter;\n readonly injector: Injector;\n readonly componentContext?: unknown;\n readonly componentName?: string;\n readonly ownerScope?: string;\n readonly rootScope?: string;\n readonly styleRoot?: Document | ShadowRoot;\n readonly styles?: CraftStyleRegistry;\n /** Styles exposed by the currently rendered Craft component, by slot. */\n readonly contentStyles?: Readonly<Partial<Record<string, string>>>;\n /** Marker applied to ordinary nodes in an opted-in projection. */\n readonly contentScope?: string;\n /**\n * Reports an exception to the nearest `catchBlock`. `token` identifies the\n * reporter: the boundary keeps its fallback up until every reporter has\n * either recovered or been destroyed, so a re-render between the failure and\n * the recovery cannot strand it.\n */\n readonly exceptionBoundary?: (\n exception: AnyCraftException,\n token?: object,\n ) => boolean;\n readonly exceptionBoundaryResolved?: (token?: object) => void;\n /** Nearest `pendingBlock` boundary, notified by any binding that suspends. */\n readonly pendingBoundary?: PendingBoundaryRegistration;\n /** Nearest `pendingBlock` boundary, notified by every settled read below it. */\n readonly settledReadObserver?: CraftSettledReadObserver;\n readonly handledResourceExceptionCodes?: Set<string>;\n readonly fieldExceptionBoundary?: FieldExceptionBoundaryRegistration;\n /** Lexical context of content declared by the parent component. */\n readonly declarationContext?: RenderContext;\n /** Current heading outline level (1–6). `heading()` reads this; `headingSection` increments it. */\n readonly headingLevel?: number;\n /** Directives composed around the current component. */\n readonly directiveNames?: readonly string[];\n /** Mutable render number shared by one component and its nested views. */\n readonly traceState?: TemplateTraceState;\n readonly mode: 'create' | 'hydrate';\n readonly identity: CraftRenderIdentity;\n readonly hydration?: HydrationCursor;\n readonly emitHydrationKeys?: boolean;\n readonly ssr?: CraftSsrCoordinator;\n readonly serverStyles?: CraftServerStyleCollector;\n}\n\ninterface TemplateTraceState {\n renderCount: number;\n}\n\n/**\n * How a suspended binding talks to its boundary. Every reactive binding owns a\n * token: it suspends with it when its settled read throws, and releases it as\n * soon as the same binding runs to completion (or is destroyed). The boundary\n * shows its fallback while at least one token is held.\n */\ninterface PendingBoundaryRegistration {\n suspend(token: object, source: string): void;\n resume(token: object): void;\n}\n\nlet templateGeneratorDepth = 0;\n\nfunction childContext(\n context: RenderContext,\n overrides: Partial<RenderContext> = {},\n): RenderContext {\n return { ...context, ...overrides };\n}\n\nfunction childNodeContext(\n context: RenderContext,\n node: CraftNode,\n index: number,\n): RenderContext {\n const segments: readonly (string | number)[] =\n node.kind === 'component'\n ? [node.component[CRAFT_COMPONENT].name, index]\n : node.kind === 'each'\n ? [`each:${node.sourceName ?? index}`]\n : node.kind === 'if'\n ? [`if:${node.conditionName}`]\n : [index];\n return childContext(context, {\n identity: childCraftRenderIdentity(context.identity, ...segments),\n });\n}\n\nfunction lexicalContext(context: RenderContext): RenderContext {\n return context.declarationContext ?? context;\n}\n\nfunction preserveContentDeclarationContext(\n value: unknown,\n context: unknown,\n): unknown {\n if (typeof value !== 'function') return value;\n if (\n (value as Partial<Record<typeof CONTENT_DECLARATION_CONTEXT, unknown>>)[\n CONTENT_DECLARATION_CONTEXT\n ] !== undefined\n ) {\n return value;\n }\n const wrapped = (...args: unknown[]) =>\n (value as (...innerArgs: unknown[]) => unknown)(...args);\n Object.defineProperty(wrapped, CONTENT_DECLARATION_CONTEXT, {\n value: context,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return wrapped;\n}\n\nfunction renderChildrenCallback(\n context: RenderContext,\n callback: (...args: any[]) => CraftNodeChildren,\n args: readonly unknown[] = [],\n kind: TemplateTraceContext['kind'] = 'callback',\n name?: string,\n): CraftNodeChildren {\n const phase = tracePhase(context);\n return executeTemplateTrace(\n context.injector,\n traceContext(context, kind, phase, name ?? callback.name),\n () => invokeChildrenCallback(context, callback, args),\n );\n}\n\nfunction invokeChildrenCallback(\n context: RenderContext,\n callback: (...args: any[]) => CraftNodeChildren,\n args: readonly unknown[],\n): CraftNodeChildren {\n return runInInjectionContext(context.injector, () =>\n withCraftRenderContext(context, () => callback(...args)),\n );\n}\n\nfunction renderBlockChildren(\n context: RenderContext,\n name: string | undefined,\n callback: (...args: any[]) => CraftNodeChildren,\n args: readonly unknown[] = [],\n): CraftNodeChildren {\n return executeTemplateTrace(\n context.injector,\n traceContext(context, 'block', tracePhase(context), name),\n () => invokeChildrenCallback(context, callback, args),\n );\n}\n\nfunction renderDeferChildren(\n context: RenderContext,\n name: string | undefined,\n callback: (...args: any[]) => CraftNodeChildren,\n args: readonly unknown[] = [],\n): CraftNodeChildren {\n return executeTemplateTrace(\n context.injector,\n traceContext(context, 'defer', tracePhase(context), name),\n () => invokeChildrenCallback(context, callback, args),\n );\n}\n\nfunction tracePhase(context: RenderContext): 'initialRender' | 'update' {\n return (context.traceState?.renderCount ?? 0) <= 1\n ? 'initialRender'\n : 'update';\n}\n\nfunction traceContext(\n context: RenderContext,\n kind: TemplateTraceContext['kind'],\n phase: TemplateTraceContext['phase'],\n name?: string,\n): TemplateTraceContext {\n return {\n kind,\n phase,\n ...(context.componentName ? { componentName: context.componentName } : {}),\n ...(name ? { name } : {}),\n ...(context.directiveNames && context.directiveNames.length > 0\n ? { directiveNames: context.directiveNames }\n : {}),\n renderCount: context.traceState?.renderCount ?? 0,\n };\n}\n\nfunction traceComponentLifecycle(\n injector: Injector,\n phase: 'create' | 'destroy',\n componentName: string,\n renderCount: number,\n): void {\n executeTemplateTrace(\n injector,\n {\n kind: 'component',\n phase,\n componentName,\n renderCount,\n },\n () => [],\n );\n}\n\nfunction eagerlyResolveBrandedProviders(\n providers: readonly CraftServiceProvider[],\n injector: EnvironmentInjector,\n branded = false,\n): {\n readonly exception?: AnyCraftException;\n readonly overrides: readonly Provider[];\n readonly trackers: readonly (() => unknown)[];\n} {\n const overrides: Provider[] = [];\n const trackers: (() => unknown)[] = [];\n\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n const result = eagerlyResolveBrandedProviders(\n provider,\n injector,\n branded || CRAFT_SERVICE_PROVIDER_BRAND in provider,\n );\n overrides.push(...result.overrides);\n trackers.push(...result.trackers);\n if (result.exception) {\n return { exception: result.exception, overrides, trackers };\n }\n continue;\n }\n\n if (!branded || typeof provider !== 'object' || provider === null) {\n continue;\n }\n\n const token = Reflect.get(provider, 'provide');\n const useFactory = Reflect.get(provider, 'useFactory');\n if (token !== undefined && branded && typeof useFactory === 'function') {\n // Resolve Craft providers through a computed so signals read by their\n // factories remain dependencies of the component render effect.\n const resolved = computed(() =>\n runInInjectionContext(injector, useFactory as () => unknown),\n );\n trackers.push(resolved);\n const value = resolved();\n if (isCraftException(value)) {\n return { exception: value, overrides, trackers };\n }\n overrides.push({ provide: token, useValue: value });\n }\n }\n\n return { overrides, trackers };\n}\n\nfunction findResourceException(\n value: unknown,\n seen = new Set<object>(),\n): AnyCraftException | undefined {\n if (typeof value !== 'object' || value === null || seen.has(value)) {\n return undefined;\n }\n seen.add(value);\n\n const candidate = value as {\n readonly exceptions?: () => { readonly list?: readonly unknown[] };\n };\n if (typeof candidate.exceptions === 'function') {\n const exceptions = (\n isYieldableReactiveValue(candidate.exceptions)\n ? rawReactiveValue(candidate.exceptions)()\n : candidate.exceptions()\n ) as { readonly list?: readonly unknown[] };\n const exception = exceptions.list?.find(isCraftException);\n if (exception) return exception;\n }\n\n if (Array.isArray(value)) {\n for (const child of value) {\n const exception = findResourceException(child, seen);\n if (exception) return exception;\n }\n return undefined;\n }\n\n for (const child of Object.values(value)) {\n const exception = findResourceException(child, seen);\n if (exception) return exception;\n }\n return undefined;\n}\n\nfunction scopeTokens(parent: string | undefined, own: string): string {\n return [parent, own].filter(Boolean).join(' ');\n}\n\nfunction styleValues(\n styles: string | readonly string[] | undefined,\n): readonly string[] {\n return typeof styles === 'string' ? [styles] : (styles ?? []);\n}\n\nfunction acquireStyles(\n context: RenderContext,\n owners: readonly {\n readonly name: string;\n readonly styles?: string | readonly string[];\n readonly definition?: object;\n }[],\n ownerScope: string,\n): (() => void)[] {\n if (context.serverStyles) {\n return owners.flatMap((owner, index) => {\n const css = styleValues(owner.styles);\n if (!css.length) return [];\n const scope = scopeIdFor(owner.definition ?? {}, owner.name);\n const dev = typeof ngDevMode === 'undefined' || ngDevMode;\n if (dev) validateStyleScope(scope, css.join('\\n'));\n return [\n context.serverStyles!.acquire(\n `craft:${ownerScope}:${scope}`,\n scopeCss(ownerScope, css.join('\\n')),\n index,\n ),\n ];\n });\n }\n if (!context.styleRoot || !context.styles) return [];\n const registry = context.styles;\n const releases: (() => void)[] = [];\n owners.forEach((owner, index) => {\n const css = styleValues(owner.styles);\n if (!css.length) return;\n const scope = scopeIdFor(owner.definition ?? {}, owner.name);\n const dev = typeof ngDevMode === 'undefined' || ngDevMode;\n if (dev) validateStyleScope(scope, css.join('\\n'));\n releases.push(\n registry.acquire(\n context.styleRoot!,\n `craft:${ownerScope}:${scope}`,\n scopeCss(ownerScope, css.join('\\n')),\n index,\n ),\n );\n });\n return releases;\n}\n\nfunction contentScopeId(ownerScope: string, slotName: string): string {\n return `${ownerScope}::content::${slotName}`;\n}\n\nfunction acquireContentStyle(\n context: RenderContext,\n slotName: string | undefined,\n stylePolicy: ProjectionNode['stylePolicy'],\n): { readonly scope?: string; readonly release: () => void } {\n if (\n stylePolicy !== 'allow-container-styles' ||\n !slotName ||\n !context.ownerScope ||\n !context.contentStyles?.[slotName] ||\n (!context.serverStyles && (!context.styleRoot || !context.styles))\n ) {\n return { release: () => undefined };\n }\n\n const scope = contentScopeId(context.ownerScope, slotName);\n const css = scopeCss(scope, context.contentStyles[slotName], {\n rootAttribute: 'data-craft-content',\n limitSelector: '[data-craft-root]',\n });\n const release = context.serverStyles\n ? context.serverStyles.acquire(`craft:content:${scope}`, css, 1000)\n : context.styles!.acquire(\n context.styleRoot!,\n `craft:content:${scope}`,\n css,\n 1000,\n );\n return { scope, release };\n}\n\ninterface RenderedNode {\n readonly kind: CraftNode['kind'] | 'fragment';\n firstNode(): NativeNode;\n lastNode(): NativeNode;\n patch(node: CraftNode): boolean;\n destroy(): void;\n}\n\nfunction activeSsrRoute(context: RenderContext): string | undefined {\n const match = context.injector.get(CRAFT_MATCH, null) as\n | (() => { readonly route?: { readonly path?: string } } | null)\n | null;\n try {\n return match?.()?.route?.path;\n } catch {\n return undefined;\n }\n}\n\nfunction createRenderEffect(\n context: RenderContext,\n name: string,\n effectFn: () => void,\n): EffectRef {\n // One token per binding: a binding that suspends holds it until it next runs\n // to completion. The effect stays subscribed across the suspension — the\n // settled read registered its source's `status` before throwing — so the\n // boundary is released without any polling.\n const token = {};\n // A binding that short-circuited must tell its boundary when it recovers —\n // but only that binding, so a sibling still in exception keeps its fallback.\n let shortCircuited = false;\n const ref = createEffectInInjector(context.injector, name, () => {\n try {\n // A settled read reports its source while it evaluates — that is how the\n // boundary learns about a source that is refetching rather than\n // suspending, since a refetch throws nothing.\n ɵwithSettledReadObserver(context.settledReadObserver, effectFn);\n } catch (error) {\n if (isCraftNotSettled(error)) {\n if (!context.pendingBoundary) {\n if (context.ssr) {\n const routePolicy = context.injector.get(\n CRAFT_SSR_POLICY,\n null,\n ) as CraftSsrPolicy | null;\n if (routePolicy) {\n context.ssr.suspend(token, error.source, routePolicy.mode, {\n route: activeSsrRoute(context),\n timeoutMs: routePolicy.timeoutMs,\n });\n return;\n }\n context.ssr.unhandled(error.source, activeSsrRoute(context));\n }\n throw new CraftUnhandledPendingError(error.source);\n }\n context.pendingBoundary.suspend(token, error.source);\n return;\n }\n\n if (!isCraftGenShortCircuit(error)) throw error;\n\n // A settled read whose source carries a business exception: route it to\n // the nearest catchBlock, exactly like a component initialization one.\n context.pendingBoundary?.resume(token);\n if (!context.exceptionBoundary?.(error.exception, token)) {\n throw new CraftUnhandledExceptionError(error.exception);\n }\n shortCircuited = true;\n return;\n }\n\n context.ssr?.resume(token);\n context.pendingBoundary?.resume(token);\n if (shortCircuited) {\n shortCircuited = false;\n context.exceptionBoundaryResolved?.(token);\n }\n });\n\n return {\n destroy: () => {\n context.ssr?.resume(token);\n context.pendingBoundary?.resume(token);\n if (shortCircuited) context.exceptionBoundaryResolved?.(token);\n ref.destroy();\n },\n } as EffectRef;\n}\n\nfunction createEffectInInjector(\n injector: Injector,\n name: string,\n effectFn: () => void,\n): EffectRef {\n return untracked(() =>\n runInInjectionContext(injector, () =>\n craftEffect(name, effectFn, { manualCleanup: true }),\n ),\n );\n}\n\nfunction executeTemplateCallback(\n callback: (...args: any[]) => unknown,\n args: any[],\n context: RenderContext,\n): unknown {\n const isGeneratorCallback = isGeneratorFunction(callback);\n if (isGeneratorCallback) templateGeneratorDepth++;\n try {\n return executeYieldable(callback, args, context.injector);\n } finally {\n if (isGeneratorCallback) templateGeneratorDepth--;\n }\n}\n\nfunction resolveTemplateValue(value: unknown, context: RenderContext): unknown {\n return typeof value === 'function'\n ? executeTemplateCallback(value as (...args: any[]) => unknown, [], context)\n : value;\n}\n\nfunction resolveTemplateContext(\n context: unknown,\n renderContext: RenderContext,\n): unknown {\n if (typeof context === 'function') {\n return resolveTemplateValue(context, renderContext);\n }\n if (\n context === null ||\n typeof context !== 'object' ||\n Array.isArray(context)\n ) {\n return context;\n }\n\n return Object.fromEntries(\n Object.entries(context).map(([key, value]) => [\n key,\n typeof value === 'function'\n ? resolveTemplateValue(value, renderContext)\n : value,\n ]),\n );\n}\n\nfunction resolveProjectionValue(\n value: unknown,\n renderContext: RenderContext,\n): unknown {\n let current = value;\n for (let depth = 0; depth < 3 && typeof current === 'function'; depth++) {\n current = resolveTemplateValue(current, renderContext);\n }\n return current;\n}\n\nfunction projectYieldableTemplateContext(\n value: unknown,\n seen = new WeakMap<object, unknown>(),\n): unknown {\n // Field trees are dynamic proxies: copying their enumerable members would\n // discard lazily-created child fields such as `form.email`.\n if (isCraftField(value)) return value;\n\n if (isYieldableValue(value)) {\n const projected = (...args: any[]) => {\n const result = Reflect.apply(\n value as unknown as (...args: any[]) => unknown,\n undefined,\n args,\n );\n if (templateGeneratorDepth === 0) return result;\n return toYieldable(() => result)();\n };\n\n const namedProjected = markYieldableValue(\n projected,\n value[YIELDABLE_VALUE] as string,\n );\n\n if (\n typeof value === 'function' &&\n (Object.keys(value).length > 0 || DEEP_YIELDABLE in value)\n ) {\n return new Proxy(namedProjected, {\n get(_target, property) {\n return projectYieldableTemplateContext(\n Reflect.get(value, property),\n seen,\n );\n },\n });\n }\n\n return namedProjected;\n }\n\n if (typeof value === 'function') {\n if (isYieldableMethod(value)) {\n return (...args: any[]) => {\n const result = Reflect.apply(value, undefined, args);\n if (templateGeneratorDepth === 0) return result;\n return toYieldable(() => result)();\n };\n }\n\n // State and resource refs are callable objects with exposed insertions\n // (for example `counter.disabled`). Keep the callable ref intact while\n // projecting its nested yieldable members into the template context.\n if (Object.keys(value).length === 0) return value;\n if (seen.has(value)) return seen.get(value);\n\n const projected = new Proxy(value, {\n get(target, property, receiver) {\n return projectYieldableTemplateContext(\n Reflect.get(target, property, receiver),\n seen,\n );\n },\n });\n seen.set(value, projected);\n return projected;\n }\n if (typeof value !== 'object' || value === null) return value;\n\n // Craft nodes carry runtime objects such as RenderContext and the DOM adapter\n // through their declaration context. Copying them as plain objects would\n // strip prototype methods from those runtime services before projection.\n if (\n 'kind' in value &&\n typeof (value as { readonly kind?: unknown }).kind === 'string'\n ) {\n return value;\n }\n\n if (seen.has(value)) return seen.get(value);\n if (Array.isArray(value)) {\n const result: unknown[] = [];\n seen.set(value, result);\n for (const item of value) {\n result.push(projectYieldableTemplateContext(item, seen));\n }\n return result;\n }\n const result: Record<string, unknown> = {};\n seen.set(value, result);\n for (const [key, child] of Object.entries(value)) {\n result[key] = projectYieldableTemplateContext(child, seen);\n }\n return result;\n}\n\nclass CraftNodeDirectiveMount {\n private readonly inputs;\n private readonly environmentInjector: EnvironmentInjector;\n private readonly cleanup: (() => void) | undefined;\n private readonly registrationRelease: () => void;\n\n constructor(\n descriptor: AppliedCraftNodeDirective,\n element: Element,\n context: RenderContext,\n ) {\n this.inputs = signal(descriptor.inputs);\n const definition = descriptor.directive[CRAFT_NODE_DIRECTIVE];\n this.environmentInjector = createEnvironmentInjector(\n [\n { provide: ElementRef, useValue: new ElementRef(element) },\n {\n provide: CRAFT_NODE_EFFECT_FACTORY,\n deps: [Injector],\n useFactory:\n (injector: Injector) => (name: string, effectFn: () => void) =>\n createEffectInInjector(\n injector,\n `node-directive-${name}`,\n effectFn,\n ),\n },\n ...(context.fieldExceptionBoundary\n ? [\n {\n provide: CRAFT_FIELD_EXCEPTION_BOUNDARY,\n useValue: context.fieldExceptionBoundary,\n },\n ]\n : []),\n ],\n context.injector.get(EnvironmentInjector),\n `CraftNodeDirective(${definition.name})`,\n );\n const inputs = this.inputs;\n const nodeContext = {\n element,\n injector: this.environmentInjector,\n renderer: context.renderer,\n get props() {\n return inputs();\n },\n } satisfies CraftNodeDirectiveContext;\n this.registrationRelease = ɵregisterCraftTarget(\n this.environmentInjector,\n descriptor.directive,\n nodeContext,\n allocateCraftHostName(\n this.environmentInjector,\n 'directive',\n definition.name,\n ),\n false,\n );\n const cleanup = untracked(() =>\n runInInjectionContext(this.environmentInjector, () =>\n definition.mount(nodeContext),\n ),\n );\n this.cleanup = typeof cleanup === 'function' ? cleanup : undefined;\n }\n\n update(descriptor: AppliedCraftNodeDirective): void {\n this.inputs.set(descriptor.inputs);\n }\n\n destroy(): void {\n this.registrationRelease();\n this.cleanup?.();\n this.environmentInjector.destroy();\n }\n}\n\nfunction sameCraftDirectives(\n left: readonly CraftDirectiveNode['directives'][number][],\n right: readonly CraftDirectiveNode['directives'][number][],\n): boolean {\n return (\n left.length === right.length &&\n left.every((directive, index) => directive === right[index])\n );\n}\n\nfunction sameCraftNodeDirectives(\n left: readonly AppliedCraftNodeDirective[],\n right: readonly AppliedCraftNodeDirective[],\n): boolean {\n return (\n left.length === right.length &&\n left.every(\n (descriptor, index) => descriptor.directive === right[index]?.directive,\n )\n );\n}\n\nfunction insertBefore(\n renderer: CraftDomAdapter,\n parent: NativeParent,\n node: NativeNode,\n before: NativeNode | null,\n): void {\n renderer.insertBefore(parent, node, before);\n}\n\nfunction removeNode(renderer: CraftDomAdapter, node: NativeNode): void {\n const parent = node.parentNode;\n if (parent) {\n renderer.removeChild(parent, node);\n }\n}\n\nfunction isElementNode(node: unknown): node is Element {\n return (\n typeof node === 'object' &&\n node !== null &&\n (node as { readonly nodeType?: number }).nodeType === 1\n );\n}\n\nfunction mountComment(\n parent: NativeParent,\n value: string,\n before: NativeNode | null,\n context: RenderContext,\n): Comment {\n if (context.mode === 'hydrate' && context.hydration) {\n try {\n return context.hydration.claimBoundary(\n context.identity.hydrationKey,\n value,\n );\n } catch (error) {\n if (!(error instanceof HydrationMismatchError)) throw error;\n context.hydration.recordMismatch(error);\n }\n }\n const comment = context.renderer.createComment(\n context.emitHydrationKeys\n ? `${value}|hk:${context.identity.hydrationKey}`\n : value,\n );\n insertBefore(context.renderer, parent, comment, before);\n return comment;\n}\n\nfunction createElementForRender(\n tag: string,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n): { readonly element: Element; readonly context: RenderContext } {\n if (context.mode === 'hydrate' && context.hydration) {\n try {\n return {\n element: context.hydration.claimElement(\n context.identity.hydrationKey,\n tag,\n ),\n context,\n };\n } catch (error) {\n if (!(error instanceof HydrationMismatchError)) throw error;\n context.hydration.recordMismatch(error);\n const actual = error.actualNode;\n const replacementBefore =\n actual?.parentNode === parent ? actual.nextSibling : before;\n if (actual?.parentNode) removeNode(context.renderer, actual);\n const createContext = childContext(context, {\n mode: 'create',\n hydration: undefined,\n });\n const element = createContext.renderer.createElement(tag);\n if (createContext.emitHydrationKeys) {\n createContext.renderer.setAttribute(\n element,\n 'data-craft-hk',\n createContext.identity.hydrationKey,\n );\n }\n insertBefore(createContext.renderer, parent, element, replacementBefore);\n return { element, context: createContext };\n }\n }\n const element = context.renderer.createElement(tag);\n if (context.emitHydrationKeys) {\n context.renderer.setAttribute(\n element,\n 'data-craft-hk',\n context.identity.hydrationKey,\n );\n }\n insertBefore(context.renderer, parent, element, before);\n return { element, context };\n}\n\nfunction createTextForRender(\n value: string,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n compare: boolean,\n): { readonly text: Text; readonly context: RenderContext } {\n if (context.mode === 'hydrate' && context.hydration) {\n try {\n return {\n text: context.hydration.claimText(\n context.identity.hydrationKey,\n compare ? value : undefined,\n ),\n context,\n };\n } catch (error) {\n if (!(error instanceof HydrationMismatchError)) throw error;\n context.hydration.recordMismatch(error);\n const actual = error.actualNode;\n const replacementBefore =\n actual?.parentNode === parent ? actual.nextSibling : before;\n if (actual?.parentNode) removeNode(context.renderer, actual);\n const createContext = childContext(context, {\n mode: 'create',\n hydration: undefined,\n });\n const text = createContext.renderer.createText(value);\n if (createContext.emitHydrationKeys) {\n setNodeHydrationKey(text, createContext.identity.hydrationKey);\n }\n insertBefore(createContext.renderer, parent, text, replacementBefore);\n return { text, context: createContext };\n }\n }\n const text = context.renderer.createText(value);\n if (context.emitHydrationKeys) {\n setNodeHydrationKey(text, context.identity.hydrationKey);\n }\n insertBefore(context.renderer, parent, text, before);\n return { text, context };\n}\n\nfunction patchRenderedChildren(\n parent: NativeParent,\n rendered: RenderedNode[],\n children: CraftNodeChildren,\n before: NativeNode | null,\n context: RenderContext,\n): RenderedNode[] {\n const nextNodes = normalizeChildren(children);\n const sharedLength = Math.min(rendered.length, nextNodes.length);\n\n for (let index = 0; index < sharedLength; index += 1) {\n const current = rendered[index];\n const next = nextNodes[index];\n\n if (!current.patch(next)) {\n const replacement = mountNode(\n next,\n parent,\n current.firstNode(),\n childNodeContext(context, next, index),\n );\n current.destroy();\n rendered[index] = replacement;\n }\n }\n\n while (rendered.length > nextNodes.length) {\n rendered.pop()?.destroy();\n }\n\n for (let index = rendered.length; index < nextNodes.length; index += 1) {\n rendered.push(\n mountNode(\n nextNodes[index],\n parent,\n before,\n childNodeContext(context, nextNodes[index], index),\n ),\n );\n }\n\n return rendered;\n}\n\nclass TextRenderedNode implements RenderedNode {\n readonly kind = 'text';\n private node: Text;\n private value: string;\n private renderer: CraftDomAdapter;\n\n constructor(node: Text, value: string, renderer: CraftDomAdapter) {\n this.node = node;\n this.value = value;\n this.renderer = renderer;\n }\n\n firstNode(): NativeNode {\n return this.node;\n }\n\n lastNode(): NativeNode {\n return this.node;\n }\n\n patch(node: CraftNode): boolean {\n if (node.kind !== 'text') {\n return false;\n }\n\n if (node.value !== this.value) {\n this.renderer.setValue(this.node, node.value);\n this.value = node.value;\n }\n return true;\n }\n\n destroy(): void {\n removeNode(this.renderer, this.node);\n }\n}\n\nclass ReactiveTextRenderedNode implements RenderedNode {\n readonly kind = 'reactive-text';\n private binding: CraftTextBinding;\n private effectRef: EffectRef;\n private value = '';\n\n private readonly node: Text;\n private readonly context: RenderContext;\n\n constructor(node: Text, binding: CraftTextBinding, context: RenderContext) {\n this.node = node;\n this.context = context;\n this.binding = binding;\n this.effectRef = this.createEffect();\n }\n\n firstNode(): NativeNode {\n return this.node;\n }\n\n lastNode(): NativeNode {\n return this.node;\n }\n\n patch(node: CraftNode): boolean {\n if (node.kind !== 'reactive-text') {\n return false;\n }\n if (node.binding !== this.binding) {\n this.effectRef.destroy();\n this.binding = node.binding;\n this.effectRef = this.createEffect();\n }\n return true;\n }\n\n destroy(): void {\n this.effectRef.destroy();\n removeNode(this.context.renderer, this.node);\n }\n\n private createEffect(): EffectRef {\n return createRenderEffect(this.context, 'text-binding', () => {\n const resolved = executeTemplateCallback(this.binding, [], this.context);\n const next =\n resolved === null || resolved === undefined || resolved === false\n ? ''\n : String(resolved);\n if (next !== this.value) {\n this.context.renderer.setValue(this.node, next);\n this.value = next;\n }\n });\n }\n}\n\nfunction renderCraftDirectiveNode(\n node: CraftDirectiveNode<any, any, any>,\n context: RenderContext,\n): CraftNodeChildren {\n let template = (_componentContext: any): CraftNodeChildren => [node.node];\n\n for (const directive of node.directives) {\n template = directive[CRAFT_DIRECTIVE].template(template);\n }\n\n return renderChildrenCallback(\n context,\n template,\n [context.componentContext],\n 'callback',\n 'directive',\n );\n}\n\nclass CraftDirectiveRenderedNode implements RenderedNode {\n readonly kind = 'directive';\n private readonly view: FragmentRenderedNode;\n private readonly descriptor;\n private readonly effectRef: EffectRef;\n private readonly styleReleases: (() => void)[];\n private readonly registrationReleases: (() => void)[];\n\n private node: CraftDirectiveNode<any, any, any>;\n private readonly context: RenderContext;\n\n constructor(\n node: CraftDirectiveNode<any, any, any>,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n ) {\n this.node = node;\n this.context = context;\n this.descriptor = signal(node);\n const owners = node.directives.map((directive) => ({\n name: directive[CRAFT_DIRECTIVE].name,\n styles: [\n ...styleValues(directive[CRAFT_DIRECTIVE].meta.styles),\n ...styleValues(directive[CRAFT_DIRECTIVE].meta.stylesUrl),\n ],\n definition: directive[CRAFT_DIRECTIVE],\n }));\n this.styleReleases = acquireStyles(\n context,\n owners,\n context.ownerScope ?? '',\n );\n this.registrationReleases = node.directives.map((directive) =>\n ɵregisterCraftTarget(\n context.injector,\n directive,\n context.componentContext,\n allocateCraftHostName(\n context.injector,\n 'directive',\n directive[CRAFT_DIRECTIVE].name,\n ),\n false,\n ),\n );\n this.view = createFragment(parent, before, context, [], 'craft-directive');\n this.effectRef = createRenderEffect(context, 'craft-directive', () => {\n this.node = this.descriptor();\n this.view.patchChildren(renderCraftDirectiveNode(this.node, context));\n });\n }\n\n firstNode(): NativeNode {\n return this.view.firstNode();\n }\n\n lastNode(): NativeNode {\n return this.view.lastNode();\n }\n\n patch(node: CraftNode): boolean {\n if (\n node.kind !== 'directive' ||\n !sameCraftDirectives(this.node.directives, node.directives)\n ) {\n return false;\n }\n\n this.descriptor.set(node);\n return true;\n }\n\n destroy(): void {\n this.registrationReleases.forEach((release) => release());\n this.effectRef.destroy();\n this.view.destroy();\n this.styleReleases.forEach((release) => release());\n }\n}\n\nconst EVENT_NAMES = new Set([\n 'abort',\n 'blur',\n 'change',\n 'click',\n 'contextmenu',\n 'dblclick',\n 'error',\n 'focus',\n 'input',\n 'keydown',\n 'keypress',\n 'keyup',\n 'load',\n 'mousedown',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'pointerdown',\n 'pointerenter',\n 'pointerleave',\n 'pointermove',\n 'pointerup',\n 'reset',\n 'scroll',\n 'submit',\n 'touchend',\n 'touchmove',\n 'touchstart',\n]);\n\nconst PROPERTY_NAMES = new Set([\n 'checked',\n 'disabled',\n 'multiple',\n 'selected',\n 'value',\n]);\n\nfunction eventNameFor(key: string, value: unknown): string | undefined {\n if (typeof value !== 'function') {\n return undefined;\n }\n if (EVENT_NAMES.has(key)) {\n return key;\n }\n if (/^on[A-Z]/.test(key)) {\n return `${key[2].toLowerCase()}${key.slice(3)}`;\n }\n return undefined;\n}\n\nfunction interactionName(\n eventName: string,\n tag: string,\n localName: string | undefined,\n componentName: string | undefined,\n): string {\n return [componentName, tag, localName, eventName]\n .filter((part): part is string => Boolean(part))\n .join(':');\n}\n\nfunction executeDomEventHooks(\n hooks: readonly CraftDomEventHook[],\n interaction: CraftDomEvent,\n action: () => unknown,\n): unknown {\n let current = action;\n for (let index = hooks.length - 1; index >= 0; index -= 1) {\n const hook = hooks[index];\n const next = current;\n current = () => hook(interaction, next);\n }\n return current();\n}\n\nconst HOST_PROPERTY_NAMES = new Set([\n 'accessKey',\n 'autocapitalize',\n 'autofocus',\n 'class',\n 'contentEditable',\n 'dir',\n 'draggable',\n 'hidden',\n 'id',\n 'inert',\n 'lang',\n 'nonce',\n 'slot',\n 'spellcheck',\n 'style',\n 'tabIndex',\n 'title',\n 'translate',\n 'attrs',\n 'directives',\n]);\n\nfunction isHostProperty(key: string): boolean {\n return (\n key === 'cssVars' ||\n HOST_PROPERTY_NAMES.has(key) ||\n key.startsWith('data-') ||\n key.startsWith('aria-') ||\n EVENT_NAMES.has(key) ||\n (/^on[A-Z]/.test(key) &&\n EVENT_NAMES.has(`${key[2].toLowerCase()}${key.slice(3)}`))\n );\n}\n\nfunction hostPropsFromComponentProps(\n props: Readonly<Record<string, unknown>>,\n): Readonly<Record<string, unknown>> {\n const hostProps = Object.fromEntries(\n Object.entries(props).filter(\n ([key]) => key !== 'cssVars' && isHostProperty(key),\n ),\n );\n const vars = cssVarStyles(\n props['cssVars'] as\n | Readonly<Record<`--${string}`, CssVarDisposition>>\n | undefined,\n );\n return Object.keys(vars).length\n ? mergeHostProps({ style: vars }, hostProps)\n : hostProps;\n}\n\nfunction className(value: unknown, context: RenderContext): string {\n if (typeof value === 'function') {\n return className(resolveTemplateValue(value, context), context);\n }\n if (Array.isArray(value)) {\n return value\n .flatMap((item) => className(item, context))\n .filter(Boolean)\n .join(' ');\n }\n if (typeof value === 'object' && value !== null) {\n return Object.entries(value)\n .filter(([, enabled]) => enabled)\n .map(([name]) => name)\n .join(' ');\n }\n return value == null ? '' : String(value);\n}\n\nfunction containsRenderBinding(\n value: unknown,\n seen = new Set<object>(),\n): boolean {\n if (typeof value === 'function') return true;\n if (typeof value !== 'object' || value === null || seen.has(value)) {\n return false;\n }\n seen.add(value);\n return Object.values(value).some((child) =>\n containsRenderBinding(child, seen),\n );\n}\n\nfunction resolveStyleBindingValue(\n value: unknown,\n context: RenderContext,\n): unknown {\n const resolved = resolveTemplateValue(value, context);\n if (typeof resolved !== 'object' || resolved === null) return resolved;\n return Object.fromEntries(\n Object.entries(resolved).map(([key, child]) => [\n key,\n resolveTemplateValue(child, context),\n ]),\n );\n}\n\nfunction sameStyleValue(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) return true;\n if (\n typeof left !== 'object' ||\n left === null ||\n typeof right !== 'object' ||\n right === null\n ) {\n return false;\n }\n const leftEntries = Object.entries(left);\n const rightEntries = Object.entries(right);\n const rightRecord = right as Record<string, unknown>;\n return (\n leftEntries.length === rightEntries.length &&\n leftEntries.every(([key, value]) => Object.is(value, rightRecord[key]))\n );\n}\n\nfunction setStyleValue(\n _renderer: CraftDomAdapter,\n element: Element,\n key: string,\n value: unknown,\n context: RenderContext,\n): void {\n value = resolveTemplateValue(value, context);\n const style = (element as Element & { readonly style: CSSStyleDeclaration })\n .style;\n if (value === null || value === undefined || value === false) {\n if (key.startsWith('--')) {\n style.removeProperty(key);\n } else {\n (style as unknown as Record<string, unknown>)[key] = '';\n }\n } else if (key.startsWith('--')) {\n style.setProperty(key, String(value));\n } else {\n (style as unknown as Record<string, unknown>)[key] = String(value);\n }\n}\n\nfunction applyStyles(\n renderer: CraftDomAdapter,\n element: Element,\n previous: unknown,\n next: unknown,\n context: RenderContext,\n): void {\n previous = resolveTemplateValue(previous, context);\n next = resolveTemplateValue(next, context);\n if (typeof previous === 'object' && previous !== null) {\n for (const key of Object.keys(previous)) {\n if (typeof next !== 'object' || next === null || !(key in next)) {\n setStyleValue(renderer, element, key, null, context);\n }\n }\n } else if (typeof previous === 'string' && previous !== next) {\n renderer.removeAttribute(element, 'style');\n }\n\n if (typeof next === 'string') {\n renderer.setAttribute(element, 'style', next);\n } else if (typeof next === 'object' && next !== null) {\n for (const [key, value] of Object.entries(next)) {\n setStyleValue(renderer, element, key, value, context);\n }\n } else {\n renderer.removeAttribute(element, 'style');\n }\n}\n\nfunction flattenAttributes(\n props: Readonly<Record<string, unknown>>,\n): Map<string, unknown> {\n const attributes = new Map<string, unknown>();\n for (const [key, value] of Object.entries(props)) {\n if (key === 'attrs' && typeof value === 'object' && value !== null) {\n for (const [attribute, attributeValue] of Object.entries(value)) {\n attributes.set(attribute, attributeValue);\n }\n } else if (\n key !== 'class' &&\n key !== 'style' &&\n key !== 'directives' &&\n key !== 'labelledBy' &&\n key !== 'onClose' &&\n !eventNameFor(key, value)\n ) {\n attributes.set(key, value);\n }\n }\n return attributes;\n}\n\nfunction applyAttribute(\n renderer: CraftDomAdapter,\n element: Element,\n key: string,\n value: unknown,\n context: RenderContext,\n): void {\n value = resolveTemplateValue(value, context);\n if (key.startsWith('data-craft-')) {\n const dev = typeof ngDevMode === 'undefined' || ngDevMode;\n if (dev) {\n throw new Error(\n 'data-craft-* attributes are reserved for the Craft renderer.',\n );\n }\n }\n if (key === 'htmlFor') {\n renderer.setProperty(element, key, value ?? '');\n if (value === null || value === undefined || value === false) {\n renderer.removeAttribute(element, 'for');\n }\n return;\n }\n if (PROPERTY_NAMES.has(key)) {\n renderer.setProperty(element, key, value ?? false);\n if (value === null || value === undefined || value === false) {\n renderer.removeAttribute(element, key);\n }\n return;\n }\n\n if (value === null || value === undefined) {\n renderer.removeAttribute(element, key);\n } else if (key.startsWith('aria-') && typeof value === 'boolean') {\n renderer.setAttribute(element, key, value ? 'true' : 'false');\n } else if (value === false) {\n renderer.removeAttribute(element, key);\n } else {\n renderer.setAttribute(element, key, value === true ? '' : String(value));\n }\n}\n\nclass ElementRenderedNode implements RenderedNode {\n readonly kind = 'element';\n private children: RenderedNode[] = [];\n private props: Readonly<Record<string, unknown>> = {};\n private readonly listeners = new Map<string, () => void>();\n private readonly bindings = new Map<\n string,\n { readonly source: unknown; readonly effectRef: EffectRef }\n >();\n private craftNodeDirectiveTypes: readonly AppliedCraftNodeDirective[] = [];\n private craftNodeDirectiveMounts: CraftNodeDirectiveMount[] = [];\n private localName: string | undefined;\n private dialogCleanup: (() => void) | undefined;\n\n private readonly node: Element;\n private tag: string;\n private context: RenderContext;\n\n constructor(\n node: Element,\n tag: string,\n context: RenderContext,\n initial: ElementNodeBase<any, any, any, any, any, any, any, any>,\n ) {\n this.node = node;\n this.tag = tag;\n this.context = context;\n this.patchProperties(initial);\n this.installDialog(initial);\n const nested =\n this.tag === 'dialog'\n ? childContext(context, {\n rootScope: undefined,\n contentScope: undefined,\n headingLevel: 1,\n })\n : childContext(context, {\n rootScope: undefined,\n contentScope: undefined,\n });\n this.children = patchRenderedChildren(\n this.node,\n this.children,\n initial.children,\n null,\n nested,\n );\n this.reapplySelectValue(initial);\n }\n\n /**\n * A `<select>` only accepts a `value` that matches one of its `<option>`s,\n * and props are applied before children are mounted — so the initial\n * assignment lands on an empty element, is dropped, and the browser falls\n * back to the first option. The control then disagrees with the state it is\n * bound to, silently.\n *\n * Re-assert it now that the options exist. Later updates arrive through the\n * binding, by which point there is nothing to correct.\n */\n private reapplySelectValue(\n node: ElementNodeBase<any, any, any, any, any, any, any, any>,\n ): void {\n if (this.tag !== 'select') {\n return;\n }\n const value = flattenAttributes(node.props).get('value');\n if (value === null || value === undefined) {\n return;\n }\n const resolved =\n typeof value === 'function'\n ? untracked(() => resolveTemplateValue(value, this.context))\n : value;\n applyAttribute(\n this.context.renderer,\n this.node,\n 'value',\n resolved,\n this.context,\n );\n }\n\n firstNode(): NativeNode {\n return this.node;\n }\n\n lastNode(): NativeNode {\n return this.node;\n }\n\n patch(node: CraftNode): boolean {\n if (\n node.kind !== 'element' ||\n node.tag !== this.tag ||\n node.localName !== this.localName\n ) {\n return false;\n }\n\n this.patchProperties(node);\n this.installDialog(node);\n this.children = patchRenderedChildren(\n this.node,\n this.children,\n node.children,\n null,\n childContext(this.context, {\n rootScope: undefined,\n contentScope: undefined,\n }),\n );\n return true;\n }\n\n private patchProperties(\n nextNode: ElementNodeBase<any, any, any, any, any, any, any, any>,\n ): void {\n const next = nextNode.props;\n const renderer = this.context.renderer;\n const previousAttributes = flattenAttributes(this.props);\n const nextAttributes = flattenAttributes(next);\n\n for (const key of previousAttributes.keys()) {\n if (!nextAttributes.has(key)) {\n this.destroyBinding(`attribute:${key}`);\n applyAttribute(renderer, this.node, key, null, this.context);\n }\n }\n for (const [key, value] of nextAttributes) {\n if (typeof value === 'function') {\n this.updateBinding(\n `attribute:${key}`,\n value,\n () => resolveTemplateValue(value, this.context),\n (resolved) =>\n applyAttribute(renderer, this.node, key, resolved, this.context),\n );\n } else {\n this.destroyBinding(`attribute:${key}`);\n }\n if (\n typeof value !== 'function' &&\n (!Object.is(previousAttributes.get(key), value) ||\n typeof previousAttributes.get(key) === 'function')\n ) {\n applyAttribute(renderer, this.node, key, value, this.context);\n }\n }\n\n if (containsRenderBinding(next['class'])) {\n this.updateBinding(\n 'class',\n next['class'],\n () => className(next['class'], this.context),\n (value) => {\n if (value) {\n renderer.setAttribute(this.node, 'class', String(value));\n } else {\n renderer.removeAttribute(this.node, 'class');\n }\n },\n );\n } else {\n this.destroyBinding('class');\n }\n if (\n !containsRenderBinding(next['class']) &&\n (!Object.is(this.props['class'], next['class']) ||\n containsRenderBinding(this.props['class']))\n ) {\n const value = className(next['class'], this.context);\n if (value) {\n renderer.setAttribute(this.node, 'class', value);\n } else {\n renderer.removeAttribute(this.node, 'class');\n }\n }\n\n if (containsRenderBinding(next['style'])) {\n this.updateBinding(\n 'style',\n next['style'],\n () => resolveStyleBindingValue(next['style'], this.context),\n (value) => {\n renderer.removeAttribute(this.node, 'style');\n applyStyles(renderer, this.node, undefined, value, this.context);\n },\n sameStyleValue,\n );\n } else {\n this.destroyBinding('style');\n }\n if (\n !containsRenderBinding(next['style']) &&\n (!Object.is(this.props['style'], next['style']) ||\n containsRenderBinding(this.props['style']))\n ) {\n if (containsRenderBinding(this.props['style'])) {\n renderer.removeAttribute(this.node, 'style');\n }\n applyStyles(\n renderer,\n this.node,\n containsRenderBinding(this.props['style'])\n ? undefined\n : this.props['style'],\n next['style'],\n this.context,\n );\n }\n\n const nextEvents = new Map<string, EventListener>();\n for (const [key, value] of Object.entries(next)) {\n const eventName = eventNameFor(key, value);\n if (eventName) {\n nextEvents.set(eventName, value as EventListener);\n }\n }\n\n for (const [eventName, dispose] of this.listeners) {\n if (!nextEvents.has(eventName)) {\n dispose();\n this.listeners.delete(eventName);\n }\n }\n\n for (const [eventName] of nextEvents) {\n if (!this.listeners.has(eventName)) {\n this.listeners.set(\n eventName,\n renderer.listen(this.node, eventName, (event: Event) => {\n const listener = Object.entries(this.props).find(\n ([key, value]) => eventNameFor(key, value) === eventName,\n )?.[1] as EventListener | undefined;\n if (!listener) {\n return undefined;\n }\n const interaction: CraftDomEvent = {\n event,\n eventName,\n element: this.node,\n elementTag: this.tag,\n elementName: this.localName,\n componentName: this.context.componentName,\n interactionName: interactionName(\n eventName,\n this.tag,\n this.localName,\n this.context.componentName,\n ),\n };\n const hooks = this.context.injector.get(CRAFT_DOM_EVENT_HOOK);\n runInInjectionContext(this.context.injector, () =>\n executeDomEventHooks(hooks, interaction, () =>\n executeTemplateCallback(listener, [event], this.context),\n ),\n );\n return undefined;\n }),\n );\n }\n }\n\n const craftNodeDirectives = nextNode[CRAFT_NODE_DIRECTIVES] ?? [];\n if (\n !sameCraftNodeDirectives(\n this.craftNodeDirectiveTypes,\n craftNodeDirectives,\n )\n ) {\n this.craftNodeDirectiveMounts.forEach((mount) => mount.destroy());\n this.craftNodeDirectiveMounts = craftNodeDirectives.map(\n (descriptor) =>\n new CraftNodeDirectiveMount(descriptor, this.node, this.context),\n );\n } else {\n this.craftNodeDirectiveMounts.forEach((mount, index) =>\n mount.update(craftNodeDirectives[index]!),\n );\n }\n this.craftNodeDirectiveTypes = craftNodeDirectives;\n\n if (this.localName !== nextNode.localName) {\n if (nextNode.localName === undefined) {\n renderer.removeAttribute(this.node, 'data-craft-name');\n } else {\n renderer.setAttribute(this.node, 'data-craft-name', nextNode.localName);\n }\n this.localName = nextNode.localName;\n }\n\n const contentNames = directCraftContentNames(nextNode.children);\n if (contentNames.length > 0) {\n (\n this.node as Element & {\n [CRAFT_LOCATOR_CONTENT_NAMES]?: readonly string[];\n }\n )[CRAFT_LOCATOR_CONTENT_NAMES] = contentNames;\n } else {\n delete (\n this.node as Element & {\n [CRAFT_LOCATOR_CONTENT_NAMES]?: readonly string[];\n }\n )[CRAFT_LOCATOR_CONTENT_NAMES];\n }\n\n this.props = next;\n }\n\n private updateBinding(\n key: string,\n source: unknown,\n evaluate: () => unknown,\n apply: (value: unknown) => void,\n equals: (left: unknown, right: unknown) => boolean = Object.is,\n ): void {\n const current = this.bindings.get(key);\n if (current?.source === source) return;\n current?.effectRef.destroy();\n\n let initialized = false;\n let previous: unknown;\n const effectRef = createRenderEffect(\n this.context,\n `element-${key}-binding`,\n () => {\n const value = evaluate();\n if (!initialized || !equals(previous, value)) {\n apply(value);\n previous = value;\n initialized = true;\n }\n },\n );\n this.bindings.set(key, { source, effectRef });\n }\n\n private destroyBinding(key: string): void {\n this.bindings.get(key)?.effectRef.destroy();\n this.bindings.delete(key);\n }\n\n private installDialog(\n nextNode: ElementNodeBase<any, any, any, any, any, any, any, any>,\n ): void {\n if (this.tag !== 'dialog') return;\n const dialog = this.node as HTMLDialogElement;\n const renderer = this.context.renderer;\n if (!dialog.getAttribute('role')) {\n renderer.setAttribute(dialog, 'role', 'dialog');\n }\n if (!dialog.getAttribute('aria-modal')) {\n renderer.setAttribute(dialog, 'aria-modal', 'true');\n }\n const labelledBy = nextNode.props['labelledBy'];\n const label = nextNode.props['label'] ?? nextNode.props['aria-label'];\n if (typeof labelledBy === 'string' && labelledBy) {\n renderer.setAttribute(dialog, 'aria-labelledby', labelledBy);\n } else if (typeof label === 'string' && label) {\n renderer.setAttribute(dialog, 'aria-label', label);\n }\n const onClose = nextNode.props['onClose'];\n this.dialogCleanup?.();\n const cancel = renderer.listen(dialog, 'cancel', (event: Event) => {\n event.preventDefault();\n if (typeof onClose === 'function') onClose(event);\n if (typeof dialog.close === 'function') dialog.close();\n });\n const close = renderer.listen(dialog, 'close', (event: Event) => {\n if (typeof onClose === 'function') onClose(event);\n });\n this.dialogCleanup = () => {\n cancel();\n close();\n };\n const open = nextNode.props['open'];\n if (open && typeof dialog.showModal === 'function' && !dialog.open) {\n dialog.showModal();\n } else if (\n open === false &&\n typeof dialog.close === 'function' &&\n dialog.open\n ) {\n dialog.close();\n }\n }\n\n destroy(): void {\n this.dialogCleanup?.();\n this.bindings.forEach(({ effectRef }) => effectRef.destroy());\n this.bindings.clear();\n this.listeners.forEach((dispose) => dispose());\n this.listeners.clear();\n this.craftNodeDirectiveMounts.forEach((mount) => mount.destroy());\n this.craftNodeDirectiveMounts = [];\n this.children.forEach((child) => child.destroy());\n removeNode(this.context.renderer, this.node);\n }\n}\n\nclass FragmentRenderedNode implements RenderedNode {\n readonly kind = 'fragment';\n private children: RenderedNode[] = [];\n\n /**\n * Where this fragment currently lives. A boundary can detach a range into a\n * holder fragment to hide it without destroying it, and the range keeps being\n * reconciled while detached — so every insertion has to follow the markers\n * rather than the parent captured at construction time.\n */\n private get liveParent(): NativeParent {\n return this.start.parentNode ?? this.parent;\n }\n\n private readonly parent: NativeParent;\n private readonly start: Comment;\n private readonly end: Comment;\n private context: RenderContext;\n\n constructor(\n parent: NativeParent,\n start: Comment,\n end: Comment,\n context: RenderContext,\n initialChildren: CraftNodeChildren,\n ) {\n this.parent = parent;\n this.start = start;\n this.end = end;\n this.context = context;\n this.children = patchRenderedChildren(\n parent,\n this.children,\n initialChildren,\n end,\n context,\n );\n }\n\n firstNode(): NativeNode {\n return this.start;\n }\n\n lastNode(): NativeNode {\n return this.end;\n }\n\n patch(_node: CraftNode): boolean {\n return false;\n }\n\n patchChildren(children: CraftNodeChildren): void {\n this.children = patchRenderedChildren(\n this.liveParent,\n this.children,\n children,\n this.end,\n this.context,\n );\n }\n\n hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n appendChildren(children: CraftNodeChildren): void {\n const nextNodes = normalizeChildren(children);\n nextNodes.forEach((child) => {\n this.children.push(\n mountNode(child, this.liveParent, this.end, this.context),\n );\n });\n }\n\n prependChildren(children: CraftNodeChildren): void {\n const nextNodes = normalizeChildren(children);\n const before = this.children[0]?.firstNode() ?? this.end;\n const mounted: RenderedNode[] = [];\n for (let index = nextNodes.length - 1; index >= 0; index -= 1) {\n mounted.unshift(\n mountNode(nextNodes[index], this.liveParent, before, this.context),\n );\n }\n this.children.unshift(...mounted);\n }\n\n updateContext(context: RenderContext): void {\n this.context = context;\n }\n\n moveBefore(before: NativeNode): void {\n let current: NativeNode | null = this.start;\n const nodes: NativeNode[] = [];\n while (current) {\n nodes.push(current);\n if (current === this.end) {\n break;\n }\n current = current.nextSibling;\n }\n nodes.forEach((node) =>\n insertBefore(this.context.renderer, this.liveParent, node, before),\n );\n }\n\n destroy(): void {\n this.children.forEach((child) => child.destroy());\n removeNode(this.context.renderer, this.start);\n removeNode(this.context.renderer, this.end);\n }\n}\n\nclass ProjectionRenderedNode implements RenderedNode {\n readonly kind = 'projection';\n private readonly view: FragmentRenderedNode;\n private readonly styleRelease: () => void;\n private node: ProjectionNode;\n private readonly declarationContext: RenderContext;\n private readonly projectionContext: RenderContext;\n private readonly descriptor;\n private readonly effectRef: EffectRef;\n\n constructor(\n node: ProjectionNode,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n ) {\n this.node = node;\n this.descriptor = signal(node);\n this.declarationContext =\n (node.declarationContext as RenderContext | undefined) ??\n lexicalContext(context);\n const contentStyle = acquireContentStyle(\n context,\n node.slotName,\n node.stylePolicy,\n );\n this.styleRelease = contentStyle.release;\n this.projectionContext = childContext(this.declarationContext, {\n contentScope: contentStyle.scope,\n });\n this.view = createFragment(\n parent,\n before,\n this.projectionContext,\n [],\n 'craft-projection',\n );\n this.effectRef = createRenderEffect(\n this.projectionContext,\n 'projection',\n () => {\n this.node = this.descriptor();\n this.view.patchChildren(this.children());\n },\n );\n }\n\n firstNode(): NativeNode {\n return this.view.firstNode();\n }\n\n lastNode(): NativeNode {\n return this.view.lastNode();\n }\n\n patch(node: CraftNode): boolean {\n if (\n node.kind !== 'projection' ||\n node.declarationContext !== this.node.declarationContext\n ) {\n return false;\n }\n this.descriptor.set(node);\n return true;\n }\n\n private children(): CraftNodeChildren {\n return executeTemplateTrace(\n this.projectionContext.injector,\n traceContext(\n this.projectionContext,\n 'projection',\n tracePhase(this.projectionContext),\n this.node.slotName,\n ),\n () =>\n runInInjectionContext(this.declarationContext.injector, () =>\n withCraftRenderContext(\n this.declarationContext,\n () =>\n resolveProjectionValue(\n this.node.render(),\n this.projectionContext,\n ) as CraftNodeChildren,\n ),\n ),\n );\n }\n\n destroy(): void {\n this.effectRef.destroy();\n this.view.destroy();\n this.styleRelease();\n }\n}\n\nclass TemplateRenderedNode implements RenderedNode {\n readonly kind = 'template';\n private readonly view: FragmentRenderedNode;\n private node: TemplateNode;\n private readonly declarationContext: RenderContext;\n private readonly descriptor;\n private readonly effectRef: EffectRef;\n\n constructor(\n node: TemplateNode,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n ) {\n this.node = node;\n this.descriptor = signal(node);\n this.declarationContext =\n (node.declarationContext as RenderContext | undefined) ??\n lexicalContext(context);\n this.view = createFragment(\n parent,\n before,\n this.declarationContext,\n [],\n 'craft-template',\n );\n this.effectRef = createRenderEffect(\n this.declarationContext,\n 'template',\n () => {\n this.node = this.descriptor();\n this.view.patchChildren(this.children());\n },\n );\n }\n\n firstNode(): NativeNode {\n return this.view.firstNode();\n }\n\n lastNode(): NativeNode {\n return this.view.lastNode();\n }\n\n patch(node: CraftNode): boolean {\n if (node.kind !== 'template' || node.template !== this.node.template) {\n return false;\n }\n this.descriptor.set(node);\n return true;\n }\n\n private children(): CraftNodeChildren {\n return renderChildrenCallback(this.declarationContext, this.node.template, [\n resolveTemplateContext(this.node.context, this.declarationContext),\n ]);\n }\n\n destroy(): void {\n this.effectRef.destroy();\n this.view.destroy();\n }\n}\n\nfunction createFragment(\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n children: CraftNodeChildren,\n label: string,\n): FragmentRenderedNode {\n const start = mountComment(parent, `${label}:start`, before, context);\n const end = mountComment(parent, `${label}:end`, before, context);\n return new FragmentRenderedNode(parent, start, end, context, children);\n}\n\ninterface EachRenderedEntry {\n readonly key: unknown;\n item: unknown;\n index: number;\n readonly view: FragmentRenderedNode;\n readonly traceState: TemplateTraceState;\n renderEffect?: EffectRef;\n rendered: boolean;\n}\n\nclass EachRenderedNode implements RenderedNode {\n readonly kind = 'each';\n private entries = new Map<unknown, EachRenderedEntry>();\n private ordered: FragmentRenderedNode[] = [];\n private emptyView: FragmentRenderedNode | undefined;\n private readonly descriptor;\n private readonly effectRef: EffectRef;\n\n private node: EachNode<unknown, unknown>;\n private readonly parent: NativeParent;\n private readonly start: Comment;\n private readonly end: Comment;\n private readonly context: RenderContext;\n private scheduler: EachScheduler & { destroy?(): void };\n private ownsScheduler = false;\n private schedulePolicy: EachSchedulePolicy | undefined;\n private schedulerConfigured = false;\n private readonly pendingTasks = new Set<CancelHandle>();\n private reconcileVersion = 0;\n\n constructor(\n node: EachNode<unknown, unknown>,\n parent: NativeParent,\n start: Comment,\n end: Comment,\n context: RenderContext,\n ) {\n this.node = node;\n this.parent = parent;\n this.start = start;\n this.end = end;\n this.context = context;\n this.scheduler = createEachScheduler({\n enabled: false,\n strategy: 'sync',\n frameBudgetMs: 4,\n });\n this.configureScheduler(node.schedule);\n this.descriptor = signal(node);\n this.effectRef = createRenderEffect(context, 'each-block', () => {\n const previousItemTemplate = this.node.itemTemplate;\n this.node = this.descriptor();\n this.configureScheduler(this.node.schedule);\n this.reconcile(this.node.itemTemplate !== previousItemTemplate);\n });\n }\n\n firstNode(): NativeNode {\n return this.start;\n }\n\n lastNode(): NativeNode {\n return this.end;\n }\n\n patch(node: CraftNode): boolean {\n if (node.kind !== 'each') {\n return false;\n }\n this.descriptor.set(node);\n return true;\n }\n\n private reconcile(itemTemplateChanged = false): void {\n const items = resolveTemplateValue(this.node.source, this.context) as\n | readonly unknown[]\n | null\n | undefined;\n const collection = items ?? [];\n\n const keys = collection.map((item, index) => this.node.track(item, index));\n const seenKeys = new Set<unknown>();\n keys.forEach((key) => {\n if (seenKeys.has(key)) {\n throw new Error(`each() received the duplicate key \"${String(key)}\".`);\n }\n seenKeys.add(key);\n });\n\n this.reconcileVersion += 1;\n this.cancelPendingTasks();\n\n if (collection.length === 0) {\n this.entries.forEach((entry) => {\n entry.renderEffect?.destroy();\n entry.view.destroy();\n });\n this.entries.clear();\n this.ordered = [];\n\n if (this.node.empty) {\n const emptyContext = childContext(this.context, {\n identity: childCraftRenderIdentity(this.context.identity, 'empty'),\n });\n if (this.emptyView) {\n this.emptyView.patchChildren(\n renderBlockChildren(emptyContext, 'empty', this.node.empty),\n );\n } else {\n this.emptyView = createFragment(\n this.parent,\n this.end,\n emptyContext,\n renderBlockChildren(emptyContext, 'empty', this.node.empty),\n 'craft-empty',\n );\n }\n } else {\n this.emptyView?.destroy();\n this.emptyView = undefined;\n }\n return;\n }\n\n this.emptyView?.destroy();\n this.emptyView = undefined;\n\n const previous = this.entries;\n const next = new Map<unknown, EachRenderedEntry>();\n const nextOrdered: FragmentRenderedNode[] = [];\n\n const entriesToRender: EachRenderedEntry[] = [];\n collection.forEach((item, index) => {\n const key = keys[index];\n let entry = previous.get(key);\n if (entry) {\n if (\n itemTemplateChanged ||\n !Object.is(entry.item, item) ||\n entry.index !== index ||\n !entry.rendered\n ) {\n entry.item = item;\n entry.index = index;\n entriesToRender.push(entry);\n }\n } else {\n const traceState = { renderCount: 0 };\n const entryContext = childContext(this.context, {\n identity: childCraftRenderIdentity(\n this.context.identity,\n `item:${String(key)}`,\n ),\n });\n entry = {\n key,\n item,\n index,\n traceState,\n rendered: false,\n view: createFragment(\n this.parent,\n this.end,\n entryContext,\n [],\n `craft-each:${String(key)}`,\n ),\n };\n entriesToRender.push(entry);\n }\n\n next.set(key, entry);\n nextOrdered.push(entry.view);\n });\n\n previous.forEach((entry, key) => {\n if (!next.has(key)) {\n entry.renderEffect?.destroy();\n entry.view.destroy();\n }\n });\n\n let before: NativeNode = this.end;\n for (let index = nextOrdered.length - 1; index >= 0; index -= 1) {\n const entry = nextOrdered[index];\n if (entry.lastNode().nextSibling !== before) {\n entry.moveBefore(before);\n }\n before = entry.firstNode();\n }\n\n this.entries = next;\n this.ordered = nextOrdered;\n\n entriesToRender.forEach((entry) => this.scheduleEntryRender(entry));\n }\n\n private configureScheduler(policy: EachSchedulePolicy | undefined): void {\n if (this.schedulerConfigured && this.schedulePolicy === policy) return;\n\n if (this.ownsScheduler) this.scheduler.destroy?.();\n this.schedulePolicy = policy;\n this.schedulerConfigured = true;\n this.cancelPendingTasks();\n\n const injected = this.context.injector.get(EACH_SCHEDULER, null);\n if (injected) {\n this.scheduler = injected;\n this.ownsScheduler = false;\n return;\n }\n\n this.scheduler = createEachScheduler(\n policy ?? { enabled: false, strategy: 'sync', frameBudgetMs: 4 },\n );\n this.ownsScheduler = true;\n }\n\n private scheduleEntryRender(entry: EachRenderedEntry): void {\n const version = this.reconcileVersion;\n const scheduled = {\n completed: false,\n handle: undefined as CancelHandle | undefined,\n };\n const handle = this.scheduler.schedule(() => {\n scheduled.completed = true;\n if (scheduled.handle) this.pendingTasks.delete(scheduled.handle);\n if (version !== this.reconcileVersion || !this.entries.has(entry.key)) {\n return;\n }\n entry.renderEffect?.destroy();\n entry.renderEffect = createRenderEffect(this.context, 'each-item', () =>\n entry.view.patchChildren(\n this.renderItem(entry.traceState, entry.item, entry.index, entry.key),\n ),\n );\n entry.rendered = true;\n });\n scheduled.handle = handle;\n if (!scheduled.completed) this.pendingTasks.add(handle);\n }\n\n private cancelPendingTasks(): void {\n this.pendingTasks.forEach((handle) => handle.cancel());\n this.pendingTasks.clear();\n }\n\n private renderItem(\n traceState: TemplateTraceState,\n item: unknown,\n index: number,\n key: unknown,\n ): CraftNodeChildren {\n traceState.renderCount += 1;\n return renderBlockChildren(\n childContext(this.context, {\n traceState,\n identity: childCraftRenderIdentity(\n this.context.identity,\n `item:${String(key)}`,\n ),\n }),\n 'each',\n this.node.itemTemplate,\n [\n function* () {\n return item;\n },\n index,\n ],\n );\n }\n\n destroy(): void {\n this.effectRef.destroy();\n this.reconcileVersion += 1;\n this.cancelPendingTasks();\n if (this.ownsScheduler) this.scheduler.destroy?.();\n this.entries.forEach((entry) => {\n entry.renderEffect?.destroy();\n entry.view.destroy();\n });\n this.emptyView?.destroy();\n removeNode(this.context.renderer, this.start);\n removeNode(this.context.renderer, this.end);\n }\n}\n\nclass IfBlockRenderedNode implements RenderedNode {\n readonly kind = 'if';\n private readonly view: FragmentRenderedNode;\n private active: boolean | undefined;\n private readonly descriptor;\n private readonly effectRef: EffectRef;\n\n private node: IfBlockNode;\n private readonly context: RenderContext;\n\n constructor(\n node: IfBlockNode,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n ) {\n this.node = node;\n this.context = context;\n this.descriptor = signal(node);\n this.view = createFragment(\n parent,\n before,\n context,\n [],\n `craft-if:${node.conditionName}`,\n );\n this.effectRef = createRenderEffect(context, 'if-block', () => {\n this.node = this.descriptor();\n this.active = this.isTrue();\n this.view.patchChildren(this.children());\n });\n }\n\n firstNode(): NativeNode {\n return this.view.firstNode();\n }\n\n lastNode(): NativeNode {\n return this.view.lastNode();\n }\n\n patch(node: CraftNode): boolean {\n if (node.kind !== 'if' || node.conditionName !== this.node.conditionName) {\n return false;\n }\n this.descriptor.set(node);\n return true;\n }\n\n private isTrue(): boolean {\n return Boolean(resolveTemplateValue(this.node.condition, this.context));\n }\n\n private children(): CraftNodeChildren {\n return this.active\n ? renderBlockChildren(\n this.context,\n this.node.conditionName,\n this.node.whenTrue,\n )\n : this.node.whenFalse\n ? renderBlockChildren(\n this.context,\n this.node.conditionName,\n this.node.whenFalse,\n )\n : [];\n }\n\n destroy(): void {\n this.effectRef.destroy();\n this.view.destroy();\n }\n}\n\nclass MatchBlockRenderedNode implements RenderedNode {\n readonly kind = 'match-block';\n private readonly view: FragmentRenderedNode;\n private handledExceptionCode: string | undefined;\n private readonly descriptor;\n private readonly effectRef: EffectRef;\n\n private node: MatchBlockNode;\n private readonly context: RenderContext;\n\n constructor(\n node: MatchBlockNode,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n ) {\n this.node = node;\n this.context = context;\n this.descriptor = signal(node);\n this.view = createFragment(\n parent,\n before,\n context,\n [],\n 'craft-match-block',\n );\n this.effectRef = createRenderEffect(context, 'match-block', () => {\n this.node = this.descriptor();\n this.view.patchChildren(this.children());\n });\n }\n\n firstNode(): NativeNode {\n return this.view.firstNode();\n }\n\n lastNode(): NativeNode {\n return this.view.lastNode();\n }\n\n patch(node: CraftNode): boolean {\n if (node.kind !== 'match-block' || node.key !== this.node.key) {\n return false;\n }\n this.descriptor.set(node);\n return true;\n }\n\n private children(): CraftNodeChildren {\n if (this.handledExceptionCode) {\n this.context.handledResourceExceptionCodes?.delete(\n this.handledExceptionCode,\n );\n this.handledExceptionCode = undefined;\n }\n const exception = resolveTemplateValue(this.node.source, this.context) as\n | AnyCraftException\n | undefined;\n if (!exception) return [];\n const code = (exception as Record<PropertyKey, unknown>)[this.node.key];\n // Resource exception buckets use an empty object when no exception is\n // present. Do not turn that implementation detail into an exception with\n // an `undefined` discriminator during a later component rerender.\n if (code === undefined || code === null) return [];\n const handler = this.node.handlers[String(code)];\n if (!handler) {\n throw new CraftUnhandledExceptionError(exception as AnyCraftException);\n }\n this.handledExceptionCode = String(code);\n this.context.handledResourceExceptionCodes?.add(this.handledExceptionCode);\n return executeTemplateTrace(\n this.context.injector,\n traceContext(\n this.context,\n 'block',\n tracePhase(this.context),\n String(this.node.key),\n ),\n () => handler(exception as AnyCraftException),\n );\n }\n\n destroy(): void {\n this.effectRef.destroy();\n if (this.handledExceptionCode) {\n this.context.handledResourceExceptionCodes?.delete(\n this.handledExceptionCode,\n );\n }\n this.view.destroy();\n }\n}\n\n/**\n * Detaches a mounted DOM range into a holder fragment, keeping every node (and\n * therefore every binding) alive. Both boundaries hide their subtree this way:\n * destroying it would take with it the bindings that report recovery.\n *\n * The nodes go into a real `DocumentFragment` rather than a plain array so that\n * a NESTED boundary can still insert relative to its own markers while an outer\n * boundary holds them detached — the markers keep a parent to insert into.\n */\nfunction detachRange(\n renderer: CraftDomAdapter,\n first: NativeNode,\n last: NativeNode,\n): DocumentFragment {\n const holder = renderer.createFragment();\n let current: NativeNode | null = first;\n const nodes: NativeNode[] = [];\n while (current) {\n nodes.push(current);\n if (current === last) break;\n current = current.nextSibling;\n }\n nodes.forEach((node) => {\n removeNode(renderer, node);\n renderer.appendChild(holder, node);\n });\n return holder;\n}\n\n/** Re-inserts a detached range before `anchor`, in whatever parent it now has. */\nfunction reattachRange(\n renderer: CraftDomAdapter,\n holder: DocumentFragment,\n anchor: NativeNode,\n fallbackParent: NativeParent,\n): void {\n const parent = anchor.parentNode ?? fallbackParent;\n while (holder.firstChild) {\n const node = holder.firstChild;\n removeNode(renderer, node);\n insertBefore(renderer, parent, node, anchor);\n }\n}\n\n/** Stands in for reporters that do not identify themselves (component renders). */\nconst ANONYMOUS_EXCEPTION_REPORTER: object = {};\n\nclass CatchBlockRenderedNode implements RenderedNode {\n readonly kind = 'catch-block';\n private readonly start: Comment;\n private readonly end: Comment;\n private readonly sourceView: FragmentRenderedNode;\n private readonly fallbackView: FragmentRenderedNode;\n private handling = false;\n private fallbackVisible = false;\n private fallbackPosition: CatchBlockPosition;\n private detached: DocumentFragment | undefined;\n /** Reporters still failing. The fallback stays up until this empties. */\n private readonly failing = new Set<object>();\n\n private node: CatchBlockNode<any, any, any, any, any>;\n private readonly parent: NativeParent;\n private readonly context: RenderContext;\n\n constructor(\n node: CatchBlockNode<any, any, any, any, any>,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n ) {\n this.node = node;\n this.parent = parent;\n this.context = context;\n this.fallbackPosition = node.position;\n this.start = mountComment(\n parent,\n 'craft-catch-block:start',\n before,\n context,\n );\n this.end = mountComment(parent, 'craft-catch-block:end', before, context);\n\n // The fallback renders in the OUTER context: an exception thrown by a\n // fallback belongs to the next boundary up, never to this one.\n const createFallback = () =>\n createFragment(\n parent,\n this.end,\n this.context,\n [],\n 'craft-catch-fallback',\n );\n const createSource = () =>\n createFragment(\n parent,\n this.end,\n this.boundaryContext(),\n [],\n 'craft-catch-source',\n );\n\n if (this.fallbackPosition === 'before') {\n this.fallbackView = createFallback();\n this.sourceView = createSource();\n } else {\n this.sourceView = createSource();\n this.fallbackView = createFallback();\n }\n\n try {\n this.sourceView.patchChildren([this.node.source]);\n } catch (error) {\n if (!isCraftGenShortCircuit(error)) throw error;\n this.handle(error.exception);\n }\n }\n\n firstNode(): NativeNode {\n return this.start;\n }\n\n lastNode(): NativeNode {\n return this.end;\n }\n\n patch(node: CraftNode): boolean {\n if (node.kind !== 'catch-block' || node.position !== this.node.position) {\n return false;\n }\n this.node = node;\n try {\n this.sourceView.patchChildren([node.source]);\n if (this.detached) {\n // A re-render re-materialises the source range: hide it again.\n this.detached = undefined;\n this.hideSource();\n }\n } catch (error) {\n if (!isCraftGenShortCircuit(error)) throw error;\n this.handle(error.exception);\n }\n return true;\n }\n\n private boundaryContext(): RenderContext {\n return childContext(this.context, {\n exceptionBoundary: (exception, token) => this.handle(exception, token),\n exceptionBoundaryResolved: (token) => this.resolved(token),\n });\n }\n\n private handle(exception: AnyCraftException, token?: object): boolean {\n if (this.handling) {\n return (\n this.context.exceptionBoundary?.(exception, token) ??\n this.unhandled(exception)\n );\n }\n\n const handler = this.node.handlers[exception._tag];\n if (!handler) {\n return (\n this.context.exceptionBoundary?.(exception, token) ??\n this.unhandled(exception)\n );\n }\n\n this.failing.add(token ?? ANONYMOUS_EXCEPTION_REPORTER);\n this.handling = true;\n this.fallbackVisible = true;\n try {\n const resolved = resolveCatchBlockHandler(\n handler,\n exception,\n true,\n this.node.position,\n );\n this.applyPosition(resolved.position);\n this.fallbackView.patchChildren(\n hasLiveRegion(resolved.children)\n ? resolved.children\n : a11yElement('div', { role: 'alert' }, resolved.children),\n );\n if (resolved.showSource) {\n this.restoreSource();\n } else {\n this.hideSource();\n }\n } finally {\n this.handling = false;\n }\n return true;\n }\n\n private resolved(token?: object): void {\n this.failing.delete(token ?? ANONYMOUS_EXCEPTION_REPORTER);\n if (this.handling || !this.fallbackVisible || this.failing.size > 0) return;\n this.fallbackVisible = false;\n this.applyPosition(this.node.position);\n this.fallbackView.patchChildren([]);\n this.restoreSource();\n }\n\n private applyPosition(position: CatchBlockPosition): void {\n if (position === this.fallbackPosition) return;\n this.fallbackPosition = position;\n this.fallbackView.moveBefore(\n position === 'before' ? this.sourceFirstNode() : this.end,\n );\n }\n\n private sourceFirstNode(): NativeNode {\n return this.detached ? this.end : this.sourceView.firstNode();\n }\n\n /**\n * A hidden source is detached from the DOM but stays mounted. Destroying it\n * would take its bindings with it — and those bindings are the only channel\n * that reports the exception is gone, so the fallback could never be removed.\n */\n private hideSource(): void {\n if (this.detached) return;\n this.detached = detachRange(\n this.context.renderer,\n this.sourceView.firstNode(),\n this.sourceView.lastNode(),\n );\n }\n\n private restoreSource(): void {\n if (!this.detached) return;\n\n const anchor =\n this.fallbackPosition === 'before'\n ? this.end\n : this.fallbackView.firstNode();\n reattachRange(this.context.renderer, this.detached, anchor, this.parent);\n this.detached = undefined;\n }\n\n private unhandled(exception: AnyCraftException): never {\n throw new CraftUnhandledExceptionError(exception);\n }\n\n destroy(): void {\n this.restoreSource();\n this.fallbackView.destroy();\n this.sourceView.destroy();\n removeNode(this.context.renderer, this.start);\n removeNode(this.context.renderer, this.end);\n }\n}\n\ntype RegisteredFieldExceptionSource = {\n readonly source: CraftFieldExceptionSource;\n readonly element?: Element;\n readonly messageIds: Map<string, string>;\n};\n\ntype FieldExceptionAccessibilityState = {\n readonly originalAriaInvalid: string | null;\n readonly originalAriaDescribedBy: string | null;\n readonly registrations: Set<number>;\n readonly messagesByBoundary: Map<number, readonly string[]>;\n};\n\nconst fieldExceptionAccessibility = new WeakMap<\n Element,\n FieldExceptionAccessibilityState\n>();\n\nlet nextFieldExceptionBoundaryId = 0;\n\nfunction componentFieldExceptionSources(\n value: unknown,\n seen = new WeakSet<object>(),\n depth = 0,\n): readonly CraftFieldExceptionSource[] {\n if (\n (typeof value !== 'object' || value === null) &&\n typeof value !== 'function'\n ) {\n return [];\n }\n const objectValue = value as object;\n if (seen.has(objectValue)) return [];\n seen.add(objectValue);\n\n const source = (\n value as Partial<Record<typeof CRAFT_FIELD_EXCEPTION_SOURCE, unknown>>\n )[CRAFT_FIELD_EXCEPTION_SOURCE];\n if (source) {\n return [rawReactiveFacade(source as CraftFieldExceptionSource)];\n }\n const sources: CraftFieldExceptionSource[] = [];\n if (depth >= 4) return sources;\n\n for (const key of Object.keys(value)) {\n sources.push(\n ...componentFieldExceptionSources(\n (value as Record<string, unknown>)[key],\n seen,\n depth + 1,\n ),\n );\n }\n return sources;\n}\n\nfunction fieldExceptionHandler(\n handlers: FieldExceptionHandlers,\n path: string,\n code: string,\n): FieldExceptionHandler | undefined {\n const grouped = handlers[path];\n if (typeof grouped === 'object' && grouped !== null) {\n return grouped[code];\n }\n const local = handlers[code];\n return typeof local === 'function' ? local : undefined;\n}\n\nfunction fieldExceptionValidatorName(\n source: CraftFieldExceptionSource,\n exception: AnyCraftException,\n): string {\n const branded = (exception as { readonly __brand?: unknown }).__brand;\n if (typeof branded === 'string') return branded;\n const byValidator = source.exceptions().byValidator;\n return (\n Object.entries(byValidator).find(([, value]) => value === exception)?.[0] ??\n 'unknown'\n );\n}\n\nfunction fieldExceptionMessageNode(\n id: string,\n children: CraftNodeChildren,\n): ElementNodeBase {\n return {\n kind: 'element',\n tag: 'div',\n props: {\n id,\n role: 'alert',\n 'data-field-exception': '',\n },\n children,\n };\n}\n\nfunction a11yElement(\n tag: string,\n props: Readonly<Record<string, unknown>>,\n children: CraftNodeChildren = [],\n): ElementNodeBase {\n return { kind: 'element', tag, props, children };\n}\n\nfunction firstElementChild(\n value: CraftNodeChildren,\n): ElementNodeBase | undefined {\n const list = Array.isArray(value) ? value : [value];\n for (const child of list) {\n if (\n child &&\n typeof child === 'object' &&\n 'kind' in child &&\n child.kind === 'element'\n ) {\n return child as ElementNodeBase;\n }\n }\n return undefined;\n}\n\nfunction hasLiveRegion(children: CraftNodeChildren): boolean {\n const element = firstElementChild(children);\n if (!element) return false;\n const role = element.props['role'];\n const live = element.props['aria-live'];\n return (\n role === 'alert' ||\n role === 'status' ||\n live === 'polite' ||\n live === 'assertive'\n );\n}\n\n/**\n * The `pendingBlock` boundary.\n *\n * Layout is fixed at construction — a fallback fragment and a source fragment,\n * ordered by `position` — so showing or hiding the fallback never reconciles\n * the source subtree.\n *\n * While at least one descendant binding holds a pending token, the fallback is\n * rendered and the source's DOM range is detached (its nodes are kept, not\n * destroyed). Keeping the subtree alive is what makes resumption work at all:\n * the suspended bindings stay subscribed to their source's `status`, so they\n * re-run — and release their token — the moment the data arrives.\n */\nclass PendingBlockRenderedNode implements RenderedNode {\n readonly kind = 'pending-block';\n private readonly start: Comment;\n private readonly end: Comment;\n private readonly sourceView: FragmentRenderedNode;\n private readonly fallbackView: FragmentRenderedNode;\n private readonly position: PendingBlockPosition;\n /** Held tokens, by the binding that suspended, in suspension order. */\n private readonly held = new Map<object, string>();\n /** Sources seen below this boundary, by name — the reload watch reads them. */\n private readonly watched = new Map<string, CraftSettledReadNotice>();\n private reloadWatch: EffectRef | undefined;\n private reloadingSource: string | undefined;\n private detached: DocumentFragment | undefined;\n /** Depth of an in-flight render into the source range. */\n private rendering = 0;\n /** A fallback render asked for while the source range was mid-render. */\n private renderDeferred = false;\n\n private node: PendingBlockNode<any, any, any, any>;\n private readonly parent: NativeParent;\n private readonly context: RenderContext;\n\n constructor(\n node: PendingBlockNode<any, any, any, any>,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n ) {\n this.node = node;\n this.parent = parent;\n this.context = context;\n this.position = node.position;\n if (\n context.ssr &&\n node.ssr === 'client' &&\n !node.handlers &&\n !node.fallback\n ) {\n throw new Error(\n 'pendingBlock({ ssr: \"client\" }) requires an explicit fallback or shell.',\n );\n }\n this.start = mountComment(parent, 'craft-pending:start', before, context);\n this.end = mountComment(parent, 'craft-pending:end', before, context);\n\n // The fallback renders in the OUTER context: a fallback that suspends in\n // turn belongs to the next boundary up, never to this one.\n const createFallback = () =>\n createFragment(\n parent,\n this.end,\n this.context,\n [],\n 'craft-pending-fallback',\n );\n const createSource = () =>\n createFragment(\n parent,\n this.end,\n this.boundaryContext(),\n [],\n 'craft-pending-source',\n );\n\n // Both ranges are staked out EMPTY first. A binding below this boundary\n // suspends on its very first run, synchronously, from inside the source\n // range's own construction — so both views have to exist (and the range has\n // to be complete) before that first run happens.\n if (this.position === 'before') {\n this.fallbackView = createFallback();\n this.sourceView = createSource();\n } else {\n this.sourceView = createSource();\n this.fallbackView = createFallback();\n }\n\n this.renderSource([node.source]);\n }\n\n /**\n * Fills the source range, deferring any fallback render that a synchronous\n * suspension asks for until the range is whole again. Rendering the fallback\n * mid-pass would detach the range out from under the insertion that is still\n * walking it.\n */\n private renderSource(children: CraftNodeChildren): void {\n this.rendering += 1;\n try {\n this.sourceView.patchChildren(children);\n } finally {\n this.rendering -= 1;\n }\n if (this.rendering === 0 && this.renderDeferred) {\n this.renderDeferred = false;\n this.renderFallback();\n }\n }\n\n firstNode(): NativeNode {\n return this.start;\n }\n\n lastNode(): NativeNode {\n return this.end;\n }\n\n patch(node: CraftNode): boolean {\n if (node.kind !== 'pending-block') {\n return false;\n }\n const next = node as PendingBlockNode<any, any, any, any>;\n if (next.position !== this.position) {\n return false;\n }\n this.node = next;\n // A re-render re-materialises the source range: hide it again.\n if (this.held.size > 0) this.detached = undefined;\n this.renderSource([next.source]);\n if (this.held.size > 0) this.showFallback();\n return true;\n }\n\n destroy(): void {\n this.reloadWatch?.destroy();\n this.restoreSource();\n this.fallbackView.destroy();\n this.sourceView.destroy();\n removeNode(this.context.renderer, this.start);\n removeNode(this.context.renderer, this.end);\n }\n\n private boundaryContext(): RenderContext {\n return childContext(this.context, {\n pendingBoundary: {\n suspend: (token, source) => this.suspend(token, source),\n resume: (token) => this.resume(token),\n },\n settledReadObserver: (notice) => this.watch(notice),\n });\n }\n\n /**\n * Records a source read below this boundary. A refetch throws nothing, so the\n * boundary cannot learn about it from the suspension channel: it watches the\n * source's own status instead, on its own effect, which keeps working even\n * when the binding that first reported it never re-runs.\n */\n private watch(notice: CraftSettledReadNotice): void {\n if (!this.handles(notice.source)) {\n this.context.settledReadObserver?.(notice);\n return;\n }\n if (this.watched.has(notice.source)) return;\n\n this.watched.set(notice.source, notice);\n this.reloadWatch?.destroy();\n this.reloadWatch = createEffectInInjector(\n this.context.injector,\n 'pending-reload-watch',\n () => this.onReloadStateChange(),\n );\n }\n\n private onReloadStateChange(): void {\n let reloading: string | undefined;\n for (const [source, notice] of this.watched) {\n const status = notice.status();\n // Refetching with something already on screen — the settled read returns\n // the stale value, so the subtree stays visible.\n if (\n notice.value() !== undefined &&\n (status === 'loading' || status === 'reloading')\n ) {\n reloading = source;\n break;\n }\n }\n\n if (reloading === this.reloadingSource) return;\n this.reloadingSource = reloading;\n // A suspension outranks a reload: it already owns the fallback slot.\n if (this.held.size === 0) this.requestFallbackRender();\n }\n\n private suspend(token: object, source: string): void {\n if (this.handles(source)) {\n const routePolicy = this.context.injector.get(\n CRAFT_SSR_POLICY,\n null,\n ) as CraftSsrPolicy | null;\n this.context.ssr?.suspend(\n token,\n source,\n this.node.ssr ?? routePolicy?.mode,\n {\n route: activeSsrRoute(this.context),\n timeoutMs: routePolicy?.timeoutMs,\n },\n );\n const wasIdle = this.held.size === 0;\n this.held.set(token, source);\n if (wasIdle) this.showFallback();\n return;\n }\n\n // Not ours to handle (an `.exhaustive` boundary that does not list this\n // source): delegate outwards.\n if (!this.context.pendingBoundary) {\n if (this.context.ssr) {\n this.context.ssr.unhandled(source, activeSsrRoute(this.context));\n }\n throw new CraftUnhandledPendingError(source);\n }\n this.context.pendingBoundary.suspend(token, source);\n }\n\n private resume(token: object): void {\n if (!this.held.delete(token)) {\n this.context.pendingBoundary?.resume(token);\n return;\n }\n this.context.ssr?.resume(token);\n if (this.held.size === 0) this.hideFallback();\n }\n\n /** The catch-all form handles every source; `.exhaustive` only what it lists. */\n private handles(source: string): boolean {\n return !this.node.handlers || source in this.node.handlers;\n }\n\n private fallbackChildren(): CraftNodeChildren {\n const handlers = this.node.handlers;\n const suspended = this.held.size > 0;\n // Several listed sources may be pending at once — the first to suspend wins.\n const [firstSuspended] = this.held.values();\n const source = suspended ? firstSuspended : this.reloadingSource;\n\n if (!source) return [];\n\n if (!handlers) {\n return this.announceFallback(\n suspended\n ? (this.node.fallback?.() ?? [])\n : (this.node.reloading?.() ?? []),\n true,\n );\n }\n\n const handler: PendingBlockHandler | undefined = handlers[source];\n const inner = handler\n ? resolvePendingBlockHandler(handler, suspended ? 'pending' : 'reloading')\n : [];\n return this.announceFallback(inner, true);\n }\n\n private announceFallback(\n children: CraftNodeChildren,\n busy: boolean,\n ): CraftNodeChildren {\n if (!children || (Array.isArray(children) && children.length === 0)) {\n return [];\n }\n return a11yElement(\n 'span',\n {\n 'aria-live': 'polite',\n 'aria-atomic': 'true',\n 'aria-busy': busy ? 'true' : 'false',\n },\n children,\n );\n }\n\n /** Renders whatever the current state calls for: a suspension, a reload, or nothing. */\n private renderFallback(): void {\n if (this.held.size > 0) {\n this.detachSource();\n } else {\n // A reload keeps the stale subtree on screen next to the indicator.\n this.restoreSource();\n }\n this.fallbackView.patchChildren(this.fallbackChildren());\n }\n\n private showFallback(): void {\n this.requestFallbackRender();\n }\n\n private hideFallback(): void {\n this.requestFallbackRender();\n }\n\n private requestFallbackRender(): void {\n if (this.rendering > 0) {\n this.renderDeferred = true;\n return;\n }\n this.renderFallback();\n }\n\n private focused: Element | undefined;\n\n private detachSource(): void {\n if (this.detached) return;\n const documentRef = this.parent.ownerDocument;\n const active = documentRef?.activeElement ?? null;\n if (active && this.sourceContains(active)) {\n this.focused = active;\n }\n this.detached = detachRange(\n this.context.renderer,\n this.sourceView.firstNode(),\n this.sourceView.lastNode(),\n );\n }\n\n private sourceContains(node: Node): boolean {\n let current: Node | null = this.sourceView.firstNode();\n const end = this.sourceView.lastNode();\n while (current) {\n if (current === node) return true;\n if (isElementNode(current) && current.contains(node)) return true;\n if (current === end) break;\n current = current.nextSibling;\n }\n return false;\n }\n\n private restoreSource(): void {\n if (!this.detached) return;\n\n // Back before the marker that follows the source range, so the original\n // order (fallback / source) is preserved.\n const anchor =\n this.position === 'before' ? this.end : this.fallbackView.firstNode();\n reattachRange(this.context.renderer, this.detached, anchor, this.parent);\n this.detached = undefined;\n if (\n this.focused &&\n 'focus' in this.focused &&\n typeof (this.focused as HTMLElement).focus === 'function'\n ) {\n (this.focused as HTMLElement).focus();\n }\n this.focused = undefined;\n }\n}\n\nclass FieldExceptionBlockRenderedNode implements RenderedNode {\n readonly kind = 'field-exception-block';\n private readonly boundaryId = nextFieldExceptionBoundaryId++;\n private readonly descriptor;\n private readonly sourcesVersion = signal(0);\n private readonly sources = new Set<RegisteredFieldExceptionSource>();\n private readonly componentSourceCleanups: Array<() => void>;\n private readonly view: FragmentRenderedNode;\n private readonly effectRef: EffectRef;\n\n private node: FieldExceptionBlockNode<any, any, any, any>;\n private readonly context: RenderContext;\n\n constructor(\n node: FieldExceptionBlockNode<any, any, any, any>,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n ) {\n this.node = node;\n this.context = context;\n this.descriptor = signal(node);\n this.view = createFragment(\n parent,\n before,\n this.boundaryContext(),\n [node.source],\n 'craft-field-exception-block',\n );\n this.componentSourceCleanups = componentFieldExceptionSources(\n context.componentContext,\n ).map((source) => this.register(source));\n this.effectRef = createRenderEffect(\n context,\n 'field-exception-block',\n () => {\n this.node = this.descriptor();\n this.sourcesVersion();\n const fallbacks = this.renderFallbacks();\n this.view.patchChildren(\n this.node.options.position === 'before'\n ? [fallbacks, this.node.source]\n : [this.node.source, fallbacks],\n );\n },\n );\n }\n\n firstNode(): NativeNode {\n return this.view.firstNode();\n }\n\n lastNode(): NativeNode {\n return this.view.lastNode();\n }\n\n patch(node: CraftNode): boolean {\n if (node.kind !== 'field-exception-block') return false;\n this.descriptor.set(node);\n return true;\n }\n\n private boundaryContext(): RenderContext {\n return childContext(this.context, {\n fieldExceptionBoundary: {\n register: (source, element) => this.register(source, element),\n },\n });\n }\n\n private register(\n source: CraftFieldExceptionSource,\n element?: Element,\n ): () => void {\n const rawSource = rawReactiveFacade(source);\n const unregisterParent = this.context.fieldExceptionBoundary?.register(\n rawSource,\n element,\n );\n const registered: RegisteredFieldExceptionSource = {\n source: rawSource,\n element,\n messageIds: new Map(),\n };\n if (element) {\n this.accessibilityState(element).registrations.add(this.boundaryId);\n }\n this.sources.add(registered);\n untracked(() => this.sourcesVersion.update((value) => value + 1));\n return () => {\n this.releaseAccessibility(registered);\n this.sources.delete(registered);\n untracked(() => this.sourcesVersion.update((value) => value + 1));\n unregisterParent?.();\n };\n }\n\n private orderedSources(): RegisteredFieldExceptionSource[] {\n const ordered = [...this.sources].sort((left, right) => {\n if (!left.element) return 1;\n if (!right.element) return -1;\n if (left.element === right.element) return 0;\n const relation = left.element.compareDocumentPosition(right.element);\n return relation & 4 /* Node.DOCUMENT_POSITION_FOLLOWING */ ? -1 : 1;\n });\n const seen = new Set<CraftFieldExceptionSource>();\n return ordered.filter(({ source }) => {\n if (seen.has(source)) return false;\n seen.add(source);\n return true;\n });\n }\n\n private activeExceptions(\n source: CraftFieldExceptionSource,\n ): readonly AnyCraftException[] {\n const visibility = this.node.options.visibility ?? 'visibleExceptions';\n if (visibility === 'visibleExceptions') {\n if (this.node.options.mode === 'first') {\n const first = source.visibleFirstLeftFailedValidation();\n if (first && this.handles(source, first)) return [first];\n return source\n .visibleExceptions()\n .list.filter((exception) => this.handles(source, exception))\n .slice(0, 1);\n }\n return source.visibleExceptions().list;\n }\n\n if (\n !fieldExceptionVisibilityMatches(visibility, {\n field: source.field,\n hasAttemptedSubmit: source.hasAttemptedSubmit,\n })\n ) {\n return [];\n }\n if (this.node.options.mode === 'first') {\n const first = source.firstLeftFailedValidation();\n if (first && this.handles(source, first)) return [first];\n return source\n .exceptions()\n .list.filter((exception) => this.handles(source, exception))\n .slice(0, 1);\n }\n return source.exceptions().list;\n }\n\n private handles(\n source: CraftFieldExceptionSource,\n exception: AnyCraftException,\n ): boolean {\n return Boolean(\n fieldExceptionHandler(this.node.handlers, source.path, exception._tag),\n );\n }\n\n private renderFallbacks(): CraftNodeChildren {\n const children: CraftNodeChildren[] = [];\n for (const registered of this.orderedSources()) {\n const { source } = registered;\n const activeMessageIds: string[] = [];\n const exceptions = this.activeExceptions(source);\n exceptions.forEach((exception, index) => {\n const handler = fieldExceptionHandler(\n this.node.handlers,\n source.path,\n exception._tag,\n );\n if (!handler) return;\n const validatorName = fieldExceptionValidatorName(source, exception);\n const messageKey = `${validatorName}:${exception._tag}:${index}`;\n let id = registered.messageIds.get(messageKey);\n if (!id) {\n id = `craft-field-exception-${this.boundaryId}-${registered.messageIds.size}`;\n registered.messageIds.set(messageKey, id);\n }\n activeMessageIds.push(id);\n children.push(\n fieldExceptionMessageNode(\n id,\n handler({\n field: source.field,\n path: source.path,\n runtimePath: source.runtimePath,\n validatorName,\n exception,\n }),\n ),\n );\n });\n this.applyAccessibility(registered, activeMessageIds);\n }\n return children;\n }\n\n private applyAccessibility(\n registered: RegisteredFieldExceptionSource,\n messageIds: readonly string[],\n ): void {\n if (!registered.element) return;\n if (messageIds.length) {\n this.accessibilityState(registered.element).messagesByBoundary.set(\n this.boundaryId,\n messageIds,\n );\n } else {\n this.accessibilityState(registered.element).messagesByBoundary.delete(\n this.boundaryId,\n );\n }\n this.reconcileAccessibility(registered.element);\n }\n\n private accessibilityState(\n element: Element,\n ): FieldExceptionAccessibilityState {\n const existing = fieldExceptionAccessibility.get(element);\n if (existing) return existing;\n const created: FieldExceptionAccessibilityState = {\n originalAriaInvalid: element.getAttribute('aria-invalid'),\n originalAriaDescribedBy: element.getAttribute('aria-describedby'),\n registrations: new Set(),\n messagesByBoundary: new Map(),\n };\n fieldExceptionAccessibility.set(element, created);\n return created;\n }\n\n private reconcileAccessibility(element: Element): void {\n const state = this.accessibilityState(element);\n const renderer = this.context.renderer;\n const messageIds = [...state.messagesByBoundary.values()].flat();\n if (messageIds.length) {\n renderer.setAttribute(element, 'aria-invalid', 'true');\n } else {\n if (state.originalAriaInvalid === null) {\n renderer.removeAttribute(element, 'aria-invalid');\n } else {\n renderer.setAttribute(\n element,\n 'aria-invalid',\n state.originalAriaInvalid,\n );\n }\n }\n\n const describedBy = [\n ...(state.originalAriaDescribedBy?.split(/\\s+/).filter(Boolean) ?? []),\n ...messageIds,\n ];\n if (describedBy.length) {\n renderer.setAttribute(\n element,\n 'aria-describedby',\n [...new Set(describedBy)].join(' '),\n );\n } else {\n renderer.removeAttribute(element, 'aria-describedby');\n }\n }\n\n private releaseAccessibility(\n registered: RegisteredFieldExceptionSource,\n ): void {\n if (!registered.element) return;\n const state = this.accessibilityState(registered.element);\n state.messagesByBoundary.delete(this.boundaryId);\n state.registrations.delete(this.boundaryId);\n this.reconcileAccessibility(registered.element);\n if (!state.registrations.size) {\n fieldExceptionAccessibility.delete(registered.element);\n }\n }\n\n destroy(): void {\n this.effectRef.destroy();\n this.componentSourceCleanups.forEach((cleanup) => cleanup());\n this.view.destroy();\n this.sources.forEach((source) => this.releaseAccessibility(source));\n this.sources.clear();\n }\n}\n\nfunction componentHostName(injector: Injector, name: string): string {\n const tags = injector.get(HOST_TAG_LIST, []);\n const current = tags[tags.length - 1];\n if (current?.startsWith('component:')) {\n return current;\n }\n return allocateCraftHostName(injector, 'component', name);\n}\n\nfunction allocateCraftHostName(\n injector: Injector,\n kind: 'component' | 'directive',\n name: string,\n): string {\n const register =\n injector.get(\n COMPONENT_REGISTER as unknown as ProviderToken<ComponentRegister>,\n null,\n ) ?? ɵfallbackComponentRegister;\n return `${kind}:${name}#${register.next()}`;\n}\n\nclass ComponentRenderedNode implements RenderedNode {\n readonly kind = 'component';\n private environmentInjector: EnvironmentInjector | undefined;\n private readonly propKeys: string[];\n private readonly propSources: ReturnType<typeof signal<unknown>>[];\n private readonly hostPropsSource;\n private readonly view: FragmentRenderedNode;\n private readonly effectRef: EffectRef;\n private composedTemplateEffect: EffectRef | undefined;\n private componentExceptionEffect: EffectRef | undefined;\n private syncTemplateFlushRelease: (() => void) | undefined;\n private componentFallbackVisible = false;\n private componentFallbackException: AnyCraftException | undefined;\n private readonly styleReleases: (() => void)[];\n private providerTrackers: readonly (() => unknown)[] = [];\n private readonly templateOnly: boolean;\n private readonly traceState: TemplateTraceState;\n private readonly componentRenderContext: RenderContext;\n private traceCreated = false;\n private factoryContext: unknown;\n private latestTemplate: CraftNodeChildren = [];\n private registrationReleases: (() => void)[] = [];\n private readonly hostBindings: HostPropertyBindings | undefined;\n\n private component: CraftComponent<object>;\n private readonly context: RenderContext;\n\n constructor(\n component: CraftComponent<object>,\n props: object,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n hostTarget?: Element,\n templateContext?: { readonly value: unknown },\n additionalProviders: readonly CraftServiceProvider[] = [],\n declarationContext?: RenderContext,\n ) {\n this.component = component;\n this.context = context;\n this.templateOnly = templateContext !== undefined;\n const definition = component[CRAFT_COMPONENT];\n const composition = definition.composition;\n const ownScope = scopeIdFor(definition.scopeDefinition, definition.name);\n this.traceState = { renderCount: 0 };\n this.styleReleases = acquireStyles(\n context,\n definition.styleOwners,\n ownScope,\n );\n const componentRenderContext = childContext(context, {\n ownerScope: ownScope,\n rootScope: scopeTokens(context.rootScope, ownScope),\n componentName: definition.name,\n contentStyles: definition.meta.contentStyles,\n contentScope: undefined,\n declarationContext: declarationContext ?? context,\n directiveNames: definition.styleOwners\n .slice(1)\n .map((owner) => owner.name),\n traceState: this.traceState,\n });\n this.componentRenderContext = componentRenderContext;\n this.hostBindings = hostTarget\n ? new HostPropertyBindings(hostTarget, context)\n : undefined;\n const componentElement =\n hostTarget ?? (isElementNode(parent) ? parent : parent.parentElement);\n // Angular's runtime accepts any Injector as the R3Injector parent even\n // though the public helper narrows the type to EnvironmentInjector. Keep\n // the immediate parent here: unwrapping it through\n // `get(EnvironmentInjector)` would skip route-scoped providers such as\n // ActivatedRoute and ChildrenOutletContexts.\n const parentInjector = context.injector as EnvironmentInjector;\n if (!composition) {\n this.environmentInjector = createEnvironmentInjector(\n [\n ...provideHostName(`component:${definition.name}`),\n {\n provide: CRAFT_HYDRATION_ID,\n useValue: componentRenderContext.identity,\n },\n ...(definition.meta.providers ?? []),\n {\n provide: ElementRef,\n useValue: new ElementRef(componentElement),\n },\n ...additionalProviders,\n ],\n parentInjector,\n 'CraftComponent',\n );\n this.traceCreated = true;\n traceComponentLifecycle(\n this.environmentInjector,\n 'create',\n definition.name,\n this.traceState.renderCount,\n );\n }\n this.propKeys = this.templateOnly\n ? []\n : Object.keys(props).filter((key) => !isHostProperty(key));\n this.propSources = this.propKeys.map((key) =>\n signal((props as Record<string, unknown>)[key]),\n );\n this.hostPropsSource = signal(\n hostPropsFromComponentProps(props as Readonly<Record<string, unknown>>),\n );\n\n const inputShells = this.propSources.map((source) => {\n const input = markYieldableMethod((...callbackArgs: unknown[]) => {\n const current = source();\n if (callbackArgs.length > 0 && typeof current === 'function') {\n return (current as (...args: unknown[]) => unknown)(...callbackArgs);\n }\n const value =\n typeof current === 'function'\n ? (current as () => unknown)()\n : current;\n\n return isGenerator(value)\n ? value\n : yieldableInvocation<unknown, unknown>(value);\n });\n\n // Content inputs are object-shaped at the call site but component\n // factories receive callable input shells. Expose object properties on\n // the shell so the factory can use `content.header` without eagerly\n // evaluating a slot.\n return new Proxy(input, {\n get(target, property, receiver) {\n const current = source();\n if (\n typeof current === 'object' &&\n current !== null &&\n property in current\n ) {\n return Reflect.get(current, property);\n }\n return Reflect.get(target, property, receiver);\n },\n has(target, property) {\n const current = source();\n return (\n (typeof current === 'object' &&\n current !== null &&\n property in current) ||\n property in target\n );\n },\n ownKeys(target) {\n const current = source();\n return [\n ...new Set([\n ...Reflect.ownKeys(target),\n ...(typeof current === 'object' && current !== null\n ? Reflect.ownKeys(current)\n : []),\n ]),\n ];\n },\n getOwnPropertyDescriptor(target, property) {\n const current = source();\n if (\n typeof current === 'object' &&\n current !== null &&\n property in current\n ) {\n return {\n configurable: true,\n enumerable: true,\n value: Reflect.get(current, property),\n };\n }\n return Reflect.getOwnPropertyDescriptor(target, property);\n },\n });\n });\n\n // A one-argument logic factory may model its complete input as one typed\n // object. The callable shell keeps the historical Input<T> invocation\n // while exposing the object's properties for the contract-based API.\n const args =\n !this.templateOnly && definition.factory.length === 1\n ? [\n new Proxy(\n ((...callbackArgs: unknown[]) =>\n (inputShells[0] as (...args: unknown[]) => unknown)(\n ...callbackArgs,\n )) as (...args: unknown[]) => unknown,\n {\n get: (target, property, receiver) => {\n const index = this.propKeys.indexOf(String(property));\n if (index !== -1) {\n return preserveContentDeclarationContext(\n this.propSources[index](),\n declarationContext ?? context,\n );\n }\n return Reflect.get(target, property, receiver);\n },\n has: (target, property) =>\n this.propKeys.includes(String(property)) ||\n Reflect.has(target, property),\n ownKeys: (target) => [\n ...new Set([...Reflect.ownKeys(target), ...this.propKeys]),\n ],\n getOwnPropertyDescriptor: (target, property) => {\n const index = this.propKeys.indexOf(String(property));\n return index === -1\n ? Reflect.getOwnPropertyDescriptor(target, property)\n : {\n configurable: true,\n enumerable: true,\n value: preserveContentDeclarationContext(\n this.propSources[index](),\n declarationContext ?? context,\n ),\n };\n },\n },\n ),\n ]\n : inputShells;\n\n const factoryContext = composition\n ? undefined\n : this.templateOnly\n ? templateContext?.value\n : untracked(() =>\n executeCraftComponentFactory(\n definition.factory,\n args,\n this.environmentInjector!,\n ),\n );\n if (\n !composition &&\n !this.templateOnly &&\n typeof factoryContext === 'object' &&\n factoryContext !== null &&\n 'then' in factoryContext\n ) {\n throw new Error(\n 'Async component factories are not renderable directly. Move asynchronous work behind defer().',\n );\n }\n this.factoryContext = factoryContext;\n if (!composition) {\n this.registerRuntimeTargets(\n definition,\n factoryContext,\n this.environmentInjector!,\n );\n }\n\n this.view = createFragment(\n parent,\n before,\n childContext(componentRenderContext, {\n injector: composition ? parentInjector : this.environmentInjector,\n componentContext: factoryContext,\n }),\n composition ? [] : [],\n 'craft-component',\n );\n\n this.effectRef = untracked(() =>\n runInInjectionContext(\n composition ? parentInjector : this.environmentInjector!,\n () =>\n craftEffect(\n 'component-render',\n composition\n ? (onCleanup: (cleanup: () => void) => void) => {\n // Composition providers and public inputs are the only\n // dependencies that should recreate the component scope.\n // Template signals (for example a query status) are tracked\n // by the dedicated template effect created by\n // refreshComposedComponent().\n this.propSources.forEach((source) => source());\n this.hostPropsSource();\n untracked(() =>\n this.refreshComposedComponent(\n definition,\n args,\n componentElement,\n parentInjector,\n additionalProviders,\n hostTarget,\n context,\n componentRenderContext,\n onCleanup,\n ),\n );\n this.providerTrackers.forEach((tracker) => tracker());\n }\n : () => {\n try {\n const callSiteHostProps = this.hostPropsSource();\n const hostProps = mergeHostProps(\n definition.meta.host ?? {},\n callSiteHostProps,\n );\n const renderContext = childContext(componentRenderContext, {\n injector: this.environmentInjector!,\n componentContext: this.factoryContext,\n });\n this.traceState.renderCount += 1;\n this.latestTemplate = executeTemplateTrace(\n renderContext.injector,\n traceContext(\n renderContext,\n 'component',\n this.traceState.renderCount === 1\n ? 'initialRender'\n : 'update',\n definition.name,\n ),\n () =>\n withCraftRenderContext(renderContext, () =>\n definition.template(\n projectYieldableTemplateContext(\n this.factoryContext,\n ) as never,\n callSiteHostProps,\n ),\n ),\n );\n this.view.patchChildren(this.latestTemplate);\n this.hostBindings?.patch(hostProps);\n context.exceptionBoundaryResolved?.();\n } catch (error) {\n if (\n isCraftGenShortCircuit(error) &&\n context.exceptionBoundary?.(error.exception)\n ) {\n this.view.patchChildren([]);\n return;\n }\n if (isCraftGenShortCircuit(error)) {\n throw new CraftUnhandledExceptionError(error.exception);\n }\n throw error;\n }\n },\n ),\n ),\n );\n }\n\n firstNode(): NativeNode {\n return this.view.firstNode();\n }\n\n private refreshComposedComponent(\n definition: (typeof this.component)[typeof CRAFT_COMPONENT],\n args: readonly ((...callbackArgs: unknown[]) => unknown)[],\n componentElement: Element | null,\n parentInjector: EnvironmentInjector,\n additionalProviders: readonly CraftServiceProvider[],\n hostTarget: Element | undefined,\n context: RenderContext,\n componentRenderContext: RenderContext,\n onCleanup: (cleanup: () => void) => void,\n ): void {\n const composition = definition.composition;\n if (!composition) {\n return;\n }\n\n this.view.patchChildren([]);\n this.environmentInjector = createEnvironmentInjector(\n [\n ...provideHostName(`component:${definition.name}`),\n {\n provide: CRAFT_HYDRATION_ID,\n useValue: componentRenderContext.identity,\n },\n ...(definition.meta.providers ?? []),\n ...(composition.providers ?? []),\n {\n provide: ElementRef,\n useValue: new ElementRef(componentElement),\n },\n ...additionalProviders,\n ],\n parentInjector,\n 'CraftComponent',\n );\n\n if (!this.traceCreated) {\n this.traceCreated = true;\n traceComponentLifecycle(\n this.environmentInjector,\n 'create',\n definition.name,\n this.traceState.renderCount,\n );\n }\n\n const environmentInjector = this.environmentInjector;\n let renderInjector = environmentInjector;\n onCleanup(() => {\n this.registrationReleases.forEach((release) => release());\n this.registrationReleases = [];\n this.composedTemplateEffect?.destroy();\n this.composedTemplateEffect = undefined;\n this.syncTemplateFlushRelease?.();\n this.syncTemplateFlushRelease = undefined;\n this.componentExceptionEffect?.destroy();\n this.componentExceptionEffect = undefined;\n this.componentFallbackVisible = false;\n this.componentFallbackException = undefined;\n this.view.patchChildren([]);\n renderInjector.destroy();\n if (renderInjector !== environmentInjector) {\n environmentInjector.destroy();\n }\n this.providerTrackers = [];\n if (this.environmentInjector === renderInjector) {\n this.environmentInjector = undefined;\n this.factoryContext = undefined;\n }\n });\n\n let factoryContext: unknown;\n let renderContext: RenderContext;\n const handledResourceExceptionCodes = new Set<string>();\n const componentBoundary = composition.catchBlockPosition\n ? (exception: AnyCraftException): boolean => {\n if (!composition.catchHandlers?.[exception._tag]) {\n return context.exceptionBoundary?.(exception) ?? false;\n }\n this.renderComposedException(\n definition,\n exception,\n renderInjector,\n renderContext,\n context,\n hostTarget,\n );\n return true;\n }\n : undefined;\n renderContext = childContext(componentRenderContext, {\n injector: environmentInjector,\n handledResourceExceptionCodes,\n ...(componentBoundary\n ? {\n exceptionBoundary: componentBoundary,\n }\n : {}),\n });\n try {\n const providerResolution = eagerlyResolveBrandedProviders(\n composition.providers ?? [],\n environmentInjector,\n );\n this.providerTrackers = providerResolution.trackers;\n if (providerResolution.exception) {\n renderContext = childContext(componentRenderContext, {\n injector: environmentInjector,\n });\n this.view.updateContext(renderContext);\n this.renderComposedException(\n definition,\n providerResolution.exception,\n environmentInjector,\n renderContext,\n context,\n hostTarget,\n );\n return;\n }\n if (providerResolution.overrides.length > 0) {\n renderInjector = createEnvironmentInjector(\n [...providerResolution.overrides],\n environmentInjector,\n 'CraftComponentProviders',\n );\n this.environmentInjector = renderInjector;\n }\n renderContext = childContext(componentRenderContext, {\n injector: renderInjector,\n handledResourceExceptionCodes,\n });\n this.view.updateContext(renderContext);\n factoryContext = untracked(() =>\n executeCraftComponentFactory(\n definition.factory,\n args as ((...callbackArgs: unknown[]) => unknown)[],\n renderInjector,\n ),\n );\n if (\n typeof factoryContext === 'object' &&\n factoryContext !== null &&\n 'then' in factoryContext\n ) {\n throw new Error(\n 'Async component factories are not renderable directly. Move asynchronous work behind defer().',\n );\n }\n this.registerRuntimeTargets(definition, factoryContext, renderInjector);\n } catch (error) {\n if (!isCraftGenShortCircuit(error)) {\n throw error;\n }\n\n if (this.context.exceptionBoundary?.(error.exception)) {\n return;\n }\n\n this.renderComposedException(\n definition,\n error.exception,\n renderInjector,\n renderContext,\n context,\n hostTarget,\n );\n return;\n }\n\n if (isCraftException(factoryContext)) {\n this.renderComposedException(\n definition,\n factoryContext,\n renderInjector,\n renderContext,\n context,\n hostTarget,\n );\n return;\n }\n\n this.composedTemplateEffect = untracked(() =>\n runInInjectionContext(renderInjector, () =>\n craftEffect('component-template', () => {\n this.renderComposedTemplate(\n definition,\n factoryContext,\n renderInjector,\n renderContext,\n context,\n hostTarget,\n );\n if (\n composition.catchBlockPosition &&\n !this.componentExceptionEffect\n ) {\n this.installComponentExceptionEffect(\n definition,\n factoryContext,\n renderInjector,\n renderContext,\n context,\n hostTarget,\n );\n }\n }),\n ),\n );\n this.syncTemplateFlushRelease?.();\n this.syncTemplateFlushRelease = registerCraftSyncTemplateFlush(() => {\n this.renderComposedTemplate(\n definition,\n factoryContext,\n renderInjector,\n renderContext,\n context,\n hostTarget,\n );\n });\n }\n\n private installComponentExceptionEffect(\n definition: (typeof this.component)[typeof CRAFT_COMPONENT],\n factoryContext: unknown,\n renderInjector: EnvironmentInjector,\n renderContext: RenderContext,\n context: RenderContext,\n hostTarget: Element | undefined,\n ): void {\n this.componentExceptionEffect = untracked(() =>\n runInInjectionContext(renderInjector, () =>\n craftEffect(\n 'component-catch-block-resource-exceptions',\n () => {\n const exception = findResourceException(factoryContext);\n if (exception) {\n if (\n renderContext.handledResourceExceptionCodes?.has(exception._tag)\n ) {\n if (this.componentFallbackVisible) {\n this.componentFallbackVisible = false;\n this.componentFallbackException = undefined;\n untracked(() =>\n this.renderComposedTemplate(\n definition,\n factoryContext,\n renderInjector,\n renderContext,\n context,\n hostTarget,\n ),\n );\n }\n return;\n }\n if (\n this.componentFallbackVisible &&\n this.componentFallbackException === exception\n ) {\n return;\n }\n this.componentFallbackVisible = true;\n this.componentFallbackException = exception;\n untracked(() =>\n this.renderComposedException(\n definition,\n exception,\n renderInjector,\n renderContext,\n context,\n hostTarget,\n true,\n ),\n );\n } else if (this.componentFallbackVisible) {\n this.componentFallbackVisible = false;\n this.componentFallbackException = undefined;\n untracked(() =>\n this.renderComposedTemplate(\n definition,\n factoryContext,\n renderInjector,\n renderContext,\n context,\n hostTarget,\n ),\n );\n }\n },\n { manualCleanup: true },\n ),\n ),\n );\n }\n\n private registerRuntimeTargets(\n definition: (typeof this.component)[typeof CRAFT_COMPONENT],\n factoryContext: unknown,\n injector: EnvironmentInjector,\n ): void {\n this.registrationReleases.forEach((release) => release());\n this.registrationReleases = [\n ɵregisterCraftTarget(\n injector,\n this.component,\n factoryContext,\n componentHostName(injector, definition.name),\n ),\n ...definition.styleOwners.flatMap((owner) =>\n owner.registrationTarget === undefined\n ? []\n : [\n ɵregisterCraftTarget(\n injector,\n owner.registrationTarget,\n factoryContext,\n allocateCraftHostName(injector, 'directive', owner.name),\n ),\n ],\n ),\n ];\n }\n\n private renderComposedTemplate(\n definition: (typeof this.component)[typeof CRAFT_COMPONENT],\n factoryContext: unknown,\n renderInjector: EnvironmentInjector,\n renderContext: RenderContext,\n context: RenderContext,\n hostTarget: Element | undefined,\n ): void {\n if (this.componentFallbackVisible) return;\n try {\n this.traceState.renderCount += 1;\n const rendered = this.composedTemplateChildren(\n definition,\n factoryContext,\n renderContext,\n );\n const children = this.withComponentFieldExceptionBlock(\n definition,\n rendered.children,\n );\n this.latestTemplate = children;\n this.view.patchChildren(children);\n this.hostBindings?.patch(rendered.hostProps);\n } catch (error) {\n if (!isCraftGenShortCircuit(error)) throw error;\n if (renderContext.exceptionBoundary?.(error.exception)) return;\n this.renderComposedException(\n definition,\n error.exception,\n renderInjector,\n renderContext,\n context,\n hostTarget,\n );\n return;\n }\n renderContext.exceptionBoundaryResolved?.();\n }\n\n private composedTemplateChildren(\n definition: (typeof this.component)[typeof CRAFT_COMPONENT],\n factoryContext: unknown,\n renderContext: RenderContext,\n ): { readonly children: CraftNodeChildren; readonly hostProps: HostProps } {\n this.factoryContext = factoryContext;\n this.view.updateContext(\n childContext(renderContext, { componentContext: factoryContext }),\n );\n const callSiteHostProps = this.hostPropsSource();\n const hostProps = mergeHostProps(\n definition.meta.host ?? {},\n callSiteHostProps,\n );\n return {\n children: executeTemplateTrace(\n renderContext.injector,\n traceContext(\n renderContext,\n 'component',\n this.traceState.renderCount === 1 ? 'initialRender' : 'update',\n definition.name,\n ),\n () =>\n withCraftRenderContext(renderContext, () =>\n definition.template(\n projectYieldableTemplateContext(factoryContext) as never,\n callSiteHostProps,\n ),\n ),\n ),\n hostProps,\n };\n }\n\n private withComponentFieldExceptionBlock(\n definition: (typeof this.component)[typeof CRAFT_COMPONENT],\n children: CraftNodeChildren,\n ): CraftNodeChildren {\n const handlers = definition.composition?.fieldExceptionHandlers;\n const options = definition.composition?.fieldExceptionOptions;\n if (!handlers || !options) return children;\n return {\n kind: 'field-exception-block',\n source: children,\n handlers,\n options,\n } as FieldExceptionBlockNode<any, any, any, any>;\n }\n\n private renderComposedException(\n definition: (typeof this.component)[typeof CRAFT_COMPONENT],\n exception: AnyCraftException,\n environmentInjector: EnvironmentInjector,\n renderContext: RenderContext,\n context: RenderContext,\n hostTarget: Element | undefined,\n preserveFactoryContext = false,\n ): void {\n const blockHandler =\n definition.composition?.catchHandlers?.[exception._tag];\n const tagHandler =\n definition.composition?.catchTagHandlers?.[exception._tag];\n if (!blockHandler && !tagHandler) {\n if (this.context.exceptionBoundary?.(exception)) {\n return;\n }\n throw new CraftUnhandledExceptionError(exception);\n }\n\n if (!preserveFactoryContext) {\n this.factoryContext = undefined;\n }\n this.view.updateContext(renderContext);\n const hostProps = mergeHostProps(\n definition.meta.host ?? {},\n this.hostPropsSource(),\n );\n if (tagHandler) {\n try {\n executeCraftComponentFactory(\n function* () {\n return yield* tagHandler(exception);\n },\n [],\n environmentInjector,\n );\n } catch (error) {\n if (!isCraftGenShortCircuit(error)) throw error;\n if (context.exceptionBoundary?.(error.exception)) return;\n throw new CraftUnhandledExceptionError(error.exception);\n }\n this.view.patchChildren([]);\n } else {\n const resolved = runInInjectionContext(environmentInjector, () =>\n resolveCatchBlockHandler(\n blockHandler!,\n exception,\n false,\n definition.composition?.catchBlockPosition ?? 'after',\n ),\n );\n if (preserveFactoryContext && resolved.showSource) {\n try {\n const source = untracked(() =>\n this.composedTemplateChildren(\n definition,\n this.factoryContext,\n renderContext,\n ),\n );\n const children =\n resolved.position === 'before'\n ? [\n resolved.children,\n this.withComponentFieldExceptionBlock(\n definition,\n source.children,\n ),\n ]\n : [\n this.withComponentFieldExceptionBlock(\n definition,\n source.children,\n ),\n resolved.children,\n ];\n this.view.patchChildren(children);\n this.hostBindings?.patch(source.hostProps);\n } catch (error) {\n if (!isCraftGenShortCircuit(error)) throw error;\n this.view.patchChildren(resolved.children);\n }\n } else {\n this.view.patchChildren(resolved.children);\n }\n }\n this.hostBindings?.patch(hostProps);\n }\n\n lastNode(): NativeNode {\n return this.view.lastNode();\n }\n\n patch(node: CraftNode): boolean {\n if (\n node.kind !== 'component' ||\n node.component !== this.component ||\n (node.injector !== undefined && node.injector !== this.context.injector)\n ) {\n return false;\n }\n\n const props = node.props as Record<string, unknown>;\n this.propKeys.forEach((key, index) => {\n this.propSources[index].set(props[key]);\n });\n this.hostPropsSource.set(\n hostPropsFromComponentProps(props as Readonly<Record<string, unknown>>),\n );\n return true;\n }\n\n updateProps(props: object): void {\n if (this.templateOnly) {\n return;\n }\n\n this.patch({\n kind: 'component',\n component: this.component,\n props,\n } as unknown as CraftNode);\n }\n\n updateContext(context: unknown): void {\n if (!this.templateOnly) {\n throw new Error('Cannot update the context of a logic-backed component.');\n }\n\n this.factoryContext = context;\n const definition = this.component[CRAFT_COMPONENT];\n const callSiteHostProps = this.hostPropsSource();\n const hostProps = mergeHostProps(\n definition.meta.host ?? {},\n callSiteHostProps,\n );\n this.traceState.renderCount += 1;\n this.latestTemplate = executeTemplateTrace(\n this.environmentInjector ?? this.context.injector,\n traceContext(\n this.componentRenderContext,\n 'component',\n this.traceState.renderCount === 1 ? 'initialRender' : 'update',\n definition.name,\n ),\n () =>\n definition.template(\n projectYieldableTemplateContext(context) as never,\n callSiteHostProps,\n ),\n );\n this.view.patchChildren(this.latestTemplate);\n this.hostBindings?.patch(hostProps);\n }\n\n locator(\n host: Element,\n tag: string,\n criteria: RuntimeLocatorCriteria,\n ): Element | undefined {\n return findCraftTemplateLocator(host, this.latestTemplate, tag, criteria);\n }\n\n destroy(): void {\n if (this.traceCreated) {\n traceComponentLifecycle(\n this.environmentInjector ?? this.context.injector,\n 'destroy',\n this.componentRenderContext.componentName ?? 'unknown',\n this.traceState.renderCount,\n );\n this.traceCreated = false;\n }\n this.effectRef.destroy();\n this.hostBindings?.destroy();\n this.view.destroy();\n this.styleReleases.forEach((release) => release());\n this.environmentInjector?.destroy();\n }\n}\n\nclass DeferRenderedNode implements RenderedNode {\n readonly kind = 'defer';\n private view: FragmentRenderedNode;\n private state: 'placeholder' | 'loading' | 'loaded' | 'error' = 'placeholder';\n private destroyed = false;\n private triggerCleanup: (() => void) | undefined;\n private triggerTimer: TemporalTaskHandle | undefined;\n private loadedValue: unknown;\n private loadError: unknown;\n\n private node: DeferNode<unknown>;\n private readonly parent: NativeParent;\n private readonly context: RenderContext;\n\n constructor(\n node: DeferNode<unknown>,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n ) {\n this.node = node;\n this.parent = parent;\n this.context = context;\n this.view = createFragment(\n parent,\n before,\n context,\n node.placeholder\n ? renderDeferChildren(context, 'placeholder', node.placeholder)\n : [],\n 'craft-defer',\n );\n this.installTrigger();\n }\n\n firstNode(): NativeNode {\n return this.view.firstNode();\n }\n\n lastNode(): NativeNode {\n return this.view.lastNode();\n }\n\n patch(node: CraftNode): boolean {\n if (node.kind !== 'defer' || node.loader !== this.node.loader) {\n return false;\n }\n this.node = node;\n if (this.state === 'loaded') {\n this.view.patchChildren(\n renderDeferChildren(this.context, 'resolve', this.node.resolve, [\n this.loadedValue,\n ]),\n );\n } else if (this.state === 'error') {\n this.view.patchChildren(\n this.node.error\n ? renderDeferChildren(this.context, 'error', this.node.error, [\n this.loadError,\n ])\n : [],\n );\n } else if (this.state === 'loading') {\n this.view.patchChildren(\n this.node.loading\n ? renderDeferChildren(this.context, 'loading', this.node.loading)\n : this.node.placeholder\n ? renderDeferChildren(\n this.context,\n 'placeholder',\n this.node.placeholder,\n )\n : [],\n );\n } else {\n this.view.patchChildren(\n this.node.placeholder\n ? renderDeferChildren(\n this.context,\n 'placeholder',\n this.node.placeholder,\n )\n : [],\n );\n }\n return true;\n }\n\n private installTrigger(): void {\n if (this.node.trigger === 'immediate') {\n this.startLoad();\n return;\n }\n\n if (this.node.trigger === 'idle') {\n const windowRef = this.parent.ownerDocument?.defaultView;\n const idleWindow = windowRef as\n | (Window & {\n requestIdleCallback?: (callback: () => void) => number;\n cancelIdleCallback?: (handle: number) => void;\n })\n | undefined;\n if (idleWindow?.requestIdleCallback) {\n const handle = idleWindow.requestIdleCallback(() => this.startLoad());\n this.triggerCleanup = () => idleWindow.cancelIdleCallback?.(handle);\n } else {\n this.triggerTimer = this.context.injector\n .get(CRAFT_TEMPORAL_RUNTIME, new RealCraftTemporalRuntime())\n .schedule(() => this.startLoad(), 0, {\n kind: 'defer-trigger',\n owner: this.context.componentName,\n });\n this.triggerCleanup = () => this.triggerTimer?.cancel();\n }\n return;\n }\n\n if (\n this.node.trigger === 'viewport' &&\n typeof IntersectionObserver !== 'undefined'\n ) {\n const target = this.firstElementInView();\n if (target) {\n const observer = new IntersectionObserver((entries) => {\n if (entries.some((entry) => entry.isIntersecting)) {\n observer.disconnect();\n this.startLoad();\n }\n });\n observer.observe(target);\n this.triggerCleanup = () => observer.disconnect();\n return;\n }\n }\n\n if (this.node.trigger === 'interaction') {\n const target = this.firstElementInView() ?? this.parent;\n const start = (event?: Event) => {\n if (event && event.type === 'keydown') {\n const key = (event as KeyboardEvent).key;\n if (key !== 'Enter' && key !== ' ') return;\n event.preventDefault();\n }\n this.startLoad();\n };\n if (isElementNode(target)) {\n const tag = target.tagName.toLowerCase();\n const interactive =\n tag === 'button' ||\n tag === 'a' ||\n tag === 'input' ||\n tag === 'select' ||\n tag === 'textarea';\n if (!interactive) {\n if (!target.hasAttribute('tabindex')) {\n this.context.renderer.setAttribute(target, 'tabindex', '0');\n }\n if (!target.getAttribute('role')) {\n this.context.renderer.setAttribute(target, 'role', 'button');\n }\n }\n }\n const clickCleanup = this.context.renderer.listen(target, 'click', start);\n const keyCleanup = this.context.renderer.listen(target, 'keydown', start);\n this.triggerCleanup = () => {\n clickCleanup();\n keyCleanup();\n };\n return;\n }\n\n this.triggerTimer = this.context.injector\n .get(CRAFT_TEMPORAL_RUNTIME, new RealCraftTemporalRuntime())\n .schedule(() => this.startLoad(), 0, {\n kind: 'defer-trigger',\n owner: this.context.componentName,\n });\n this.triggerCleanup = () => this.triggerTimer?.cancel();\n }\n\n private firstElementInView(): Element | undefined {\n let current = this.view.firstNode().nextSibling;\n while (current && current !== this.view.lastNode()) {\n if (current.nodeType === 1) {\n return current as Element;\n }\n current = current.nextSibling;\n }\n return undefined;\n }\n\n private setBusy(busy: boolean): void {\n const target = this.firstElementInView();\n if (!target) return;\n if (busy) {\n this.context.renderer.setAttribute(target, 'aria-busy', 'true');\n } else {\n this.context.renderer.removeAttribute(target, 'aria-busy');\n }\n }\n\n private startLoad(): void {\n if (this.state !== 'placeholder' || this.destroyed) {\n return;\n }\n this.state = 'loading';\n this.triggerCleanup?.();\n this.triggerCleanup = undefined;\n this.setBusy(true);\n this.view.patchChildren(\n this.node.loading\n ? renderDeferChildren(this.context, 'loading', this.node.loading)\n : this.node.placeholder\n ? renderDeferChildren(\n this.context,\n 'placeholder',\n this.node.placeholder,\n )\n : [],\n );\n\n const loader = this.node.loader;\n executeCraftComponentFactoryAsync(\n function* () {\n return yield* craftLazy(loader);\n },\n [],\n this.context.injector,\n )\n .then((settled) => {\n if (this.destroyed) {\n return;\n }\n if (settled.kind === 'shortCircuit') {\n this.state = 'error';\n this.loadError = settled.exception;\n this.view.patchChildren(\n this.node.error\n ? renderDeferChildren(this.context, 'error', this.node.error, [\n settled.exception,\n ])\n : [],\n );\n this.setBusy(false);\n return;\n }\n\n this.state = 'loaded';\n this.loadedValue = settled.value;\n this.view.patchChildren(\n renderDeferChildren(this.context, 'resolve', this.node.resolve, [\n settled.value,\n ]),\n );\n this.setBusy(false);\n })\n .catch((error: unknown) => {\n if (!this.destroyed) {\n this.state = 'error';\n this.loadError = error;\n this.view.patchChildren(\n this.node.error\n ? renderDeferChildren(this.context, 'error', this.node.error, [\n error,\n ])\n : [],\n );\n this.setBusy(false);\n }\n });\n }\n\n destroy(): void {\n this.destroyed = true;\n this.triggerCleanup?.();\n this.view.destroy();\n }\n}\n\nclass HeadingSectionRenderedNode implements RenderedNode {\n readonly kind = 'heading-section';\n private readonly view: FragmentRenderedNode;\n\n constructor(\n node: HeadingSectionNode,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n ) {\n const level = node.reset ? 1 : Math.min(6, (context.headingLevel ?? 1) + 1);\n this.view = createFragment(\n parent,\n before,\n childContext(context, { headingLevel: level }),\n node.children,\n 'craft-heading-section',\n );\n }\n\n firstNode(): NativeNode {\n return this.view.firstNode();\n }\n\n lastNode(): NativeNode {\n return this.view.lastNode();\n }\n\n patch(node: CraftNode): boolean {\n if (node.kind !== 'heading-section') return false;\n this.view.patchChildren(node.children);\n return true;\n }\n\n destroy(): void {\n this.view.destroy();\n }\n}\n\nclass HeadingRenderedNode implements RenderedNode {\n readonly kind = 'heading';\n private readonly elementView: ElementRenderedNode;\n private readonly tag: string;\n\n constructor(\n node: HeadingNode,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n ) {\n const level = Math.min(6, Math.max(1, context.headingLevel ?? 1));\n this.tag = `h${level}`;\n const created = createElementForRender(this.tag, parent, before, context);\n this.elementView = new ElementRenderedNode(\n created.element,\n this.tag,\n created.context,\n {\n kind: 'element',\n tag: this.tag,\n props: node.props,\n children: node.children,\n },\n );\n }\n\n firstNode(): NativeNode {\n return this.elementView.firstNode();\n }\n\n lastNode(): NativeNode {\n return this.elementView.lastNode();\n }\n\n patch(node: CraftNode): boolean {\n if (node.kind !== 'heading') return false;\n return this.elementView.patch({\n kind: 'element',\n tag: this.tag,\n props: node.props,\n children: node.children,\n } as ElementNodeBase);\n }\n\n destroy(): void {\n this.elementView.destroy();\n }\n}\n\nfunction mountNode(\n node: CraftNode,\n parent: NativeParent,\n before: NativeNode | null,\n context: RenderContext,\n): RenderedNode {\n switch (node.kind) {\n case 'text': {\n const created = createTextForRender(\n node.value,\n parent,\n before,\n context,\n true,\n );\n return new TextRenderedNode(\n created.text,\n node.value,\n created.context.renderer,\n );\n }\n case 'reactive-text': {\n const created = createTextForRender('', parent, before, context, false);\n return new ReactiveTextRenderedNode(\n created.text,\n node.binding,\n created.context,\n );\n }\n case 'element': {\n const created = createElementForRender(node.tag, parent, before, context);\n if (created.context.rootScope) {\n created.context.renderer.setAttribute(\n created.element,\n 'data-craft-root',\n created.context.rootScope,\n );\n }\n if (created.context.contentScope) {\n created.context.renderer.setAttribute(\n created.element,\n 'data-craft-content',\n created.context.contentScope,\n );\n }\n return new ElementRenderedNode(\n created.element,\n node.tag,\n created.context,\n node,\n );\n }\n case 'component':\n return new ComponentRenderedNode(\n node.component,\n node.props,\n parent,\n before,\n node.injector\n ? childContext(context, { injector: node.injector })\n : context,\n undefined,\n undefined,\n [],\n node.declarationContext as RenderContext | undefined,\n );\n case 'directive':\n return new CraftDirectiveRenderedNode(node, parent, before, context);\n case 'each': {\n const start = mountComment(parent, 'craft-each:start', before, context);\n const end = mountComment(parent, 'craft-each:end', before, context);\n return new EachRenderedNode(node, parent, start, end, context);\n }\n case 'if': {\n return new IfBlockRenderedNode(node, parent, before, context);\n }\n case 'heading': {\n return new HeadingRenderedNode(node, parent, before, context);\n }\n case 'heading-section': {\n return new HeadingSectionRenderedNode(node, parent, before, context);\n }\n case 'pending-block': {\n return new PendingBlockRenderedNode(node, parent, before, context);\n }\n case 'catch-block': {\n return new CatchBlockRenderedNode(node, parent, before, context);\n }\n case 'field-exception-block': {\n return new FieldExceptionBlockRenderedNode(node, parent, before, context);\n }\n case 'match-block': {\n return new MatchBlockRenderedNode(node, parent, before, context);\n }\n case 'defer':\n return new DeferRenderedNode(node, parent, before, context);\n case 'projection':\n return new ProjectionRenderedNode(node, parent, before, context);\n case 'template':\n return new TemplateRenderedNode(node, parent, before, context);\n }\n}\n\nclass HostPropertyBindings {\n private props: Readonly<Record<string, unknown>> = {};\n private readonly bindings = new Map<\n string,\n { readonly source: unknown; readonly effectRef: EffectRef }\n >();\n\n private readonly host: Element;\n private readonly context: RenderContext;\n\n constructor(host: Element, context: RenderContext) {\n this.host = host;\n this.context = context;\n }\n\n patch(next: Readonly<Record<string, unknown>>): void {\n const renderer = this.context.renderer;\n const previousAttributes = flattenAttributes(this.props);\n const nextAttributes = flattenAttributes(next);\n\n for (const key of previousAttributes.keys()) {\n if (!nextAttributes.has(key)) {\n this.destroyBinding(`attribute:${key}`);\n applyAttribute(renderer, this.host, key, null, this.context);\n }\n }\n for (const [key, value] of nextAttributes) {\n if (typeof value === 'function') {\n this.updateBinding(\n `attribute:${key}`,\n value,\n () => resolveTemplateValue(value, this.context),\n (resolved) =>\n applyAttribute(renderer, this.host, key, resolved, this.context),\n );\n } else {\n this.destroyBinding(`attribute:${key}`);\n if (\n !Object.is(previousAttributes.get(key), value) ||\n typeof previousAttributes.get(key) === 'function'\n ) {\n applyAttribute(renderer, this.host, key, value, this.context);\n }\n }\n }\n\n if (containsRenderBinding(next['class'])) {\n this.updateBinding(\n 'class',\n next['class'],\n () => className(next['class'], this.context),\n (value) => {\n if (value) {\n renderer.setAttribute(this.host, 'class', String(value));\n } else {\n renderer.removeAttribute(this.host, 'class');\n }\n },\n );\n } else {\n this.destroyBinding('class');\n if (\n !Object.is(this.props['class'], next['class']) ||\n containsRenderBinding(this.props['class'])\n ) {\n const value = className(next['class'], this.context);\n if (value) {\n renderer.setAttribute(this.host, 'class', value);\n } else {\n renderer.removeAttribute(this.host, 'class');\n }\n }\n }\n\n if (containsRenderBinding(next['style'])) {\n this.updateBinding(\n 'style',\n next['style'],\n () => resolveStyleBindingValue(next['style'], this.context),\n (value) => {\n renderer.removeAttribute(this.host, 'style');\n applyStyles(renderer, this.host, undefined, value, this.context);\n },\n sameStyleValue,\n );\n } else {\n this.destroyBinding('style');\n if (\n !Object.is(this.props['style'], next['style']) ||\n containsRenderBinding(this.props['style'])\n ) {\n if (containsRenderBinding(this.props['style'])) {\n renderer.removeAttribute(this.host, 'style');\n }\n applyStyles(\n renderer,\n this.host,\n containsRenderBinding(this.props['style'])\n ? undefined\n : this.props['style'],\n next['style'],\n this.context,\n );\n }\n }\n\n this.props = next;\n }\n\n destroy(): void {\n this.bindings.forEach(({ effectRef }) => effectRef.destroy());\n this.bindings.clear();\n }\n\n private updateBinding(\n key: string,\n source: unknown,\n evaluate: () => unknown,\n apply: (value: unknown) => void,\n equals: (left: unknown, right: unknown) => boolean = Object.is,\n ): void {\n const current = this.bindings.get(key);\n if (current?.source === source) return;\n current?.effectRef.destroy();\n\n let initialized = false;\n let previous: unknown;\n const effectRef = createRenderEffect(\n this.context,\n `host-${key}-binding`,\n () => {\n const value = evaluate();\n if (!initialized || !equals(previous, value)) {\n apply(value);\n previous = value;\n initialized = true;\n }\n },\n );\n this.bindings.set(key, { source, effectRef });\n }\n\n private destroyBinding(key: string): void {\n this.bindings.get(key)?.effectRef.destroy();\n this.bindings.delete(key);\n }\n}\n\nexport interface MountedCraftComponent<Props extends object> {\n updateProps(props: Props): void;\n destroy(): void;\n}\n\nexport interface MountedCraftTemplate<Context> {\n updateContext(context: Context): void;\n locator(tag: string, criteria: RuntimeLocatorCriteria): Element | undefined;\n destroy(): void;\n}\n\nexport type InterpretedRenderOptions = Readonly<{\n renderer: CraftDomAdapter;\n mode?: 'create' | 'hydrate';\n identity?: CraftRenderIdentity;\n hydration?: HydrationCursor;\n emitHydrationKeys?: boolean;\n styleRoot?: Document | ShadowRoot;\n styles?: CraftStyleRegistry;\n ssr?: CraftSsrCoordinator;\n serverStyles?: CraftServerStyleCollector;\n}>;\n\nexport function mountInterpretedComponent<Props extends object>(\n component: CraftComponent<Props>,\n host: Element,\n injector: Injector | object,\n props: Props,\n): MountedCraftComponent<Props> {\n const craftInjector = ɵcraftInjectorFromHost(injector);\n const renderer = createBrowserDomAdapter(host.ownerDocument);\n const rootNode = host.getRootNode();\n const styleRoot: Document | ShadowRoot =\n (typeof Document !== 'undefined' && rootNode instanceof Document) ||\n (typeof ShadowRoot !== 'undefined' && rootNode instanceof ShadowRoot)\n ? (rootNode as Document | ShadowRoot)\n : (host.ownerDocument ?? document);\n const styles = craftInjector.get(\n CRAFT_STYLE_REGISTRY as unknown as ProviderToken<CraftStyleRegistry>,\n ɵfallbackCraftStyleRegistry,\n );\n return mountInterpretedComponentWithOptions(\n component,\n host,\n craftInjector,\n props,\n { renderer, styleRoot, styles },\n );\n}\n\nexport function mountInterpretedComponentWithOptions<Props extends object>(\n component: CraftComponent<Props>,\n host: Element,\n injector: Injector | object,\n props: Props,\n options: InterpretedRenderOptions,\n): MountedCraftComponent<Props> {\n const craftInjector = ɵcraftInjectorFromHost(injector);\n const identity =\n options.identity ??\n createCraftRenderIdentity([component[CRAFT_COMPONENT].name, 0]);\n let instance: ComponentRenderedNode;\n try {\n instance = new ComponentRenderedNode(\n component as unknown as CraftComponent<object>,\n props,\n host,\n null,\n {\n renderer: options.renderer,\n injector: craftInjector,\n mode: options.mode ?? 'create',\n identity,\n hydration: options.hydration,\n emitHydrationKeys: options.emitHydrationKeys,\n styleRoot: options.styleRoot,\n styles: options.styles,\n ssr: options.ssr,\n serverStyles: options.serverStyles,\n },\n host,\n );\n } catch (error) {\n if (isCraftGenShortCircuit(error)) {\n throw new CraftUnhandledExceptionError(error.exception);\n }\n throw error;\n }\n\n return {\n updateProps(nextProps) {\n instance.updateProps(nextProps);\n },\n destroy() {\n instance.destroy();\n },\n };\n}\n\nexport function mountInterpretedComponentTemplate<Context>(\n component: CraftComponent<any>,\n host: Element,\n injector: Injector | object,\n context: Context,\n additionalProviders: readonly CraftServiceProvider[] = [],\n): MountedCraftTemplate<Context> {\n const craftInjector = ɵcraftInjectorFromHost(injector);\n const renderer = createBrowserDomAdapter(host.ownerDocument);\n const rootNode = host.getRootNode();\n const styleRoot: Document | ShadowRoot =\n (typeof Document !== 'undefined' && rootNode instanceof Document) ||\n (typeof ShadowRoot !== 'undefined' && rootNode instanceof ShadowRoot)\n ? (rootNode as Document | ShadowRoot)\n : (host.ownerDocument ?? document);\n const styles = craftInjector.get(\n CRAFT_STYLE_REGISTRY as unknown as ProviderToken<CraftStyleRegistry>,\n ɵfallbackCraftStyleRegistry,\n );\n let instance: ComponentRenderedNode;\n try {\n instance = new ComponentRenderedNode(\n component as CraftComponent<object>,\n {},\n host,\n null,\n {\n renderer,\n injector: craftInjector,\n styleRoot,\n styles,\n mode: 'create',\n identity: createCraftRenderIdentity([\n component[CRAFT_COMPONENT].name,\n 0,\n ]),\n },\n host,\n { value: context },\n additionalProviders,\n );\n } catch (error) {\n if (isCraftGenShortCircuit(error)) {\n throw new CraftUnhandledExceptionError(error.exception);\n }\n throw error;\n }\n\n return {\n updateContext(nextContext) {\n instance.updateContext(nextContext);\n },\n locator(tag, criteria) {\n return instance.locator(host, tag, criteria);\n },\n destroy() {\n instance.destroy();\n },\n };\n}\n"]}
|