@expressive/dom 0.0.0 → 0.2.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/chunk-adapter-4jlvwsge.d.ts +37 -0
- package/dist/chunk-hot-gq8TyYJV.js +178 -0
- package/dist/chunk-hot-gq8TyYJV.js.map +1 -0
- package/dist/{chunk-vnode-DHwzzX6t.d.ts → chunk-vnode-BsbDCqd1.d.ts} +1 -1
- package/dist/{chunk-vnode-DA7cLTKP.js → chunk-vnode-CzmFSz5_.js} +1 -1
- package/dist/{chunk-vnode-DA7cLTKP.js.map → chunk-vnode-CzmFSz5_.js.map} +1 -1
- package/dist/index.d.ts +2 -37
- package/dist/index.js +41 -149
- package/dist/index.js.map +1 -1
- package/dist/jsx-dev-runtime.d.ts +9 -2
- package/dist/jsx-dev-runtime.js +3 -2
- package/dist/jsx-dev-runtime.js.map +1 -1
- package/dist/jsx-runtime.d.ts +1 -1
- package/dist/jsx-runtime.js +1 -1
- package/dist/vite.d.ts +8 -0
- package/dist/vite.js +142 -0
- package/dist/vite.js.map +1 -0
- package/package.json +14 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["depth","settle","claim","style","macro"],"sources":["../src/scheduler.ts","../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 { pending } from '@expressive/mvc';\n\ninterface Schedulable {\n queued?: 'urgent' | 'passive' | 'deferred';\n holds?: (() => void)[];\n probed?: { output: unknown };\n blocking?: (() => void)[];\n update(passive: boolean): PromiseLike<unknown> | void;\n probe?(): PromiseLike<unknown> | void;\n empty?(): boolean;\n}\n\nconst urgent = new Set<Schedulable>();\nconst passive = new Set<Schedulable>();\nconst after: (() => void)[] = [];\n\nlet depth = 0;\nlet urgentQueued = false;\nlet passiveQueued = false;\n\nfunction flush(scopes: Set<Schedulable>) {\n for (const scope of scopes) {\n scopes.delete(scope);\n scope.queued = undefined;\n\n let waiting: PromiseLike<unknown> | void = undefined;\n\n try {\n waiting = scope.update(false);\n } catch (error) {\n console.error(error);\n }\n\n settle(scope);\n if (!waiting) unblock(scope);\n }\n}\n\nfunction flushUrgent() {\n urgentQueued = false;\n flush(urgent);\n\n for (const run of after.splice(0)) run();\n}\n\nfunction afterFlush(run: () => void) {\n after.push(run);\n\n if (!urgentQueued) {\n urgentQueued = true;\n queueMicrotask(flushUrgent);\n }\n}\n\nfunction flushPassive() {\n passiveQueued = false;\n\n const batch = [...passive].filter((scope) => scope.queued === 'passive');\n passive.clear();\n\n for (const scope of batch) {\n const waiting = scope.probe?.();\n if (waiting) return defer(batch, waiting, scope);\n }\n\n batch.sort((a, b) => Number(!!b.empty?.()) - Number(!!a.empty?.()));\n\n for (let index = 0; index < batch.length; index++) {\n const scope = batch[index];\n\n if (scope.queued !== 'passive') continue;\n\n scope.queued = undefined;\n\n let waiting: PromiseLike<unknown> | void = undefined;\n\n try {\n waiting = scope.update(true);\n } catch (error) {\n console.error(error);\n }\n\n settle(scope);\n\n if (waiting) return defer(batch.slice(index + 1), waiting, scope);\n unblock(scope);\n }\n}\n\nfunction defer(scopes: Schedulable[], waiting: PromiseLike<unknown>, source: Schedulable) {\n const held = scopes.filter((scope) => scope.queued === 'passive');\n\n for (const scope of held) {\n scope.queued = 'deferred';\n scope.probed = undefined;\n }\n\n const resume = () => {\n for (const scope of held)\n if (scope.queued === 'deferred') {\n scope.queued = undefined;\n transition(() => schedule(scope));\n }\n };\n\n (source.blocking ||= []).push(resume);\n waiting.then(resume, resume);\n}\n\nfunction unblock(scope: Schedulable) {\n const { blocking } = scope;\n\n scope.blocking = undefined;\n blocking?.forEach((resume) => resume());\n}\n\nfunction release(holds?: (() => void)[]) {\n holds?.forEach((held) => held());\n}\n\nfunction settle(scope: Schedulable) {\n const { holds } = scope;\n\n scope.holds = undefined;\n release(holds);\n}\n\nfunction schedule(scope: Schedulable) {\n const held = pending();\n\n if (held) (scope.holds ||= []).push(held);\n scope.probed = undefined;\n\n if (!depth) {\n passive.delete(scope);\n scope.queued = 'urgent';\n urgent.add(scope);\n\n if (!urgentQueued) {\n urgentQueued = true;\n queueMicrotask(flushUrgent);\n }\n\n return;\n }\n\n if (scope.queued && scope.queued !== 'deferred') return;\n\n scope.queued = 'passive';\n passive.add(scope);\n\n if (!passiveQueued) {\n passiveQueued = true;\n setTimeout(flushPassive);\n }\n}\n\nfunction transition(work: () => void) {\n depth++;\n\n try {\n work();\n } finally {\n depth--;\n }\n}\n\nfunction claim(scope: Schedulable) {\n urgent.delete(scope);\n passive.delete(scope);\n scope.queued = undefined;\n scope.probed = undefined;\n}\n\nfunction unschedule(scope: Schedulable) {\n urgent.delete(scope);\n passive.delete(scope);\n scope.queued = undefined;\n scope.probed = undefined;\n settle(scope);\n unblock(scope);\n}\n\nexport { afterFlush, claim, release, schedule, settle, transition, unschedule };\nexport type { Schedulable };\n","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 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 throw new Error('State.use() calls must keep the same order on every function-component render.');\n\n return output;\n } finally {\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\n for (let i = scope.uses.length - 1; i >= 0; 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 = [];\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 throw new Error('State.use() calls must keep the same order on every function-component render.');\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, true);\n }\n});\n\nfunction subcomponents(target: object, configurable?: boolean) {\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,\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, true);\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 './stylesheet' {\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 = new WeakMap<object, StyleMap[]>();\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 const maps = styles.get(type);\n if (maps) maps.push(rules);\n else {\n const label = (type as { displayName?: string }).displayName || (type as Function).name;\n styles.set(type, [rules]);\n registerAppearance(type, (parent) => {\n entered.add(type);\n return extendContext(parent, styles.get(type)!, 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\nexport declare 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\nexport declare 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 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!, () => (fiber.type as Function)(fiber.props));\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 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 || 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, 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.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"],"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,9 +1,16 @@
|
|
|
1
|
-
import { i as VNode } from "./chunk-vnode-
|
|
1
|
+
import { i as VNode } from "./chunk-vnode-BsbDCqd1.js";
|
|
2
2
|
import { Fragment } from "@expressive/mvc/runtime";
|
|
3
3
|
import { JSX } from "@expressive/mvc/jsx-runtime";
|
|
4
4
|
|
|
5
|
+
//#region src/hot.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Register a module's function components under stable ids. A component seen
|
|
8
|
+
* before takes its new implementation and re-renders where it is mounted.
|
|
9
|
+
*/
|
|
10
|
+
declare function hot(id: string, components: Record<string, unknown>): void;
|
|
11
|
+
//#endregion
|
|
5
12
|
//#region src/jsx-dev-runtime.d.ts
|
|
6
13
|
declare function jsxDEV(type: VNode['type'], props: object, key?: unknown, _isStatic?: boolean, _source?: object, _self?: unknown): VNode<object>;
|
|
7
14
|
//#endregion
|
|
8
|
-
export { Fragment, type JSX, jsxDEV };
|
|
15
|
+
export { Fragment, type JSX, hot, jsxDEV };
|
|
9
16
|
//# sourceMappingURL=jsx-dev-runtime.d.ts.map
|
package/dist/jsx-dev-runtime.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as hot } from "./chunk-hot-gq8TyYJV.js";
|
|
2
|
+
import { a as vnode } from "./chunk-vnode-CzmFSz5_.js";
|
|
2
3
|
import { Fragment } from "@expressive/mvc/runtime";
|
|
3
4
|
|
|
4
5
|
//#region src/jsx-dev-runtime.ts
|
|
@@ -7,5 +8,5 @@ function jsxDEV(type, props, key, _isStatic, _source, _self) {
|
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
//#endregion
|
|
10
|
-
export { Fragment, jsxDEV };
|
|
11
|
+
export { Fragment, hot, jsxDEV };
|
|
11
12
|
//# sourceMappingURL=jsx-dev-runtime.js.map
|
|
@@ -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 type { JSX } from '@expressive/mvc/jsx-runtime';\n"],"mappings":"
|
|
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"}
|
package/dist/jsx-runtime.d.ts
CHANGED
package/dist/jsx-runtime.js
CHANGED
package/dist/vite.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
|
|
3
|
+
//#region src/vite.d.ts
|
|
4
|
+
/** Hot-patch classes and refresh function components in place during `vite` dev. */
|
|
5
|
+
declare function expressive(): Plugin;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { expressive as default };
|
|
8
|
+
//# sourceMappingURL=vite.d.ts.map
|