@expressive/dom 0.3.0 → 0.4.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/README.md +4 -4
- package/dist/{chunk-adapter-4jlvwsge.d.ts → chunk-adapter-i1piHw8T.d.ts} +14 -14
- package/dist/{chunk-hot-BAqPvKEQ.js → chunk-hot-9LhRiwFx.js} +13 -13
- package/dist/chunk-hot-9LhRiwFx.js.map +1 -0
- package/dist/{chunk-loader-kjuM318E.d.ts → chunk-loader-CZ-53pyV.d.ts} +3 -3
- package/dist/{chunk-vnode-BG1Cv8F9.js → chunk-vnode-wpCWQ_Zg.js} +2 -2
- package/dist/chunk-vnode-wpCWQ_Zg.js.map +1 -0
- package/dist/index.d.ts +7 -4
- package/dist/index.js +814 -762
- package/dist/index.js.map +1 -1
- package/dist/jsx-dev-runtime.d.ts +2 -2
- package/dist/jsx-dev-runtime.js +2 -2
- package/dist/jsx-dev-runtime.js.map +1 -1
- package/dist/jsx-runtime.d.ts +10 -10
- package/dist/jsx-runtime.js +1 -1
- package/dist/jsx-runtime.js.map +1 -1
- package/dist/vite.js +4 -4
- package/dist/vite.js.map +1 -1
- package/package.json +3 -2
- package/dist/chunk-hot-BAqPvKEQ.js.map +0 -1
- package/dist/chunk-vnode-BG1Cv8F9.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["style","macro","Fragment"],"sources":["../src/css.ts","../src/appearance-protocol.ts","../src/appearance.ts","../src/declarations.ts","../src/stylesheet.ts","../src/loader.ts","../src/commits.ts","../src/render.ts"],"sourcesContent":["import type { macro, style } from './stylesheet';\n\nconst unitless = new Map<string, boolean>();\n\nlet probe: CSSStyleDeclaration | undefined;\n\n/**\n * Does the CSSOM accept a bare number for this property? Probed once with a\n * canonical value; the answer is a property of CSS, not of the value.\n */\nfunction bare(property: string) {\n let known = unitless.get(property);\n\n if (known === undefined) {\n probe ||= document.createElement('div').style;\n (probe as any)[property] = '';\n (probe as any)[property] = 1;\n unitless.set(property, known = Boolean((probe as any)[property]));\n }\n\n return known;\n}\n\nfunction sized(property: string, value: unknown): unknown {\n if (Array.isArray(value))\n return value.map((entry) => sized(property, entry));\n\n return typeof value == 'number' && value !== 0 && !bare(property)\n ? `${value}px`\n : value;\n}\n\n/**\n * Web macro pack. Register with `macro(css)` to opt into pixel units for\n * numbers and the axis shorthands CSS itself does not provide.\n */\nconst css = {\n '*': (value: unknown, key: string) => ({ [key]: sized(key, value) }),\n mx: (value: style.Value) => ({ marginLeft: value, marginRight: value }),\n my: (value: style.Value) => ({ marginTop: value, marginBottom: value }),\n px: (value: style.Value) => ({ paddingLeft: value, paddingRight: value }),\n py: (value: style.Value) => ({ paddingTop: value, paddingBottom: value }),\n size: (value: style.Value) =>\n Array.isArray(value)\n ? { width: value[0], height: value[1] }\n : { width: value, height: value }\n} satisfies macro.Map;\n\ndeclare module '@expressive/dom' {\n namespace macro {\n interface Registry {\n mx(value: style.Value): style.Map;\n my(value: style.Value): style.Map;\n px(value: style.Value): style.Map;\n py(value: style.Value): style.Map;\n size(value: style.Value): style.Map;\n }\n }\n}\n\nexport { css };\n","type Declaration = Record<string, unknown>;\n\ninterface Block {\n declarations: Declaration;\n name: string;\n ordinal: number;\n}\n\ninterface ResolvedAppearance {\n blocks?: Block[];\n classes?: string[];\n context?: AppearanceContext;\n declarations?: Declaration;\n}\n\ninterface AppearanceContext {\n readonly scope?: unknown;\n readonly base?: object;\n resolve(\n props: Record<string, unknown>,\n tag?: string\n ): ResolvedAppearance | undefined;\n}\n\ntype EnterAppearance = (parent?: AppearanceContext) => AppearanceContext;\ntype Emit = (block: Block, depth: number, document: Document) => string;\n\nconst registrations = new WeakMap<object, EnterAppearance>();\nconst tokens = new WeakMap<object, ResolvedAppearance>();\nlet root: (() => AppearanceContext | undefined) | undefined;\nlet emitter: Emit | undefined;\nlet rendered = false;\n\nfunction registerAppearance(type: object, enter: EnterAppearance) {\n registrations.set(type, enter);\n}\n\nfunction registerAppearanceRoot(factory: () => AppearanceContext | undefined) {\n root = factory;\n}\n\nfunction registerEmitter(emit: Emit) {\n emitter = emit;\n}\n\nfunction emitClass(block: Block, depth: number, document: Document) {\n return emitter!(block, depth, document);\n}\n\nfunction appearanceRoot() {\n rendered = true;\n return root?.();\n}\n\n/** Has anything rendered yet - global registration is closed after it has. */\nfunction appearanceSealed() {\n return rendered;\n}\n\nfunction enterAppearance(parent: AppearanceContext | undefined, type: Function) {\n const chain: EnterAppearance[] = [];\n let current: object | null = type;\n\n while (current && current !== Function.prototype) {\n const enter = registrations.get(current);\n if (enter) chain.unshift(enter);\n current = Object.getPrototypeOf(current);\n }\n\n for (const enter of chain) parent = enter(parent);\n return parent;\n}\n\nfunction createAppearanceToken(appearance: ResolvedAppearance) {\n const token = {};\n tokens.set(token, appearance);\n return token;\n}\n\nfunction appearanceToken(value: unknown) {\n return value && typeof value == 'object' ? tokens.get(value) : undefined;\n}\n\nexport {\n appearanceRoot,\n appearanceSealed,\n appearanceToken,\n createAppearanceToken,\n emitClass,\n enterAppearance,\n registerAppearance,\n registerAppearanceRoot,\n registerEmitter\n};\n\nexport type { AppearanceContext, Block, Declaration, ResolvedAppearance };\n","import { appearanceSealed, createAppearanceToken, registerAppearance, registerAppearanceRoot } from './appearance-protocol';\nimport type { AppearanceContext, Block, Declaration, ResolvedAppearance } from './appearance-protocol';\n\ntype StyleMap = Record<string, unknown>;\n\ntype Macro = (value: unknown, key: string) => unknown;\ntype Depths = ReadonlyMap<string, number>;\n\ninterface Expansion {\n block?: Block;\n classes: string[];\n declarations: Declaration;\n nested: StyleMap[];\n}\n\ninterface StyleScope {\n children: WeakMap<object, StyleScope>;\n expansions: Map<string, Expansion>;\n label: string;\n labels: Record<string, string>;\n names: readonly string[];\n own: Declaration;\n routes: Map<string, AppearanceRoute>;\n rules: StyleMap;\n}\n\ninterface AppearanceRoute {\n flags: readonly string[];\n scope: StyleScope;\n tag?: string;\n}\n\nconst bases = new WeakMap<StyleScope, Declaration>();\nconst chains = new WeakMap<StyleScope, Map<string, Macro[]>>();\nconst contexts = new WeakMap<StyleScope, AppearanceContext>();\nconst rootScopes = new WeakMap<object, StyleScope>();\nconst STYLES = Symbol('@expressive/dom.styles');\nconst entered = new WeakSet<object>();\nconst globals: StyleMap[] = [];\nlet globalContext: AppearanceContext | undefined;\n\nfunction createStyleScope(parent: StyleScope | undefined, value: unknown, label?: string, defines?: boolean): StyleScope | undefined {\n if (!isObject(value)) return parent;\n\n const cache = parent?.children || rootScopes;\n const cached = cache.get(value);\n if (cached) return cached;\n\n const own: string[] = [];\n const source: StyleMap = {};\n const base: Declaration = {};\n\n for (const key of Object.keys(value)) {\n const entry = (value as StyleMap)[key];\n\n if (key[0] == '$')\n throw new Error(`Reserved key \"${key}\" in style map.`);\n\n if (key[0] == '_') {\n if (!isObject(entry))\n throw new Error(`Rule \"${key}\" must be an object. Macros are defined by macro().`);\n\n const name = key.slice(1);\n own.push(name);\n source[name] = entry;\n } else if (defines && typeof entry == 'function') {\n own.push(key);\n source[key] = entry;\n } else base[key] = entry;\n }\n\n const names = parent\n ? [...parent.names, ...own.filter((name) => !parent.names.includes(name))]\n : own;\n const rules = Object.create(parent?.rules || null) as StyleMap;\n const labels = Object.create(parent?.labels || null) as Record<string, string>;\n const scopeLabel = label || parent?.label || 'style';\n\n for (const name of own) {\n const rule = source[name];\n const inherited = parent?.rules[name];\n rules[name] = isObject(inherited) && isObject(rule) ? { ...inherited, ...rule } : rule;\n labels[name] = scopeLabel;\n }\n\n const scope: StyleScope = {\n children: new WeakMap(),\n expansions: new Map(),\n label: scopeLabel,\n labels,\n names,\n own: base,\n routes: new Map(),\n rules\n };\n\n cache.set(value, scope);\n return scope;\n}\n\nfunction createContext(scope: StyleScope): AppearanceContext {\n const cached = contexts.get(scope);\n if (cached) return cached;\n\n const context: AppearanceContext = {\n scope,\n base: baseToken(scope),\n resolve(props, tag) {\n return resolveAppearance(scope, props, tag);\n }\n };\n\n contexts.set(scope, context);\n return context;\n}\n\nfunction extendContext(parent: AppearanceContext | undefined, maps: readonly StyleMap[], label: string, defines?: boolean) {\n let scope = parent?.scope as StyleScope | undefined;\n const base: Declaration = { ...(scope && bases.get(scope)) };\n\n for (const map of maps) {\n scope = createStyleScope(scope, map, label, defines);\n Object.assign(base, scope!.own);\n }\n\n if (Object.keys(base).length) bases.set(scope!, base);\n\n return createContext(scope!);\n}\n\nfunction baseToken(scope: StyleScope) {\n const base = bases.get(scope);\n if (!base) return undefined;\n\n const expansion = expand(scope, base, new Map());\n const appearance: ResolvedAppearance = {};\n\n if (Object.keys(expansion.declarations).length)\n appearance.blocks = [{ declarations: expansion.declarations, name: scope.label, ordinal: -1 }];\n\n if (expansion.classes.length) appearance.classes = expansion.classes;\n\n return createAppearanceToken(appearance);\n}\n\nfunction style<T extends object>(type: T, rules: StyleMap): T {\n if (entered.has(type)) throw new Error('Cannot add styles after a component has rendered.');\n\n if (Object.hasOwn(type, STYLES)) (type as any)[STYLES].push(rules);\n else {\n const label = (type as { displayName?: string }).displayName || (type as Function).name;\n\n Object.defineProperty(type, STYLES, { configurable: true, value: [rules] });\n registerAppearance(type, (parent) => {\n entered.add(type);\n return extendContext(parent, (type as any)[STYLES], label);\n });\n }\n\n return type;\n}\n\nfunction macro(rules: StyleMap): StyleMap {\n for (const key of Object.keys(rules))\n if (key[0] != '_' && key[0] != '$' && typeof rules[key] != 'function')\n throw new Error(`Macro \"${key}\" must be a function. Use \"_${key}\" to register a rule.`);\n\n if (appearanceSealed())\n throw new Error('Cannot add macros after rendering has started.');\n\n globals.push(rules);\n globalContext = undefined;\n registerAppearanceRoot(() => globalContext ||= extendContext(undefined, globals, 'global', true));\n return rules;\n}\n\nfunction createAppearanceRoute(\n scope: StyleScope | undefined,\n props: Record<string, unknown>,\n tag?: string\n): AppearanceRoute | undefined {\n if (!scope) return undefined;\n\n const keys = Object.keys(props).filter((key) => key.startsWith('_')).sort();\n const id = `${tag || ''}\\0${keys.join('\\0')}`;\n const cached = scope.routes.get(id);\n if (cached) return cached;\n\n const present = new Set(keys.map((key) => key.slice(1)));\n const flags: string[] = [];\n\n for (const name of scope.names) {\n if (!present.has(name) || name == tag) continue;\n if (isObject(scope.rules[name])) flags.push(name);\n }\n\n const route: AppearanceRoute = {\n flags,\n scope,\n tag: tag && isObject(scope.rules[tag]) ? tag : undefined\n };\n\n scope.routes.set(id, route);\n return route;\n}\n\nfunction resolveAppearance(\n scope: StyleScope | undefined,\n props: Record<string, unknown>,\n tag?: string\n): ResolvedAppearance | undefined {\n const route = createAppearanceRoute(scope, props, tag);\n\n if (!route) return undefined;\n\n const parts: Expansion[] = [];\n const names: string[] = route.tag ? [route.tag] : [];\n\n for (const name of route.flags)\n if (props[`_${name}`]) names.push(name);\n\n for (const name of names)\n parts.push(expandRule(route.scope, name));\n\n const blocks = parts.flatMap((part) => part.block ? [part.block] : []);\n const classes = parts.flatMap((part) => part.classes);\n let child: StyleScope | undefined = route.scope;\n\n for (const part of parts)\n for (const nested of part.nested)\n child = createStyleScope(child, nested, tag ? `${route.scope.label}_${tag}` : route.scope.label);\n\n if (!blocks.length && !classes.length && child === route.scope)\n return undefined;\n\n const appearance: ResolvedAppearance = {};\n if (blocks.length) appearance.blocks = blocks;\n if (classes.length) appearance.classes = classes;\n if (child !== route.scope) appearance.context = createContext(child!);\n\n return appearance;\n}\n\nfunction expandRule(scope: StyleScope, name: string) {\n let expansion = scope.expansions.get(name);\n\n if (!expansion) {\n expansion = expand(scope, scope.rules[name], new Map());\n\n if (Object.keys(expansion.declarations).length)\n expansion.block = {\n declarations: expansion.declarations,\n name: `${scope.labels[name]}_${name}`,\n ordinal: scope.names.indexOf(name)\n };\n\n scope.expansions.set(name, expansion);\n }\n\n return expansion;\n}\n\nfunction handlers(scope: StyleScope, name: string) {\n let known = chains.get(scope);\n if (!known) chains.set(scope, (known = new Map()));\n\n let chain = known.get(name);\n\n if (!chain) {\n chain = [];\n\n for (const key of [name, '*'])\n for (let rules: object | null = scope.rules; rules; rules = Object.getPrototypeOf(rules)) {\n const own = Object.getOwnPropertyDescriptor(rules, key);\n if (own && typeof own.value == 'function') chain.push(own.value as Macro);\n }\n\n known.set(name, chain);\n }\n\n return chain;\n}\n\nfunction expand(scope: StyleScope, value: unknown, depths: Depths): Expansion {\n const output: Expansion = { classes: [], declarations: {}, nested: [] };\n const nested: StyleMap = {};\n\n function walk(value: unknown, depths: Depths) {\n if (!value) return;\n\n if (typeof value == 'string') {\n output.classes.push(...value.split(/\\s+/).filter(Boolean));\n return;\n }\n\n if (Array.isArray(value)) {\n value.forEach((entry) => walk(entry, depths));\n return;\n }\n\n for (const [name, entry] of Object.entries(value as Declaration)) {\n if (name[0] == '_') {\n if (isObject(entry)) nested[name] = entry;\n continue;\n }\n\n const chain = handlers(scope, name);\n const depth = depths.get(name) || 0;\n\n if (depth < chain.length) {\n if (isPresent(entry))\n walk(\n chain[depth](entry === true ? undefined : entry, name),\n new Map(depths).set(name, depth + 1)\n );\n } else output.declarations[name] = terminal(name, entry);\n }\n }\n\n walk(value, depths);\n if (Object.keys(nested).length) output.nested.push(nested);\n return output;\n}\n\nfunction terminal(name: string, value: unknown) {\n if (Array.isArray(value)) return value.join(' ');\n\n if (typeof value == 'function' || isObject(value))\n throw new Error(`No macro handles \"${name}\".`);\n\n return typeof value == 'number' ? String(value) : value;\n}\n\nfunction isPresent(value: unknown) {\n return value !== false && value !== null && value !== undefined;\n}\n\nfunction isObject(value: unknown): value is Declaration {\n return !!value && typeof value == 'object' && !Array.isArray(value);\n}\n\nexport { createAppearanceRoute, createStyleScope, macro, resolveAppearance, style };\nexport type { AppearanceRoute, StyleMap, StyleScope };\n","type Declaration = Record<string, unknown>;\n\nfunction applyDeclarations(style: CSSStyleDeclaration, declarations: Declaration, previous: Declaration = {}) {\n const target = style as any;\n\n for (const key of Object.keys({ ...previous, ...declarations })) {\n const value = declarations[key];\n if (key.startsWith('--')) {\n style.setProperty(key, value == null ? '' : String(value));\n continue;\n }\n\n if (typeof value == 'number') target[key] = '';\n target[key] = value == null ? '' : value;\n if (typeof value == 'number' && value !== 0 && !target[key]) target[key] = `${value}px`;\n }\n}\n\nexport { applyDeclarations };\nexport type { Declaration };\n","import * as appearance from './appearance';\nimport { registerEmitter } from './appearance-protocol';\nimport type { Block } from './appearance-protocol';\nimport { applyDeclarations } from './declarations';\nimport type { Declaration } from './declarations';\n\ntype Member = Extract<keyof CSSStyleDeclaration, string>;\n\ntype Settable = {\n [K in Member]-?: CSSStyleDeclaration[K] extends Function ? never : K;\n}[Member];\n\ntype Key =\n | style.Property\n | keyof macro.Registry\n | `--${string}`\n | `_${string}`;\n\ntype Argument<K extends keyof macro.Registry> =\n macro.Registry[K] extends (value: infer A, ...rest: any[]) => any ? A : never;\n\ndeclare namespace macro {\n /**\n * Macros visible to a style map. A pack augments this interface to declare\n * what it registers with `macro()`.\n */\n interface Registry {}\n\n /** Maps one argument to style, or to keys which resolve further. */\n type Fn = (value: any, key: string) => unknown;\n\n /**\n * Body of a `macro()` map. A name declared in {@link Registry} must match its\n * declaration; an undeclared one is accepted, and becomes checkable at call\n * sites once a module augments `Registry` with it.\n */\n type Map =\n & Partial<Registry>\n & { [K in `_${string}`]?: style.Map }\n & Record<string, Fn | style.Map | undefined>;\n}\n\ndeclare namespace style {\n /** CSS property names, minus the CSSOM's own members. */\n type Property = Exclude<Settable, 'length' | 'parentRule' | 'cssText'>;\n\n /** What a declaration or macro argument may be; never a plain object. */\n type Value =\n | string\n | number\n | boolean\n | null\n | undefined\n | readonly Value[];\n\n /**\n * Body of a `style()` map. Bare keys are declarations or macro calls,\n * `_name` opens a rule or descendant scope, and `$name` is reserved.\n */\n type Map = {\n [K in Key]?:\n K extends `_${string}` ? Map :\n K extends keyof macro.Registry ? Argument<K> :\n Value;\n };\n}\n\ninterface Sheet {\n element: HTMLStyleElement;\n emitted: WeakMap<Block, Map<number, string>>;\n names: Map<string, string>;\n positions: [number, number][];\n}\n\nconst sheets = new WeakMap<Document, Sheet>();\n\nfunction style<T extends object>(type: T, rules: style.Map): T {\n appearance.style(type, rules);\n registerEmitter(emit);\n return type;\n}\n\nfunction macro(rules: macro.Map): macro.Map {\n appearance.macro(rules);\n registerEmitter(emit);\n return rules;\n}\n\nfunction emit(block: Block, depth: number, document: Document) {\n let sheet = sheets.get(document);\n\n if (!sheet?.element.sheet) {\n const element = document.createElement('style');\n element.dataset.expressive = 'dom';\n document.head.append(element);\n sheet = { element, emitted: new WeakMap(), names: new Map(), positions: [] };\n sheets.set(document, sheet);\n }\n\n let byDepth = sheet.emitted.get(block);\n if (!byDepth) sheet.emitted.set(block, (byDepth = new Map()));\n\n const cached = byDepth.get(depth);\n if (cached) return cached;\n\n const css = serialize(document, block.declarations);\n const base = (depth ? `${block.name}-d${depth}` : block.name).replace(/[^\\w-]/g, '_');\n let name = base;\n\n for (let index = 2; sheet.names.has(name) && sheet.names.get(name) !== css; index++)\n name = `${base}-${index}`;\n\n if (!sheet.names.has(name)) {\n const { positions } = sheet;\n let at = positions.findIndex(([d, o]) => d > depth || d == depth && o > block.ordinal);\n if (at < 0) at = positions.length;\n\n sheet.names.set(name, css);\n positions.splice(at, 0, [depth, block.ordinal]);\n sheet.element.sheet!.insertRule(`.${name}{${css}}`, at);\n }\n\n byDepth.set(depth, name);\n return name;\n}\n\nfunction serialize(document: Document, declarations: Declaration) {\n const value = document.createElement('div').style as any;\n applyDeclarations(value, declarations);\n return value.cssText;\n}\n\nexport { macro, style };\n","import type { JSX } from './jsx-runtime';\nimport type { ComponentType, Node } from './vnode';\nimport { vnode } from './vnode';\n\ntype Module<T extends ComponentType = ComponentType> = T | { default: T };\n\ntype Attributes<T> = [T] extends [never] ? {}\n : T extends abstract new (...args: any[]) => infer I\n ? JSX.LibraryManagedAttributes<T, I>\n : T extends (props: infer P) => any ? P : never;\n\ninterface Load {\n pending: PromiseLike<void>;\n resolved?: ComponentType;\n failed?: { error: unknown };\n}\n\nconst LOADS = new WeakMap<Function, Load>();\n\nfunction resolve(type: Function, props: object, run: () => unknown): Node {\n const load = LOADS.get(type);\n\n if (load?.resolved) return vnode(load.resolved, props);\n\n if (load?.failed) {\n LOADS.delete(type);\n throw load.failed.error;\n }\n\n if (load) throw load.pending;\n\n const output = run();\n\n if (!output || typeof (output as PromiseLike<unknown>).then != 'function') return output as Node;\n\n const next = {} as Load;\n\n LOADS.set(type, next);\n\n throw next.pending = (output as PromiseLike<Module | undefined>).then(\n (module) => {\n const component = typeof module == 'function' ? module : module?.default;\n\n if (typeof component == 'function') next.resolved = component;\n else next.failed = { error: new Error('Loader resolved no component.') };\n },\n (error) => {\n next.failed = { error };\n }\n );\n}\n\nexport { resolve };\nexport type { Attributes, Module };\n","interface Placed {\n start: Node;\n dead?: boolean;\n}\n\ntype Entry = [Placed, () => unknown];\n\nconst DETACHED = new WeakMap<Node, Entry[]>();\n\nlet batch: Entry[] | undefined;\n\n/** Run `run` once `fiber` is on the page: now, after the current batch, or when its detached root attaches. */\nfunction inserted(fiber: Placed, run: () => unknown) {\n enqueue([fiber, run]);\n}\n\n/** A fragment whose commits wait until it attaches. */\nfunction fragment() {\n const root = document.createDocumentFragment();\n\n DETACHED.set(root, []);\n return root;\n}\n\nfunction attach(root: Node) {\n const held = DETACHED.get(root);\n\n DETACHED.delete(root);\n held?.forEach(enqueue);\n}\n\n/** Defer commits made during `work` until it returns or throws. */\nfunction batched<T>(work: () => T): T {\n if (batch) return work();\n\n const entries: Entry[] = (batch = []);\n\n try {\n return work();\n } finally {\n batch = undefined;\n entries.forEach(deliver);\n }\n}\n\nfunction enqueue(entry: Entry) {\n if (batch) batch.push(entry);\n else deliver(entry);\n}\n\nfunction deliver(entry: Entry) {\n const [fiber, run] = entry;\n const held = DETACHED.get(fiber.start.getRootNode());\n\n if (held) held.push(entry);\n else if (!fiber.dead) run();\n}\n\nexport { attach, batched, fragment, inserted };\n","import { Component, Context, State } from '@expressive/mvc';\nimport { has, map } from '@expressive/mvc';\nimport { watch } from '@expressive/mvc/observable';\nimport { Fragment, compose } from '@expressive/mvc/jsx-runtime';\n\nimport { call, commit, dispose, enter } from './adapter';\nimport { latest, same, track, untrack } from './hot';\nimport { resolve } from './loader';\nimport type { Scope } from './adapter';\nimport {\n appearanceRoot,\n appearanceToken,\n createAppearanceToken,\n emitClass,\n enterAppearance\n} from './appearance-protocol';\nimport type { AppearanceContext, ResolvedAppearance } from './appearance-protocol';\nimport { attach, batched, fragment, inserted } from './commits';\nimport { applyDeclarations } from './declarations';\nimport { afterFlush, claim as dequeue, release, schedule, settle as absorb, transition } from './scheduler';\nimport { PORTAL, childrenOf, isVNode } from './vnode';\nimport type { Key, Node as RenderNode, VNode } from './vnode';\n\ntype Container = Element | DocumentFragment;\ntype Kind = 'collection' | 'component' | 'element' | 'fragment' | 'function' | 'portal' | 'text';\n\ninterface Boundary {\n catch?: (error: Error) => Promise<void> | void;\n fallback: () => RenderNode;\n owner?: Fiber;\n parent?: Boundary;\n waiting?: Set<Fiber>;\n}\n\ninterface Renderable extends State {\n props?: Record<string, any>;\n key?: Key;\n fallback?: RenderNode | false;\n catch?(error: Error, instance: Renderable): Promise<void> | void;\n mount?(): (() => void) | void;\n render?(props?: any): RenderNode;\n}\n\ntype Placement = Pick<Renderable, 'fallback' | 'catch'>;\n\ninterface Fiber {\n kind: Kind;\n key?: Key;\n type?: unknown;\n value?: unknown;\n source?: unknown;\n props?: Record<string, any>;\n context: Context;\n boundary?: Boundary;\n ownBoundary?: Boundary;\n start: globalThis.Node;\n end: globalThis.Node;\n children: Fiber[];\n scope?: Scope;\n cleanup?: (() => void) | void;\n release?: () => void;\n childContext?: Context;\n instance?: Renderable;\n owned?: boolean;\n events?: Map<string, EventListener>;\n portalStart?: globalThis.Node;\n portalEnd?: globalThis.Node;\n portalContainer?: Container;\n suspended?: Set<() => void>;\n applied?: boolean;\n retried?: boolean;\n portals?: [Fiber, DocumentFragment][];\n dead?: boolean;\n waitingOn?: Boundary;\n recovering?: object;\n stash?: DocumentFragment;\n placeholder?: Fiber;\n staging?: DocumentFragment;\n render?: () => RenderNode;\n appearance?: Appearance;\n consumed?: boolean;\n claimed?: Claim;\n}\n\ninterface Appearance {\n context?: AppearanceContext;\n entries: Forwarded[];\n}\n\ninterface Forwarded {\n hops: number;\n style: Style;\n}\n\ninterface Carried {\n appearance: ResolvedAppearance;\n doors: number;\n}\n\ninterface Collected {\n classes: string[];\n declarations: Record<string, unknown>;\n tokens: Carried[];\n}\n\ninterface Claim {\n className: string;\n context?: AppearanceContext;\n declarations: Record<string, unknown>;\n}\n\nconst roots = new WeakMap<Container, () => void>();\nconst SVG = 'http://www.w3.org/2000/svg';\nconst dirty = new Set<Boundary>();\nconst stashes = new WeakMap<globalThis.Node, Fiber>();\nconst CONTROLS = ['checked', 'value'];\nconst ENUMERATED = ['contentEditable', 'contenteditable', 'draggable', 'spellcheck'];\nconst ALIASES: Record<string, string> = { autoFocus: 'autofocus', contentEditable: 'contenteditable', htmlFor: 'for' };\nconst focusing: Element[] = [];\nconst controlled = new WeakMap<Element, Fiber>();\nconst restoring = new WeakSet<Document>();\nlet passiveRender = false;\nlet holding: { thrown: unknown; fiber?: Fiber } | undefined;\nlet depth = 0;\nlet settling = false;\nlet rendering: object | undefined;\nlet touched = false;\nconst observed = new WeakMap<object, Record<string, any>>();\nconst tickets = new WeakMap<object, Ticket>();\n\ninterface Ticket {\n classes: string[];\n tokens: Carried[];\n}\n\nfunction render(node: RenderNode, container: Container): () => void {\n roots.get(container)?.();\n container.replaceChildren();\n\n const context = new Context(Context.root);\n const fiber = range('fragment', container, null, context);\n\n try {\n pass(() => {\n const appearanceContext = appearanceRoot();\n reconcile(fiber, node, context, undefined, appearanceContext ? { context: appearanceContext, entries: [] } : undefined);\n });\n } catch (error) {\n unmountFiber(fiber);\n context.pop();\n throw error;\n }\n\n let active = true;\n const unmount = () => {\n if (!active) return;\n active = false;\n unmountFiber(fiber);\n context.pop();\n roots.delete(container);\n };\n\n roots.set(container, unmount);\n return unmount;\n}\n\nfunction range(kind: Kind, parent: globalThis.Node, before: globalThis.Node | null, context: Context): Fiber {\n const start = document.createComment(kind);\n const end = document.createComment(`/${kind}`);\n\n parent.insertBefore(start, before);\n parent.insertBefore(end, before);\n\n return { kind, context, start, end, children: [] };\n}\n\nfunction makeScope(kind: Scope['kind'], context: Context, update: (passive: boolean) => void): Scope {\n return {\n active: true,\n childContext: context,\n context,\n kind,\n subscriptions: [],\n update,\n useIndex: 0,\n uses: []\n };\n}\n\nfunction park(fiber: Fiber) {\n move(fiber, fragment(), null);\n}\n\nfunction complete<T extends Fiber>(fiber: T, work: () => void): T {\n try {\n work();\n } catch (error) {\n if (holding && error === holding.thrown) {\n park(fiber);\n holding.fiber = fiber;\n } else unmountFiber(fiber);\n\n throw error;\n }\n\n return fiber;\n}\n\nfunction componentProps(\n type: unknown,\n props: Record<string, any>,\n appearance: Appearance | undefined\n) {\n const context = appearance?.context;\n if (!context || typeof type != 'function') return { appearance, props };\n\n const value = context.resolve(props);\n const entries = appearance!.entries;\n\n if (!value) return { appearance: { entries }, props };\n\n return {\n appearance: {\n context: value.context,\n entries\n },\n props: { ...props, style: [createAppearanceToken(value), props.style] }\n };\n}\n\nfunction mount(value: RenderNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance): Fiber {\n if (typeof value == 'string' || typeof value == 'number' || typeof value == 'bigint') {\n const text = document.createTextNode(String(value));\n parent.insertBefore(text, before);\n return { kind: 'text', value, context, start: text, end: text, children: [] };\n }\n\n if (renderable(value)) return mountComponent(value, parent, before, context, boundary, appearance);\n if (isCollection(value))\n return mountCollection(value, parent, before, context, boundary, appearance);\n\n if (!isVNode(value)) throw new TypeError(`Cannot render ${String(value)}.`);\n\n if (value.type === Fragment) return mountFragment(value, parent, before, context, boundary, appearance);\n if (value.type === PORTAL) return mountPortal(value, parent, before, context, boundary, appearance);\n if (typeof value.type == 'string') return mountElement(value, parent, before, context, boundary, appearance);\n if (typeof value.type != 'function')\n throw new Error(`Cannot render ${String(value.type)}.`);\n\n if (value.type.prototype instanceof State)\n return mountOwnedComponent(value, parent, before, context, boundary, appearance);\n\n return mountFunction(value, parent, before, context, boundary, appearance);\n}\n\nfunction mountFragment(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const fiber = range('fragment', parent, before, context);\n fiber.key = value.key;\n fiber.type = Fragment;\n fiber.appearance = appearance;\n\n return complete(fiber, () => {\n reconcile(fiber, value.props.children, context, boundary, appearance);\n });\n}\n\nfunction mountFunction(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const fiber = range('function', parent, before, context);\n const resolved = componentProps(value.type, value.props, appearance);\n fiber.key = value.key;\n fiber.type = value.type;\n fiber.props = observe(resolved.props);\n fiber.boundary = boundary;\n fiber.appearance = resolved.appearance;\n fiber.scope = makeScope('function', context, (passive) => runFunction(fiber, passive));\n fiber.render = () => enter(fiber.scope!, () => {\n const type = latest(fiber.type as Function);\n return resolve(type, fiber.props!, () => call(type, fiber.props));\n });\n track(fiber.type as Function, fiber.scope);\n probing(fiber);\n\n return complete(fiber, () => {\n runFunction(fiber, passiveRender);\n });\n}\n\nfunction mountOwnedComponent(\n value: VNode,\n parent: globalThis.Node,\n before: globalThis.Node | null,\n context: Context,\n boundary?: Boundary,\n appearance?: Appearance\n) {\n const resolved = componentProps(value.type, value.props, appearance);\n const Type = value.type as new (...args: unknown[]) => Renderable;\n const props = observe(resolved.props);\n const instance: Renderable = new Type(props,\n Type.prototype instanceof Component ? undefined : () => props.is?.(instance)\n );\n\n return mountComponent(instance, parent, before, context, boundary, resolved.appearance, true, value.key, props);\n}\n\nfunction runFunction(fiber: Fiber, passive: boolean) {\n const result = attempt(fiber, passive, fiber.render!);\n\n if (result === true) inserted(fiber, () => commit(fiber.scope!));\n else return result;\n}\n\nfunction probing(fiber: Fiber) {\n const scope = fiber.scope!;\n\n scope.empty = () => !fiber.children.length;\n scope.probe = () => {\n try {\n scope.probed = { output: consume(fiber, fiber.render!) };\n } catch (thrown) {\n if (isThenable(thrown)) return thrown;\n }\n };\n}\n\nfunction mountComponent(\n instance: Renderable,\n parent: globalThis.Node,\n before: globalThis.Node | null,\n context: Context,\n inherited?: Boundary,\n appearance?: Appearance,\n owned = false,\n key?: Key,\n props = instance.props\n) {\n const fiber = range('component', parent, before, context);\n const childContext = context.push(instance);\n const element = (owned ? props : {}) as Placement;\n const fallback = element.fallback !== undefined ? element.fallback : instance.fallback;\n const ownBoundary: Boundary | undefined = fallback !== undefined && fallback !== false || element.catch || instance.catch\n ? {\n catch: element.catch || instance.catch ? (error) => {\n const handler = owned && (fiber.props as Placement).catch;\n return (handler || instance.catch)!.call(instance, error, instance);\n } : undefined,\n fallback: () => {\n const placed = owned ? (fiber.props as Placement).fallback : undefined;\n return placed !== undefined ? placed : instance.fallback;\n },\n owner: fiber,\n parent: inherited\n }\n : inherited;\n\n fiber.boundary = ownBoundary;\n if (ownBoundary !== inherited) fiber.ownBoundary = ownBoundary;\n fiber.childContext = childContext;\n fiber.instance = instance;\n fiber.key = owned ? key : instance.key;\n fiber.type = instance.constructor;\n fiber.props = props;\n fiber.owned = owned;\n fiber.appearance = appearance;\n fiber.scope = makeScope('component', childContext, (passive) => runComponent(fiber, passive));\n fiber.render = () => enter(fiber.scope!, () => compose.call(fiber.value as State, fiber.props));\n probing(fiber);\n\n let first = true;\n let proxy = instance;\n fiber.release = watch(instance, (current, events) => {\n const { applied, scope } = fiber;\n\n proxy = current;\n fiber.applied = undefined;\n\n if (!first && scope!.active) {\n if (applied && events.includes('props')) transition(() => schedule(scope!));\n else schedule(scope!);\n }\n\n first = false;\n }, undefined, transition);\n\n Object.defineProperty(fiber, 'value', { get: () => proxy });\n try {\n complete(fiber, () => {\n runComponent(fiber, passiveRender);\n });\n } finally {\n if (owned && !fiber.dead) inserted(fiber, () => (fiber.cleanup = instance.mount?.()));\n }\n\n return fiber;\n}\n\nfunction runComponent(fiber: Fiber, passive: boolean) {\n const result = attempt(fiber, passive, fiber.render!);\n\n if (result !== true) return result;\n}\n\nfunction mountCollection(value: has.List<unknown> | has.Pool<unknown> | map.Managed<unknown, unknown>, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const fiber = range('collection', parent, before, context);\n fiber.source = value;\n fiber.value = value;\n fiber.boundary = boundary;\n fiber.appearance = appearance;\n fiber.scope = makeScope('collection', context, (passive) => runCollection(fiber, passive));\n\n let first = true;\n fiber.release = watch(value, (current) => {\n fiber.value = current;\n if (!first && fiber.scope?.active) schedule(fiber.scope);\n first = false;\n }, undefined, transition);\n\n return complete(fiber, () => {\n runCollection(fiber, passiveRender);\n });\n}\n\nfunction runCollection(fiber: Fiber, passive: boolean) {\n attempt(fiber, passive, () => {\n const value = fiber.value as Iterable<unknown>;\n return value instanceof map.Managed ? [...value.values()] : [...value];\n });\n}\n\nfunction mountPortal(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const marker = document.createComment('portal');\n const container = target(value.props.into, parent);\n const portalStart = document.createComment('portal-root');\n const portalEnd = document.createComment('/portal-root');\n\n parent.insertBefore(marker, before);\n container.append(portalStart, portalEnd);\n\n const output: Fiber = {\n kind: 'portal',\n key: value.key,\n type: PORTAL,\n props: value.props,\n context,\n boundary,\n appearance,\n start: marker,\n end: marker,\n children: [],\n portalContainer: container,\n portalStart,\n portalEnd\n };\n\n return complete(output, () => {\n reconcilePortal(output, value.props.children, context, boundary, appearance);\n });\n}\n\nfunction target(into: unknown, parent: globalThis.Node): Container {\n if (typeof into != 'string') return into as Container;\n\n const root = parent.getRootNode();\n const found = [...document.querySelectorAll(into)];\n\n if (root instanceof DocumentFragment) found.push(...root.querySelectorAll(into));\n\n if (found.length != 1)\n throw new Error(`Portal target \"${into}\" ${found.length ? 'is ambiguous' : 'was not found'}.`);\n\n return found[0];\n}\n\nfunction mountElement(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const tag = value.type as string;\n let host = parent;\n\n for (let owner = stashes.get(host); owner; owner = stashes.get(host))\n host = owner.end.parentNode!;\n\n const namespace = tag == 'svg' || host instanceof SVGElement && host.localName != 'foreignObject' ? SVG : undefined;\n const element = namespace\n ? document.createElementNS(SVG, tag)\n : document.createElement(tag);\n const fiber: Fiber = {\n kind: 'element',\n key: value.key,\n type: tag,\n props: {},\n context,\n boundary,\n start: element,\n end: element,\n children: [],\n events: new Map()\n };\n\n parent.insertBefore(element, before);\n complete(fiber, () => {\n patchProps(fiber, value.props, appearance);\n });\n\n if (value.props.autofocus || value.props.autoFocus) focusing.push(element);\n return fiber;\n}\n\nfunction pass<T>(work: () => T): T {\n depth++;\n\n try {\n return work();\n } finally {\n if (!--depth) {\n settle();\n focus();\n }\n }\n}\n\nfunction focus() {\n for (const element of focusing.splice(0))\n if (element.isConnected) (element as HTMLElement).focus();\n}\n\nfunction attempt(fiber: Fiber, passive: boolean, render: () => RenderNode): true | PromiseLike<unknown> | void {\n const previous = passiveRender;\n const scope = fiber.scope!;\n const probed = scope.probed;\n const empty = !fiber.children.length;\n\n scope.probed = undefined;\n passiveRender ||= passive;\n\n if (passive && !depth && empty && !fiber.stash)\n fiber.staging ||= fragment();\n\n const run = () => pass(() => {\n try {\n const output = probed ? probed.output as RenderNode : consume(fiber, render);\n reconcile(fiber, output, scope.childContext, fiber.boundary, renderedAppearance(fiber));\n\n if (fiber.staging) {\n fiber.end.parentNode!.insertBefore(fiber.staging, fiber.end);\n attach(fiber.staging);\n fiber.staging = undefined;\n }\n\n if (!fiber.recovering) unwait(fiber);\n fiber.retried = undefined;\n return true;\n } catch (thrown) {\n return suspend(fiber, thrown, passive, empty);\n }\n });\n\n try {\n return passive ? batched(run) : run();\n } finally {\n passiveRender = previous;\n }\n}\n\nfunction observe(props: Record<string, any>) {\n if (!('style' in props)) return props;\n\n let output = observed.get(props);\n\n if (!output) {\n const { style } = props;\n let handle: Style;\n let resolved = false;\n\n output = Object.defineProperty({ ...props }, 'style', {\n enumerable: true,\n get() {\n if (rendering === output) touched = true;\n if (!resolved) {\n handle = door(style);\n resolved = true;\n }\n return handle;\n }\n });\n observed.set(props, output);\n }\n\n return output;\n}\n\nfunction door(value: Style) {\n const collected: Collected = { classes: [], declarations: {}, tokens: [] };\n const { classes, declarations, tokens } = collected;\n\n collect(value, collected, 1);\n\n if (!classes.length && !tokens.length && !Object.keys(declarations).length) return undefined;\n\n const key = Object.freeze({});\n\n tickets.set(key, { classes, tokens });\n return Object.freeze({ ...declarations, [Symbol('style')]: key });\n}\n\nfunction consume(fiber: Fiber, render: () => RenderNode) {\n const previous = rendering;\n const read = touched;\n\n rendering = fiber.props;\n touched = false;\n\n try {\n const output = render();\n fiber.consumed = touched;\n return output;\n } finally {\n rendering = previous;\n touched = read;\n }\n}\n\nfunction wait(fiber: Fiber, boundary: Boundary) {\n if (fiber.waitingOn !== boundary) unwait(fiber);\n\n fiber.waitingOn = boundary;\n (boundary.waiting ||= new Set()).add(fiber);\n dirty.add(boundary);\n}\n\nfunction unwait(fiber: Fiber) {\n const boundary = fiber.waitingOn;\n\n if (!boundary) return;\n\n fiber.waitingOn = undefined;\n boundary.waiting!.delete(fiber);\n if (!boundary.owner!.dead) dirty.add(boundary);\n}\n\nfunction settle() {\n if (settling) return;\n settling = true;\n\n try {\n for (const boundary of dirty) {\n dirty.delete(boundary);\n\n const owner = boundary.owner!;\n const waiting = boundary.waiting!.size > 0;\n\n if (!owner.dead && waiting != !!owner.stash)\n waiting ? hide(owner, boundary) : reveal(owner);\n }\n } finally {\n settling = false;\n }\n}\n\nfunction hide(owner: Fiber, boundary: Boundary) {\n const stash = document.createDocumentFragment();\n\n for (const child of owner.children) move(child, stash, null);\n\n owner.portals = portals(owner, []).map((portal) => {\n const content = document.createDocumentFragment();\n moveRange(portal.portalStart!, portal.portalEnd!, content);\n return [portal, content];\n });\n\n stashes.set(stash, owner);\n\n const context = owner.childContext!;\n const placeholder = range('fragment', owner.end.parentNode!, owner.end, context);\n\n owner.stash = stash;\n owner.placeholder = placeholder;\n reconcile(placeholder, boundary.fallback(), context, boundary.parent);\n}\n\nfunction reveal(owner: Fiber) {\n unmountFiber(owner.placeholder!);\n owner.end.parentNode!.insertBefore(owner.stash!, owner.end);\n\n for (const [portal, content] of owner.portals!)\n if (!portal.dead) portal.portalContainer!.append(content);\n\n owner.portals = undefined;\n owner.placeholder = undefined;\n owner.stash = undefined;\n}\n\nfunction portals(fiber: Fiber, found: Fiber[]) {\n for (const child of fiber.children) {\n if (child.kind == 'portal') found.push(child);\n portals(child, found);\n }\n\n return found;\n}\n\nfunction moveRange(start: globalThis.Node, end: globalThis.Node, target: globalThis.Node) {\n let node: globalThis.Node | null = start;\n\n while (node) {\n const next: globalThis.Node | null = node.nextSibling;\n target.appendChild(node);\n if (node === end) break;\n node = next;\n }\n}\n\nfunction suspend(fiber: Fiber, thrown: unknown, passive: boolean, empty: boolean) {\n const boundary = fiber.boundary;\n\n if (isThenable(thrown)) {\n if (!boundary) throw thrown;\n if (passive && empty && depth > 1) {\n if (holding?.thrown !== thrown) holding = { thrown };\n throw thrown;\n }\n\n holding = undefined;\n if (!passive) wait(fiber, boundary);\n\n const scope = fiber.scope!;\n let held = scope.holds;\n\n scope.holds = undefined;\n\n const clear = () => {\n fiber.suspended!.delete(clear);\n release(held);\n held = undefined;\n };\n\n (fiber.suspended ||= new Set()).add(clear);\n\n const resume = (retry: () => void) => {\n fiber.suspended!.delete(clear);\n if (!scope.active) return clear();\n if (held) (scope.holds ||= []).push(...held);\n held = undefined;\n retry();\n };\n\n thrown.then(\n () => resume(() => passive ? transition(() => schedule(scope)) : schedule(scope)),\n (error) => resume(() => pass(() => recover(fiber, error, fiber.boundary)))\n );\n return thrown;\n }\n\n recover(fiber, thrown, fiber.boundary);\n}\n\nfunction recover(fiber: Fiber, thrown: unknown, boundary: Boundary | undefined) {\n const error = thrown instanceof Error ? thrown : new Error(String(thrown));\n\n while (boundary && !boundary.catch) boundary = boundary.parent;\n\n if (!boundary) throw error;\n\n const handler = boundary;\n\n const token = {};\n\n wait(fiber, handler);\n fiber.recovering = token;\n\n Promise.resolve(handler.catch!(error)).then(\n () => {\n if (fiber.recovering !== token) return;\n fiber.recovering = undefined;\n if (!fiber.scope!.active || fiber.retried) return;\n fiber.retried = true;\n schedule(fiber.scope!);\n },\n (next) => {\n if (fiber.recovering === token && fiber.scope!.active) pass(() => recover(fiber, next, handler.parent));\n }\n );\n}\n\nfunction isThenable(value: unknown): value is PromiseLike<unknown> {\n return !!value && typeof (value as PromiseLike<unknown>).then == 'function';\n}\n\nfunction reconcile(fiber: Fiber, value: RenderNode, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const detached = fiber.stash || fiber.staging;\n\n if (detached) reconcileChildren(fiber, detached, null, value, context, boundary, appearance);\n else reconcileChildren(fiber, fiber.end.parentNode!, fiber.end, value, context, boundary, appearance);\n}\n\nfunction reconcilePortal(fiber: Fiber, value: RenderNode, context: Context, boundary?: Boundary, appearance?: Appearance) {\n reconcileChildren(fiber, fiber.portalEnd!.parentNode!, fiber.portalEnd!, value, context, boundary, appearance);\n}\n\nfunction reconcileChildren(owner: Fiber, parent: globalThis.Node, before: globalThis.Node | null, value: RenderNode, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const values = childrenOf(value);\n const old = owner.children;\n const keyed = new Map<Key, Fiber>();\n const used = new Set<Fiber>();\n const next: Fiber[] = [];\n\n for (const child of old)\n if (child.key !== null && child.key !== undefined) keyed.set(child.key, child);\n\n try {\n for (let index = 0; index < values.length; index++) {\n const value = source(values[index]);\n const key = keyOf(value);\n let child = key !== null && key !== undefined\n ? keyed.get(key)\n : old[index]?.key == null\n ? old[index]\n : undefined;\n\n if (child && used.has(child)) child = undefined;\n if (child) used.add(child);\n\n const fiber = patch(child, value, parent, before, context, boundary, appearance);\n\n if (fiber !== child) used.delete(child!);\n next.push(fiber);\n }\n } catch (error) {\n if (holding && error === holding.thrown) {\n for (const fiber of next) if (!old.includes(fiber)) park(fiber);\n if (holding.fiber) next.push(holding.fiber);\n holding.fiber = undefined;\n }\n\n owner.children = [...next, ...old.filter((child) => !child.dead && !next.includes(child))];\n throw error;\n }\n\n for (const child of old)\n if (!used.has(child)) unmountFiber(child);\n\n let anchor = before;\n for (let index = next.length - 1; index >= 0; index--) {\n const child = next[index];\n const root = child.start.getRootNode();\n\n move(child, parent, anchor);\n anchor = child.start;\n if (child.start.getRootNode() !== root) attach(root);\n }\n\n owner.children = next;\n}\n\nfunction patch(old: Fiber | undefined, value: RenderNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance): Fiber {\n if (!old || !compatible(old, value)) return mount(value, parent, old?.start || before, context, boundary, appearance);\n\n if (old.ownBoundary) old.ownBoundary.parent = boundary;\n old.boundary = old.ownBoundary || boundary;\n if (old.kind == 'collection') {\n if (old.appearance !== appearance) {\n old.appearance = appearance;\n runCollection(old, passiveRender);\n }\n return old;\n }\n\n if (old.kind == 'text') {\n const next = String(value);\n if (old.start.nodeValue !== next) old.start.nodeValue = next;\n old.value = value;\n } else if (old.kind == 'element') {\n patchProps(old, (value as VNode).props, appearance);\n } else if (old.kind == 'fragment') {\n old.context = context;\n old.appearance = appearance;\n reconcile(old, (value as VNode).props.children, context, old.boundary, appearance);\n } else if (old.kind == 'function') {\n const vnode = value as VNode;\n const resolved = componentProps(vnode.type, vnode.props, appearance);\n if (old.type !== vnode.type) {\n untrack(old.type as Function, old.scope!);\n old.type = vnode.type;\n old.scope!.hot = true;\n track(old.type as Function, old.scope!);\n }\n old.appearance = resolved.appearance;\n old.props = observe(resolved.props);\n rerun(old, () => runFunction(old, passiveRender));\n } else if (old.kind == 'component') {\n const resolved = isVNode(value)\n ? componentProps(value.type, value.props, appearance)\n : { appearance, props: old.props! };\n old.appearance = resolved.appearance;\n const props = isVNode(value) ? observe(resolved.props) : resolved.props;\n if (isVNode(value) && props !== old.props) {\n const instance = old.instance!;\n if (passiveRender) old.applied = true;\n if (instance instanceof Component) (instance as any).props = props;\n else instance.set(merge(old.props!, props) as never);\n }\n old.props = props;\n rerun(old, () => runComponent(old, passiveRender));\n } else {\n old.appearance = appearance;\n const vnode = value as VNode;\n old.props = vnode.props;\n reconcilePortal(old, vnode.props.children, context, old.boundary, appearance);\n }\n\n return old;\n}\n\nfunction rerun(fiber: Fiber, run: () => void) {\n dequeue(fiber.scope!);\n run();\n absorb(fiber.scope!);\n}\n\nfunction compatible(fiber: Fiber, value: RenderNode) {\n if (fiber.kind == 'text') return ['string', 'number', 'bigint'].includes(typeof value);\n if (renderable(value)) return fiber.kind == 'component' && fiber.instance === value;\n if (isCollection(value))\n return fiber.kind == 'collection' && fiber.source === value;\n if (!isVNode(value)) return false;\n if (fiber.key !== value.key || !same(fiber.type, value.type)) return false;\n if (fiber.kind == 'portal') return fiber.props!.into === value.props.into;\n return true;\n}\n\nfunction source(value: RenderNode): RenderNode {\n if (value instanceof State) return value.is;\n\n while (isCollection(value) && isCollection(Object.getPrototypeOf(value)))\n value = Object.getPrototypeOf(value);\n\n return value;\n}\n\nfunction renderable(value: unknown): value is Renderable {\n return value instanceof State && typeof (value as Renderable).render == 'function';\n}\n\nfunction merge(previous: Record<string, any>, next: Record<string, any>) {\n const output: Record<string, any> = {};\n for (const key in previous) output[key] = undefined;\n return { ...output, ...next };\n}\n\nfunction isCollection(value: unknown): value is has.List<unknown> | has.Pool<unknown> | map.Managed<unknown, unknown> {\n return value instanceof has.List || value instanceof has.Pool || value instanceof map.Managed;\n}\n\nfunction keyOf(value: RenderNode): Key {\n if (renderable(value)) return value.key;\n return isVNode(value) ? value.key : undefined;\n}\n\nfunction move(fiber: Fiber, parent: globalThis.Node, before: globalThis.Node | null) {\n if (fiber.start.parentNode === parent && fiber.end.nextSibling === before) return;\n\n let node: globalThis.Node | null = fiber.start;\n while (node) {\n const next: globalThis.Node | null = node.nextSibling;\n parent.insertBefore(node, before);\n if (node === fiber.end) break;\n node = next;\n }\n}\n\nfunction patchProps(fiber: Fiber, next: Record<string, any>, appearance?: Appearance) {\n const element = fiber.start as Element;\n const previous = fiber.props!;\n const raw = 'dangerouslySetInnerHTML' in next;\n const resolved = appearance?.context?.resolve(next, fiber.type as string);\n\n if (raw) {\n for (let index = fiber.children.length - 1; index >= 0; index--)\n unmountFiber(fiber.children[index]);\n fiber.children = [];\n }\n\n for (const key of Object.keys({ ...previous, ...next })) {\n if (key.startsWith('_') || key == 'children' || key == 'className' || key == 'key' || key == 'ref' || key == 'style' || CONTROLS.includes(key)) continue;\n if (previous[key] === next[key]) continue;\n patchProp(fiber, element, key, previous[key], next[key]);\n }\n\n const claimed = claim(element, appearance, resolved, next.className, next.style);\n\n applyClaim(element, fiber.claimed, claimed);\n fiber.claimed = claimed;\n fiber.props = next;\n fiber.appearance = appearance;\n\n if (!raw) {\n reconcileChildren(\n fiber,\n element,\n null,\n next.children,\n fiber.context,\n fiber.boundary,\n claimed.context ? { context: claimed.context, entries: [] } : undefined\n );\n }\n\n for (const key of CONTROLS) {\n const value = next[key];\n const live = (element as any)[key];\n const differs = value == null || !(key in element)\n ? previous[key] !== value\n : key == 'value' ? String(live) !== String(value) : live !== value;\n\n if (differs) patchProp(fiber, element, key, previous[key], value);\n }\n\n if (CONTROLS.some((key) => next[key] != null)) {\n const document = element.ownerDocument;\n\n controlled.set(element, fiber);\n\n if (!restoring.has(document)) {\n restoring.add(document);\n document.addEventListener('input', restoreTarget);\n document.addEventListener('change', restoreTarget);\n }\n }\n\n if (previous.ref !== next.ref) patchProp(fiber, element, 'ref', previous.ref, next.ref);\n}\n\nfunction patchProp(fiber: Fiber, element: Element, key: string, previous: any, next: any) {\n if (key == 'ref') {\n applyRef(previous, null);\n inserted(fiber, () => applyRef(next, element));\n return;\n }\n\n if (key == 'dangerouslySetInnerHTML') {\n element.innerHTML = next?.__html || '';\n return;\n }\n\n if (/^on[A-Z]/.test(key)) {\n const capture = key.endsWith('Capture');\n const lower = (capture ? key.slice(2, -7) : key.slice(2)).toLowerCase();\n const name = lower == 'doubleclick' ? 'dblclick' : lower;\n const id = `${name}:${capture}`;\n const current = fiber.events!.get(id);\n\n if (current) element.removeEventListener(name, current, capture);\n if (typeof next == 'function') {\n fiber.events!.set(id, next);\n element.addEventListener(name, next, capture);\n } else fiber.events!.delete(id);\n return;\n }\n\n const name = ALIASES[key] || key;\n\n if ((key.startsWith('aria-') || key.startsWith('data-') || ENUMERATED.includes(key)) && next != null) {\n element.setAttribute(name, String(next));\n return;\n }\n\n if (next === null || next === undefined || next === false) {\n if (key in element && typeof (element as any)[key] != 'function')\n try {\n const current = (element as any)[key];\n (element as any)[key] = typeof current == 'boolean'\n ? false\n : typeof current == 'number'\n ? 0\n : '';\n } catch {}\n element.removeAttribute(element.namespaceURI === SVG ? name.toLowerCase() : name);\n element.removeAttribute(name);\n return;\n }\n\n if (key in element && (element.namespaceURI !== SVG || settable(element, key)))\n try {\n (element as any)[key] = next;\n return;\n } catch {}\n\n element.setAttribute(name, next === true ? '' : String(next));\n}\n\ntype Style = string | Record<string, unknown> | false | null | undefined | readonly Style[];\n\nfunction applyClaim(element: Element, before: Claim | undefined, after: Claim) {\n const previous = before || { className: '', declarations: {} };\n\n if (previous.className !== after.className) {\n if (after.className) element.setAttribute('class', after.className);\n else element.removeAttribute('class');\n }\n\n applyDeclarations((element as HTMLElement).style, after.declarations, previous.declarations);\n}\n\nfunction claim(\n element: Element,\n appearance: Appearance | undefined,\n resolved: ResolvedAppearance | undefined,\n className: unknown,\n value: Style\n): Claim {\n const collected: Collected = { classes: [], declarations: {}, tokens: [] };\n const entries = appearance?.entries || [];\n let context = appearance?.context;\n let reach = -1;\n\n if (resolved) collect(createAppearanceToken(resolved), collected, 0);\n appendClasses(collected.classes, className);\n collect(value, collected, 0);\n\n for (let index = entries.length - 1; index >= 0; index--)\n collect(entries[index].style, collected, entries[index].hops);\n\n for (const { appearance, doors } of collected.tokens) {\n for (const block of appearance.blocks || [])\n collected.classes.push(emitClass(block, doors, element.ownerDocument));\n if (appearance.classes) collected.classes.push(...appearance.classes);\n if (appearance.context && doors >= reach) {\n context = appearance.context;\n reach = doors;\n }\n }\n\n return {\n className: [...new Set(collected.classes)].join(' '),\n context,\n declarations: collected.declarations\n };\n}\n\nfunction renderedAppearance(fiber: Fiber): Appearance | undefined {\n if (fiber.kind != 'component' && fiber.kind != 'function') return fiber.appearance;\n\n const style = fiber.props?.style as Style;\n const entries = (fiber.appearance?.entries || []).map(({ hops, style }) => ({ hops: hops + 1, style }));\n const inherited = fiber.appearance?.context || appearanceRoot();\n const context = enterAppearance(inherited, latest(fiber.type as Function));\n\n if (context?.base && context !== inherited)\n entries.push({ hops: 0, style: context.base as Style });\n\n if (style && !fiber.consumed && !(fiber.instance && 'style' in fiber.instance)) entries.push({ hops: 0, style });\n\n return entries.length || context ? { context, entries } : undefined;\n}\n\nfunction collect(value: Style, collected: Collected, doors: number) {\n if (!value) return;\n\n const token = appearanceToken(value);\n if (token) {\n collected.tokens.push({ appearance: token, doors });\n Object.assign(collected.declarations, token.declarations);\n return;\n }\n\n if (typeof value == 'string') {\n appendClasses(collected.classes, value);\n return;\n }\n\n if (Array.isArray(value)) {\n value.forEach((entry) => collect(entry, collected, doors));\n return;\n }\n\n for (const symbol of Object.getOwnPropertySymbols(value)) {\n const ticket = tickets.get((value as Record<symbol, object>)[symbol]);\n if (!ticket) continue;\n\n collected.classes.push(...ticket.classes);\n for (const carried of ticket.tokens)\n collected.tokens.push({ appearance: carried.appearance, doors: carried.doors + doors });\n }\n\n for (const key of Object.keys(value)) collected.declarations[key] = (value as Record<string, unknown>)[key];\n}\n\nfunction appendClasses(classes: string[], value: unknown) {\n if (typeof value == 'string') classes.push(...value.split(/\\s+/).filter(Boolean));\n}\n\nfunction restoreTarget(event: Event) {\n const element = event.target as HTMLInputElement;\n const fiber = controlled.get(element);\n\n if (fiber && event.type == settles(fiber.props!, element))\n queueMicrotask(() => afterFlush(() => restore(fiber)));\n}\n\nfunction settles(props: Record<string, any>, element: HTMLInputElement) {\n if (props.onInput) return 'input';\n if (props.onChange) return 'change';\n return element.type == 'checkbox' || element.type == 'radio' || element.localName == 'select' ? 'change' : 'input';\n}\n\nfunction restore(fiber: Fiber) {\n const element = fiber.start as any;\n\n for (const key of CONTROLS) {\n const value = fiber.props![key];\n\n if (value == null || fiber.dead) continue;\n if (key == 'value' ? String(element.value) !== String(value) : element[key] !== value)\n element[key] = value;\n }\n}\n\nfunction settable(element: Element, key: string) {\n let target: object = element;\n let descriptor: PropertyDescriptor | undefined;\n\n while (!(descriptor = Object.getOwnPropertyDescriptor(target, key)))\n target = Object.getPrototypeOf(target);\n\n return !!(descriptor.set || descriptor.writable);\n}\n\nfunction applyRef(ref: unknown, value: Element | null) {\n if (typeof ref == 'function') ref(value);\n else if (ref && typeof ref == 'object' && 'current' in ref) (ref as { current: Element | null }).current = value;\n}\n\nfunction unmountFiber(fiber: Fiber) {\n fiber.dead = true;\n unwait(fiber);\n\n for (let index = fiber.children.length - 1; index >= 0; index--)\n unmountFiber(fiber.children[index]);\n\n if (fiber.placeholder) unmountFiber(fiber.placeholder);\n\n fiber.suspended?.forEach((clear) => clear());\n if (fiber.kind == 'function') untrack(fiber.type as Function, fiber.scope!);\n if (fiber.scope) dispose(fiber.scope);\n fiber.release?.();\n\n if (fiber.kind == 'element') {\n applyRef(fiber.props?.ref, null);\n for (const [id, listener] of fiber.events!) {\n const [name, capture] = id.split(':');\n (fiber.start as Element).removeEventListener(name, listener, capture === 'true');\n }\n }\n\n if (fiber.kind == 'component') {\n if (typeof fiber.cleanup == 'function') fiber.cleanup();\n fiber.childContext?.pop();\n if (fiber.owned && !fiber.instance!.get(null)) fiber.instance!.set(null);\n } else if (fiber.kind == 'portal') {\n (fiber.portalStart as ChildNode).remove();\n (fiber.portalEnd as ChildNode).remove();\n }\n\n removeRange(fiber.start, fiber.end);\n}\n\nfunction removeRange(start: globalThis.Node, end: globalThis.Node) {\n let node = start;\n\n while (true) {\n const next = node.nextSibling;\n (node as ChildNode).remove();\n if (node === end) break;\n node = next!;\n }\n}\n\nexport { render };\nexport type { Container };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["style","macro","Fragment"],"sources":["../src/style/css.ts","../src/style/protocol.ts","../src/style/appearance.ts","../src/style/declarations.ts","../src/style/stylesheet.ts","../src/render/commits.ts","../src/render/fiber.ts","../src/render/collection.ts","../src/node/loader.ts","../src/style/claim.ts","../src/render/style.ts","../src/render/element.ts","../src/render/portal.ts","../src/render/reconcile.ts","../src/render/suspense.ts","../src/render/component.ts","../src/render/mount.ts","../src/render/render.ts"],"sourcesContent":["import type { macro, style } from './stylesheet';\n\nconst unitless = new Map<string, boolean>();\n\nlet probe: CSSStyleDeclaration | undefined;\n\n/**\n * Does the CSSOM accept a bare number for this property? Probed once with a\n * canonical value; the answer is a property of CSS, not of the value.\n */\nfunction bare(property: string) {\n let known = unitless.get(property);\n\n if (known === undefined) {\n probe ||= document.createElement('div').style;\n (probe as any)[property] = '';\n (probe as any)[property] = 1;\n unitless.set(property, known = Boolean((probe as any)[property]));\n }\n\n return known;\n}\n\nfunction sized(property: string, value: unknown): unknown {\n if (Array.isArray(value))\n return value.map((entry) => sized(property, entry));\n\n return typeof value == 'number' && value !== 0 && !bare(property)\n ? `${value}px`\n : value;\n}\n\n/**\n * Web macro pack. Register with `macro(css)` to opt into pixel units for\n * numbers and the axis shorthands CSS itself does not provide.\n */\nconst css = {\n '*': (value: unknown, key: string) => ({ [key]: sized(key, value) }),\n mx: (value: style.Value) => ({ marginLeft: value, marginRight: value }),\n my: (value: style.Value) => ({ marginTop: value, marginBottom: value }),\n px: (value: style.Value) => ({ paddingLeft: value, paddingRight: value }),\n py: (value: style.Value) => ({ paddingTop: value, paddingBottom: value }),\n size: (value: style.Value) =>\n Array.isArray(value)\n ? { width: value[0], height: value[1] }\n : { width: value, height: value }\n} satisfies macro.Map;\n\ndeclare module '@expressive/dom' {\n namespace macro {\n interface Registry {\n mx(value: style.Value): style.Map;\n my(value: style.Value): style.Map;\n px(value: style.Value): style.Map;\n py(value: style.Value): style.Map;\n size(value: style.Value): style.Map;\n }\n }\n}\n\nexport { css };\n","type Declaration = Record<string, unknown>;\n\ninterface Block {\n declarations: Declaration;\n name: string;\n ordinal: number;\n}\n\ninterface ResolvedAppearance {\n blocks?: Block[];\n classes?: string[];\n context?: AppearanceContext;\n declarations?: Declaration;\n}\n\ninterface AppearanceContext {\n readonly scope?: unknown;\n readonly base?: object;\n resolve(\n props: Record<string, unknown>,\n tag?: string\n ): ResolvedAppearance | undefined;\n}\n\ntype EnterAppearance = (parent?: AppearanceContext) => AppearanceContext;\ntype Emit = (block: Block, depth: number, document: Document) => string;\n\nconst registrations = new WeakMap<object, EnterAppearance>();\nconst tokens = new WeakMap<object, ResolvedAppearance>();\nlet root: (() => AppearanceContext | undefined) | undefined;\nlet emitter: Emit | undefined;\nlet rendered = false;\n\nfunction registerAppearance(type: object, enter: EnterAppearance) {\n registrations.set(type, enter);\n}\n\nfunction registerAppearanceRoot(factory: () => AppearanceContext | undefined) {\n root = factory;\n}\n\nfunction registerEmitter(emit: Emit) {\n emitter = emit;\n}\n\nfunction emitClass(block: Block, depth: number, document: Document) {\n return emitter!(block, depth, document);\n}\n\nfunction appearanceRoot() {\n rendered = true;\n return root?.();\n}\n\n/** Has anything rendered yet - global registration is closed after it has. */\nfunction appearanceSealed() {\n return rendered;\n}\n\nfunction enterAppearance(parent: AppearanceContext | undefined, type: Function) {\n const chain: EnterAppearance[] = [];\n let current: object | null = type;\n\n while (current && current !== Function.prototype) {\n const enter = registrations.get(current);\n if (enter) chain.unshift(enter);\n current = Object.getPrototypeOf(current);\n }\n\n for (const enter of chain) parent = enter(parent);\n return parent;\n}\n\nfunction createAppearanceToken(appearance: ResolvedAppearance) {\n const token = {};\n tokens.set(token, appearance);\n return token;\n}\n\nfunction appearanceToken(value: unknown) {\n return value && typeof value == 'object' ? tokens.get(value) : undefined;\n}\n\nexport {\n appearanceRoot,\n appearanceSealed,\n appearanceToken,\n createAppearanceToken,\n emitClass,\n enterAppearance,\n registerAppearance,\n registerAppearanceRoot,\n registerEmitter\n};\n\nexport type { AppearanceContext, Block, Declaration, ResolvedAppearance };\n","import { appearanceSealed, createAppearanceToken, registerAppearance, registerAppearanceRoot } from './protocol';\nimport type { AppearanceContext, Block, Declaration, ResolvedAppearance } from './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 './protocol';\nimport type { Block } from './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","interface Placed {\n start: Node;\n dead?: boolean;\n}\n\ntype Entry = [Placed, () => unknown];\n\nconst DETACHED = new WeakMap<Node, Entry[]>();\n\nlet batch: Entry[] | undefined;\n\n/** Run `run` once `fiber` is on the page: now, after the current batch, or when its detached root attaches. */\nfunction inserted(fiber: Placed, run: () => unknown) {\n enqueue([fiber, run]);\n}\n\n/** A fragment whose commits wait until it attaches. */\nfunction fragment() {\n const root = document.createDocumentFragment();\n\n DETACHED.set(root, []);\n return root;\n}\n\nfunction attach(root: Node) {\n const held = DETACHED.get(root);\n\n DETACHED.delete(root);\n held?.forEach(enqueue);\n}\n\n/** Defer commits made during `work` until it returns or throws. */\nfunction batched<T>(work: () => T): T {\n if (batch) return work();\n\n const entries: Entry[] = (batch = []);\n\n try {\n return work();\n } finally {\n batch = undefined;\n entries.forEach(deliver);\n }\n}\n\nfunction enqueue(entry: Entry) {\n if (batch) batch.push(entry);\n else deliver(entry);\n}\n\nfunction deliver(entry: Entry) {\n const [fiber, run] = entry;\n const held = DETACHED.get(fiber.start.getRootNode());\n\n if (held) held.push(entry);\n else if (!fiber.dead) run();\n}\n\nexport { attach, batched, fragment, inserted };\n","import { Context, Model } from '@expressive/mvc';\n\nimport type { Key, Node as RenderNode } from '../node/vnode';\nimport type { Appearance, Claim } from '../style/claim';\nimport type { Scope } from './adapter';\n\ntype Container = Element | DocumentFragment;\n\ntype Kind = 'collection' | 'component' | 'element' | 'fragment' | 'function' | 'portal' | 'text';\n\ninterface Boundary {\n catch?: (error: Error) => Promise<void> | void;\n fallback: () => RenderNode;\n owner?: Fiber;\n parent?: Boundary;\n waiting?: Set<Fiber>;\n}\n\ninterface Renderable extends Model {\n props?: Record<string, any>;\n key?: Key;\n fallback?: RenderNode | false;\n catch?(error: Error, instance: Renderable): Promise<void> | void;\n mount?(): (() => void) | void;\n render?(props?: any): RenderNode;\n}\n\ntype Placement = Pick<Renderable, 'fallback' | 'catch'>;\n\ninterface Fiber {\n kind: Kind;\n key?: Key;\n type?: unknown;\n value?: unknown;\n source?: unknown;\n props?: Record<string, any>;\n context: Context;\n boundary?: Boundary;\n ownBoundary?: Boundary;\n start: globalThis.Node;\n end: globalThis.Node;\n children: Fiber[];\n scope?: Scope;\n cleanup?: (() => void) | void;\n release?: () => void;\n childContext?: Context;\n instance?: Renderable;\n owned?: boolean;\n events?: Map<string, EventListener>;\n portalStart?: globalThis.Node;\n portalEnd?: globalThis.Node;\n portalContainer?: Container;\n suspended?: Set<() => void>;\n applied?: boolean;\n retried?: boolean;\n portals?: [Fiber, DocumentFragment][];\n dead?: boolean;\n waitingOn?: Boundary;\n recovering?: object;\n stash?: DocumentFragment;\n placeholder?: Fiber;\n staging?: DocumentFragment;\n render?: () => RenderNode;\n appearance?: Appearance;\n consumed?: boolean;\n claimed?: Claim;\n}\n\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 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 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 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 { makeScope, move, moveRange, range, removeRange };\nexport type { Boundary, Container, Fiber, Placement, Renderable };\n","import { Context, has, map } from '@expressive/mvc';\nimport { watch } from '@expressive/mvc/observable';\n\nimport type { Appearance } from '../style/claim';\nimport { makeScope, range } from './fiber';\nimport type { Boundary, Fiber } from './fiber';\nimport { complete } from './mount';\nimport { attempt, passiveRender } from './render';\nimport { schedule, transition } from './scheduler';\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 patchCollection(fiber: Fiber, appearance?: Appearance) {\n if (fiber.appearance === appearance) return;\n\n fiber.appearance = appearance;\n runCollection(fiber, passiveRender);\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\nexport { isCollection, mountCollection, patchCollection };\n","import type { JSX } from '../jsx-runtime';\nimport type { ComponentType, Node } from './vnode';\nimport { vnode } from './vnode';\n\ntype Module<T extends ComponentType = ComponentType> = T | { default: T };\n\ntype Attributes<T> = [T] extends [never] ? {}\n : T extends abstract new (...args: any[]) => infer I\n ? JSX.LibraryManagedAttributes<T, I>\n : T extends (props: infer P) => any ? P : never;\n\ninterface Load {\n pending: PromiseLike<void>;\n resolved?: ComponentType;\n failed?: { error: unknown };\n}\n\nconst LOADS = new WeakMap<Function, Load>();\n\nfunction resolve(type: Function, props: object, run: () => unknown): Node {\n const load = LOADS.get(type);\n\n if (load?.resolved) return vnode(load.resolved, props);\n\n if (load?.failed) {\n LOADS.delete(type);\n throw load.failed.error;\n }\n\n if (load) throw load.pending;\n\n const output = run();\n\n if (!output || typeof (output as PromiseLike<unknown>).then != 'function') return output as Node;\n\n const next = {} as Load;\n\n LOADS.set(type, next);\n\n throw next.pending = (output as PromiseLike<Module | undefined>).then(\n (module) => {\n const component = typeof module == 'function' ? module : module?.default;\n\n if (typeof component == 'function') next.resolved = component;\n else next.failed = { error: new Error('Loader resolved no component.') };\n },\n (error) => {\n next.failed = { error };\n }\n );\n}\n\nexport { resolve };\nexport type { Attributes, Module };\n","import { applyDeclarations } from './declarations';\nimport { appearanceToken, createAppearanceToken, emitClass } from './protocol';\nimport type { AppearanceContext, ResolvedAppearance } from './protocol';\n\ntype Style = string | Record<string, unknown> | false | null | undefined | readonly Style[];\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\ninterface Ticket {\n classes: string[];\n tokens: Carried[];\n}\n\nconst tickets = new WeakMap<object, Ticket>();\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 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 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 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 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\nexport { applyClaim, claim, componentProps, door };\nexport type { Appearance, Claim, Style };\n","import type { Node as RenderNode } from '../node/vnode';\nimport { door } from '../style/claim';\nimport type { Appearance, Style } from '../style/claim';\nimport { appearanceRoot, enterAppearance } from '../style/protocol';\nimport type { Fiber } from './fiber';\nimport { latest } from './hot';\n\nlet rendering: object | undefined;\n\nlet touched = false;\n\nconst observed = new WeakMap<object, Record<string, any>>();\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 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 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\nexport { consume, observe, renderedAppearance };\n","import { Context } from '@expressive/mvc';\n\nimport type { VNode } from '../node/vnode';\nimport { applyClaim, claim } from '../style/claim';\nimport type { Appearance } from '../style/claim';\nimport { inserted } from './commits';\nimport type { Boundary, Fiber } from './fiber';\nimport { complete, unmountFiber } from './mount';\nimport { reconcileChildren } from './reconcile';\nimport { focusing } from './render';\nimport { afterFlush } from './scheduler';\nimport { hostOf } from './suspense';\n\nconst SVG = 'http://www.w3.org/2000/svg';\nconst CONTROLS = ['checked', 'value'];\nconst ENUMERATED = ['contentEditable', 'contenteditable', 'draggable', 'spellcheck'];\nconst ALIASES: Record<string, string> = { autoFocus: 'autofocus', contentEditable: 'contenteditable', htmlFor: 'for' };\nconst controlled = new WeakMap<Element, Fiber>();\nconst restoring = new WeakSet<Document>();\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 const host = hostOf(parent);\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 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\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 unmountElement(fiber: Fiber) {\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\nexport { mountElement, patchProps, unmountElement };\n","import { Context } from '@expressive/mvc';\n\nimport { PORTAL } from '../node/vnode';\nimport type { Node as RenderNode, VNode } from '../node/vnode';\nimport type { Appearance } from '../style/claim';\nimport type { Boundary, Container, Fiber } from './fiber';\nimport { complete } from './mount';\nimport { reconcileChildren } from './reconcile';\n\nfunction mountPortal(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const marker = document.createComment('portal');\n const container = target(value.props.into, parent);\n const portalStart = document.createComment('portal-root');\n const portalEnd = document.createComment('/portal-root');\n\n parent.insertBefore(marker, before);\n container.append(portalStart, portalEnd);\n\n const output: Fiber = {\n kind: 'portal',\n key: value.key,\n type: PORTAL,\n props: value.props,\n context,\n boundary,\n appearance,\n start: marker,\n end: marker,\n children: [],\n portalContainer: container,\n portalStart,\n portalEnd\n };\n\n return complete(output, () => {\n reconcilePortal(output, value.props.children, context, boundary, appearance);\n });\n}\n\nfunction target(into: unknown, parent: globalThis.Node): Container {\n if (typeof into != 'string') return into as Container;\n\n const root = parent.getRootNode();\n const found = [...document.querySelectorAll(into)];\n\n if (root instanceof DocumentFragment) found.push(...root.querySelectorAll(into));\n\n if (found.length != 1)\n throw new Error(`Portal target \"${into}\" ${found.length ? 'is ambiguous' : 'was not found'}.`);\n\n return found[0];\n}\n\nfunction 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 patchPortal(fiber: Fiber, value: VNode, context: Context, appearance?: Appearance) {\n fiber.appearance = appearance;\n fiber.props = value.props;\n reconcilePortal(fiber, value.props.children, context, fiber.boundary, appearance);\n}\n\nfunction unmountPortal(fiber: Fiber) {\n (fiber.portalStart as ChildNode).remove();\n (fiber.portalEnd as ChildNode).remove();\n}\n\nexport { mountPortal, patchPortal, unmountPortal };\n","import { Context, Model } from '@expressive/mvc';\n\nimport { childrenOf, isVNode } from '../node/vnode';\nimport type { Key, Node as RenderNode, VNode } from '../node/vnode';\nimport type { Appearance } from '../style/claim';\nimport { isCollection, patchCollection } from './collection';\nimport { attach } from './commits';\nimport { patchComponent, patchFunction, renderable } from './component';\nimport { patchProps } from './element';\nimport { move } from './fiber';\nimport type { Boundary, Fiber } from './fiber';\nimport { same } from './hot';\nimport { mount, patchFragment, patchText, unmountFiber } from './mount';\nimport { patchPortal } from './portal';\nimport { gather } from './suspense';\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 reconcileChildren(owner: Fiber, parent: globalThis.Node, before: globalThis.Node | null, value: RenderNode, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const values = childrenOf(value);\n const old = owner.children;\n const keyed = new Map<Key, Fiber>();\n const used = new Set<Fiber>();\n const next: Fiber[] = [];\n\n for (const child of old)\n if (child.key !== null && child.key !== undefined) keyed.set(child.key, child);\n\n try {\n for (let index = 0; index < values.length; index++) {\n const value = source(values[index]);\n const key = keyOf(value);\n let child = key !== null && key !== undefined\n ? keyed.get(key)\n : old[index]?.key == null\n ? old[index]\n : undefined;\n\n if (child && used.has(child)) child = undefined;\n if (child) used.add(child);\n\n const fiber = patch(child, value, parent, before, context, boundary, appearance);\n\n if (fiber !== child) used.delete(child!);\n next.push(fiber);\n }\n } catch (error) {\n gather(error, next, old);\n owner.children = [...next, ...old.filter((child) => !child.dead && !next.includes(child))];\n throw error;\n }\n\n for (const child of old)\n if (!used.has(child)) unmountFiber(child);\n\n let anchor = before;\n for (let index = next.length - 1; index >= 0; index--) {\n const child = next[index];\n const root = child.start.getRootNode();\n\n move(child, parent, anchor);\n anchor = child.start;\n if (child.start.getRootNode() !== root) attach(root);\n }\n\n owner.children = next;\n}\n\nfunction patch(old: Fiber | undefined, value: RenderNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance): Fiber {\n if (!old || !compatible(old, value)) return mount(value, parent, old?.start || before, context, boundary, appearance);\n\n if (old.ownBoundary) old.ownBoundary.parent = boundary;\n old.boundary = old.ownBoundary || boundary;\n\n if (old.kind == 'collection') patchCollection(old, appearance);\n else if (old.kind == 'text') patchText(old, value);\n else if (old.kind == 'element') patchProps(old, (value as VNode).props, appearance);\n else if (old.kind == 'fragment') patchFragment(old, value as VNode, context, appearance);\n else if (old.kind == 'function') patchFunction(old, value as VNode, appearance);\n else if (old.kind == 'component') patchComponent(old, value, appearance);\n else patchPortal(old, value as VNode, context, appearance);\n\n return old;\n}\n\nfunction compatible(fiber: Fiber, value: RenderNode) {\n if (fiber.kind == 'text') return ['string', 'number', 'bigint'].includes(typeof value);\n if (renderable(value)) return fiber.kind == 'component' && fiber.instance === value;\n if (isCollection(value))\n return fiber.kind == 'collection' && fiber.source === value;\n if (!isVNode(value)) return false;\n if (fiber.key !== value.key || !same(fiber.type, value.type)) return false;\n if (fiber.kind == 'portal') return fiber.props!.into === value.props.into;\n return true;\n}\n\nfunction source(value: RenderNode): RenderNode {\n if (value instanceof Model) return value.is;\n\n while (isCollection(value) && isCollection(Object.getPrototypeOf(value)))\n value = Object.getPrototypeOf(value);\n\n return value;\n}\n\nfunction keyOf(value: RenderNode): Key {\n if (renderable(value)) return value.key;\n return isVNode(value) ? value.key : undefined;\n}\n\nexport { reconcile, reconcileChildren };\n","import { fragment } from './commits';\nimport { move, moveRange, range } from './fiber';\nimport type { Boundary, Fiber } from './fiber';\nimport { unmountFiber } from './mount';\nimport { reconcile } from './reconcile';\nimport { depth, pass } from './render';\nimport { release, schedule, transition } from './scheduler';\n\nconst dirty = new Set<Boundary>();\nconst stashes = new WeakMap<globalThis.Node, Fiber>();\nlet holding: { thrown: unknown; fiber?: Fiber } | undefined;\nlet settling = false;\n\nfunction park(fiber: Fiber) {\n move(fiber, fragment(), null);\n}\n\nfunction hold(fiber: Fiber, error: unknown) {\n if (!holding || error !== holding.thrown) return false;\n\n park(fiber);\n holding.fiber = fiber;\n return true;\n}\n\nfunction gather(error: unknown, next: Fiber[], old: Fiber[]) {\n if (!holding || error !== holding.thrown) return;\n\n for (const fiber of next) if (!old.includes(fiber)) park(fiber);\n if (holding.fiber) next.push(holding.fiber);\n holding.fiber = undefined;\n}\n\nfunction hostOf(parent: globalThis.Node) {\n let host = parent;\n\n for (let owner = stashes.get(host); owner; owner = stashes.get(host))\n host = owner.end.parentNode!;\n\n return host;\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 suspend(fiber: Fiber, thrown: unknown, passive: boolean, empty: boolean) {\n const boundary = fiber.boundary;\n\n if (isThenable(thrown)) {\n if (!boundary) throw thrown;\n if (passive && empty && depth > 1) {\n if (holding?.thrown !== thrown) holding = { thrown };\n throw thrown;\n }\n\n holding = undefined;\n if (!passive) wait(fiber, boundary);\n\n const scope = fiber.scope!;\n let held = scope.holds;\n\n scope.holds = undefined;\n\n const clear = () => {\n fiber.suspended!.delete(clear);\n release(held);\n held = undefined;\n };\n\n (fiber.suspended ||= new Set()).add(clear);\n\n const resume = (retry: () => void) => {\n fiber.suspended!.delete(clear);\n if (!scope.active) return clear();\n if (held) (scope.holds ||= []).push(...held);\n held = undefined;\n retry();\n };\n\n thrown.then(\n () => resume(() => passive ? transition(() => schedule(scope)) : schedule(scope)),\n (error) => resume(() => pass(() => recover(fiber, error, fiber.boundary)))\n );\n return thrown;\n }\n\n recover(fiber, thrown, fiber.boundary);\n}\n\nfunction recover(fiber: Fiber, thrown: unknown, boundary: Boundary | undefined) {\n const error = thrown instanceof Error ? thrown : new Error(String(thrown));\n\n while (boundary && !boundary.catch) boundary = boundary.parent;\n\n if (!boundary) throw error;\n\n const handler = boundary;\n\n const token = {};\n\n wait(fiber, handler);\n fiber.recovering = token;\n\n Promise.resolve(handler.catch!(error)).then(\n () => {\n if (fiber.recovering !== token) return;\n fiber.recovering = undefined;\n if (!fiber.scope!.active || fiber.retried) return;\n fiber.retried = true;\n schedule(fiber.scope!);\n },\n (next) => {\n if (fiber.recovering === token && fiber.scope!.active) pass(() => recover(fiber, next, handler.parent));\n }\n );\n}\n\nfunction isThenable(value: unknown): value is PromiseLike<unknown> {\n return !!value && typeof (value as PromiseLike<unknown>).then == 'function';\n}\n\nexport { gather, hold, hostOf, isThenable, settle, suspend, unwait };\n","import { Component, Context, Model, unbind } from '@expressive/mvc';\nimport { watch } from '@expressive/mvc/observable';\n\nimport { resolve } from '../node/loader';\nimport { isVNode } from '../node/vnode';\nimport type { Key, Node as RenderNode, VNode } from '../node/vnode';\nimport { componentProps } from '../style/claim';\nimport type { Appearance } from '../style/claim';\nimport { call, commit, enter } from './adapter';\nimport { inserted } from './commits';\nimport { makeScope, range } from './fiber';\nimport type { Boundary, Fiber, Placement, Renderable } from './fiber';\nimport { latest, track, untrack } from './hot';\nimport { complete } from './mount';\nimport { attempt, passiveRender } from './render';\nimport { claim as dequeue, schedule, settle as absorb, transition } from './scheduler';\nimport { consume, observe } from './style';\nimport { isThenable } from './suspense';\n\nfunction mountFunction(value: VNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance) {\n const fiber = range('function', parent, before, context);\n const resolved = componentProps(value.type, value.props, appearance);\n fiber.key = value.key;\n fiber.type = value.type;\n fiber.props = observe(resolved.props);\n fiber.boundary = boundary;\n fiber.appearance = resolved.appearance;\n fiber.scope = makeScope('function', context, (passive) => runFunction(fiber, passive));\n fiber.render = () => enter(fiber.scope!, () => {\n const type = latest(fiber.type as Function);\n return resolve(type, fiber.props!, () => call(type, fiber.props));\n });\n track(fiber.type as Function, fiber.scope);\n probing(fiber);\n\n return complete(fiber, () => {\n runFunction(fiber, passiveRender);\n });\n}\n\nfunction mountOwnedComponent(\n value: VNode,\n parent: globalThis.Node,\n before: globalThis.Node | null,\n context: Context,\n boundary?: Boundary,\n appearance?: Appearance\n) {\n const resolved = componentProps(value.type, value.props, appearance);\n const Type = value.type as new (...args: unknown[]) => Renderable;\n const props = observe(resolved.props);\n const instance: Renderable = new Type(props,\n Type.prototype instanceof Component ? undefined : () => props.is?.(instance)\n );\n\n return mountComponent(instance, parent, before, context, boundary, resolved.appearance, true, value.key, props);\n}\n\nfunction mountComponent(\n instance: Renderable,\n parent: globalThis.Node,\n before: globalThis.Node | null,\n context: Context,\n inherited?: Boundary,\n appearance?: Appearance,\n owned = false,\n key?: Key,\n props = instance.props\n) {\n const fiber = range('component', parent, before, context);\n const childContext = context.push(instance);\n const element = (owned ? props : {}) as Placement;\n const fallback = element.fallback !== undefined ? element.fallback : instance.fallback;\n const ownBoundary: Boundary | undefined = fallback !== undefined && fallback !== false || element.catch || instance.catch\n ? {\n catch: element.catch || instance.catch ? (error) => {\n const handler = owned && (fiber.props as Placement).catch;\n return (handler || instance.catch)!.call(instance, error, instance);\n } : undefined,\n fallback: () => {\n const placed = owned ? (fiber.props as Placement).fallback : undefined;\n return placed !== undefined ? placed : instance.fallback;\n },\n owner: fiber,\n parent: inherited\n }\n : inherited;\n\n fiber.boundary = ownBoundary;\n if (ownBoundary !== inherited) fiber.ownBoundary = ownBoundary;\n fiber.childContext = childContext;\n fiber.instance = instance;\n fiber.key = owned ? key : instance.key;\n fiber.type = instance.constructor;\n fiber.props = props;\n fiber.owned = owned;\n fiber.appearance = appearance;\n fiber.scope = makeScope('component', childContext, (passive) => runComponent(fiber, passive));\n fiber.render = () => enter(fiber.scope!, () => {\n const { render } = fiber.value as Renderable;\n return render ? unbind(render).call(fiber.value, fiber.props) : fiber.props!.children ?? null;\n });\n probing(fiber);\n\n let first = true;\n let proxy = instance;\n fiber.release = watch(instance, (current, events) => {\n const { applied, scope } = fiber;\n\n proxy = current;\n fiber.applied = undefined;\n\n if (!first && scope!.active) {\n if (applied && events.includes('props')) transition(() => schedule(scope!));\n else schedule(scope!);\n }\n\n first = false;\n }, undefined, transition);\n\n Object.defineProperty(fiber, 'value', { get: () => proxy });\n try {\n complete(fiber, () => {\n runComponent(fiber, passiveRender);\n });\n } finally {\n if (owned && !fiber.dead) inserted(fiber, () => (fiber.cleanup = instance.mount?.()));\n }\n\n return fiber;\n}\n\nfunction 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 runComponent(fiber: Fiber, passive: boolean) {\n const result = attempt(fiber, passive, fiber.render!);\n\n if (result !== true) 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 patchFunction(fiber: Fiber, value: VNode, appearance?: Appearance) {\n const resolved = componentProps(value.type, value.props, appearance);\n if (fiber.type !== value.type) {\n untrack(fiber.type as Function, fiber.scope!);\n fiber.type = value.type;\n fiber.scope!.hot = true;\n track(fiber.type as Function, fiber.scope!);\n }\n fiber.appearance = resolved.appearance;\n fiber.props = observe(resolved.props);\n rerun(fiber, () => runFunction(fiber, passiveRender));\n}\n\nfunction patchComponent(fiber: Fiber, value: RenderNode, appearance?: Appearance) {\n const resolved = isVNode(value)\n ? componentProps(value.type, value.props, appearance)\n : { appearance, props: fiber.props! };\n fiber.appearance = resolved.appearance;\n const props = isVNode(value) ? observe(resolved.props) : resolved.props;\n if (isVNode(value) && props !== fiber.props) {\n const instance = fiber.instance!;\n if (passiveRender) fiber.applied = true;\n if (instance instanceof Component) (instance as any).props = props;\n else instance.set(merge(fiber.props!, props) as never);\n }\n fiber.props = props;\n rerun(fiber, () => runComponent(fiber, passiveRender));\n}\n\nfunction rerun(fiber: Fiber, run: () => void) {\n dequeue(fiber.scope!);\n run();\n absorb(fiber.scope!);\n}\n\nfunction unmountComponent(fiber: Fiber) {\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}\n\nfunction renderable(value: unknown): value is Renderable {\n return value instanceof Model && typeof (value as Renderable).render == 'function';\n}\n\nfunction merge(previous: Record<string, any>, next: Record<string, any>) {\n const output: Record<string, any> = {};\n for (const key in previous) output[key] = undefined;\n return { ...output, ...next };\n}\n\nexport { mountComponent, mountFunction, mountOwnedComponent, patchComponent, patchFunction, renderable, unmountComponent };\n","import { Context, Model } from '@expressive/mvc';\nimport { Fragment } from '@expressive/mvc/jsx-runtime';\n\nimport { isVNode, PORTAL } from '../node/vnode';\nimport type { Node as RenderNode, VNode } from '../node/vnode';\nimport type { Appearance } from '../style/claim';\nimport { dispose } from './adapter';\nimport { isCollection, mountCollection } from './collection';\nimport { mountComponent, mountFunction, mountOwnedComponent, renderable, unmountComponent } from './component';\nimport { mountElement, unmountElement } from './element';\nimport { range, removeRange } from './fiber';\nimport type { Boundary, Fiber } from './fiber';\nimport { untrack } from './hot';\nimport { mountPortal, unmountPortal } from './portal';\nimport { reconcile } from './reconcile';\nimport { hold, unwait } from './suspense';\n\nfunction complete<T extends Fiber>(fiber: T, work: () => void): T {\n try {\n work();\n } catch (error) {\n if (!hold(fiber, error)) unmountFiber(fiber);\n\n throw error;\n }\n\n return fiber;\n}\n\nfunction mount(value: RenderNode, parent: globalThis.Node, before: globalThis.Node | null, context: Context, boundary?: Boundary, appearance?: Appearance): Fiber {\n if (typeof value == 'string' || typeof value == 'number' || typeof value == 'bigint') {\n const text = document.createTextNode(String(value));\n parent.insertBefore(text, before);\n return { kind: 'text', value, context, start: text, end: text, children: [] };\n }\n\n if (renderable(value)) return mountComponent(value, parent, before, context, boundary, appearance);\n if (isCollection(value))\n return mountCollection(value, parent, before, context, boundary, appearance);\n\n if (!isVNode(value)) throw new TypeError(`Cannot render ${String(value)}.`);\n\n if (value.type === Fragment) return mountFragment(value, parent, before, context, boundary, appearance);\n if (value.type === PORTAL) return mountPortal(value, parent, before, context, boundary, appearance);\n if (typeof value.type == 'string') return mountElement(value, parent, before, context, boundary, appearance);\n if (typeof value.type != 'function')\n throw new Error(`Cannot render ${String(value.type)}.`);\n\n if (value.type.prototype instanceof Model)\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 patchText(fiber: Fiber, value: RenderNode) {\n const next = String(value);\n if (fiber.start.nodeValue !== next) fiber.start.nodeValue = next;\n fiber.value = value;\n}\n\nfunction patchFragment(fiber: Fiber, value: VNode, context: Context, appearance?: Appearance) {\n fiber.context = context;\n fiber.appearance = appearance;\n reconcile(fiber, value.props.children, context, fiber.boundary, appearance);\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') unmountElement(fiber);\n else if (fiber.kind == 'component') unmountComponent(fiber);\n else if (fiber.kind == 'portal') unmountPortal(fiber);\n\n removeRange(fiber.start, fiber.end);\n}\n\nexport { complete, mount, patchFragment, patchText, unmountFiber };\n","import { Context } from '@expressive/mvc';\n\nimport type { Node as RenderNode } from '../node/vnode';\nimport { appearanceRoot } from '../style/protocol';\nimport { attach, batched, fragment } from './commits';\nimport { range } from './fiber';\nimport type { Container, Fiber } from './fiber';\nimport { unmountFiber } from './mount';\nimport { reconcile } from './reconcile';\nimport { consume, renderedAppearance } from './style';\nimport { settle, suspend, unwait } from './suspense';\n\nconst roots = new WeakMap<Container, () => void>();\nconst focusing: Element[] = [];\nlet passiveRender = false;\nlet depth = 0;\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 pass<T>(work: () => T): T {\n depth++;\n\n try {\n return work();\n } finally {\n if (!--depth) {\n settle();\n focus();\n }\n }\n}\n\nfunction focus() {\n for (const element of focusing.splice(0))\n if (element.isConnected) (element as HTMLElement).focus();\n}\n\nfunction attempt(fiber: Fiber, passive: boolean, render: () => RenderNode): true | PromiseLike<unknown> | void {\n const previous = passiveRender;\n const scope = fiber.scope!;\n const probed = scope.probed;\n const empty = !fiber.children.length;\n\n scope.probed = undefined;\n passiveRender ||= passive;\n\n if (passive && !depth && empty && !fiber.stash)\n fiber.staging ||= fragment();\n\n const run = () => pass(() => {\n try {\n const output = probed ? probed.output as RenderNode : consume(fiber, render);\n reconcile(fiber, output, scope.childContext, fiber.boundary, renderedAppearance(fiber));\n\n if (fiber.staging) {\n fiber.end.parentNode!.insertBefore(fiber.staging, fiber.end);\n attach(fiber.staging);\n fiber.staging = undefined;\n }\n\n if (!fiber.recovering) unwait(fiber);\n fiber.retried = undefined;\n return true;\n } catch (thrown) {\n return suspend(fiber, thrown, passive, empty);\n }\n });\n\n try {\n return passive ? batched(run) : run();\n } finally {\n passiveRender = previous;\n }\n}\n\nexport { attempt, depth, focusing, pass, passiveRender, render };\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { o as VNode } from "./chunk-loader-
|
|
1
|
+
import { o as VNode } from "./chunk-loader-CZ-53pyV.js";
|
|
2
2
|
import { Fragment, JSX } from "@expressive/mvc/jsx-runtime";
|
|
3
3
|
|
|
4
|
-
//#region src/hot.d.ts
|
|
4
|
+
//#region src/render/hot.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Register a module's function components under stable ids. A component seen
|
|
7
7
|
* before takes its new implementation and re-renders where it is mounted.
|
package/dist/jsx-dev-runtime.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as hot } from "./chunk-hot-
|
|
2
|
-
import { s as vnode } from "./chunk-vnode-
|
|
1
|
+
import { t as hot } from "./chunk-hot-9LhRiwFx.js";
|
|
2
|
+
import { s as vnode } from "./chunk-vnode-wpCWQ_Zg.js";
|
|
3
3
|
import { Fragment } from "@expressive/mvc/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/jsx-dev-runtime.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-dev-runtime.js","names":[],"sources":["../src/jsx-dev-runtime.ts"],"sourcesContent":["import { Fragment } from '@expressive/mvc/jsx-runtime';\n\nimport { vnode } from './vnode';\nimport type { VNode } from './vnode';\n\nfunction jsxDEV(\n type: VNode['type'],\n props: object,\n key?: unknown,\n _isStatic?: boolean,\n _source?: object,\n _self?: unknown\n) {\n return vnode(type, props, key);\n}\n\nexport { Fragment, jsxDEV };\nexport { hot } from './hot';\nexport type { JSX } from '@expressive/mvc/jsx-runtime';\n"],"mappings":";;;;;AAKA,SAAS,OACP,MACA,OACA,KACA,WACA,SACA,OACA;AACA,QAAO,MAAM,MAAM,OAAO,IAAI"}
|
|
1
|
+
{"version":3,"file":"jsx-dev-runtime.js","names":[],"sources":["../src/jsx-dev-runtime.ts"],"sourcesContent":["import { Fragment } from '@expressive/mvc/jsx-runtime';\n\nimport { vnode } from './node/vnode';\nimport type { VNode } from './node/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 './render/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
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as vnode, i as Node, n as Module, o as VNode, t as Attributes$1 } from "./chunk-loader-
|
|
2
|
-
import { Component,
|
|
1
|
+
import { c as vnode, i as Node, n as Module, o as VNode, t as Attributes$1 } from "./chunk-loader-CZ-53pyV.js";
|
|
2
|
+
import { Component, Model } from "@expressive/mvc";
|
|
3
3
|
import { Fragment, JSX as JSX$1 } from "@expressive/mvc/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/jsx-runtime.d.ts
|
|
@@ -41,13 +41,13 @@ declare module '@expressive/mvc/jsx-runtime' {
|
|
|
41
41
|
node: Node;
|
|
42
42
|
intrinsics: Intrinsics;
|
|
43
43
|
element: () => PromiseLike<Module>;
|
|
44
|
-
elementClass:
|
|
44
|
+
elementClass: Model;
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
declare module '@expressive/mvc' {
|
|
48
|
-
namespace
|
|
49
|
-
/** JSX attributes of a
|
|
50
|
-
type Props<T extends
|
|
48
|
+
namespace Model {
|
|
49
|
+
/** JSX attributes of a Model with no `props` member: its settable fields, `is`, a boundary, and what `render` accepts. */
|
|
50
|
+
type Props<T extends Model> = Component.ModelProps<T> & {
|
|
51
51
|
is?: (instance: T) => void; /** Shown while this element's content is suspended or recovering. `false` opts out. */
|
|
52
52
|
fallback?: Reserved<T, 'fallback', Component.Node | false>; /** Called when this element's content throws. A returned promise retries once settled. */
|
|
53
53
|
catch?: Reserved<T, 'catch', (error: Error, instance: T) => Promise<void> | void>;
|
|
@@ -72,21 +72,21 @@ declare namespace JSX {
|
|
|
72
72
|
type Element = JSX$1.Element;
|
|
73
73
|
type ElementType = keyof IntrinsicElements | ((props: any) => Component.Node) | (() => PromiseLike<Module>) | (abstract new (...args: any[]) => ElementClass);
|
|
74
74
|
/**
|
|
75
|
-
* Any
|
|
75
|
+
* Any Model renders as a class element - one with `render` produces content,
|
|
76
76
|
* one without passes children through and provides itself.
|
|
77
77
|
*/
|
|
78
|
-
interface ElementClass extends
|
|
78
|
+
interface ElementClass extends Model {
|
|
79
79
|
render?(props?: any): Component.Node;
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
82
|
* Empty, so a class element's attributes resolve from its instance type and
|
|
83
83
|
* {@link LibraryManagedAttributes} picks `props` when declared, else derives
|
|
84
|
-
* them from the
|
|
84
|
+
* them from the Model.
|
|
85
85
|
*/
|
|
86
86
|
interface ElementAttributesProperty {}
|
|
87
87
|
type LibraryManagedAttributes<C, P> = C extends (abstract new (...args: any[]) => infer I) ? P extends {
|
|
88
88
|
props: infer Q;
|
|
89
|
-
} ? Q : I extends
|
|
89
|
+
} ? Q : I extends Model ? Model.Props<I> : P : C extends (() => PromiseLike<Module<infer T>>) ? Attributes$1<T> : P;
|
|
90
90
|
interface ElementChildrenAttribute extends JSX$1.ElementChildrenAttribute {}
|
|
91
91
|
interface IntrinsicAttributes extends JSX$1.IntrinsicAttributes {}
|
|
92
92
|
type IntrinsicElements = JSX$1.IntrinsicElements;
|
package/dist/jsx-runtime.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as childrenOf, o as isVNode, s as vnode } from "./chunk-vnode-
|
|
1
|
+
import { i as childrenOf, o as isVNode, s as vnode } from "./chunk-vnode-wpCWQ_Zg.js";
|
|
2
2
|
import { Fragment, host } from "@expressive/mvc/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/jsx-runtime.ts
|