@expressive/dom 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["style","macro"],"sources":["../src/adapter.ts","../src/context.ts","../src/lazy.ts","../src/css.ts","../src/appearance-protocol.ts","../src/appearance.ts","../src/declarations.ts","../src/stylesheet.ts","../src/render.ts"],"sourcesContent":["import { Component, Context, State, unbind } from '@expressive/mvc';\nimport { watch } from '@expressive/mvc/observable';\n\nimport { schedule, transition, unschedule } from './scheduler';\nimport type { Schedulable } from './scheduler';\n\ninterface UseState extends State {\n use?(...props: any[]): Promise<void> | void;\n mount?(): (() => void) | void;\n}\n\ninterface UseSlot {\n Type: State.Type;\n context: Context;\n instance: UseState;\n proxy: State;\n release: () => void;\n mounted?: true;\n cleanup?: (() => void) | void;\n apply: (...args: any[]) => unknown;\n}\n\ninterface Scope extends Schedulable {\n active: boolean;\n childContext: Context;\n context: Context;\n hot?: boolean;\n kind: 'component' | 'function' | 'collection';\n subscriptions: (() => void)[];\n uses: UseSlot[];\n useIndex: number;\n}\n\nlet current: Scope | undefined;\nlet collecting: (() => void)[] | undefined;\n\nfunction enter<T>(scope: Scope, render: () => T): T {\n const parent = current;\n const releases = collecting;\n const next: (() => void)[] = [];\n\n current = scope;\n collecting = next;\n scope.childContext = scope.context;\n scope.useIndex = 0;\n\n try {\n const output = render();\n\n if (scope.kind == 'function' && scope.useIndex !== scope.uses.length) {\n if (!scope.hot)\n throw new Error('State.use() calls must keep the same order on every function-component render.');\n\n truncate(scope, scope.useIndex);\n }\n\n return output;\n } finally {\n scope.hot = undefined;\n current = parent;\n collecting = releases;\n scope.subscriptions.forEach((release) => release());\n scope.subscriptions = next;\n }\n}\n\nfunction dispose(scope: Scope) {\n scope.active = false;\n unschedule(scope);\n scope.subscriptions.forEach((release) => release());\n scope.subscriptions = [];\n truncate(scope, 0);\n}\n\n/** Destroy the `State.use()` slots of a scope from `index` on. */\nfunction truncate(scope: Scope, index: number) {\n for (let i = scope.uses.length - 1; i >= index; i--) {\n const slot = scope.uses[i];\n\n slot.release();\n if (typeof slot.cleanup == 'function') slot.cleanup();\n slot.context.pop();\n slot.instance.set(null);\n }\n\n scope.uses.length = index;\n}\n\nfunction commit(scope: Scope) {\n for (const slot of scope.uses)\n if (!slot.mounted) {\n slot.mounted = true;\n slot.cleanup = slot.instance.mount?.();\n }\n}\n\nfunction requireScope(): Scope {\n if (!current)\n throw new Error('State.get() and State.use() may only run while @expressive/dom is rendering.');\n\n return current;\n}\n\nfunction tracked<T extends object>(target: T, required?: boolean): T {\n const scope = requireScope();\n let proxy = target;\n let first = true;\n\n const release = watch(\n target,\n (next) => {\n proxy = next;\n if (!first && scope.active) schedule(scope);\n first = false;\n },\n required,\n transition\n );\n\n collecting!.push(release);\n return proxy;\n}\n\ntype NoVoid<T> = T extends undefined | void ? null : T;\n\ndeclare module '@expressive/mvc' {\n interface UseState extends State {\n use?(...props: any[]): Promise<void> | void;\n mount?(): (() => void) | void;\n }\n\n namespace State {\n type ForceRefresh = {\n (): void;\n <T = void>(waitFor: Promise<T>): Promise<T>;\n <T = void>(invoke: () => Promise<T>): Promise<T>;\n };\n\n type GetFactory<T extends State, R> = (\n this: T,\n current: T,\n refresh: ForceRefresh\n ) => R;\n\n type UseArgs<T extends State> = T extends { use(...props: infer P): any }\n ? P\n : State.Args<T>;\n\n function get<T extends State>(this: State.Extends<T>): T;\n function get<T extends State>(this: State.Extends<T>, required: false): T | undefined;\n function get<T extends State>(this: State.Extends<T>, required: true): Required<T>;\n function get<T extends State, R>(\n this: State.Extends<T>,\n factory: GetFactory<T, R>\n ): NoVoid<R>;\n function use<T extends UseState>(\n this: State.Type<T>,\n ...args: UseArgs<T>\n ): T;\n }\n\n namespace Component {\n const use: never;\n }\n\n interface Component {\n mount?(): (() => void) | void;\n }\n}\n\n(State as any).get = function get<T extends State>(\n this: State.Extends<T>,\n argument?: boolean | State.GetFactory<T, unknown>\n) {\n const scope = requireScope();\n const instance = scope.childContext.get(this, argument === false ? false : true);\n\n if (!instance) return undefined;\n\n const proxy = tracked(instance, argument === true);\n\n if (typeof argument != 'function') return proxy;\n\n const refresh = ((action?: Promise<unknown> | (() => Promise<unknown>)) => {\n if (typeof action == 'function') action = action();\n schedule(scope);\n return action instanceof Promise ? action.finally(() => schedule(scope)) : undefined;\n }) as State.ForceRefresh;\n\n return argument.call(proxy, proxy, refresh) ?? null;\n};\n\n(State as any).use = function use<T extends UseState>(\n this: State.Type<T>,\n ...args: State.UseArgs<T>\n) {\n const scope = requireScope();\n\n if (scope.kind != 'function')\n throw new Error('State.use() is only available at the top level of a function component.');\n\n const index = scope.useIndex++;\n let slot = scope.uses[index] as UseSlot | undefined;\n\n if (slot && slot.Type !== this) {\n if (!scope.hot)\n throw new Error('State.use() calls must keep the same order on every function-component render.');\n\n truncate(scope, index);\n slot = undefined;\n }\n\n if (!slot) {\n let instance!: T;\n const assign = (value: unknown) =>\n typeof value == 'object' && value && instance.set(value as State.Assign<T>);\n let apply: (...values: any[]) => unknown = (...values) =>\n Promise.all(values.flat().map(assign));\n\n instance = new (this as any)((self: T) => {\n const own = self as T & UseState;\n\n if (typeof own.use == 'function') {\n apply = own.use.bind(own);\n apply(...args);\n return;\n }\n\n return args;\n });\n const context = scope.childContext.push(instance);\n\n slot = {\n Type: this,\n context,\n instance,\n proxy: instance,\n release: undefined!,\n apply\n };\n\n let first = true;\n slot.release = watch(instance, (proxy) => {\n slot!.proxy = proxy;\n\n if (!first && scope.active) schedule(scope);\n first = false;\n }, undefined, transition);\n\n slot.apply = apply;\n scope.uses.push(slot);\n } else {\n slot.apply(...args);\n }\n\n scope.childContext = slot.context;\n return slot.proxy as T;\n};\n\nObject.defineProperty(Component, 'use', {\n configurable: true,\n value() {\n throw new Error(`${this} is a Component - render it instead of calling use().`);\n }\n});\n\nComponent.on({\n type(type) {\n subcomponents(type.prototype);\n },\n before(self) {\n subcomponents(self);\n }\n});\n\nfunction subcomponents(target: object) {\n for (const key of Object.getOwnPropertyNames(target)) {\n if (!/^[A-Z]/.test(key)) continue;\n\n const { value } = Object.getOwnPropertyDescriptor(target, key)!;\n\n if (typeof value != 'function') continue;\n\n Object.defineProperty(target, key, {\n configurable: true,\n get(this: Component) {\n const owner = this.is;\n let render = unbind(value);\n const Subcomponent = (props: unknown) =>\n render.call(tracked(owner), props);\n\n Object.defineProperty(owner, key, {\n configurable: true,\n get: () => Subcomponent,\n set(next: Function) {\n render = next;\n }\n });\n\n return Subcomponent;\n },\n set(this: Component, next: unknown) {\n Object.defineProperty(this, key, {\n value: next,\n writable: true,\n enumerable: true,\n configurable: true\n });\n\n subcomponents(this);\n }\n });\n }\n}\n\nexport { commit, dispose, enter };\nexport type { Scope };\n","import { Context, State } from '@expressive/mvc';\nimport type { Component, UseState } from '@expressive/mvc';\n\nimport type { Node } from './vnode';\n\nnamespace Consumer {\n export interface Props<T extends State> {\n for: State.Extends<T>;\n children: (value: T) => Node;\n }\n}\n\nfunction Consumer<T extends State>(props: Consumer.Props<T>): Node {\n return props.for.get((value) => props.children(value));\n}\n\nnamespace Provider {\n export type ForEach<T extends State> = (state: T) => void;\n\n export interface SharedProps {\n children?: Node;\n fallback?: Node;\n name?: string;\n }\n\n export type Props<T extends State = State> = SharedProps & {\n for?: Context.Accept<T>;\n is?: ForEach<T>;\n } & Record<string, unknown>;\n}\n\nfunction Provider<T extends State>(_props: Provider.Props<T>): Component.Node {\n throw new Error('Provider must be rendered by @expressive/dom.');\n}\n\nfunction provide<T extends State>(context: Context, props: Provider.Props<T>) {\n const { for: input, is, children: _children, fallback: _fallback, name: _name, ...rest } = props;\n const mount: (() => void)[] = [];\n let single: State | undefined;\n const solo = State.is(input) || input instanceof State;\n\n context.set(input || {}, (state, owned) => {\n if (solo) single = state;\n is?.(state as T);\n\n if (owned) {\n let cleanup: (() => void) | void;\n mount.push(() => {\n cleanup = (state as UseState).mount?.();\n });\n return () => cleanup?.();\n }\n });\n\n if (solo && !single) {\n const Type = (input instanceof State ? input.constructor : input) as State.Extends<T>;\n single = context.get(Type, false);\n }\n\n if (single && Object.keys(rest).length) single.set(rest);\n\n return () => mount.forEach((commit) => commit());\n}\n\nexport { Consumer, Provider, provide };\n","import type { ComponentType, FunctionComponent } from './vnode';\nimport { vnode } from './vnode';\n\ntype Module<P> = { default: ComponentType<P> } | ComponentType<P>;\n\nfunction lazy<P>(load: () => Promise<Module<P>>): FunctionComponent<P> {\n let pending: Promise<void> | undefined;\n let resolved: ComponentType<P> | undefined;\n let rejected: unknown;\n let failed = false;\n\n return function Lazy(props: P) {\n if (failed) throw rejected;\n if (resolved) return vnode(resolved, props);\n\n if (!pending)\n pending = load().then(\n (module) => {\n const output = typeof module == 'function' ? module : module?.default;\n\n if (typeof output != 'function') {\n failed = true;\n rejected = new Error('lazy() loader resolved no component.');\n return;\n }\n\n resolved = output;\n },\n (error) => {\n failed = true;\n rejected = error;\n }\n );\n\n throw pending;\n };\n}\n\nexport { lazy };\n","import type { macro, style } from './stylesheet';\n\nconst unitless = new Map<string, boolean>();\n\nlet probe: CSSStyleDeclaration | undefined;\n\n/**\n * Does the CSSOM accept a bare number for this property? Probed once with a\n * canonical value; the answer is a property of CSS, not of the value.\n */\nfunction bare(property: string) {\n let known = unitless.get(property);\n\n if (known === undefined) {\n probe ||= document.createElement('div').style;\n (probe as any)[property] = '';\n (probe as any)[property] = 1;\n unitless.set(property, known = Boolean((probe as any)[property]));\n }\n\n return known;\n}\n\nfunction sized(property: string, value: unknown): unknown {\n if (Array.isArray(value))\n return value.map((entry) => sized(property, entry));\n\n return typeof value == 'number' && value !== 0 && !bare(property)\n ? `${value}px`\n : value;\n}\n\n/**\n * Web macro pack. Register with `macro(css)` to opt into pixel units for\n * numbers and the axis shorthands CSS itself does not provide.\n */\nconst css = {\n '*': (value: unknown, key: string) => ({ [key]: sized(key, value) }),\n mx: (value: style.Value) => ({ marginLeft: value, marginRight: value }),\n my: (value: style.Value) => ({ marginTop: value, marginBottom: value }),\n px: (value: style.Value) => ({ paddingLeft: value, paddingRight: value }),\n py: (value: style.Value) => ({ paddingTop: value, paddingBottom: value }),\n size: (value: style.Value) =>\n Array.isArray(value)\n ? { width: value[0], height: value[1] }\n : { width: value, height: value }\n} satisfies macro.Map;\n\ndeclare module '@expressive/dom' {\n namespace macro {\n interface Registry {\n mx(value: style.Value): style.Map;\n my(value: style.Value): style.Map;\n px(value: style.Value): style.Map;\n py(value: style.Value): style.Map;\n size(value: style.Value): style.Map;\n }\n }\n}\n\nexport { css };\n","type Declaration = Record<string, unknown>;\n\ninterface Block {\n declarations: Declaration;\n name: string;\n ordinal: number;\n}\n\ninterface ResolvedAppearance {\n blocks?: Block[];\n classes?: string[];\n context?: AppearanceContext;\n declarations?: Declaration;\n}\n\ninterface AppearanceContext {\n readonly scope?: unknown;\n readonly base?: object;\n resolve(\n props: Record<string, unknown>,\n tag?: string\n ): ResolvedAppearance | undefined;\n}\n\ntype EnterAppearance = (parent?: AppearanceContext) => AppearanceContext;\ntype Emit = (block: Block, depth: number, document: Document) => string;\n\nconst registrations = new WeakMap<object, EnterAppearance>();\nconst tokens = new WeakMap<object, ResolvedAppearance>();\nlet root: (() => AppearanceContext | undefined) | undefined;\nlet emitter: Emit | undefined;\nlet rendered = false;\n\nfunction registerAppearance(type: object, enter: EnterAppearance) {\n registrations.set(type, enter);\n}\n\nfunction registerAppearanceRoot(factory: () => AppearanceContext | undefined) {\n root = factory;\n}\n\nfunction registerEmitter(emit: Emit) {\n emitter = emit;\n}\n\nfunction emitClass(block: Block, depth: number, document: Document) {\n return emitter!(block, depth, document);\n}\n\nfunction appearanceRoot() {\n rendered = true;\n return root?.();\n}\n\n/** Has anything rendered yet - global registration is closed after it has. */\nfunction appearanceSealed() {\n return rendered;\n}\n\nfunction enterAppearance(parent: AppearanceContext | undefined, type: Function) {\n const chain: EnterAppearance[] = [];\n let current: object | null = type;\n\n while (current && current !== Function.prototype) {\n const enter = registrations.get(current);\n if (enter) chain.unshift(enter);\n current = Object.getPrototypeOf(current);\n }\n\n for (const enter of chain) parent = enter(parent);\n return parent;\n}\n\nfunction createAppearanceToken(appearance: ResolvedAppearance) {\n const token = {};\n tokens.set(token, appearance);\n return token;\n}\n\nfunction appearanceToken(value: unknown) {\n return value && typeof value == 'object' ? tokens.get(value) : undefined;\n}\n\nexport {\n appearanceRoot,\n appearanceSealed,\n appearanceToken,\n createAppearanceToken,\n emitClass,\n enterAppearance,\n registerAppearance,\n registerAppearanceRoot,\n registerEmitter\n};\n\nexport type { AppearanceContext, Block, Declaration, ResolvedAppearance };\n","import { appearanceSealed, createAppearanceToken, registerAppearance, registerAppearanceRoot } from './appearance-protocol';\nimport type { AppearanceContext, Block, Declaration, ResolvedAppearance } from './appearance-protocol';\n\ntype StyleMap = Record<string, unknown>;\n\ntype Macro = (value: unknown, key: string) => unknown;\ntype Depths = ReadonlyMap<string, number>;\n\ninterface Expansion {\n block?: Block;\n classes: string[];\n declarations: Declaration;\n nested: StyleMap[];\n}\n\ninterface StyleScope {\n children: WeakMap<object, StyleScope>;\n expansions: Map<string, Expansion>;\n label: string;\n labels: Record<string, string>;\n names: readonly string[];\n own: Declaration;\n routes: Map<string, AppearanceRoute>;\n rules: StyleMap;\n}\n\ninterface AppearanceRoute {\n flags: readonly string[];\n scope: StyleScope;\n tag?: string;\n}\n\nconst bases = new WeakMap<StyleScope, Declaration>();\nconst chains = new WeakMap<StyleScope, Map<string, Macro[]>>();\nconst contexts = new WeakMap<StyleScope, AppearanceContext>();\nconst rootScopes = new WeakMap<object, StyleScope>();\nconst STYLES = Symbol('@expressive/dom.styles');\nconst entered = new WeakSet<object>();\nconst globals: StyleMap[] = [];\nlet globalContext: AppearanceContext | undefined;\n\nfunction createStyleScope(parent: StyleScope | undefined, value: unknown, label?: string, defines?: boolean): StyleScope | undefined {\n if (!isObject(value)) return parent;\n\n const cache = parent?.children || rootScopes;\n const cached = cache.get(value);\n if (cached) return cached;\n\n const own: string[] = [];\n const source: StyleMap = {};\n const base: Declaration = {};\n\n for (const key of Object.keys(value)) {\n const entry = (value as StyleMap)[key];\n\n if (key[0] == '$')\n throw new Error(`Reserved key \"${key}\" in style map.`);\n\n if (key[0] == '_') {\n if (!isObject(entry))\n throw new Error(`Rule \"${key}\" must be an object. Macros are defined by macro().`);\n\n const name = key.slice(1);\n own.push(name);\n source[name] = entry;\n } else if (defines && typeof entry == 'function') {\n own.push(key);\n source[key] = entry;\n } else base[key] = entry;\n }\n\n const names = parent\n ? [...parent.names, ...own.filter((name) => !parent.names.includes(name))]\n : own;\n const rules = Object.create(parent?.rules || null) as StyleMap;\n const labels = Object.create(parent?.labels || null) as Record<string, string>;\n const scopeLabel = label || parent?.label || 'style';\n\n for (const name of own) {\n const rule = source[name];\n const inherited = parent?.rules[name];\n rules[name] = isObject(inherited) && isObject(rule) ? { ...inherited, ...rule } : rule;\n labels[name] = scopeLabel;\n }\n\n const scope: StyleScope = {\n children: new WeakMap(),\n expansions: new Map(),\n label: scopeLabel,\n labels,\n names,\n own: base,\n routes: new Map(),\n rules\n };\n\n cache.set(value, scope);\n return scope;\n}\n\nfunction createContext(scope: StyleScope): AppearanceContext {\n const cached = contexts.get(scope);\n if (cached) return cached;\n\n const context: AppearanceContext = {\n scope,\n base: baseToken(scope),\n resolve(props, tag) {\n return resolveAppearance(scope, props, tag);\n }\n };\n\n contexts.set(scope, context);\n return context;\n}\n\nfunction extendContext(parent: AppearanceContext | undefined, maps: readonly StyleMap[], label: string, defines?: boolean) {\n let scope = parent?.scope as StyleScope | undefined;\n const base: Declaration = { ...(scope && bases.get(scope)) };\n\n for (const map of maps) {\n scope = createStyleScope(scope, map, label, defines);\n Object.assign(base, scope!.own);\n }\n\n if (Object.keys(base).length) bases.set(scope!, base);\n\n return createContext(scope!);\n}\n\nfunction baseToken(scope: StyleScope) {\n const base = bases.get(scope);\n if (!base) return undefined;\n\n const expansion = expand(scope, base, new Map());\n const appearance: ResolvedAppearance = {};\n\n if (Object.keys(expansion.declarations).length)\n appearance.blocks = [{ declarations: expansion.declarations, name: scope.label, ordinal: -1 }];\n\n if (expansion.classes.length) appearance.classes = expansion.classes;\n\n return createAppearanceToken(appearance);\n}\n\nfunction style<T extends object>(type: T, rules: StyleMap): T {\n if (entered.has(type)) throw new Error('Cannot add styles after a component has rendered.');\n\n if (Object.hasOwn(type, STYLES)) (type as any)[STYLES].push(rules);\n else {\n const label = (type as { displayName?: string }).displayName || (type as Function).name;\n\n Object.defineProperty(type, STYLES, { configurable: true, value: [rules] });\n registerAppearance(type, (parent) => {\n entered.add(type);\n return extendContext(parent, (type as any)[STYLES], label);\n });\n }\n\n return type;\n}\n\nfunction macro(rules: StyleMap): StyleMap {\n for (const key of Object.keys(rules))\n if (key[0] != '_' && key[0] != '$' && typeof rules[key] != 'function')\n throw new Error(`Macro \"${key}\" must be a function. Use \"_${key}\" to register a rule.`);\n\n if (appearanceSealed())\n throw new Error('Cannot add macros after rendering has started.');\n\n globals.push(rules);\n globalContext = undefined;\n registerAppearanceRoot(() => globalContext ||= extendContext(undefined, globals, 'global', true));\n return rules;\n}\n\nfunction createAppearanceRoute(\n scope: StyleScope | undefined,\n props: Record<string, unknown>,\n tag?: string\n): AppearanceRoute | undefined {\n if (!scope) return undefined;\n\n const keys = Object.keys(props).filter((key) => key.startsWith('_')).sort();\n const id = `${tag || ''}\\0${keys.join('\\0')}`;\n const cached = scope.routes.get(id);\n if (cached) return cached;\n\n const present = new Set(keys.map((key) => key.slice(1)));\n const flags: string[] = [];\n\n for (const name of scope.names) {\n if (!present.has(name) || name == tag) continue;\n if (isObject(scope.rules[name])) flags.push(name);\n }\n\n const route: AppearanceRoute = {\n flags,\n scope,\n tag: tag && isObject(scope.rules[tag]) ? tag : undefined\n };\n\n scope.routes.set(id, route);\n return route;\n}\n\nfunction resolveAppearance(\n scope: StyleScope | undefined,\n props: Record<string, unknown>,\n tag?: string\n): ResolvedAppearance | undefined {\n const route = createAppearanceRoute(scope, props, tag);\n\n if (!route) return undefined;\n\n const parts: Expansion[] = [];\n const names: string[] = route.tag ? [route.tag] : [];\n\n for (const name of route.flags)\n if (props[`_${name}`]) names.push(name);\n\n for (const name of names)\n parts.push(expandRule(route.scope, name));\n\n const blocks = parts.flatMap((part) => part.block ? [part.block] : []);\n const classes = parts.flatMap((part) => part.classes);\n let child: StyleScope | undefined = route.scope;\n\n for (const part of parts)\n for (const nested of part.nested)\n child = createStyleScope(child, nested, tag ? `${route.scope.label}_${tag}` : route.scope.label);\n\n if (!blocks.length && !classes.length && child === route.scope)\n return undefined;\n\n const appearance: ResolvedAppearance = {};\n if (blocks.length) appearance.blocks = blocks;\n if (classes.length) appearance.classes = classes;\n if (child !== route.scope) appearance.context = createContext(child!);\n\n return appearance;\n}\n\nfunction expandRule(scope: StyleScope, name: string) {\n let expansion = scope.expansions.get(name);\n\n if (!expansion) {\n expansion = expand(scope, scope.rules[name], new Map());\n\n if (Object.keys(expansion.declarations).length)\n expansion.block = {\n declarations: expansion.declarations,\n name: `${scope.labels[name]}_${name}`,\n ordinal: scope.names.indexOf(name)\n };\n\n scope.expansions.set(name, expansion);\n }\n\n return expansion;\n}\n\nfunction handlers(scope: StyleScope, name: string) {\n let known = chains.get(scope);\n if (!known) chains.set(scope, (known = new Map()));\n\n let chain = known.get(name);\n\n if (!chain) {\n chain = [];\n\n for (const key of [name, '*'])\n for (let rules: object | null = scope.rules; rules; rules = Object.getPrototypeOf(rules)) {\n const own = Object.getOwnPropertyDescriptor(rules, key);\n if (own && typeof own.value == 'function') chain.push(own.value as Macro);\n }\n\n known.set(name, chain);\n }\n\n return chain;\n}\n\nfunction expand(scope: StyleScope, value: unknown, depths: Depths): Expansion {\n const output: Expansion = { classes: [], declarations: {}, nested: [] };\n const nested: StyleMap = {};\n\n function walk(value: unknown, depths: Depths) {\n if (!value) return;\n\n if (typeof value == 'string') {\n output.classes.push(...value.split(/\\s+/).filter(Boolean));\n return;\n }\n\n if (Array.isArray(value)) {\n value.forEach((entry) => walk(entry, depths));\n return;\n }\n\n for (const [name, entry] of Object.entries(value as Declaration)) {\n if (name[0] == '_') {\n if (isObject(entry)) nested[name] = entry;\n continue;\n }\n\n const chain = handlers(scope, name);\n const depth = depths.get(name) || 0;\n\n if (depth < chain.length) {\n if (isPresent(entry))\n walk(\n chain[depth](entry === true ? undefined : entry, name),\n new Map(depths).set(name, depth + 1)\n );\n } else output.declarations[name] = terminal(name, entry);\n }\n }\n\n walk(value, depths);\n if (Object.keys(nested).length) output.nested.push(nested);\n return output;\n}\n\nfunction terminal(name: string, value: unknown) {\n if (Array.isArray(value)) return value.join(' ');\n\n if (typeof value == 'function' || isObject(value))\n throw new Error(`No macro handles \"${name}\".`);\n\n return typeof value == 'number' ? String(value) : value;\n}\n\nfunction isPresent(value: unknown) {\n return value !== false && value !== null && value !== undefined;\n}\n\nfunction isObject(value: unknown): value is Declaration {\n return !!value && typeof value == 'object' && !Array.isArray(value);\n}\n\nexport { createAppearanceRoute, createStyleScope, macro, resolveAppearance, style };\nexport type { AppearanceRoute, StyleMap, StyleScope };\n","type Declaration = Record<string, unknown>;\n\nfunction applyDeclarations(style: CSSStyleDeclaration, declarations: Declaration, previous: Declaration = {}) {\n const target = style as any;\n\n for (const key of Object.keys({ ...previous, ...declarations })) {\n const value = declarations[key];\n if (key.startsWith('--')) {\n style.setProperty(key, value == null ? '' : String(value));\n continue;\n }\n\n if (typeof value == 'number') target[key] = '';\n target[key] = value == null ? '' : value;\n if (typeof value == 'number' && value !== 0 && !target[key]) target[key] = `${value}px`;\n }\n}\n\nexport { applyDeclarations };\nexport type { Declaration };\n","import * as appearance from './appearance';\nimport { registerEmitter } from './appearance-protocol';\nimport type { Block } from './appearance-protocol';\nimport { applyDeclarations } from './declarations';\nimport type { Declaration } from './declarations';\n\ntype Member = Extract<keyof CSSStyleDeclaration, string>;\n\ntype Settable = {\n [K in Member]-?: CSSStyleDeclaration[K] extends Function ? never : K;\n}[Member];\n\ntype Key =\n | style.Property\n | keyof macro.Registry\n | `--${string}`\n | `_${string}`;\n\ntype Argument<K extends keyof macro.Registry> =\n macro.Registry[K] extends (value: infer A, ...rest: any[]) => any ? A : never;\n\ndeclare namespace macro {\n /**\n * Macros visible to a style map. A pack augments this interface to declare\n * what it registers with `macro()`.\n */\n interface Registry {}\n\n /** Maps one argument to style, or to keys which resolve further. */\n type Fn = (value: any, key: string) => unknown;\n\n /**\n * Body of a `macro()` map. A name declared in {@link Registry} must match its\n * declaration; an undeclared one is accepted, and becomes checkable at call\n * sites once a module augments `Registry` with it.\n */\n type Map =\n & Partial<Registry>\n & { [K in `_${string}`]?: style.Map }\n & Record<string, Fn | style.Map | undefined>;\n}\n\ndeclare namespace style {\n /** CSS property names, minus the CSSOM's own members. */\n type Property = Exclude<Settable, 'length' | 'parentRule' | 'cssText'>;\n\n /** What a declaration or macro argument may be; never a plain object. */\n type Value =\n | string\n | number\n | boolean\n | null\n | undefined\n | readonly Value[];\n\n /**\n * Body of a `style()` map. Bare keys are declarations or macro calls,\n * `_name` opens a rule or descendant scope, and `$name` is reserved.\n */\n type Map = {\n [K in Key]?:\n K extends `_${string}` ? Map :\n K extends keyof macro.Registry ? Argument<K> :\n Value;\n };\n}\n\ninterface Sheet {\n element: HTMLStyleElement;\n emitted: WeakMap<Block, Map<number, string>>;\n names: Map<string, string>;\n positions: [number, number][];\n}\n\nconst sheets = new WeakMap<Document, Sheet>();\n\nfunction style<T extends object>(type: T, rules: style.Map): T {\n appearance.style(type, rules);\n registerEmitter(emit);\n return type;\n}\n\nfunction macro(rules: macro.Map): macro.Map {\n appearance.macro(rules);\n registerEmitter(emit);\n return rules;\n}\n\nfunction emit(block: Block, depth: number, document: Document) {\n let sheet = sheets.get(document);\n\n if (!sheet?.element.sheet) {\n const element = document.createElement('style');\n element.dataset.expressive = 'dom';\n document.head.append(element);\n sheet = { element, emitted: new WeakMap(), names: new Map(), positions: [] };\n sheets.set(document, sheet);\n }\n\n let byDepth = sheet.emitted.get(block);\n if (!byDepth) sheet.emitted.set(block, (byDepth = new Map()));\n\n const cached = byDepth.get(depth);\n if (cached) return cached;\n\n const css = serialize(document, block.declarations);\n const base = (depth ? `${block.name}-d${depth}` : block.name).replace(/[^\\w-]/g, '_');\n let name = base;\n\n for (let index = 2; sheet.names.has(name) && sheet.names.get(name) !== css; index++)\n name = `${base}-${index}`;\n\n if (!sheet.names.has(name)) {\n const { positions } = sheet;\n let at = positions.findIndex(([d, o]) => d > depth || d == depth && o > block.ordinal);\n if (at < 0) at = positions.length;\n\n sheet.names.set(name, css);\n positions.splice(at, 0, [depth, block.ordinal]);\n sheet.element.sheet!.insertRule(`.${name}{${css}}`, at);\n }\n\n byDepth.set(depth, name);\n return name;\n}\n\nfunction serialize(document: Document, declarations: Declaration) {\n const value = document.createElement('div').style as any;\n applyDeclarations(value, declarations);\n return value.cssText;\n}\n\nexport { macro, style };\n","import { Component, Context } from '@expressive/mvc';\nimport { has, map } from '@expressive/mvc';\nimport { watch } from '@expressive/mvc/observable';\nimport { Fragment } from '@expressive/mvc/runtime';\n\nimport { commit, dispose, enter } from './adapter';\nimport { latest, same, track, untrack } from './hot';\nimport type { Scope } from './adapter';\nimport {\n appearanceRoot,\n appearanceToken,\n createAppearanceToken,\n emitClass,\n enterAppearance\n} from './appearance-protocol';\nimport type { AppearanceContext, ResolvedAppearance } from './appearance-protocol';\nimport { Provider, provide } from './context';\nimport { applyDeclarations } from './declarations';\nimport { afterFlush, claim as dequeue, release, schedule, settle as absorb, transition } from './scheduler';\nimport { PORTAL, childrenOf, isVNode } from './vnode';\nimport type { Key, Node as RenderNode, VNode } from './vnode';\n\ntype Container = Element | DocumentFragment;\ntype Kind = 'collection' | 'component' | 'element' | 'fragment' | 'function' | 'portal' | 'provider' | 'text';\n\ninterface Boundary {\n catch?: (error: Error) => Promise<void> | void;\n fallback: () => RenderNode;\n owner?: Fiber;\n parent?: Boundary;\n waiting?: Set<Fiber>;\n}\n\ninterface Fiber {\n kind: Kind;\n key?: Key;\n type?: unknown;\n value?: unknown;\n source?: unknown;\n props?: Record<string, any>;\n context: Context;\n boundary?: Boundary;\n ownBoundary?: Boundary;\n start: globalThis.Node;\n end: globalThis.Node;\n children: Fiber[];\n scope?: Scope;\n cleanup?: (() => void) | void;\n release?: () => void;\n childContext?: Context;\n instance?: Component;\n owned?: boolean;\n events?: Map<string, EventListener>;\n portalStart?: globalThis.Node;\n portalEnd?: globalThis.Node;\n portalContainer?: Container;\n suspended?: Set<() => void>;\n applied?: boolean;\n retried?: boolean;\n portals?: [Fiber, DocumentFragment][];\n dead?: boolean;\n waitingOn?: Boundary;\n recovering?: object;\n stash?: DocumentFragment;\n placeholder?: Fiber;\n staging?: DocumentFragment;\n inserted?: (() => void)[];\n render?: () => RenderNode;\n appearance?: Appearance;\n consumed?: boolean;\n claimed?: Claim;\n}\n\ninterface Appearance {\n context?: AppearanceContext;\n entries: Forwarded[];\n}\n\ninterface Forwarded {\n hops: number;\n style: Style;\n}\n\ninterface Carried {\n appearance: ResolvedAppearance;\n doors: number;\n}\n\ninterface Collected {\n classes: string[];\n declarations: Record<string, unknown>;\n tokens: Carried[];\n}\n\ninterface Claim {\n className: string;\n context?: AppearanceContext;\n declarations: Record<string, unknown>;\n}\n\nconst roots = new WeakMap<Container, () => void>();\nconst SVG = 'http://www.w3.org/2000/svg';\nconst dirty = new Set<Boundary>();\nconst stashes = new WeakMap<globalThis.Node, Fiber>();\nconst CONTROLS = ['checked', 'value'];\nconst ENUMERATED = ['contentEditable', 'contenteditable', 'draggable', 'spellcheck'];\nconst ALIASES: Record<string, string> = { autoFocus: 'autofocus', contentEditable: 'contenteditable', htmlFor: 'for' };\nconst focusing: Element[] = [];\nconst controlled = new WeakMap<Element, Fiber>();\nconst restoring = new WeakSet<Document>();\nlet passiveRender = false;\nlet inserting: (() => void)[] | undefined;\nlet depth = 0;\nlet settling = false;\nlet rendering: object | undefined;\nlet touched = false;\nconst observed = new WeakMap<object, Record<string, any>>();\nconst tickets = new WeakMap<object, Ticket>();\n\ninterface Ticket {\n classes: string[];\n tokens: Carried[];\n}\n\nfunction render(node: RenderNode, container: Container): () => void {\n roots.get(container)?.();\n container.replaceChildren();\n\n const context = new Context(Context.root);\n const fiber = range('fragment', container, null, context);\n\n try {\n pass(() => {\n const appearanceContext = appearanceRoot();\n reconcile(fiber, node, context, undefined, appearanceContext ? { context: appearanceContext, entries: [] } : undefined);\n });\n } catch (error) {\n unmountFiber(fiber);\n context.pop();\n throw error;\n }\n\n let active = true;\n const unmount = () => {\n if (!active) return;\n active = false;\n unmountFiber(fiber);\n context.pop();\n roots.delete(container);\n };\n\n roots.set(container, unmount);\n return unmount;\n}\n\nfunction range(kind: Kind, parent: globalThis.Node, before: globalThis.Node | null, context: Context): Fiber {\n const start = document.createComment(kind);\n const end = document.createComment(`/${kind}`);\n\n parent.insertBefore(start, before);\n parent.insertBefore(end, before);\n\n return { kind, context, start, end, children: [] };\n}\n\nfunction makeScope(kind: Scope['kind'], context: Context, update: (passive: boolean) => void): Scope {\n return {\n active: true,\n childContext: context,\n context,\n kind,\n subscriptions: [],\n update,\n useIndex: 0,\n uses: []\n };\n}\n\nfunction complete<T extends Fiber>(fiber: T, work: () => void): T {\n try {\n work();\n } catch (error) {\n unmountFiber(fiber);\n throw error;\n }\n\n return fiber;\n}\n\nfunction componentProps(\n type: unknown,\n props: Record<string, any>,\n appearance: Appearance | undefined\n) {\n const context = appearance?.context;\n if (!context || typeof type != 'function') return { appearance, props };\n\n const value = context.resolve(props);\n const entries = appearance!.entries;\n\n if (!value) return { appearance: { entries }, props };\n\n return {\n appearance: {\n context: value.context,\n entries\n },\n props: { ...props, style: [createAppearanceToken(value), props.style] }\n };\n}\n\nfunction mount(value: RenderNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance): Fiber {\n if (typeof value == 'string' || typeof value == 'number' || typeof value == 'bigint') {\n const text = document.createTextNode(String(value));\n parent.insertBefore(text, before);\n return { kind: 'text', value, context, start: text, end: text, children: [] };\n }\n\n if (value instanceof Component) return mountComponent(value, parent, before, context, boundary, appearance);\n if (isCollection(value))\n return mountCollection(value, parent, before, context, boundary, appearance);\n\n if (!isVNode(value)) throw new TypeError(`Cannot render ${String(value)}.`);\n\n if (value.type === Fragment) return mountFragment(value, parent, before, context, boundary, appearance);\n if (value.type === PORTAL) return mountPortal(value, parent, before, context, boundary, appearance);\n if (value.type === Provider) return mountProvider(value, parent, before, context, boundary, appearance);\n if (typeof value.type == 'string') return mountElement(value, parent, before, context, boundary, appearance);\n if (typeof value.type != 'function')\n throw new Error(`Cannot render ${String(value.type)}.`);\n\n if (value.type.prototype instanceof Component)\n return mountOwnedComponent(value, parent, before, context, boundary, appearance);\n\n return mountFunction(value, parent, before, context, boundary, appearance);\n}\n\nfunction mountFragment(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const fiber = range('fragment', parent, before, context);\n fiber.key = value.key;\n fiber.type = Fragment;\n fiber.appearance = appearance;\n\n return complete(fiber, () => {\n reconcile(fiber, value.props.children, context, boundary, appearance);\n });\n}\n\nfunction mountFunction(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const fiber = range('function', parent, before, context);\n const resolved = componentProps(value.type, value.props, appearance);\n fiber.key = value.key;\n fiber.type = value.type;\n fiber.props = observe(resolved.props);\n fiber.boundary = boundary;\n fiber.appearance = resolved.appearance;\n fiber.scope = makeScope('function', context, (passive) => runFunction(fiber, passive));\n fiber.render = () => enter(fiber.scope!, () => latest(fiber.type as Function)(fiber.props));\n track(fiber.type as Function, fiber.scope);\n probing(fiber);\n\n return complete(fiber, () => {\n runFunction(fiber, passiveRender);\n });\n}\n\nfunction mountOwnedComponent(\n value: VNode,\n parent: globalThis.Node,\n before: globalThis.Node | null,\n context: Context,\n boundary?: Boundary,\n appearance?: Appearance\n) {\n const resolved = componentProps(value.type, value.props, appearance);\n const instance = new (value.type as new (props: any) => Component)(observe(resolved.props));\n return mountComponent(instance, parent, before, context, boundary, resolved.appearance, true, value.key);\n}\n\nfunction runFunction(fiber: Fiber, passive: boolean) {\n const result = attempt(fiber, passive, fiber.render!);\n\n if (result === true) inserted(fiber, () => commit(fiber.scope!));\n else return result;\n}\n\nfunction probing(fiber: Fiber) {\n const scope = fiber.scope!;\n\n scope.empty = () => !fiber.children.length;\n scope.probe = () => {\n try {\n scope.probed = { output: consume(fiber, fiber.render!) };\n } catch (thrown) {\n if (isThenable(thrown)) return thrown;\n }\n };\n}\n\nfunction mountComponent(\n instance: Component,\n parent: globalThis.Node,\n before: globalThis.Node | null,\n context: Context,\n inherited?: Boundary,\n appearance?: Appearance,\n owned = false,\n key?: Key,\n) {\n const fiber = range('component', parent, before, context);\n const childContext = context.push(instance);\n const ownBoundary: Boundary | undefined = instance.fallback !== false || instance.catch\n ? {\n catch: instance.catch?.bind(instance),\n fallback: () => instance.fallback,\n owner: fiber,\n parent: inherited\n }\n : inherited;\n\n fiber.boundary = ownBoundary;\n if (ownBoundary !== inherited) fiber.ownBoundary = ownBoundary;\n fiber.childContext = childContext;\n fiber.instance = instance;\n fiber.key = owned ? key : instance.key;\n fiber.type = instance.constructor;\n fiber.props = instance.props as Record<string, any>;\n fiber.owned = owned;\n fiber.appearance = appearance;\n fiber.scope = makeScope('component', childContext, (passive) => runComponent(fiber, passive));\n fiber.render = () => enter(fiber.scope!, () => instance.render.call(fiber.value, instance.props));\n probing(fiber);\n\n let first = true;\n let proxy = instance;\n fiber.release = watch(instance, (current, events) => {\n const { applied, scope } = fiber;\n\n proxy = current;\n fiber.applied = undefined;\n\n if (!first && scope!.active) {\n if (applied && events.includes('props')) transition(() => schedule(scope!));\n else schedule(scope!);\n }\n\n first = false;\n }, undefined, transition);\n\n Object.defineProperty(fiber, 'value', { get: () => proxy });\n complete(fiber, () => {\n runComponent(fiber, passiveRender);\n });\n\n if (owned) inserted(fiber, () => (fiber.cleanup = instance.mount?.()));\n return fiber;\n}\n\nfunction runComponent(fiber: Fiber, passive: boolean) {\n const result = attempt(fiber, passive, fiber.render!);\n\n if (result !== true) return result;\n}\n\nfunction mountCollection(value: has.List<unknown> | has.Pool<unknown> | map.Managed<unknown, unknown>, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const fiber = range('collection', parent, before, context);\n fiber.source = value;\n fiber.value = value;\n fiber.boundary = boundary;\n fiber.appearance = appearance;\n fiber.scope = makeScope('collection', context, (passive) => runCollection(fiber, passive));\n\n let first = true;\n fiber.release = watch(value, (current) => {\n fiber.value = current;\n if (!first && fiber.scope?.active) schedule(fiber.scope);\n first = false;\n }, undefined, transition);\n\n return complete(fiber, () => {\n runCollection(fiber, passiveRender);\n });\n}\n\nfunction runCollection(fiber: Fiber, passive: boolean) {\n attempt(fiber, passive, () => {\n const value = fiber.value as Iterable<unknown>;\n return value instanceof map.Managed ? [...value.values()] : [...value];\n });\n}\n\nfunction mountProvider(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, inherited?: Boundary, appearance?: Appearance) {\n const fiber = range('provider', parent, before, context);\n const childContext = new Context(context);\n\n fiber.key = value.key;\n fiber.type = Provider;\n fiber.props = value.props;\n fiber.appearance = appearance;\n fiber.childContext = childContext;\n const commit = provide(childContext, value.props as any);\n\n const boundary = value.props.fallback !== undefined\n ? { fallback: () => fiber.props!.fallback, owner: fiber, parent: inherited }\n : inherited;\n\n fiber.boundary = boundary;\n if (boundary !== inherited) fiber.ownBoundary = boundary;\n complete(fiber, () => {\n reconcile(fiber, value.props.children, childContext, boundary, appearance);\n });\n commit();\n\n return fiber;\n}\n\nfunction mountPortal(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const marker = document.createComment('portal');\n const container = value.props.container as Container;\n const portalStart = document.createComment('portal-root');\n const portalEnd = document.createComment('/portal-root');\n\n parent.insertBefore(marker, before);\n container.append(portalStart, portalEnd);\n\n const output: Fiber = {\n kind: 'portal',\n key: value.key,\n type: PORTAL,\n props: value.props,\n context,\n boundary,\n appearance,\n start: marker,\n end: marker,\n children: [],\n portalContainer: container,\n portalStart,\n portalEnd\n };\n\n return complete(output, () => {\n reconcilePortal(output, value.props.children, context, boundary, appearance);\n });\n}\n\nfunction mountElement(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const tag = value.type as string;\n let host = parent;\n\n for (let owner = stashes.get(host); owner; owner = stashes.get(host))\n host = owner.end.parentNode!;\n\n const namespace = tag == 'svg' || host instanceof SVGElement && host.localName != 'foreignObject' ? SVG : undefined;\n const element = namespace\n ? document.createElementNS(SVG, tag)\n : document.createElement(tag);\n const fiber: Fiber = {\n kind: 'element',\n key: value.key,\n type: tag,\n props: {},\n context,\n boundary,\n start: element,\n end: element,\n children: [],\n events: new Map()\n };\n\n parent.insertBefore(element, before);\n complete(fiber, () => {\n patchProps(fiber, value.props, appearance);\n });\n\n if (value.props.autofocus || value.props.autoFocus) focusing.push(element);\n return fiber;\n}\n\nfunction pass<T>(work: () => T): T {\n depth++;\n\n try {\n return work();\n } finally {\n if (!--depth) {\n settle();\n focus();\n }\n }\n}\n\nfunction focus() {\n for (const element of focusing.splice(0))\n if (element.isConnected) (element as HTMLElement).focus();\n}\n\nfunction attempt(fiber: Fiber, passive: boolean, render: () => RenderNode): true | PromiseLike<unknown> | void {\n const previous = passiveRender;\n const scope = fiber.scope!;\n const probed = scope.probed;\n\n scope.probed = undefined;\n passiveRender ||= passive;\n\n if (passive && !depth && !fiber.children.length && !fiber.stash)\n fiber.staging ||= document.createDocumentFragment();\n\n const outer = inserting;\n if (fiber.staging) inserting = fiber.inserted ||= [];\n\n try {\n return pass(() => {\n try {\n const output = probed ? probed.output as RenderNode : consume(fiber, render);\n reconcile(fiber, output, scope.childContext, fiber.boundary, renderedAppearance(fiber));\n\n if (fiber.staging) {\n const queued = fiber.inserted!;\n\n fiber.end.parentNode!.insertBefore(fiber.staging, fiber.end);\n fiber.staging = fiber.inserted = undefined;\n inserting = outer;\n queued.forEach((run) => run());\n }\n\n if (!fiber.recovering) unwait(fiber);\n fiber.retried = undefined;\n return true;\n } catch (thrown) {\n return suspend(fiber, thrown, passive);\n }\n });\n } finally {\n passiveRender = previous;\n inserting = outer;\n }\n}\n\nfunction inserted(fiber: Fiber, run: () => void) {\n if (inserting) inserting.push(() => fiber.dead || run());\n else run();\n}\n\nfunction observe(props: Record<string, any>) {\n if (!('style' in props)) return props;\n\n let output = observed.get(props);\n\n if (!output) {\n const { style } = props;\n let handle: Style;\n let resolved = false;\n\n output = Object.defineProperty({ ...props }, 'style', {\n enumerable: true,\n get() {\n if (rendering === output) touched = true;\n if (!resolved) {\n handle = door(style);\n resolved = true;\n }\n return handle;\n }\n });\n observed.set(props, output);\n }\n\n return output;\n}\n\nfunction door(value: Style) {\n const collected: Collected = { classes: [], declarations: {}, tokens: [] };\n const { classes, declarations, tokens } = collected;\n\n collect(value, collected, 1);\n\n if (!classes.length && !tokens.length && !Object.keys(declarations).length) return undefined;\n\n const key = Object.freeze({});\n\n tickets.set(key, { classes, tokens });\n return Object.freeze({ ...declarations, [Symbol('style')]: key });\n}\n\nfunction consume(fiber: Fiber, render: () => RenderNode) {\n const previous = rendering;\n const read = touched;\n\n rendering = fiber.props;\n touched = false;\n\n try {\n const output = render();\n fiber.consumed = touched;\n return output;\n } finally {\n rendering = previous;\n touched = read;\n }\n}\n\nfunction wait(fiber: Fiber, boundary: Boundary) {\n if (fiber.waitingOn !== boundary) unwait(fiber);\n\n fiber.waitingOn = boundary;\n (boundary.waiting ||= new Set()).add(fiber);\n dirty.add(boundary);\n}\n\nfunction unwait(fiber: Fiber) {\n const boundary = fiber.waitingOn;\n\n if (!boundary) return;\n\n fiber.waitingOn = undefined;\n boundary.waiting!.delete(fiber);\n if (!boundary.owner!.dead) dirty.add(boundary);\n}\n\nfunction settle() {\n if (settling) return;\n settling = true;\n\n try {\n for (const boundary of dirty) {\n dirty.delete(boundary);\n\n const owner = boundary.owner!;\n const waiting = boundary.waiting!.size > 0;\n\n if (!owner.dead && waiting != !!owner.stash)\n waiting ? hide(owner, boundary) : reveal(owner);\n }\n } finally {\n settling = false;\n }\n}\n\nfunction hide(owner: Fiber, boundary: Boundary) {\n const stash = document.createDocumentFragment();\n\n for (const child of owner.children) move(child, stash, null);\n\n owner.portals = portals(owner, []).map((portal) => {\n const content = document.createDocumentFragment();\n moveRange(portal.portalStart!, portal.portalEnd!, content);\n return [portal, content];\n });\n\n stashes.set(stash, owner);\n\n const context = owner.childContext!;\n const placeholder = range('fragment', owner.end.parentNode!, owner.end, context);\n\n owner.stash = stash;\n owner.placeholder = placeholder;\n reconcile(placeholder, boundary.fallback(), context, boundary.parent);\n}\n\nfunction reveal(owner: Fiber) {\n unmountFiber(owner.placeholder!);\n owner.end.parentNode!.insertBefore(owner.stash!, owner.end);\n\n for (const [portal, content] of owner.portals!)\n if (!portal.dead) portal.portalContainer!.append(content);\n\n owner.portals = undefined;\n owner.placeholder = undefined;\n owner.stash = undefined;\n}\n\nfunction portals(fiber: Fiber, found: Fiber[]) {\n for (const child of fiber.children) {\n if (child.kind == 'portal') found.push(child);\n portals(child, found);\n }\n\n return found;\n}\n\nfunction moveRange(start: globalThis.Node, end: globalThis.Node, target: globalThis.Node) {\n let node: globalThis.Node | null = start;\n\n while (node) {\n const next: globalThis.Node | null = node.nextSibling;\n target.appendChild(node);\n if (node === end) break;\n node = next;\n }\n}\n\nfunction suspend(fiber: Fiber, thrown: unknown, passive: boolean) {\n const boundary = fiber.boundary;\n\n if (isThenable(thrown)) {\n if (!boundary) throw thrown;\n if (passive && !fiber.children.length && depth > 1) throw thrown;\n if (!passive) wait(fiber, boundary);\n\n const scope = fiber.scope!;\n let held = scope.holds;\n\n scope.holds = undefined;\n\n const clear = () => {\n fiber.suspended!.delete(clear);\n release(held);\n held = undefined;\n };\n\n (fiber.suspended ||= new Set()).add(clear);\n\n const resume = (retry: () => void) => {\n fiber.suspended!.delete(clear);\n if (!scope.active) return clear();\n if (held) (scope.holds ||= []).push(...held);\n held = undefined;\n retry();\n };\n\n thrown.then(\n () => resume(() => passive ? transition(() => schedule(scope)) : schedule(scope)),\n (error) => resume(() => pass(() => recover(fiber, error, fiber.boundary)))\n );\n return thrown;\n }\n\n recover(fiber, thrown, fiber.boundary);\n}\n\nfunction recover(fiber: Fiber, thrown: unknown, boundary: Boundary | undefined) {\n const error = thrown instanceof Error ? thrown : new Error(String(thrown));\n\n while (boundary && !boundary.catch) boundary = boundary.parent;\n\n if (!boundary) throw error;\n\n const handler = boundary;\n\n const token = {};\n\n wait(fiber, handler);\n fiber.recovering = token;\n\n Promise.resolve(handler.catch!(error)).then(\n () => {\n if (fiber.recovering !== token) return;\n fiber.recovering = undefined;\n if (!fiber.scope!.active || fiber.retried) return;\n fiber.retried = true;\n schedule(fiber.scope!);\n },\n (next) => {\n if (fiber.recovering === token && fiber.scope!.active) pass(() => recover(fiber, next, handler.parent));\n }\n );\n}\n\nfunction isThenable(value: unknown): value is PromiseLike<unknown> {\n return !!value && typeof (value as PromiseLike<unknown>).then == 'function';\n}\n\nfunction reconcile(fiber: Fiber, value: RenderNode, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const detached = fiber.stash || fiber.staging;\n\n if (detached) reconcileChildren(fiber, detached, null, value, context, boundary, appearance);\n else reconcileChildren(fiber, fiber.end.parentNode!, fiber.end, value, context, boundary, appearance);\n}\n\nfunction reconcilePortal(fiber: Fiber, value: RenderNode, context: Context, boundary?: Boundary, appearance?: Appearance) {\n reconcileChildren(fiber, fiber.portalEnd!.parentNode!, fiber.portalEnd!, value, context, boundary, appearance);\n}\n\nfunction reconcileChildren(owner: Fiber, parent: globalThis.Node, before: globalThis.Node | null, value: RenderNode, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const values = childrenOf(value);\n const old = owner.children;\n const keyed = new Map<Key, Fiber>();\n const used = new Set<Fiber>();\n const next: Fiber[] = [];\n\n for (const child of old)\n if (child.key !== null && child.key !== undefined) keyed.set(child.key, child);\n\n try {\n for (let index = 0; index < values.length; index++) {\n const value = source(values[index]);\n const key = keyOf(value);\n let child = key !== null && key !== undefined\n ? keyed.get(key)\n : old[index]?.key == null\n ? old[index]\n : undefined;\n\n if (child && used.has(child)) child = undefined;\n if (child) used.add(child);\n\n next.push(patch(child, value, parent, before, context, boundary, appearance));\n }\n } catch (error) {\n owner.children = [...next, ...old.filter((child) => !child.dead && !next.includes(child))];\n throw error;\n }\n\n for (const child of old)\n if (!used.has(child)) unmountFiber(child);\n\n let anchor = before;\n for (let index = next.length - 1; index >= 0; index--) {\n move(next[index], parent, anchor);\n anchor = next[index].start;\n }\n\n owner.children = next;\n}\n\nfunction patch(old: Fiber | undefined, value: RenderNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance): Fiber {\n if (!old || !compatible(old, value)) {\n const next = mount(value, parent, old?.start || before, context, boundary, appearance);\n if (old) unmountFiber(old);\n return next;\n }\n\n if (old.ownBoundary) old.ownBoundary.parent = boundary;\n old.boundary = old.ownBoundary || boundary;\n if (old.kind == 'collection') {\n if (old.appearance !== appearance) {\n old.appearance = appearance;\n runCollection(old, passiveRender);\n }\n return old;\n }\n\n if (old.kind == 'text') {\n const next = String(value);\n if (old.start.nodeValue !== next) old.start.nodeValue = next;\n old.value = value;\n } else if (old.kind == 'element') {\n patchProps(old, (value as VNode).props, appearance);\n } else if (old.kind == 'fragment') {\n old.context = context;\n old.appearance = appearance;\n reconcile(old, (value as VNode).props.children, context, old.boundary, appearance);\n } else if (old.kind == 'function') {\n const vnode = value as VNode;\n const resolved = componentProps(vnode.type, vnode.props, appearance);\n if (old.type !== vnode.type) {\n untrack(old.type as Function, old.scope!);\n old.type = vnode.type;\n old.scope!.hot = true;\n track(old.type as Function, old.scope!);\n }\n old.appearance = resolved.appearance;\n old.props = observe(resolved.props);\n rerun(old, () => runFunction(old, passiveRender));\n } else if (old.kind == 'component') {\n const resolved = isVNode(value)\n ? componentProps(value.type, value.props, appearance)\n : { appearance, props: old.instance!.props };\n old.appearance = resolved.appearance;\n const props = isVNode(value) ? observe(resolved.props) : resolved.props;\n if (isVNode(value) && props !== old.instance!.props) {\n if (passiveRender) old.applied = true;\n (old.instance as any).props = props;\n }\n old.props = props as Record<string, any>;\n rerun(old, () => runComponent(old, passiveRender));\n } else if (old.kind == 'provider') {\n old.appearance = appearance;\n old.props = (value as VNode).props;\n const commit = provide(old.childContext!, old.props as any);\n reconcile(old, old.props!.children, old.childContext!, old.boundary, appearance);\n commit();\n } else {\n old.appearance = appearance;\n const vnode = value as VNode;\n old.props = vnode.props;\n reconcilePortal(old, vnode.props.children, context, old.boundary, appearance);\n }\n\n return old;\n}\n\nfunction rerun(fiber: Fiber, run: () => void) {\n dequeue(fiber.scope!);\n run();\n absorb(fiber.scope!);\n}\n\nfunction compatible(fiber: Fiber, value: RenderNode) {\n if (fiber.kind == 'text') return ['string', 'number', 'bigint'].includes(typeof value);\n if (value instanceof Component) return fiber.kind == 'component' && fiber.instance === value;\n if (isCollection(value))\n return fiber.kind == 'collection' && fiber.source === value;\n if (!isVNode(value)) return false;\n if (fiber.key !== value.key || !same(fiber.type, value.type)) return false;\n if (fiber.kind == 'portal') return fiber.portalContainer === value.props.container;\n return true;\n}\n\nfunction source(value: RenderNode): RenderNode {\n if (value instanceof Component) return value.is;\n\n while (isCollection(value) && isCollection(Object.getPrototypeOf(value)))\n value = Object.getPrototypeOf(value);\n\n return value;\n}\n\nfunction isCollection(value: unknown): value is has.List<unknown> | has.Pool<unknown> | map.Managed<unknown, unknown> {\n return value instanceof has.List || value instanceof has.Pool || value instanceof map.Managed;\n}\n\nfunction keyOf(value: RenderNode): Key {\n if (value instanceof Component) return value.key;\n return isVNode(value) ? value.key : undefined;\n}\n\nfunction move(fiber: Fiber, parent: globalThis.Node, before: globalThis.Node | null) {\n if (fiber.start.parentNode === parent && fiber.end.nextSibling === before) return;\n\n let node: globalThis.Node | null = fiber.start;\n while (node) {\n const next: globalThis.Node | null = node.nextSibling;\n parent.insertBefore(node, before);\n if (node === fiber.end) break;\n node = next;\n }\n}\n\nfunction patchProps(fiber: Fiber, next: Record<string, any>, appearance?: Appearance) {\n const element = fiber.start as Element;\n const previous = fiber.props!;\n const raw = 'dangerouslySetInnerHTML' in next;\n const resolved = appearance?.context?.resolve(next, fiber.type as string);\n\n if (raw) {\n for (let index = fiber.children.length - 1; index >= 0; index--)\n unmountFiber(fiber.children[index]);\n fiber.children = [];\n }\n\n for (const key of Object.keys({ ...previous, ...next })) {\n if (key.startsWith('_') || key == 'children' || key == 'className' || key == 'key' || key == 'ref' || key == 'style' || CONTROLS.includes(key)) continue;\n if (previous[key] === next[key]) continue;\n patchProp(fiber, element, key, previous[key], next[key]);\n }\n\n const claimed = claim(element, appearance, resolved, next.className, next.style);\n\n applyClaim(element, fiber.claimed, claimed);\n fiber.claimed = claimed;\n fiber.props = next;\n fiber.appearance = appearance;\n\n if (!raw) {\n reconcileChildren(\n fiber,\n element,\n null,\n next.children,\n fiber.context,\n fiber.boundary,\n claimed.context ? { context: claimed.context, entries: [] } : undefined\n );\n }\n\n for (const key of CONTROLS) {\n const value = next[key];\n const live = (element as any)[key];\n const differs = value == null || !(key in element)\n ? previous[key] !== value\n : key == 'value' ? String(live) !== String(value) : live !== value;\n\n if (differs) patchProp(fiber, element, key, previous[key], value);\n }\n\n if (CONTROLS.some((key) => next[key] != null)) {\n const document = element.ownerDocument;\n\n controlled.set(element, fiber);\n\n if (!restoring.has(document)) {\n restoring.add(document);\n document.addEventListener('input', restoreTarget);\n document.addEventListener('change', restoreTarget);\n }\n }\n\n if (previous.ref !== next.ref) patchProp(fiber, element, 'ref', previous.ref, next.ref);\n}\n\nfunction patchProp(fiber: Fiber, element: Element, key: string, previous: any, next: any) {\n if (key == 'ref') {\n applyRef(previous, null);\n inserted(fiber, () => applyRef(next, element));\n return;\n }\n\n if (key == 'dangerouslySetInnerHTML') {\n element.innerHTML = next?.__html || '';\n return;\n }\n\n if (/^on[A-Z]/.test(key)) {\n const capture = key.endsWith('Capture');\n const lower = (capture ? key.slice(2, -7) : key.slice(2)).toLowerCase();\n const name = lower == 'doubleclick' ? 'dblclick' : lower;\n const id = `${name}:${capture}`;\n const current = fiber.events!.get(id);\n\n if (current) element.removeEventListener(name, current, capture);\n if (typeof next == 'function') {\n fiber.events!.set(id, next);\n element.addEventListener(name, next, capture);\n } else fiber.events!.delete(id);\n return;\n }\n\n const name = ALIASES[key] || key;\n\n if ((key.startsWith('aria-') || key.startsWith('data-') || ENUMERATED.includes(key)) && next != null) {\n element.setAttribute(name, String(next));\n return;\n }\n\n if (next === null || next === undefined || next === false) {\n if (key in element && typeof (element as any)[key] != 'function')\n try {\n const current = (element as any)[key];\n (element as any)[key] = typeof current == 'boolean'\n ? false\n : typeof current == 'number'\n ? 0\n : '';\n } catch {}\n element.removeAttribute(element.namespaceURI === SVG ? name.toLowerCase() : name);\n element.removeAttribute(name);\n return;\n }\n\n if (key in element && (element.namespaceURI !== SVG || settable(element, key)))\n try {\n (element as any)[key] = next;\n return;\n } catch {}\n\n element.setAttribute(name, next === true ? '' : String(next));\n}\n\ntype Style = string | Record<string, unknown> | false | null | undefined | readonly Style[];\n\nfunction applyClaim(element: Element, before: Claim | undefined, after: Claim) {\n const previous = before || { className: '', declarations: {} };\n\n if (previous.className !== after.className) {\n if (after.className) element.setAttribute('class', after.className);\n else element.removeAttribute('class');\n }\n\n applyDeclarations((element as HTMLElement).style, after.declarations, previous.declarations);\n}\n\nfunction claim(\n element: Element,\n appearance: Appearance | undefined,\n resolved: ResolvedAppearance | undefined,\n className: unknown,\n value: Style\n): Claim {\n const collected: Collected = { classes: [], declarations: {}, tokens: [] };\n const entries = appearance?.entries || [];\n let context = appearance?.context;\n let reach = -1;\n\n if (resolved) collect(createAppearanceToken(resolved), collected, 0);\n appendClasses(collected.classes, className);\n collect(value, collected, 0);\n\n for (let index = entries.length - 1; index >= 0; index--)\n collect(entries[index].style, collected, entries[index].hops);\n\n for (const { appearance, doors } of collected.tokens) {\n for (const block of appearance.blocks || [])\n collected.classes.push(emitClass(block, doors, element.ownerDocument));\n if (appearance.classes) collected.classes.push(...appearance.classes);\n if (appearance.context && doors >= reach) {\n context = appearance.context;\n reach = doors;\n }\n }\n\n return {\n className: [...new Set(collected.classes)].join(' '),\n context,\n declarations: collected.declarations\n };\n}\n\nfunction renderedAppearance(fiber: Fiber): Appearance | undefined {\n if (fiber.kind != 'component' && fiber.kind != 'function') return fiber.appearance;\n\n const style = fiber.props?.style as Style;\n const entries = (fiber.appearance?.entries || []).map(({ hops, style }) => ({ hops: hops + 1, style }));\n const inherited = fiber.appearance?.context || appearanceRoot();\n const context = enterAppearance(inherited, latest(fiber.type as Function));\n\n if (context?.base && context !== inherited)\n entries.push({ hops: 0, style: context.base as Style });\n\n if (style && !fiber.consumed && !(fiber.instance && 'style' in fiber.instance)) entries.push({ hops: 0, style });\n\n return entries.length || context ? { context, entries } : undefined;\n}\n\nfunction collect(value: Style, collected: Collected, doors: number) {\n if (!value) return;\n\n const token = appearanceToken(value);\n if (token) {\n collected.tokens.push({ appearance: token, doors });\n Object.assign(collected.declarations, token.declarations);\n return;\n }\n\n if (typeof value == 'string') {\n appendClasses(collected.classes, value);\n return;\n }\n\n if (Array.isArray(value)) {\n value.forEach((entry) => collect(entry, collected, doors));\n return;\n }\n\n for (const symbol of Object.getOwnPropertySymbols(value)) {\n const ticket = tickets.get((value as Record<symbol, object>)[symbol]);\n if (!ticket) continue;\n\n collected.classes.push(...ticket.classes);\n for (const carried of ticket.tokens)\n collected.tokens.push({ appearance: carried.appearance, doors: carried.doors + doors });\n }\n\n for (const key of Object.keys(value)) collected.declarations[key] = (value as Record<string, unknown>)[key];\n}\n\nfunction appendClasses(classes: string[], value: unknown) {\n if (typeof value == 'string') classes.push(...value.split(/\\s+/).filter(Boolean));\n}\n\nfunction restoreTarget(event: Event) {\n const element = event.target as HTMLInputElement;\n const fiber = controlled.get(element);\n\n if (fiber && event.type == settles(fiber.props!, element))\n queueMicrotask(() => afterFlush(() => restore(fiber)));\n}\n\nfunction settles(props: Record<string, any>, element: HTMLInputElement) {\n if (props.onInput) return 'input';\n if (props.onChange) return 'change';\n return element.type == 'checkbox' || element.type == 'radio' || element.localName == 'select' ? 'change' : 'input';\n}\n\nfunction restore(fiber: Fiber) {\n const element = fiber.start as any;\n\n for (const key of CONTROLS) {\n const value = fiber.props![key];\n\n if (value == null || fiber.dead) continue;\n if (key == 'value' ? String(element.value) !== String(value) : element[key] !== value)\n element[key] = value;\n }\n}\n\nfunction settable(element: Element, key: string) {\n let target: object = element;\n let descriptor: PropertyDescriptor | undefined;\n\n while (!(descriptor = Object.getOwnPropertyDescriptor(target, key)))\n target = Object.getPrototypeOf(target);\n\n return !!(descriptor.set || descriptor.writable);\n}\n\nfunction applyRef(ref: unknown, value: Element | null) {\n if (typeof ref == 'function') ref(value);\n else if (ref && typeof ref == 'object' && 'current' in ref) (ref as { current: Element | null }).current = value;\n}\n\nfunction unmountFiber(fiber: Fiber) {\n fiber.dead = true;\n unwait(fiber);\n\n for (let index = fiber.children.length - 1; index >= 0; index--)\n unmountFiber(fiber.children[index]);\n\n if (fiber.placeholder) unmountFiber(fiber.placeholder);\n\n fiber.suspended?.forEach((clear) => clear());\n if (fiber.kind == 'function') untrack(fiber.type as Function, fiber.scope!);\n if (fiber.scope) dispose(fiber.scope);\n fiber.release?.();\n\n if (fiber.kind == 'element') {\n applyRef(fiber.props?.ref, null);\n for (const [id, listener] of fiber.events!) {\n const [name, capture] = id.split(':');\n (fiber.start as Element).removeEventListener(name, listener, capture === 'true');\n }\n }\n\n if (fiber.kind == 'component') {\n if (typeof fiber.cleanup == 'function') fiber.cleanup();\n fiber.childContext?.pop();\n if (fiber.owned && !fiber.instance!.get(null)) fiber.instance!.set(null);\n } else if (fiber.kind == 'provider') {\n fiber.childContext?.pop();\n } else if (fiber.kind == 'portal') {\n (fiber.portalStart as ChildNode).remove();\n (fiber.portalEnd as ChildNode).remove();\n }\n\n removeRange(fiber.start, fiber.end);\n}\n\nfunction removeRange(start: globalThis.Node, end: globalThis.Node) {\n let node = start;\n\n while (true) {\n const next = node.nextSibling;\n (node as ChildNode).remove();\n if (node === end) break;\n node = next!;\n }\n}\n\nexport { render };\nexport type { Container };\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["style","macro","Fragment"],"sources":["../src/css.ts","../src/appearance-protocol.ts","../src/appearance.ts","../src/declarations.ts","../src/stylesheet.ts","../src/loader.ts","../src/commits.ts","../src/render.ts"],"sourcesContent":["import type { macro, style } from './stylesheet';\n\nconst unitless = new Map<string, boolean>();\n\nlet probe: CSSStyleDeclaration | undefined;\n\n/**\n * Does the CSSOM accept a bare number for this property? Probed once with a\n * canonical value; the answer is a property of CSS, not of the value.\n */\nfunction bare(property: string) {\n let known = unitless.get(property);\n\n if (known === undefined) {\n probe ||= document.createElement('div').style;\n (probe as any)[property] = '';\n (probe as any)[property] = 1;\n unitless.set(property, known = Boolean((probe as any)[property]));\n }\n\n return known;\n}\n\nfunction sized(property: string, value: unknown): unknown {\n if (Array.isArray(value))\n return value.map((entry) => sized(property, entry));\n\n return typeof value == 'number' && value !== 0 && !bare(property)\n ? `${value}px`\n : value;\n}\n\n/**\n * Web macro pack. Register with `macro(css)` to opt into pixel units for\n * numbers and the axis shorthands CSS itself does not provide.\n */\nconst css = {\n '*': (value: unknown, key: string) => ({ [key]: sized(key, value) }),\n mx: (value: style.Value) => ({ marginLeft: value, marginRight: value }),\n my: (value: style.Value) => ({ marginTop: value, marginBottom: value }),\n px: (value: style.Value) => ({ paddingLeft: value, paddingRight: value }),\n py: (value: style.Value) => ({ paddingTop: value, paddingBottom: value }),\n size: (value: style.Value) =>\n Array.isArray(value)\n ? { width: value[0], height: value[1] }\n : { width: value, height: value }\n} satisfies macro.Map;\n\ndeclare module '@expressive/dom' {\n namespace macro {\n interface Registry {\n mx(value: style.Value): style.Map;\n my(value: style.Value): style.Map;\n px(value: style.Value): style.Map;\n py(value: style.Value): style.Map;\n size(value: style.Value): style.Map;\n }\n }\n}\n\nexport { css };\n","type Declaration = Record<string, unknown>;\n\ninterface Block {\n declarations: Declaration;\n name: string;\n ordinal: number;\n}\n\ninterface ResolvedAppearance {\n blocks?: Block[];\n classes?: string[];\n context?: AppearanceContext;\n declarations?: Declaration;\n}\n\ninterface AppearanceContext {\n readonly scope?: unknown;\n readonly base?: object;\n resolve(\n props: Record<string, unknown>,\n tag?: string\n ): ResolvedAppearance | undefined;\n}\n\ntype EnterAppearance = (parent?: AppearanceContext) => AppearanceContext;\ntype Emit = (block: Block, depth: number, document: Document) => string;\n\nconst registrations = new WeakMap<object, EnterAppearance>();\nconst tokens = new WeakMap<object, ResolvedAppearance>();\nlet root: (() => AppearanceContext | undefined) | undefined;\nlet emitter: Emit | undefined;\nlet rendered = false;\n\nfunction registerAppearance(type: object, enter: EnterAppearance) {\n registrations.set(type, enter);\n}\n\nfunction registerAppearanceRoot(factory: () => AppearanceContext | undefined) {\n root = factory;\n}\n\nfunction registerEmitter(emit: Emit) {\n emitter = emit;\n}\n\nfunction emitClass(block: Block, depth: number, document: Document) {\n return emitter!(block, depth, document);\n}\n\nfunction appearanceRoot() {\n rendered = true;\n return root?.();\n}\n\n/** Has anything rendered yet - global registration is closed after it has. */\nfunction appearanceSealed() {\n return rendered;\n}\n\nfunction enterAppearance(parent: AppearanceContext | undefined, type: Function) {\n const chain: EnterAppearance[] = [];\n let current: object | null = type;\n\n while (current && current !== Function.prototype) {\n const enter = registrations.get(current);\n if (enter) chain.unshift(enter);\n current = Object.getPrototypeOf(current);\n }\n\n for (const enter of chain) parent = enter(parent);\n return parent;\n}\n\nfunction createAppearanceToken(appearance: ResolvedAppearance) {\n const token = {};\n tokens.set(token, appearance);\n return token;\n}\n\nfunction appearanceToken(value: unknown) {\n return value && typeof value == 'object' ? tokens.get(value) : undefined;\n}\n\nexport {\n appearanceRoot,\n appearanceSealed,\n appearanceToken,\n createAppearanceToken,\n emitClass,\n enterAppearance,\n registerAppearance,\n registerAppearanceRoot,\n registerEmitter\n};\n\nexport type { AppearanceContext, Block, Declaration, ResolvedAppearance };\n","import { appearanceSealed, createAppearanceToken, registerAppearance, registerAppearanceRoot } from './appearance-protocol';\nimport type { AppearanceContext, Block, Declaration, ResolvedAppearance } from './appearance-protocol';\n\ntype StyleMap = Record<string, unknown>;\n\ntype Macro = (value: unknown, key: string) => unknown;\ntype Depths = ReadonlyMap<string, number>;\n\ninterface Expansion {\n block?: Block;\n classes: string[];\n declarations: Declaration;\n nested: StyleMap[];\n}\n\ninterface StyleScope {\n children: WeakMap<object, StyleScope>;\n expansions: Map<string, Expansion>;\n label: string;\n labels: Record<string, string>;\n names: readonly string[];\n own: Declaration;\n routes: Map<string, AppearanceRoute>;\n rules: StyleMap;\n}\n\ninterface AppearanceRoute {\n flags: readonly string[];\n scope: StyleScope;\n tag?: string;\n}\n\nconst bases = new WeakMap<StyleScope, Declaration>();\nconst chains = new WeakMap<StyleScope, Map<string, Macro[]>>();\nconst contexts = new WeakMap<StyleScope, AppearanceContext>();\nconst rootScopes = new WeakMap<object, StyleScope>();\nconst STYLES = Symbol('@expressive/dom.styles');\nconst entered = new WeakSet<object>();\nconst globals: StyleMap[] = [];\nlet globalContext: AppearanceContext | undefined;\n\nfunction createStyleScope(parent: StyleScope | undefined, value: unknown, label?: string, defines?: boolean): StyleScope | undefined {\n if (!isObject(value)) return parent;\n\n const cache = parent?.children || rootScopes;\n const cached = cache.get(value);\n if (cached) return cached;\n\n const own: string[] = [];\n const source: StyleMap = {};\n const base: Declaration = {};\n\n for (const key of Object.keys(value)) {\n const entry = (value as StyleMap)[key];\n\n if (key[0] == '$')\n throw new Error(`Reserved key \"${key}\" in style map.`);\n\n if (key[0] == '_') {\n if (!isObject(entry))\n throw new Error(`Rule \"${key}\" must be an object. Macros are defined by macro().`);\n\n const name = key.slice(1);\n own.push(name);\n source[name] = entry;\n } else if (defines && typeof entry == 'function') {\n own.push(key);\n source[key] = entry;\n } else base[key] = entry;\n }\n\n const names = parent\n ? [...parent.names, ...own.filter((name) => !parent.names.includes(name))]\n : own;\n const rules = Object.create(parent?.rules || null) as StyleMap;\n const labels = Object.create(parent?.labels || null) as Record<string, string>;\n const scopeLabel = label || parent?.label || 'style';\n\n for (const name of own) {\n const rule = source[name];\n const inherited = parent?.rules[name];\n rules[name] = isObject(inherited) && isObject(rule) ? { ...inherited, ...rule } : rule;\n labels[name] = scopeLabel;\n }\n\n const scope: StyleScope = {\n children: new WeakMap(),\n expansions: new Map(),\n label: scopeLabel,\n labels,\n names,\n own: base,\n routes: new Map(),\n rules\n };\n\n cache.set(value, scope);\n return scope;\n}\n\nfunction createContext(scope: StyleScope): AppearanceContext {\n const cached = contexts.get(scope);\n if (cached) return cached;\n\n const context: AppearanceContext = {\n scope,\n base: baseToken(scope),\n resolve(props, tag) {\n return resolveAppearance(scope, props, tag);\n }\n };\n\n contexts.set(scope, context);\n return context;\n}\n\nfunction extendContext(parent: AppearanceContext | undefined, maps: readonly StyleMap[], label: string, defines?: boolean) {\n let scope = parent?.scope as StyleScope | undefined;\n const base: Declaration = { ...(scope && bases.get(scope)) };\n\n for (const map of maps) {\n scope = createStyleScope(scope, map, label, defines);\n Object.assign(base, scope!.own);\n }\n\n if (Object.keys(base).length) bases.set(scope!, base);\n\n return createContext(scope!);\n}\n\nfunction baseToken(scope: StyleScope) {\n const base = bases.get(scope);\n if (!base) return undefined;\n\n const expansion = expand(scope, base, new Map());\n const appearance: ResolvedAppearance = {};\n\n if (Object.keys(expansion.declarations).length)\n appearance.blocks = [{ declarations: expansion.declarations, name: scope.label, ordinal: -1 }];\n\n if (expansion.classes.length) appearance.classes = expansion.classes;\n\n return createAppearanceToken(appearance);\n}\n\nfunction style<T extends object>(type: T, rules: StyleMap): T {\n if (entered.has(type)) throw new Error('Cannot add styles after a component has rendered.');\n\n if (Object.hasOwn(type, STYLES)) (type as any)[STYLES].push(rules);\n else {\n const label = (type as { displayName?: string }).displayName || (type as Function).name;\n\n Object.defineProperty(type, STYLES, { configurable: true, value: [rules] });\n registerAppearance(type, (parent) => {\n entered.add(type);\n return extendContext(parent, (type as any)[STYLES], label);\n });\n }\n\n return type;\n}\n\nfunction macro(rules: StyleMap): StyleMap {\n for (const key of Object.keys(rules))\n if (key[0] != '_' && key[0] != '$' && typeof rules[key] != 'function')\n throw new Error(`Macro \"${key}\" must be a function. Use \"_${key}\" to register a rule.`);\n\n if (appearanceSealed())\n throw new Error('Cannot add macros after rendering has started.');\n\n globals.push(rules);\n globalContext = undefined;\n registerAppearanceRoot(() => globalContext ||= extendContext(undefined, globals, 'global', true));\n return rules;\n}\n\nfunction createAppearanceRoute(\n scope: StyleScope | undefined,\n props: Record<string, unknown>,\n tag?: string\n): AppearanceRoute | undefined {\n if (!scope) return undefined;\n\n const keys = Object.keys(props).filter((key) => key.startsWith('_')).sort();\n const id = `${tag || ''}\\0${keys.join('\\0')}`;\n const cached = scope.routes.get(id);\n if (cached) return cached;\n\n const present = new Set(keys.map((key) => key.slice(1)));\n const flags: string[] = [];\n\n for (const name of scope.names) {\n if (!present.has(name) || name == tag) continue;\n if (isObject(scope.rules[name])) flags.push(name);\n }\n\n const route: AppearanceRoute = {\n flags,\n scope,\n tag: tag && isObject(scope.rules[tag]) ? tag : undefined\n };\n\n scope.routes.set(id, route);\n return route;\n}\n\nfunction resolveAppearance(\n scope: StyleScope | undefined,\n props: Record<string, unknown>,\n tag?: string\n): ResolvedAppearance | undefined {\n const route = createAppearanceRoute(scope, props, tag);\n\n if (!route) return undefined;\n\n const parts: Expansion[] = [];\n const names: string[] = route.tag ? [route.tag] : [];\n\n for (const name of route.flags)\n if (props[`_${name}`]) names.push(name);\n\n for (const name of names)\n parts.push(expandRule(route.scope, name));\n\n const blocks = parts.flatMap((part) => part.block ? [part.block] : []);\n const classes = parts.flatMap((part) => part.classes);\n let child: StyleScope | undefined = route.scope;\n\n for (const part of parts)\n for (const nested of part.nested)\n child = createStyleScope(child, nested, tag ? `${route.scope.label}_${tag}` : route.scope.label);\n\n if (!blocks.length && !classes.length && child === route.scope)\n return undefined;\n\n const appearance: ResolvedAppearance = {};\n if (blocks.length) appearance.blocks = blocks;\n if (classes.length) appearance.classes = classes;\n if (child !== route.scope) appearance.context = createContext(child!);\n\n return appearance;\n}\n\nfunction expandRule(scope: StyleScope, name: string) {\n let expansion = scope.expansions.get(name);\n\n if (!expansion) {\n expansion = expand(scope, scope.rules[name], new Map());\n\n if (Object.keys(expansion.declarations).length)\n expansion.block = {\n declarations: expansion.declarations,\n name: `${scope.labels[name]}_${name}`,\n ordinal: scope.names.indexOf(name)\n };\n\n scope.expansions.set(name, expansion);\n }\n\n return expansion;\n}\n\nfunction handlers(scope: StyleScope, name: string) {\n let known = chains.get(scope);\n if (!known) chains.set(scope, (known = new Map()));\n\n let chain = known.get(name);\n\n if (!chain) {\n chain = [];\n\n for (const key of [name, '*'])\n for (let rules: object | null = scope.rules; rules; rules = Object.getPrototypeOf(rules)) {\n const own = Object.getOwnPropertyDescriptor(rules, key);\n if (own && typeof own.value == 'function') chain.push(own.value as Macro);\n }\n\n known.set(name, chain);\n }\n\n return chain;\n}\n\nfunction expand(scope: StyleScope, value: unknown, depths: Depths): Expansion {\n const output: Expansion = { classes: [], declarations: {}, nested: [] };\n const nested: StyleMap = {};\n\n function walk(value: unknown, depths: Depths) {\n if (!value) return;\n\n if (typeof value == 'string') {\n output.classes.push(...value.split(/\\s+/).filter(Boolean));\n return;\n }\n\n if (Array.isArray(value)) {\n value.forEach((entry) => walk(entry, depths));\n return;\n }\n\n for (const [name, entry] of Object.entries(value as Declaration)) {\n if (name[0] == '_') {\n if (isObject(entry)) nested[name] = entry;\n continue;\n }\n\n const chain = handlers(scope, name);\n const depth = depths.get(name) || 0;\n\n if (depth < chain.length) {\n if (isPresent(entry))\n walk(\n chain[depth](entry === true ? undefined : entry, name),\n new Map(depths).set(name, depth + 1)\n );\n } else output.declarations[name] = terminal(name, entry);\n }\n }\n\n walk(value, depths);\n if (Object.keys(nested).length) output.nested.push(nested);\n return output;\n}\n\nfunction terminal(name: string, value: unknown) {\n if (Array.isArray(value)) return value.join(' ');\n\n if (typeof value == 'function' || isObject(value))\n throw new Error(`No macro handles \"${name}\".`);\n\n return typeof value == 'number' ? String(value) : value;\n}\n\nfunction isPresent(value: unknown) {\n return value !== false && value !== null && value !== undefined;\n}\n\nfunction isObject(value: unknown): value is Declaration {\n return !!value && typeof value == 'object' && !Array.isArray(value);\n}\n\nexport { createAppearanceRoute, createStyleScope, macro, resolveAppearance, style };\nexport type { AppearanceRoute, StyleMap, StyleScope };\n","type Declaration = Record<string, unknown>;\n\nfunction applyDeclarations(style: CSSStyleDeclaration, declarations: Declaration, previous: Declaration = {}) {\n const target = style as any;\n\n for (const key of Object.keys({ ...previous, ...declarations })) {\n const value = declarations[key];\n if (key.startsWith('--')) {\n style.setProperty(key, value == null ? '' : String(value));\n continue;\n }\n\n if (typeof value == 'number') target[key] = '';\n target[key] = value == null ? '' : value;\n if (typeof value == 'number' && value !== 0 && !target[key]) target[key] = `${value}px`;\n }\n}\n\nexport { applyDeclarations };\nexport type { Declaration };\n","import * as appearance from './appearance';\nimport { registerEmitter } from './appearance-protocol';\nimport type { Block } from './appearance-protocol';\nimport { applyDeclarations } from './declarations';\nimport type { Declaration } from './declarations';\n\ntype Member = Extract<keyof CSSStyleDeclaration, string>;\n\ntype Settable = {\n [K in Member]-?: CSSStyleDeclaration[K] extends Function ? never : K;\n}[Member];\n\ntype Key =\n | style.Property\n | keyof macro.Registry\n | `--${string}`\n | `_${string}`;\n\ntype Argument<K extends keyof macro.Registry> =\n macro.Registry[K] extends (value: infer A, ...rest: any[]) => any ? A : never;\n\ndeclare namespace macro {\n /**\n * Macros visible to a style map. A pack augments this interface to declare\n * what it registers with `macro()`.\n */\n interface Registry {}\n\n /** Maps one argument to style, or to keys which resolve further. */\n type Fn = (value: any, key: string) => unknown;\n\n /**\n * Body of a `macro()` map. A name declared in {@link Registry} must match its\n * declaration; an undeclared one is accepted, and becomes checkable at call\n * sites once a module augments `Registry` with it.\n */\n type Map =\n & Partial<Registry>\n & { [K in `_${string}`]?: style.Map }\n & Record<string, Fn | style.Map | undefined>;\n}\n\ndeclare namespace style {\n /** CSS property names, minus the CSSOM's own members. */\n type Property = Exclude<Settable, 'length' | 'parentRule' | 'cssText'>;\n\n /** What a declaration or macro argument may be; never a plain object. */\n type Value =\n | string\n | number\n | boolean\n | null\n | undefined\n | readonly Value[];\n\n /**\n * Body of a `style()` map. Bare keys are declarations or macro calls,\n * `_name` opens a rule or descendant scope, and `$name` is reserved.\n */\n type Map = {\n [K in Key]?:\n K extends `_${string}` ? Map :\n K extends keyof macro.Registry ? Argument<K> :\n Value;\n };\n}\n\ninterface Sheet {\n element: HTMLStyleElement;\n emitted: WeakMap<Block, Map<number, string>>;\n names: Map<string, string>;\n positions: [number, number][];\n}\n\nconst sheets = new WeakMap<Document, Sheet>();\n\nfunction style<T extends object>(type: T, rules: style.Map): T {\n appearance.style(type, rules);\n registerEmitter(emit);\n return type;\n}\n\nfunction macro(rules: macro.Map): macro.Map {\n appearance.macro(rules);\n registerEmitter(emit);\n return rules;\n}\n\nfunction emit(block: Block, depth: number, document: Document) {\n let sheet = sheets.get(document);\n\n if (!sheet?.element.sheet) {\n const element = document.createElement('style');\n element.dataset.expressive = 'dom';\n document.head.append(element);\n sheet = { element, emitted: new WeakMap(), names: new Map(), positions: [] };\n sheets.set(document, sheet);\n }\n\n let byDepth = sheet.emitted.get(block);\n if (!byDepth) sheet.emitted.set(block, (byDepth = new Map()));\n\n const cached = byDepth.get(depth);\n if (cached) return cached;\n\n const css = serialize(document, block.declarations);\n const base = (depth ? `${block.name}-d${depth}` : block.name).replace(/[^\\w-]/g, '_');\n let name = base;\n\n for (let index = 2; sheet.names.has(name) && sheet.names.get(name) !== css; index++)\n name = `${base}-${index}`;\n\n if (!sheet.names.has(name)) {\n const { positions } = sheet;\n let at = positions.findIndex(([d, o]) => d > depth || d == depth && o > block.ordinal);\n if (at < 0) at = positions.length;\n\n sheet.names.set(name, css);\n positions.splice(at, 0, [depth, block.ordinal]);\n sheet.element.sheet!.insertRule(`.${name}{${css}}`, at);\n }\n\n byDepth.set(depth, name);\n return name;\n}\n\nfunction serialize(document: Document, declarations: Declaration) {\n const value = document.createElement('div').style as any;\n applyDeclarations(value, declarations);\n return value.cssText;\n}\n\nexport { macro, style };\n","import type { JSX } from './jsx-runtime';\nimport type { ComponentType, Node } from './vnode';\nimport { vnode } from './vnode';\n\ntype Module<T extends ComponentType = ComponentType> = T | { default: T };\n\ntype Attributes<T> = [T] extends [never] ? {}\n : T extends abstract new (...args: any[]) => infer I\n ? JSX.LibraryManagedAttributes<T, I>\n : T extends (props: infer P) => any ? P : never;\n\ninterface Load {\n pending: PromiseLike<void>;\n resolved?: ComponentType;\n failed?: { error: unknown };\n}\n\nconst LOADS = new WeakMap<Function, Load>();\n\nfunction resolve(type: Function, props: object, run: () => unknown): Node {\n const load = LOADS.get(type);\n\n if (load?.resolved) return vnode(load.resolved, props);\n\n if (load?.failed) {\n LOADS.delete(type);\n throw load.failed.error;\n }\n\n if (load) throw load.pending;\n\n const output = run();\n\n if (!output || typeof (output as PromiseLike<unknown>).then != 'function') return output as Node;\n\n const next = {} as Load;\n\n LOADS.set(type, next);\n\n throw next.pending = (output as PromiseLike<Module | undefined>).then(\n (module) => {\n const component = typeof module == 'function' ? module : module?.default;\n\n if (typeof component == 'function') next.resolved = component;\n else next.failed = { error: new Error('Loader resolved no component.') };\n },\n (error) => {\n next.failed = { error };\n }\n );\n}\n\nexport { resolve };\nexport type { Attributes, Module };\n","interface Placed {\n start: Node;\n dead?: boolean;\n}\n\ntype Entry = [Placed, () => unknown];\n\nconst DETACHED = new WeakMap<Node, Entry[]>();\n\nlet batch: Entry[] | undefined;\n\n/** Run `run` once `fiber` is on the page: now, after the current batch, or when its detached root attaches. */\nfunction inserted(fiber: Placed, run: () => unknown) {\n enqueue([fiber, run]);\n}\n\n/** A fragment whose commits wait until it attaches. */\nfunction fragment() {\n const root = document.createDocumentFragment();\n\n DETACHED.set(root, []);\n return root;\n}\n\nfunction attach(root: Node) {\n const held = DETACHED.get(root);\n\n DETACHED.delete(root);\n held?.forEach(enqueue);\n}\n\n/** Defer commits made during `work` until it returns or throws. */\nfunction batched<T>(work: () => T): T {\n if (batch) return work();\n\n const entries: Entry[] = (batch = []);\n\n try {\n return work();\n } finally {\n batch = undefined;\n entries.forEach(deliver);\n }\n}\n\nfunction enqueue(entry: Entry) {\n if (batch) batch.push(entry);\n else deliver(entry);\n}\n\nfunction deliver(entry: Entry) {\n const [fiber, run] = entry;\n const held = DETACHED.get(fiber.start.getRootNode());\n\n if (held) held.push(entry);\n else if (!fiber.dead) run();\n}\n\nexport { attach, batched, fragment, inserted };\n","import { Component, Context, State } from '@expressive/mvc';\nimport { has, map } from '@expressive/mvc';\nimport { watch } from '@expressive/mvc/observable';\nimport { Fragment, compose } from '@expressive/mvc/jsx-runtime';\n\nimport { call, commit, dispose, enter } from './adapter';\nimport { latest, same, track, untrack } from './hot';\nimport { resolve } from './loader';\nimport type { Scope } from './adapter';\nimport {\n appearanceRoot,\n appearanceToken,\n createAppearanceToken,\n emitClass,\n enterAppearance\n} from './appearance-protocol';\nimport type { AppearanceContext, ResolvedAppearance } from './appearance-protocol';\nimport { attach, batched, fragment, inserted } from './commits';\nimport { applyDeclarations } from './declarations';\nimport { afterFlush, claim as dequeue, release, schedule, settle as absorb, transition } from './scheduler';\nimport { PORTAL, childrenOf, isVNode } from './vnode';\nimport type { Key, Node as RenderNode, VNode } from './vnode';\n\ntype Container = Element | DocumentFragment;\ntype Kind = 'collection' | 'component' | 'element' | 'fragment' | 'function' | 'portal' | 'text';\n\ninterface Boundary {\n catch?: (error: Error) => Promise<void> | void;\n fallback: () => RenderNode;\n owner?: Fiber;\n parent?: Boundary;\n waiting?: Set<Fiber>;\n}\n\ninterface Renderable extends State {\n props?: Record<string, any>;\n key?: Key;\n fallback?: RenderNode | false;\n catch?(error: Error, instance: Renderable): Promise<void> | void;\n mount?(): (() => void) | void;\n render?(props?: any): RenderNode;\n}\n\ntype Placement = Pick<Renderable, 'fallback' | 'catch'>;\n\ninterface Fiber {\n kind: Kind;\n key?: Key;\n type?: unknown;\n value?: unknown;\n source?: unknown;\n props?: Record<string, any>;\n context: Context;\n boundary?: Boundary;\n ownBoundary?: Boundary;\n start: globalThis.Node;\n end: globalThis.Node;\n children: Fiber[];\n scope?: Scope;\n cleanup?: (() => void) | void;\n release?: () => void;\n childContext?: Context;\n instance?: Renderable;\n owned?: boolean;\n events?: Map<string, EventListener>;\n portalStart?: globalThis.Node;\n portalEnd?: globalThis.Node;\n portalContainer?: Container;\n suspended?: Set<() => void>;\n applied?: boolean;\n retried?: boolean;\n portals?: [Fiber, DocumentFragment][];\n dead?: boolean;\n waitingOn?: Boundary;\n recovering?: object;\n stash?: DocumentFragment;\n placeholder?: Fiber;\n staging?: DocumentFragment;\n render?: () => RenderNode;\n appearance?: Appearance;\n consumed?: boolean;\n claimed?: Claim;\n}\n\ninterface Appearance {\n context?: AppearanceContext;\n entries: Forwarded[];\n}\n\ninterface Forwarded {\n hops: number;\n style: Style;\n}\n\ninterface Carried {\n appearance: ResolvedAppearance;\n doors: number;\n}\n\ninterface Collected {\n classes: string[];\n declarations: Record<string, unknown>;\n tokens: Carried[];\n}\n\ninterface Claim {\n className: string;\n context?: AppearanceContext;\n declarations: Record<string, unknown>;\n}\n\nconst roots = new WeakMap<Container, () => void>();\nconst SVG = 'http://www.w3.org/2000/svg';\nconst dirty = new Set<Boundary>();\nconst stashes = new WeakMap<globalThis.Node, Fiber>();\nconst CONTROLS = ['checked', 'value'];\nconst ENUMERATED = ['contentEditable', 'contenteditable', 'draggable', 'spellcheck'];\nconst ALIASES: Record<string, string> = { autoFocus: 'autofocus', contentEditable: 'contenteditable', htmlFor: 'for' };\nconst focusing: Element[] = [];\nconst controlled = new WeakMap<Element, Fiber>();\nconst restoring = new WeakSet<Document>();\nlet passiveRender = false;\nlet holding: { thrown: unknown; fiber?: Fiber } | undefined;\nlet depth = 0;\nlet settling = false;\nlet rendering: object | undefined;\nlet touched = false;\nconst observed = new WeakMap<object, Record<string, any>>();\nconst tickets = new WeakMap<object, Ticket>();\n\ninterface Ticket {\n classes: string[];\n tokens: Carried[];\n}\n\nfunction render(node: RenderNode, container: Container): () => void {\n roots.get(container)?.();\n container.replaceChildren();\n\n const context = new Context(Context.root);\n const fiber = range('fragment', container, null, context);\n\n try {\n pass(() => {\n const appearanceContext = appearanceRoot();\n reconcile(fiber, node, context, undefined, appearanceContext ? { context: appearanceContext, entries: [] } : undefined);\n });\n } catch (error) {\n unmountFiber(fiber);\n context.pop();\n throw error;\n }\n\n let active = true;\n const unmount = () => {\n if (!active) return;\n active = false;\n unmountFiber(fiber);\n context.pop();\n roots.delete(container);\n };\n\n roots.set(container, unmount);\n return unmount;\n}\n\nfunction range(kind: Kind, parent: globalThis.Node, before: globalThis.Node | null, context: Context): Fiber {\n const start = document.createComment(kind);\n const end = document.createComment(`/${kind}`);\n\n parent.insertBefore(start, before);\n parent.insertBefore(end, before);\n\n return { kind, context, start, end, children: [] };\n}\n\nfunction makeScope(kind: Scope['kind'], context: Context, update: (passive: boolean) => void): Scope {\n return {\n active: true,\n childContext: context,\n context,\n kind,\n subscriptions: [],\n update,\n useIndex: 0,\n uses: []\n };\n}\n\nfunction park(fiber: Fiber) {\n move(fiber, fragment(), null);\n}\n\nfunction complete<T extends Fiber>(fiber: T, work: () => void): T {\n try {\n work();\n } catch (error) {\n if (holding && error === holding.thrown) {\n park(fiber);\n holding.fiber = fiber;\n } else unmountFiber(fiber);\n\n throw error;\n }\n\n return fiber;\n}\n\nfunction componentProps(\n type: unknown,\n props: Record<string, any>,\n appearance: Appearance | undefined\n) {\n const context = appearance?.context;\n if (!context || typeof type != 'function') return { appearance, props };\n\n const value = context.resolve(props);\n const entries = appearance!.entries;\n\n if (!value) return { appearance: { entries }, props };\n\n return {\n appearance: {\n context: value.context,\n entries\n },\n props: { ...props, style: [createAppearanceToken(value), props.style] }\n };\n}\n\nfunction mount(value: RenderNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance): Fiber {\n if (typeof value == 'string' || typeof value == 'number' || typeof value == 'bigint') {\n const text = document.createTextNode(String(value));\n parent.insertBefore(text, before);\n return { kind: 'text', value, context, start: text, end: text, children: [] };\n }\n\n if (renderable(value)) return mountComponent(value, parent, before, context, boundary, appearance);\n if (isCollection(value))\n return mountCollection(value, parent, before, context, boundary, appearance);\n\n if (!isVNode(value)) throw new TypeError(`Cannot render ${String(value)}.`);\n\n if (value.type === Fragment) return mountFragment(value, parent, before, context, boundary, appearance);\n if (value.type === PORTAL) return mountPortal(value, parent, before, context, boundary, appearance);\n if (typeof value.type == 'string') return mountElement(value, parent, before, context, boundary, appearance);\n if (typeof value.type != 'function')\n throw new Error(`Cannot render ${String(value.type)}.`);\n\n if (value.type.prototype instanceof State)\n return mountOwnedComponent(value, parent, before, context, boundary, appearance);\n\n return mountFunction(value, parent, before, context, boundary, appearance);\n}\n\nfunction mountFragment(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const fiber = range('fragment', parent, before, context);\n fiber.key = value.key;\n fiber.type = Fragment;\n fiber.appearance = appearance;\n\n return complete(fiber, () => {\n reconcile(fiber, value.props.children, context, boundary, appearance);\n });\n}\n\nfunction mountFunction(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const fiber = range('function', parent, before, context);\n const resolved = componentProps(value.type, value.props, appearance);\n fiber.key = value.key;\n fiber.type = value.type;\n fiber.props = observe(resolved.props);\n fiber.boundary = boundary;\n fiber.appearance = resolved.appearance;\n fiber.scope = makeScope('function', context, (passive) => runFunction(fiber, passive));\n fiber.render = () => enter(fiber.scope!, () => {\n const type = latest(fiber.type as Function);\n return resolve(type, fiber.props!, () => call(type, fiber.props));\n });\n track(fiber.type as Function, fiber.scope);\n probing(fiber);\n\n return complete(fiber, () => {\n runFunction(fiber, passiveRender);\n });\n}\n\nfunction mountOwnedComponent(\n value: VNode,\n parent: globalThis.Node,\n before: globalThis.Node | null,\n context: Context,\n boundary?: Boundary,\n appearance?: Appearance\n) {\n const resolved = componentProps(value.type, value.props, appearance);\n const Type = value.type as new (...args: unknown[]) => Renderable;\n const props = observe(resolved.props);\n const instance: Renderable = new Type(props,\n Type.prototype instanceof Component ? undefined : () => props.is?.(instance)\n );\n\n return mountComponent(instance, parent, before, context, boundary, resolved.appearance, true, value.key, props);\n}\n\nfunction runFunction(fiber: Fiber, passive: boolean) {\n const result = attempt(fiber, passive, fiber.render!);\n\n if (result === true) inserted(fiber, () => commit(fiber.scope!));\n else return result;\n}\n\nfunction probing(fiber: Fiber) {\n const scope = fiber.scope!;\n\n scope.empty = () => !fiber.children.length;\n scope.probe = () => {\n try {\n scope.probed = { output: consume(fiber, fiber.render!) };\n } catch (thrown) {\n if (isThenable(thrown)) return thrown;\n }\n };\n}\n\nfunction mountComponent(\n instance: Renderable,\n parent: globalThis.Node,\n before: globalThis.Node | null,\n context: Context,\n inherited?: Boundary,\n appearance?: Appearance,\n owned = false,\n key?: Key,\n props = instance.props\n) {\n const fiber = range('component', parent, before, context);\n const childContext = context.push(instance);\n const element = (owned ? props : {}) as Placement;\n const fallback = element.fallback !== undefined ? element.fallback : instance.fallback;\n const ownBoundary: Boundary | undefined = fallback !== undefined && fallback !== false || element.catch || instance.catch\n ? {\n catch: element.catch || instance.catch ? (error) => {\n const handler = owned && (fiber.props as Placement).catch;\n return (handler || instance.catch)!.call(instance, error, instance);\n } : undefined,\n fallback: () => {\n const placed = owned ? (fiber.props as Placement).fallback : undefined;\n return placed !== undefined ? placed : instance.fallback;\n },\n owner: fiber,\n parent: inherited\n }\n : inherited;\n\n fiber.boundary = ownBoundary;\n if (ownBoundary !== inherited) fiber.ownBoundary = ownBoundary;\n fiber.childContext = childContext;\n fiber.instance = instance;\n fiber.key = owned ? key : instance.key;\n fiber.type = instance.constructor;\n fiber.props = props;\n fiber.owned = owned;\n fiber.appearance = appearance;\n fiber.scope = makeScope('component', childContext, (passive) => runComponent(fiber, passive));\n fiber.render = () => enter(fiber.scope!, () => compose.call(fiber.value as State, fiber.props));\n probing(fiber);\n\n let first = true;\n let proxy = instance;\n fiber.release = watch(instance, (current, events) => {\n const { applied, scope } = fiber;\n\n proxy = current;\n fiber.applied = undefined;\n\n if (!first && scope!.active) {\n if (applied && events.includes('props')) transition(() => schedule(scope!));\n else schedule(scope!);\n }\n\n first = false;\n }, undefined, transition);\n\n Object.defineProperty(fiber, 'value', { get: () => proxy });\n try {\n complete(fiber, () => {\n runComponent(fiber, passiveRender);\n });\n } finally {\n if (owned && !fiber.dead) inserted(fiber, () => (fiber.cleanup = instance.mount?.()));\n }\n\n return fiber;\n}\n\nfunction runComponent(fiber: Fiber, passive: boolean) {\n const result = attempt(fiber, passive, fiber.render!);\n\n if (result !== true) return result;\n}\n\nfunction mountCollection(value: has.List<unknown> | has.Pool<unknown> | map.Managed<unknown, unknown>, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const fiber = range('collection', parent, before, context);\n fiber.source = value;\n fiber.value = value;\n fiber.boundary = boundary;\n fiber.appearance = appearance;\n fiber.scope = makeScope('collection', context, (passive) => runCollection(fiber, passive));\n\n let first = true;\n fiber.release = watch(value, (current) => {\n fiber.value = current;\n if (!first && fiber.scope?.active) schedule(fiber.scope);\n first = false;\n }, undefined, transition);\n\n return complete(fiber, () => {\n runCollection(fiber, passiveRender);\n });\n}\n\nfunction runCollection(fiber: Fiber, passive: boolean) {\n attempt(fiber, passive, () => {\n const value = fiber.value as Iterable<unknown>;\n return value instanceof map.Managed ? [...value.values()] : [...value];\n });\n}\n\nfunction mountPortal(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const marker = document.createComment('portal');\n const container = target(value.props.into, parent);\n const portalStart = document.createComment('portal-root');\n const portalEnd = document.createComment('/portal-root');\n\n parent.insertBefore(marker, before);\n container.append(portalStart, portalEnd);\n\n const output: Fiber = {\n kind: 'portal',\n key: value.key,\n type: PORTAL,\n props: value.props,\n context,\n boundary,\n appearance,\n start: marker,\n end: marker,\n children: [],\n portalContainer: container,\n portalStart,\n portalEnd\n };\n\n return complete(output, () => {\n reconcilePortal(output, value.props.children, context, boundary, appearance);\n });\n}\n\nfunction target(into: unknown, parent: globalThis.Node): Container {\n if (typeof into != 'string') return into as Container;\n\n const root = parent.getRootNode();\n const found = [...document.querySelectorAll(into)];\n\n if (root instanceof DocumentFragment) found.push(...root.querySelectorAll(into));\n\n if (found.length != 1)\n throw new Error(`Portal target \"${into}\" ${found.length ? 'is ambiguous' : 'was not found'}.`);\n\n return found[0];\n}\n\nfunction mountElement(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const tag = value.type as string;\n let host = parent;\n\n for (let owner = stashes.get(host); owner; owner = stashes.get(host))\n host = owner.end.parentNode!;\n\n const namespace = tag == 'svg' || host instanceof SVGElement && host.localName != 'foreignObject' ? SVG : undefined;\n const element = namespace\n ? document.createElementNS(SVG, tag)\n : document.createElement(tag);\n const fiber: Fiber = {\n kind: 'element',\n key: value.key,\n type: tag,\n props: {},\n context,\n boundary,\n start: element,\n end: element,\n children: [],\n events: new Map()\n };\n\n parent.insertBefore(element, before);\n complete(fiber, () => {\n patchProps(fiber, value.props, appearance);\n });\n\n if (value.props.autofocus || value.props.autoFocus) focusing.push(element);\n return fiber;\n}\n\nfunction pass<T>(work: () => T): T {\n depth++;\n\n try {\n return work();\n } finally {\n if (!--depth) {\n settle();\n focus();\n }\n }\n}\n\nfunction focus() {\n for (const element of focusing.splice(0))\n if (element.isConnected) (element as HTMLElement).focus();\n}\n\nfunction attempt(fiber: Fiber, passive: boolean, render: () => RenderNode): true | PromiseLike<unknown> | void {\n const previous = passiveRender;\n const scope = fiber.scope!;\n const probed = scope.probed;\n const empty = !fiber.children.length;\n\n scope.probed = undefined;\n passiveRender ||= passive;\n\n if (passive && !depth && empty && !fiber.stash)\n fiber.staging ||= fragment();\n\n const run = () => pass(() => {\n try {\n const output = probed ? probed.output as RenderNode : consume(fiber, render);\n reconcile(fiber, output, scope.childContext, fiber.boundary, renderedAppearance(fiber));\n\n if (fiber.staging) {\n fiber.end.parentNode!.insertBefore(fiber.staging, fiber.end);\n attach(fiber.staging);\n fiber.staging = undefined;\n }\n\n if (!fiber.recovering) unwait(fiber);\n fiber.retried = undefined;\n return true;\n } catch (thrown) {\n return suspend(fiber, thrown, passive, empty);\n }\n });\n\n try {\n return passive ? batched(run) : run();\n } finally {\n passiveRender = previous;\n }\n}\n\nfunction observe(props: Record<string, any>) {\n if (!('style' in props)) return props;\n\n let output = observed.get(props);\n\n if (!output) {\n const { style } = props;\n let handle: Style;\n let resolved = false;\n\n output = Object.defineProperty({ ...props }, 'style', {\n enumerable: true,\n get() {\n if (rendering === output) touched = true;\n if (!resolved) {\n handle = door(style);\n resolved = true;\n }\n return handle;\n }\n });\n observed.set(props, output);\n }\n\n return output;\n}\n\nfunction door(value: Style) {\n const collected: Collected = { classes: [], declarations: {}, tokens: [] };\n const { classes, declarations, tokens } = collected;\n\n collect(value, collected, 1);\n\n if (!classes.length && !tokens.length && !Object.keys(declarations).length) return undefined;\n\n const key = Object.freeze({});\n\n tickets.set(key, { classes, tokens });\n return Object.freeze({ ...declarations, [Symbol('style')]: key });\n}\n\nfunction consume(fiber: Fiber, render: () => RenderNode) {\n const previous = rendering;\n const read = touched;\n\n rendering = fiber.props;\n touched = false;\n\n try {\n const output = render();\n fiber.consumed = touched;\n return output;\n } finally {\n rendering = previous;\n touched = read;\n }\n}\n\nfunction wait(fiber: Fiber, boundary: Boundary) {\n if (fiber.waitingOn !== boundary) unwait(fiber);\n\n fiber.waitingOn = boundary;\n (boundary.waiting ||= new Set()).add(fiber);\n dirty.add(boundary);\n}\n\nfunction unwait(fiber: Fiber) {\n const boundary = fiber.waitingOn;\n\n if (!boundary) return;\n\n fiber.waitingOn = undefined;\n boundary.waiting!.delete(fiber);\n if (!boundary.owner!.dead) dirty.add(boundary);\n}\n\nfunction settle() {\n if (settling) return;\n settling = true;\n\n try {\n for (const boundary of dirty) {\n dirty.delete(boundary);\n\n const owner = boundary.owner!;\n const waiting = boundary.waiting!.size > 0;\n\n if (!owner.dead && waiting != !!owner.stash)\n waiting ? hide(owner, boundary) : reveal(owner);\n }\n } finally {\n settling = false;\n }\n}\n\nfunction hide(owner: Fiber, boundary: Boundary) {\n const stash = document.createDocumentFragment();\n\n for (const child of owner.children) move(child, stash, null);\n\n owner.portals = portals(owner, []).map((portal) => {\n const content = document.createDocumentFragment();\n moveRange(portal.portalStart!, portal.portalEnd!, content);\n return [portal, content];\n });\n\n stashes.set(stash, owner);\n\n const context = owner.childContext!;\n const placeholder = range('fragment', owner.end.parentNode!, owner.end, context);\n\n owner.stash = stash;\n owner.placeholder = placeholder;\n reconcile(placeholder, boundary.fallback(), context, boundary.parent);\n}\n\nfunction reveal(owner: Fiber) {\n unmountFiber(owner.placeholder!);\n owner.end.parentNode!.insertBefore(owner.stash!, owner.end);\n\n for (const [portal, content] of owner.portals!)\n if (!portal.dead) portal.portalContainer!.append(content);\n\n owner.portals = undefined;\n owner.placeholder = undefined;\n owner.stash = undefined;\n}\n\nfunction portals(fiber: Fiber, found: Fiber[]) {\n for (const child of fiber.children) {\n if (child.kind == 'portal') found.push(child);\n portals(child, found);\n }\n\n return found;\n}\n\nfunction moveRange(start: globalThis.Node, end: globalThis.Node, target: globalThis.Node) {\n let node: globalThis.Node | null = start;\n\n while (node) {\n const next: globalThis.Node | null = node.nextSibling;\n target.appendChild(node);\n if (node === end) break;\n node = next;\n }\n}\n\nfunction suspend(fiber: Fiber, thrown: unknown, passive: boolean, empty: boolean) {\n const boundary = fiber.boundary;\n\n if (isThenable(thrown)) {\n if (!boundary) throw thrown;\n if (passive && empty && depth > 1) {\n if (holding?.thrown !== thrown) holding = { thrown };\n throw thrown;\n }\n\n holding = undefined;\n if (!passive) wait(fiber, boundary);\n\n const scope = fiber.scope!;\n let held = scope.holds;\n\n scope.holds = undefined;\n\n const clear = () => {\n fiber.suspended!.delete(clear);\n release(held);\n held = undefined;\n };\n\n (fiber.suspended ||= new Set()).add(clear);\n\n const resume = (retry: () => void) => {\n fiber.suspended!.delete(clear);\n if (!scope.active) return clear();\n if (held) (scope.holds ||= []).push(...held);\n held = undefined;\n retry();\n };\n\n thrown.then(\n () => resume(() => passive ? transition(() => schedule(scope)) : schedule(scope)),\n (error) => resume(() => pass(() => recover(fiber, error, fiber.boundary)))\n );\n return thrown;\n }\n\n recover(fiber, thrown, fiber.boundary);\n}\n\nfunction recover(fiber: Fiber, thrown: unknown, boundary: Boundary | undefined) {\n const error = thrown instanceof Error ? thrown : new Error(String(thrown));\n\n while (boundary && !boundary.catch) boundary = boundary.parent;\n\n if (!boundary) throw error;\n\n const handler = boundary;\n\n const token = {};\n\n wait(fiber, handler);\n fiber.recovering = token;\n\n Promise.resolve(handler.catch!(error)).then(\n () => {\n if (fiber.recovering !== token) return;\n fiber.recovering = undefined;\n if (!fiber.scope!.active || fiber.retried) return;\n fiber.retried = true;\n schedule(fiber.scope!);\n },\n (next) => {\n if (fiber.recovering === token && fiber.scope!.active) pass(() => recover(fiber, next, handler.parent));\n }\n );\n}\n\nfunction isThenable(value: unknown): value is PromiseLike<unknown> {\n return !!value && typeof (value as PromiseLike<unknown>).then == 'function';\n}\n\nfunction reconcile(fiber: Fiber, value: RenderNode, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const detached = fiber.stash || fiber.staging;\n\n if (detached) reconcileChildren(fiber, detached, null, value, context, boundary, appearance);\n else reconcileChildren(fiber, fiber.end.parentNode!, fiber.end, value, context, boundary, appearance);\n}\n\nfunction reconcilePortal(fiber: Fiber, value: RenderNode, context: Context, boundary?: Boundary, appearance?: Appearance) {\n reconcileChildren(fiber, fiber.portalEnd!.parentNode!, fiber.portalEnd!, value, context, boundary, appearance);\n}\n\nfunction reconcileChildren(owner: Fiber, parent: globalThis.Node, before: globalThis.Node | null, value: RenderNode, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const values = childrenOf(value);\n const old = owner.children;\n const keyed = new Map<Key, Fiber>();\n const used = new Set<Fiber>();\n const next: Fiber[] = [];\n\n for (const child of old)\n if (child.key !== null && child.key !== undefined) keyed.set(child.key, child);\n\n try {\n for (let index = 0; index < values.length; index++) {\n const value = source(values[index]);\n const key = keyOf(value);\n let child = key !== null && key !== undefined\n ? keyed.get(key)\n : old[index]?.key == null\n ? old[index]\n : undefined;\n\n if (child && used.has(child)) child = undefined;\n if (child) used.add(child);\n\n const fiber = patch(child, value, parent, before, context, boundary, appearance);\n\n if (fiber !== child) used.delete(child!);\n next.push(fiber);\n }\n } catch (error) {\n if (holding && error === holding.thrown) {\n for (const fiber of next) if (!old.includes(fiber)) park(fiber);\n if (holding.fiber) next.push(holding.fiber);\n holding.fiber = undefined;\n }\n\n owner.children = [...next, ...old.filter((child) => !child.dead && !next.includes(child))];\n throw error;\n }\n\n for (const child of old)\n if (!used.has(child)) unmountFiber(child);\n\n let anchor = before;\n for (let index = next.length - 1; index >= 0; index--) {\n const child = next[index];\n const root = child.start.getRootNode();\n\n move(child, parent, anchor);\n anchor = child.start;\n if (child.start.getRootNode() !== root) attach(root);\n }\n\n owner.children = next;\n}\n\nfunction patch(old: Fiber | undefined, value: RenderNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance): Fiber {\n if (!old || !compatible(old, value)) return mount(value, parent, old?.start || before, context, boundary, appearance);\n\n if (old.ownBoundary) old.ownBoundary.parent = boundary;\n old.boundary = old.ownBoundary || boundary;\n if (old.kind == 'collection') {\n if (old.appearance !== appearance) {\n old.appearance = appearance;\n runCollection(old, passiveRender);\n }\n return old;\n }\n\n if (old.kind == 'text') {\n const next = String(value);\n if (old.start.nodeValue !== next) old.start.nodeValue = next;\n old.value = value;\n } else if (old.kind == 'element') {\n patchProps(old, (value as VNode).props, appearance);\n } else if (old.kind == 'fragment') {\n old.context = context;\n old.appearance = appearance;\n reconcile(old, (value as VNode).props.children, context, old.boundary, appearance);\n } else if (old.kind == 'function') {\n const vnode = value as VNode;\n const resolved = componentProps(vnode.type, vnode.props, appearance);\n if (old.type !== vnode.type) {\n untrack(old.type as Function, old.scope!);\n old.type = vnode.type;\n old.scope!.hot = true;\n track(old.type as Function, old.scope!);\n }\n old.appearance = resolved.appearance;\n old.props = observe(resolved.props);\n rerun(old, () => runFunction(old, passiveRender));\n } else if (old.kind == 'component') {\n const resolved = isVNode(value)\n ? componentProps(value.type, value.props, appearance)\n : { appearance, props: old.props! };\n old.appearance = resolved.appearance;\n const props = isVNode(value) ? observe(resolved.props) : resolved.props;\n if (isVNode(value) && props !== old.props) {\n const instance = old.instance!;\n if (passiveRender) old.applied = true;\n if (instance instanceof Component) (instance as any).props = props;\n else instance.set(merge(old.props!, props) as never);\n }\n old.props = props;\n rerun(old, () => runComponent(old, passiveRender));\n } else {\n old.appearance = appearance;\n const vnode = value as VNode;\n old.props = vnode.props;\n reconcilePortal(old, vnode.props.children, context, old.boundary, appearance);\n }\n\n return old;\n}\n\nfunction rerun(fiber: Fiber, run: () => void) {\n dequeue(fiber.scope!);\n run();\n absorb(fiber.scope!);\n}\n\nfunction compatible(fiber: Fiber, value: RenderNode) {\n if (fiber.kind == 'text') return ['string', 'number', 'bigint'].includes(typeof value);\n if (renderable(value)) return fiber.kind == 'component' && fiber.instance === value;\n if (isCollection(value))\n return fiber.kind == 'collection' && fiber.source === value;\n if (!isVNode(value)) return false;\n if (fiber.key !== value.key || !same(fiber.type, value.type)) return false;\n if (fiber.kind == 'portal') return fiber.props!.into === value.props.into;\n return true;\n}\n\nfunction source(value: RenderNode): RenderNode {\n if (value instanceof State) return value.is;\n\n while (isCollection(value) && isCollection(Object.getPrototypeOf(value)))\n value = Object.getPrototypeOf(value);\n\n return value;\n}\n\nfunction renderable(value: unknown): value is Renderable {\n return value instanceof State && typeof (value as Renderable).render == 'function';\n}\n\nfunction merge(previous: Record<string, any>, next: Record<string, any>) {\n const output: Record<string, any> = {};\n for (const key in previous) output[key] = undefined;\n return { ...output, ...next };\n}\n\nfunction isCollection(value: unknown): value is has.List<unknown> | has.Pool<unknown> | map.Managed<unknown, unknown> {\n return value instanceof has.List || value instanceof has.Pool || value instanceof map.Managed;\n}\n\nfunction keyOf(value: RenderNode): Key {\n if (renderable(value)) return value.key;\n return isVNode(value) ? value.key : undefined;\n}\n\nfunction move(fiber: Fiber, parent: globalThis.Node, before: globalThis.Node | null) {\n if (fiber.start.parentNode === parent && fiber.end.nextSibling === before) return;\n\n let node: globalThis.Node | null = fiber.start;\n while (node) {\n const next: globalThis.Node | null = node.nextSibling;\n parent.insertBefore(node, before);\n if (node === fiber.end) break;\n node = next;\n }\n}\n\nfunction patchProps(fiber: Fiber, next: Record<string, any>, appearance?: Appearance) {\n const element = fiber.start as Element;\n const previous = fiber.props!;\n const raw = 'dangerouslySetInnerHTML' in next;\n const resolved = appearance?.context?.resolve(next, fiber.type as string);\n\n if (raw) {\n for (let index = fiber.children.length - 1; index >= 0; index--)\n unmountFiber(fiber.children[index]);\n fiber.children = [];\n }\n\n for (const key of Object.keys({ ...previous, ...next })) {\n if (key.startsWith('_') || key == 'children' || key == 'className' || key == 'key' || key == 'ref' || key == 'style' || CONTROLS.includes(key)) continue;\n if (previous[key] === next[key]) continue;\n patchProp(fiber, element, key, previous[key], next[key]);\n }\n\n const claimed = claim(element, appearance, resolved, next.className, next.style);\n\n applyClaim(element, fiber.claimed, claimed);\n fiber.claimed = claimed;\n fiber.props = next;\n fiber.appearance = appearance;\n\n if (!raw) {\n reconcileChildren(\n fiber,\n element,\n null,\n next.children,\n fiber.context,\n fiber.boundary,\n claimed.context ? { context: claimed.context, entries: [] } : undefined\n );\n }\n\n for (const key of CONTROLS) {\n const value = next[key];\n const live = (element as any)[key];\n const differs = value == null || !(key in element)\n ? previous[key] !== value\n : key == 'value' ? String(live) !== String(value) : live !== value;\n\n if (differs) patchProp(fiber, element, key, previous[key], value);\n }\n\n if (CONTROLS.some((key) => next[key] != null)) {\n const document = element.ownerDocument;\n\n controlled.set(element, fiber);\n\n if (!restoring.has(document)) {\n restoring.add(document);\n document.addEventListener('input', restoreTarget);\n document.addEventListener('change', restoreTarget);\n }\n }\n\n if (previous.ref !== next.ref) patchProp(fiber, element, 'ref', previous.ref, next.ref);\n}\n\nfunction patchProp(fiber: Fiber, element: Element, key: string, previous: any, next: any) {\n if (key == 'ref') {\n applyRef(previous, null);\n inserted(fiber, () => applyRef(next, element));\n return;\n }\n\n if (key == 'dangerouslySetInnerHTML') {\n element.innerHTML = next?.__html || '';\n return;\n }\n\n if (/^on[A-Z]/.test(key)) {\n const capture = key.endsWith('Capture');\n const lower = (capture ? key.slice(2, -7) : key.slice(2)).toLowerCase();\n const name = lower == 'doubleclick' ? 'dblclick' : lower;\n const id = `${name}:${capture}`;\n const current = fiber.events!.get(id);\n\n if (current) element.removeEventListener(name, current, capture);\n if (typeof next == 'function') {\n fiber.events!.set(id, next);\n element.addEventListener(name, next, capture);\n } else fiber.events!.delete(id);\n return;\n }\n\n const name = ALIASES[key] || key;\n\n if ((key.startsWith('aria-') || key.startsWith('data-') || ENUMERATED.includes(key)) && next != null) {\n element.setAttribute(name, String(next));\n return;\n }\n\n if (next === null || next === undefined || next === false) {\n if (key in element && typeof (element as any)[key] != 'function')\n try {\n const current = (element as any)[key];\n (element as any)[key] = typeof current == 'boolean'\n ? false\n : typeof current == 'number'\n ? 0\n : '';\n } catch {}\n element.removeAttribute(element.namespaceURI === SVG ? name.toLowerCase() : name);\n element.removeAttribute(name);\n return;\n }\n\n if (key in element && (element.namespaceURI !== SVG || settable(element, key)))\n try {\n (element as any)[key] = next;\n return;\n } catch {}\n\n element.setAttribute(name, next === true ? '' : String(next));\n}\n\ntype Style = string | Record<string, unknown> | false | null | undefined | readonly Style[];\n\nfunction applyClaim(element: Element, before: Claim | undefined, after: Claim) {\n const previous = before || { className: '', declarations: {} };\n\n if (previous.className !== after.className) {\n if (after.className) element.setAttribute('class', after.className);\n else element.removeAttribute('class');\n }\n\n applyDeclarations((element as HTMLElement).style, after.declarations, previous.declarations);\n}\n\nfunction claim(\n element: Element,\n appearance: Appearance | undefined,\n resolved: ResolvedAppearance | undefined,\n className: unknown,\n value: Style\n): Claim {\n const collected: Collected = { classes: [], declarations: {}, tokens: [] };\n const entries = appearance?.entries || [];\n let context = appearance?.context;\n let reach = -1;\n\n if (resolved) collect(createAppearanceToken(resolved), collected, 0);\n appendClasses(collected.classes, className);\n collect(value, collected, 0);\n\n for (let index = entries.length - 1; index >= 0; index--)\n collect(entries[index].style, collected, entries[index].hops);\n\n for (const { appearance, doors } of collected.tokens) {\n for (const block of appearance.blocks || [])\n collected.classes.push(emitClass(block, doors, element.ownerDocument));\n if (appearance.classes) collected.classes.push(...appearance.classes);\n if (appearance.context && doors >= reach) {\n context = appearance.context;\n reach = doors;\n }\n }\n\n return {\n className: [...new Set(collected.classes)].join(' '),\n context,\n declarations: collected.declarations\n };\n}\n\nfunction renderedAppearance(fiber: Fiber): Appearance | undefined {\n if (fiber.kind != 'component' && fiber.kind != 'function') return fiber.appearance;\n\n const style = fiber.props?.style as Style;\n const entries = (fiber.appearance?.entries || []).map(({ hops, style }) => ({ hops: hops + 1, style }));\n const inherited = fiber.appearance?.context || appearanceRoot();\n const context = enterAppearance(inherited, latest(fiber.type as Function));\n\n if (context?.base && context !== inherited)\n entries.push({ hops: 0, style: context.base as Style });\n\n if (style && !fiber.consumed && !(fiber.instance && 'style' in fiber.instance)) entries.push({ hops: 0, style });\n\n return entries.length || context ? { context, entries } : undefined;\n}\n\nfunction collect(value: Style, collected: Collected, doors: number) {\n if (!value) return;\n\n const token = appearanceToken(value);\n if (token) {\n collected.tokens.push({ appearance: token, doors });\n Object.assign(collected.declarations, token.declarations);\n return;\n }\n\n if (typeof value == 'string') {\n appendClasses(collected.classes, value);\n return;\n }\n\n if (Array.isArray(value)) {\n value.forEach((entry) => collect(entry, collected, doors));\n return;\n }\n\n for (const symbol of Object.getOwnPropertySymbols(value)) {\n const ticket = tickets.get((value as Record<symbol, object>)[symbol]);\n if (!ticket) continue;\n\n collected.classes.push(...ticket.classes);\n for (const carried of ticket.tokens)\n collected.tokens.push({ appearance: carried.appearance, doors: carried.doors + doors });\n }\n\n for (const key of Object.keys(value)) collected.declarations[key] = (value as Record<string, unknown>)[key];\n}\n\nfunction appendClasses(classes: string[], value: unknown) {\n if (typeof value == 'string') classes.push(...value.split(/\\s+/).filter(Boolean));\n}\n\nfunction restoreTarget(event: Event) {\n const element = event.target as HTMLInputElement;\n const fiber = controlled.get(element);\n\n if (fiber && event.type == settles(fiber.props!, element))\n queueMicrotask(() => afterFlush(() => restore(fiber)));\n}\n\nfunction settles(props: Record<string, any>, element: HTMLInputElement) {\n if (props.onInput) return 'input';\n if (props.onChange) return 'change';\n return element.type == 'checkbox' || element.type == 'radio' || element.localName == 'select' ? 'change' : 'input';\n}\n\nfunction restore(fiber: Fiber) {\n const element = fiber.start as any;\n\n for (const key of CONTROLS) {\n const value = fiber.props![key];\n\n if (value == null || fiber.dead) continue;\n if (key == 'value' ? String(element.value) !== String(value) : element[key] !== value)\n element[key] = value;\n }\n}\n\nfunction settable(element: Element, key: string) {\n let target: object = element;\n let descriptor: PropertyDescriptor | undefined;\n\n while (!(descriptor = Object.getOwnPropertyDescriptor(target, key)))\n target = Object.getPrototypeOf(target);\n\n return !!(descriptor.set || descriptor.writable);\n}\n\nfunction applyRef(ref: unknown, value: Element | null) {\n if (typeof ref == 'function') ref(value);\n else if (ref && typeof ref == 'object' && 'current' in ref) (ref as { current: Element | null }).current = value;\n}\n\nfunction unmountFiber(fiber: Fiber) {\n fiber.dead = true;\n unwait(fiber);\n\n for (let index = fiber.children.length - 1; index >= 0; index--)\n unmountFiber(fiber.children[index]);\n\n if (fiber.placeholder) unmountFiber(fiber.placeholder);\n\n fiber.suspended?.forEach((clear) => clear());\n if (fiber.kind == 'function') untrack(fiber.type as Function, fiber.scope!);\n if (fiber.scope) dispose(fiber.scope);\n fiber.release?.();\n\n if (fiber.kind == 'element') {\n applyRef(fiber.props?.ref, null);\n for (const [id, listener] of fiber.events!) {\n const [name, capture] = id.split(':');\n (fiber.start as Element).removeEventListener(name, listener, capture === 'true');\n }\n }\n\n if (fiber.kind == 'component') {\n if (typeof fiber.cleanup == 'function') fiber.cleanup();\n fiber.childContext?.pop();\n if (fiber.owned && !fiber.instance!.get(null)) fiber.instance!.set(null);\n } else if (fiber.kind == 'portal') {\n (fiber.portalStart as ChildNode).remove();\n (fiber.portalEnd as ChildNode).remove();\n }\n\n removeRange(fiber.start, fiber.end);\n}\n\nfunction removeRange(start: globalThis.Node, end: globalThis.Node) {\n let node = start;\n\n while (true) {\n const next = node.nextSibling;\n (node as ChildNode).remove();\n if (node === end) break;\n node = next!;\n }\n}\n\nexport { render };\nexport type { Container };\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- import { i as VNode } from "./chunk-vnode-BsbDCqd1.js";
2
- import { Fragment } from "@expressive/mvc/runtime";
3
- import { JSX } from "@expressive/mvc/jsx-runtime";
1
+ import { o as VNode } from "./chunk-loader-kjuM318E.js";
2
+ import { Fragment, JSX } from "@expressive/mvc/jsx-runtime";
4
3
 
5
4
  //#region src/hot.d.ts
6
5
  /**
@@ -1,6 +1,6 @@
1
- import { t as hot } from "./chunk-hot-gq8TyYJV.js";
2
- import { a as vnode } from "./chunk-vnode-CzmFSz5_.js";
3
- import { Fragment } from "@expressive/mvc/runtime";
1
+ import { t as hot } from "./chunk-hot-BAqPvKEQ.js";
2
+ import { s as vnode } from "./chunk-vnode-BG1Cv8F9.js";
3
+ import { Fragment } from "@expressive/mvc/jsx-runtime";
4
4
 
5
5
  //#region src/jsx-dev-runtime.ts
6
6
  function jsxDEV(type, props, key, _isStatic, _source, _self) {
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-dev-runtime.js","names":[],"sources":["../src/jsx-dev-runtime.ts"],"sourcesContent":["import { Fragment } from '@expressive/mvc/runtime';\n\nimport { vnode } from './vnode';\nimport type { VNode } from './vnode';\n\nfunction jsxDEV(\n type: VNode['type'],\n props: object,\n key?: unknown,\n _isStatic?: boolean,\n _source?: object,\n _self?: unknown\n) {\n return vnode(type, props, key);\n}\n\nexport { Fragment, jsxDEV };\nexport { hot } from './hot';\nexport type { JSX } from '@expressive/mvc/jsx-runtime';\n"],"mappings":";;;;;AAKA,SAAS,OACP,MACA,OACA,KACA,WACA,SACA,OACA;AACA,QAAO,MAAM,MAAM,OAAO,IAAI"}
1
+ {"version":3,"file":"jsx-dev-runtime.js","names":[],"sources":["../src/jsx-dev-runtime.ts"],"sourcesContent":["import { Fragment } from '@expressive/mvc/jsx-runtime';\n\nimport { vnode } from './vnode';\nimport type { VNode } from './vnode';\n\nfunction jsxDEV(\n type: VNode['type'],\n props: object,\n key?: unknown,\n _isStatic?: boolean,\n _source?: object,\n _self?: unknown\n) {\n return vnode(type, props, key);\n}\n\nexport { Fragment, jsxDEV };\nexport { hot } from './hot';\nexport type { JSX } from '@expressive/mvc/jsx-runtime';\n"],"mappings":";;;;;AAKA,SAAS,OACP,MACA,OACA,KACA,WACA,SACA,OACA;AACA,QAAO,MAAM,MAAM,OAAO,IAAI"}
@@ -1,6 +1,6 @@
1
- import { i as VNode, o as vnode, r as Node } from "./chunk-vnode-BsbDCqd1.js";
2
- import { Fragment } from "@expressive/mvc/runtime";
3
- import { JSX } from "@expressive/mvc/jsx-runtime";
1
+ import { c as vnode, i as Node, n as Module, o as VNode, t as Attributes$1 } from "./chunk-loader-kjuM318E.js";
2
+ import { Component, State } from "@expressive/mvc";
3
+ import { Fragment, JSX as JSX$1 } from "@expressive/mvc/jsx-runtime";
4
4
 
5
5
  //#region src/jsx-runtime.d.ts
6
6
  type Words = 'AnimationCancel' | 'AnimationEnd' | 'AnimationIteration' | 'AnimationStart' | 'AuxClick' | 'BeforeInput' | 'BeforeMatch' | 'BeforeToggle' | 'CanPlay' | 'CanPlayThrough' | 'CompositionEnd' | 'CompositionStart' | 'CompositionUpdate' | 'ContextLost' | 'ContextMenu' | 'ContextRestored' | 'CueChange' | 'DblClick' | 'DragEnd' | 'DragEnter' | 'DragLeave' | 'DragOver' | 'DragStart' | 'DurationChange' | 'FocusIn' | 'FocusOut' | 'FormData' | 'GotPointerCapture' | 'KeyDown' | 'KeyPress' | 'KeyUp' | 'LoadedData' | 'LoadedMetadata' | 'LoadStart' | 'LostPointerCapture' | 'MouseDown' | 'MouseEnter' | 'MouseLeave' | 'MouseMove' | 'MouseOut' | 'MouseOver' | 'MouseUp' | 'PointerCancel' | 'PointerDown' | 'PointerEnter' | 'PointerLeave' | 'PointerMove' | 'PointerOut' | 'PointerOver' | 'PointerRawUpdate' | 'PointerUp' | 'RateChange' | 'ScrollEnd' | 'SecurityPolicyViolation' | 'SelectionChange' | 'SelectStart' | 'SlotChange' | 'TimeUpdate' | 'TouchCancel' | 'TouchEnd' | 'TouchMove' | 'TouchStart' | 'TransitionCancel' | 'TransitionEnd' | 'TransitionRun' | 'TransitionStart' | 'VolumeChange';
@@ -36,10 +36,26 @@ type Attributes<T extends Element> = EventAttributes<T> & { [K in keyof T as K e
36
36
  [attribute: `aria-${string}`]: unknown;
37
37
  };
38
38
  type Intrinsics = { [K in keyof HTMLElementTagNameMap]: Attributes<HTMLElementTagNameMap[K]> } & { [K in keyof SVGElementTagNameMap]: Attributes<SVGElementTagNameMap[K]> & SVGAttributes };
39
- declare module '@expressive/mvc/runtime' {
39
+ declare module '@expressive/mvc/jsx-runtime' {
40
40
  interface Host {
41
41
  node: Node;
42
42
  intrinsics: Intrinsics;
43
+ element: () => PromiseLike<Module>;
44
+ elementClass: State;
45
+ }
46
+ }
47
+ declare module '@expressive/mvc' {
48
+ namespace State {
49
+ /** JSX attributes of a State with no `props` member: its settable fields, `is`, a boundary, and what `render` accepts. */
50
+ type Props<T extends State> = Component.StateProps<T> & {
51
+ is?: (instance: T) => void; /** Shown while this element's content is suspended or recovering. `false` opts out. */
52
+ fallback?: Reserved<T, 'fallback', Component.Node | false>; /** Called when this element's content throws. A returned promise retries once settled. */
53
+ catch?: Reserved<T, 'catch', (error: Error, instance: T) => Promise<void> | void>;
54
+ } & Component.RenderProps<T extends {
55
+ render: infer R;
56
+ } ? R : never>;
57
+ /** Boundary attribute type, narrowed by a member of the same name so a mismatch fails at the element. */
58
+ type Reserved<T, K extends string, V> = K extends keyof T ? T[K] & V : V;
43
59
  }
44
60
  }
45
61
  declare module '@expressive/mvc/jsx-runtime' {
@@ -52,6 +68,29 @@ declare module '@expressive/mvc/jsx-runtime' {
52
68
  }
53
69
  declare const jsx: typeof vnode;
54
70
  declare const jsxs: typeof vnode;
71
+ declare namespace JSX {
72
+ type Element = JSX$1.Element;
73
+ type ElementType = keyof IntrinsicElements | ((props: any) => Component.Node) | (() => PromiseLike<Module>) | (abstract new (...args: any[]) => ElementClass);
74
+ /**
75
+ * Any State renders as a class element - one with `render` produces content,
76
+ * one without passes children through and provides itself.
77
+ */
78
+ interface ElementClass extends State {
79
+ render?(props?: any): Component.Node;
80
+ }
81
+ /**
82
+ * Empty, so a class element's attributes resolve from its instance type and
83
+ * {@link LibraryManagedAttributes} picks `props` when declared, else derives
84
+ * them from the State.
85
+ */
86
+ interface ElementAttributesProperty {}
87
+ type LibraryManagedAttributes<C, P> = C extends (abstract new (...args: any[]) => infer I) ? P extends {
88
+ props: infer Q;
89
+ } ? Q : I extends State ? State.Props<I> : P : C extends (() => PromiseLike<Module<infer T>>) ? Attributes$1<T> : P;
90
+ interface ElementChildrenAttribute extends JSX$1.ElementChildrenAttribute {}
91
+ interface IntrinsicAttributes extends JSX$1.IntrinsicAttributes {}
92
+ type IntrinsicElements = JSX$1.IntrinsicElements;
93
+ }
55
94
  //#endregion
56
- export { Fragment, type JSX, type VNode as JSXElement, jsx, jsxs };
95
+ export { Fragment, JSX, type VNode as JSXElement, jsx, jsxs };
57
96
  //# sourceMappingURL=jsx-runtime.d.ts.map
@@ -1,5 +1,5 @@
1
- import { a as vnode, i as isVNode, n as childrenOf } from "./chunk-vnode-CzmFSz5_.js";
2
- import { Fragment, host } from "@expressive/mvc/runtime";
1
+ import { i as childrenOf, o as isVNode, s as vnode } from "./chunk-vnode-BG1Cv8F9.js";
2
+ import { Fragment, host } from "@expressive/mvc/jsx-runtime";
3
3
 
4
4
  //#region src/jsx-runtime.ts
5
5
  host({