sinwan 1.1.1 → 1.1.2
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 +34 -3
- package/dist/cjs/index.development.js +296 -192
- package/dist/cjs/index.development.js.map +9 -9
- package/dist/cjs/index.production.min.js +2 -2
- package/dist/cjs/index.production.min.js.map +9 -9
- package/dist/cjs/renderer/index.development.js +239 -87
- package/dist/cjs/renderer/index.development.js.map +8 -8
- package/dist/cjs/renderer/index.production.min.js +2 -2
- package/dist/cjs/renderer/index.production.min.js.map +8 -8
- package/dist/cjs/server/index.development.js +132 -67
- package/dist/cjs/server/index.development.js.map +6 -6
- package/dist/cjs/server/index.production.min.js +2 -2
- package/dist/cjs/server/index.production.min.js.map +6 -6
- package/dist/component/control-flow.d.ts +6 -1
- package/dist/component/control-flow.d.ts.map +1 -1
- package/dist/component/instance.d.ts.map +1 -1
- package/dist/esm/index.development.js +296 -192
- package/dist/esm/index.development.js.map +9 -9
- package/dist/esm/index.production.min.js +2 -2
- package/dist/esm/index.production.min.js.map +9 -9
- package/dist/esm/renderer/index.development.js +239 -87
- package/dist/esm/renderer/index.development.js.map +8 -8
- package/dist/esm/renderer/index.production.min.js +2 -2
- package/dist/esm/renderer/index.production.min.js.map +8 -8
- package/dist/esm/server/index.development.js +132 -67
- package/dist/esm/server/index.development.js.map +6 -6
- package/dist/esm/server/index.production.min.js +2 -2
- package/dist/esm/server/index.production.min.js.map +6 -6
- package/dist/reactivity/index.d.ts +1 -1
- package/dist/reactivity/index.d.ts.map +1 -1
- package/dist/renderer/attributes.d.ts.map +1 -1
- package/dist/renderer/events.d.ts.map +1 -1
- package/dist/renderer/render-control-flow.d.ts.map +1 -1
- package/dist/renderer/render-element.d.ts.map +1 -1
- package/dist/renderer/types.d.ts +2 -0
- package/dist/renderer/types.d.ts.map +1 -1
- package/dist/server/renderer.d.ts.map +1 -1
- package/package.json +5 -2
|
@@ -10,17 +10,17 @@
|
|
|
10
10
|
"/**\n * SinwanJS Reactivity — Computed\n *\n * A computed is a derived reactive value that lazily re-evaluates\n * when its dependencies change. It caches the result and only\n * recomputes when actually read after a dependency has changed.\n *\n * Design: The computed does NOT use the scheduler for its own\n * re-evaluation. When a dependency changes, it marks itself dirty\n * and triggers downstream subscribers (which ARE scheduled).\n * The actual re-evaluation happens lazily on `.value` access.\n *\n * Inspired by Vue 3 computed(), Solid createMemo().\n */\n\nimport { type Dep, track, trigger, ReactiveEffect } from \"./effect.ts\";\n\n// ─── Computed interface ────────────────────────────────────\n\nexport interface Computed<T> {\n /** Read the computed value (lazy evaluation, cached). */\n readonly value: T;\n\n /** Read without tracking. */\n peek(): T;\n}\n\n// Brand for type-checking\nconst COMPUTED_BRAND = Symbol(\"Sinwan:computed\");\n\n// ─── Implementation ────────────────────────────────────────\n\nclass ComputedImpl<T> implements Computed<T>, Dep {\n [COMPUTED_BRAND] = true;\n\n subscribers = new Set<ReactiveEffect>();\n\n _value!: T;\n _dirty = true;\n _effect: ReactiveEffect;\n\n constructor(getter: () => T) {\n const self = this;\n\n // Internal effect solely for dependency tracking.\n // The fn wraps the getter — it writes to self._value as a side effect.\n this._effect = new ReactiveEffect(() => {\n self._value = getter();\n });\n\n // Override notify: don't schedule this effect via the scheduler.\n // Instead mark dirty and propagate to our own subscribers.\n this._effect.notify = function () {\n if (!self._dirty) {\n self._dirty = true;\n trigger(self);\n }\n };\n\n // Run once synchronously to establish deps and cache initial value\n this._effect.run();\n this._dirty = false;\n }\n\n get value(): T {\n track(this);\n\n if (this._dirty) {\n this._effect.run();\n this._dirty = false;\n }\n\n return this._value;\n }\n\n peek(): T {\n if (this._dirty) {\n this._effect.run();\n this._dirty = false;\n }\n return this._value;\n }\n\n /**\n * toString() for template interpolation.\n */\n toString(): string {\n return String(this.value);\n }\n\n /**\n * valueOf() for numeric operations.\n */\n valueOf(): T {\n return this.value;\n }\n}\n\n// ─── Public API ────────────────────────────────────────────\n\n/**\n * Create a computed reactive value.\n *\n * The getter function is tracked — when any signal it reads changes,\n * the computed is marked dirty and will re-evaluate on next `.value` read.\n *\n * @example\n * const count = signal(2);\n * const doubled = computed(() => count.value * 2);\n *\n * console.log(doubled.value); // 4\n *\n * count.value = 5;\n * console.log(doubled.value); // 10\n */\nexport function computed<T>(getter: () => T): Computed<T> {\n return new ComputedImpl(getter);\n}\n\n/**\n * Type guard: check if a value is a Computed.\n */\nexport function isComputed(value: unknown): value is Computed<unknown> {\n return (\n value != null &&\n typeof value === \"object\" &&\n COMPUTED_BRAND in (value as any)\n );\n}\n",
|
|
11
11
|
"/**\n * SinwanJS Reactivity — Batch\n *\n * Batch multiple signal updates into a single synchronous flush.\n * Without batch(), each signal write schedules a microtask flush.\n * With batch(), all writes are collected and effects run once at the end.\n */\n\nimport { flushSync } from \"./scheduler.ts\";\n\nlet batchDepth = 0;\nlet batchScheduled = false;\n\n/**\n * Batch multiple signal writes so effects run only once.\n *\n * @example\n * const a = signal(1);\n * const b = signal(2);\n *\n * // Without batch — effect runs twice (once per signal change)\n * // With batch — effect runs once after both changes\n * batch(() => {\n * a.value = 10;\n * b.value = 20;\n * });\n */\nexport function batch(fn: () => void): void {\n batchDepth++;\n try {\n fn();\n } finally {\n batchDepth--;\n if (batchDepth === 0) {\n // Flush all pending effects synchronously\n flushSync();\n }\n }\n}\n\n/**\n * Returns true if currently inside a batch() call.\n */\nexport function isBatching(): boolean {\n return batchDepth > 0;\n}\n",
|
|
12
12
|
"/**\n * SinwanJS Reactivity — Normalization\n *\n * Provides a unified way to handle different types of reactive inputs:\n * Signals, Computed values, and Function getters.\n */\n\nimport { isSignal, type Signal } from \"./signal.ts\";\nimport { isComputed, type Computed } from \"./computed.ts\";\n\n/**\n * Checks if a value is reactive (Signal, Computed, or Function getter).\n */\nexport function isReactive(value: unknown): value is Signal<any> | Computed<any> | Function {\n return (\n isSignal(value) ||\n isComputed(value) ||\n typeof value === \"function\"\n );\n}\n\n/**\n * Resolves the current value of a potentially reactive input.\n * If the input is a signal, computed, or function, it returns its current value.\n * Otherwise, it returns the input as-is.\n */\nexport function resolve<T>(value: T | Signal<T> | Computed<T> | (() => T)): T {\n if (isSignal(value) || isComputed(value)) {\n return (value as any).value;\n }\n if (typeof value === \"function\") {\n return (value as any)();\n }\n return value as T;\n}\n",
|
|
13
|
-
"/// <reference lib=\"dom\" />\n\n/**\n * SinwanJS Client Renderer — Event Binding\n *\n * Direct event binding (not delegation). Each handler is attached\n * directly to its target element for simplicity and easy hydration.\n *\n * Design decision: direct binding like Solid.js, not delegation like React.\n */\n\nimport { domOps } from \"./dom-ops.ts\";\nimport type { CleanupFn } from \"../reactivity/index.ts\";\n\n/**\n * Check if a prop key is an event handler (starts with \"on\").\n */\nexport function isEventProp(key: string): boolean {\n
|
|
14
|
-
"/**\n * SinwanJS Component Runtime — Instance Management\n *\n * Each component rendered on the client gets a ComponentInstance\n * that tracks its lifecycle hooks, effects, parent/child tree,\n * and provide/inject context.\n *\n * A global `currentInstance` stack lets lifecycle hooks (onMounted, etc.)\n * register themselves during setup or synchronous lifecycle callbacks —\n * same pattern as Vue's getCurrentInstance.\n */\n\nimport type { SinwanComponent } from \"../types.ts\";\nimport type { MountedNode } from \"../renderer/types.ts\";\nimport type { CleanupFn } from \"../reactivity/index.ts\";\nimport { nextTick } from \"../reactivity/scheduler.ts\";\n\n// ─── ComponentInstance ─────────────────────────────────────\n\nlet uidCounter = 0;\n\nexport interface ComponentInstance {\n /** Unique identifier for this instance. */\n uid: number;\n\n /** The component definition (setup function). */\n component: SinwanComponent<any>;\n\n /** Props passed to this component. */\n props: Record<string, any>;\n\n /** The rendered DOM subtree (set after render). */\n element: MountedNode | null;\n\n /** Parent instance in the component tree. */\n parent: ComponentInstance | null;\n\n /** Child component instances. */\n children: ComponentInstance[];\n\n /** All effect dispose functions owned by this component. */\n effects: CleanupFn[];\n\n // ─── Lifecycle hook queues ────────────────────────────\n\n /** Callbacks to fire after the component is mounted to DOM. */\n _mountedHooks: (() => void)[];\n\n /** Callbacks to fire when the component is unmounted. */\n _unmountedHooks: (() => void)[];\n\n /** Callbacks to fire after any reactive update in this component. */\n _updatedHooks: (() => void)[];\n\n /** Error handler callbacks. */\n _errorHooks: ((err: Error) => void)[];\n\n // ─── Provide/Inject context ───────────────────────────\n\n /** Values provided by this instance (for inject in children). */\n provides: Record<string | symbol, unknown>;\n\n // ─── State flags ──────────────────────────────────────\n\n isMounted: boolean;\n isUnmounted: boolean;\n}\n\n/**\n * Create a fresh ComponentInstance.\n */\nexport function createComponentInstance(\n component: SinwanComponent<any>,\n props: Record<string, any>,\n parent: ComponentInstance | null,\n): ComponentInstance {\n return {\n uid: uidCounter++,\n component,\n props,\n element: null,\n parent,\n children: [],\n effects: [],\n _mountedHooks: [],\n _unmountedHooks: [],\n _updatedHooks: [],\n _errorHooks: [],\n // Inherit parent's provides (prototype chain for lookup)\n provides: parent ? Object.create(parent.provides) : Object.create(null),\n isMounted: false,\n isUnmounted: false,\n };\n}\n\n// ─── Current instance stack ────────────────────────────────\n\nlet currentInstance: ComponentInstance | null = null;\n\n/**\n * Get the currently active component instance.\n * Used by lifecycle hooks to register themselves.\n */\nexport function getCurrentInstance(): ComponentInstance | null {\n return currentInstance;\n}\n\n/**\n * Set the current instance (called by renderer before setup).\n * Returns the previous instance for restoration.\n */\nexport function setCurrentInstance(\n instance: ComponentInstance | null,\n): ComponentInstance | null {\n const prev = currentInstance;\n currentInstance = instance;\n return prev;\n}\n\n/**\n * Run a function with `instance` as the current component instance.\n * Automatically restores the previous instance when done.\n */\nexport function withInstance<T>(instance: ComponentInstance, fn: () => T): T {\n const prev = setCurrentInstance(instance);\n try {\n return fn();\n } finally {\n setCurrentInstance(prev);\n }\n}\n\n// ─── Lifecycle execution ───────────────────────────────────\n\n/**\n * Fire all onMounted hooks for an instance and its children (depth-first).\n */\nexport function fireMountedHooks(instance: ComponentInstance): void {\n if (instance.isUnmounted) {\n return;\n }\n\n // Children first
|
|
15
|
-
"/// <reference lib=\"dom\" />\n\n/**\n * SinwanJS Client Renderer — Attribute Handling\n *\n * Maps JSX props to DOM attributes and properties.\n * Handles special cases: className→class, htmlFor→for,\n * style objects, boolean attributes, and reactive attributes.\n */\n\nimport { domOps } from \"./dom-ops.ts\";\nimport { isEventProp } from \"./events.ts\";\nimport { effect, isReactive, resolve } from \"../reactivity/index.ts\";\nimport type { CleanupFn } from \"../reactivity/index.ts\";\nimport {\n getCurrentInstance,\n queueUpdatedHooks,\n} from \"../component/instance.ts\";\n\n// Props that should be skipped during attribute rendering\nconst SKIP_PROPS = new Set([\"children\", \"key\", \"ref\", \"dangerouslySetInnerHTML\"]);\n\n// Props that map to DOM properties rather than attributes\nexport const DOM_PROPERTIES = new Set([\"value\", \"checked\", \"selected\", \"disabled\", \"readOnly\", \"multiple\", \"indeterminate\"]);\n\n// Prop name aliases\nexport const PROP_ALIASES: Record<string, string> = {\n className: \"class\",\n htmlFor: \"for\",\n tabIndex: \"tabindex\",\n crossOrigin: \"crossorigin\",\n};\n\ninterface AttributeBindingState {\n previousStyleProps: Set<string>;\n}\n\n/**\n * Apply all non-event props to a DOM element.\n * Handles static values, reactive signals, and special cases.\n * Returns an array of disposers for reactive attributes.\n */\nexport function applyAttributes(\n el: Element,\n props: Record<string, unknown>,\n): CleanupFn[] {\n const disposers: CleanupFn[] = [];\n const owner = getCurrentInstance();\n\n for (const [key, value] of Object.entries(props)) {\n if (SKIP_PROPS.has(key) || isEventProp(key)) continue;\n\n if (isReactive(value)) {\n // Reactive attribute — wrap in an effect\n const state: AttributeBindingState = { previousStyleProps: new Set() };\n let initialized = false;\n const dispose = effect(() => {\n setSingleAttribute(el, key, resolve(value as any), state);\n if (initialized) {\n queueUpdatedHooks(owner);\n }\n initialized = true;\n });\n disposers.push(dispose);\n } else {\n setSingleAttribute(el, key, value);\n }\n }\n\n return disposers;\n}\n\n/**\n * Set a single attribute/property on a DOM element.\n */\nexport function setSingleAttribute(\n el: Element,\n key: string,\n value: unknown,\n state?: AttributeBindingState,\n): void {\n // Resolve alias\n const attrName = resolveAttributeName(key);\n\n // Handle style objects\n if (attrName === \"style\" && typeof value === \"object\" && value !== null) {\n applyStyle(\n el as HTMLElement,\n value as Record<string, string | number | null | undefined>,\n state,\n );\n return;\n }\n\n // Handle class arrays/objects\n if (attrName === \"class\" && typeof value === \"object\" && value !== null) {\n applyClass(el, value);\n return;\n }\n\n // Handle null/undefined/false — remove attribute\n if (value == null || value === false) {\n domOps.removeAttribute(el, attrName);\n if (attrName === \"style\" && state) {\n state.previousStyleProps.clear();\n }\n // Also clear the property if it's a DOM property\n if (DOM_PROPERTIES.has(attrName)) {\n domOps.setProperty(el, attrName, attrName === \"value\" ? \"\" : false);\n }\n return;\n }\n\n // Handle boolean true — set as attribute name only\n if (value === true) {\n domOps.setAttribute(el, attrName, \"\");\n if (attrName === \"style\" && state) {\n state.previousStyleProps.clear();\n }\n if (DOM_PROPERTIES.has(attrName)) {\n domOps.setProperty(el, attrName, true);\n }\n return;\n }\n\n // DOM properties — set directly on the element\n if (DOM_PROPERTIES.has(attrName)) {\n if (attrName === \"style\" && state) {\n state.previousStyleProps.clear();\n }\n domOps.setProperty(el, attrName, value);\n return;\n }\n\n // Default — set as string attribute\n if (attrName === \"style\" && state) {\n state.previousStyleProps.clear();\n }\n domOps.setAttribute(el, attrName, String(value));\n}\n\nexport function resolveAttributeName(key: string): string {\n return PROP_ALIASES[key] ?? key;\n}\n\n/**\n * Apply a style object to an element.\n */\nfunction applyStyle(\n el: HTMLElement,\n
|
|
16
|
-
"import type { Reactive, SinwanComponent, SinwanElement, SinwanNode } from \"../types.ts\";\nimport { computed } from \"../reactivity/computed.ts\";\nimport { resolve } from \"../reactivity/index.ts\";\n\nexport const SHOW_TYPE = Symbol.for(\"Sinwan.Show\");\nexport const FOR_TYPE = Symbol.for(\"Sinwan.For\");\nexport const SWITCH_TYPE = Symbol.for(\"Sinwan.Switch\");\nexport const MATCH_TYPE = Symbol.for(\"Sinwan.Match\");\nexport const INDEX_TYPE = Symbol.for(\"Sinwan.Index\");\nexport const KEY_TYPE = Symbol.for(\"Sinwan.Key\");\nexport const DYNAMIC_TYPE = Symbol.for(\"Sinwan.Dynamic\");\nexport const PORTAL_TYPE = Symbol.for(\"Sinwan.Portal\");\n\nexport interface ShowProps<T> {\n when: Reactive<T | false | null | undefined>;\n fallback?: SinwanNode;\n children?: SinwanNode | ((value: NonNullable<T>) => SinwanNode);\n}\n\nexport interface ForProps<T> {\n each: Reactive<readonly T[]>;\n key?: (item: T, index: number) => string | number | symbol;\n fallback?: SinwanNode;\n children?: (item: T, index: () => number) => SinwanNode;\n}\n\nexport interface SwitchProps {\n fallback?: SinwanNode;\n children?: SinwanNode | SinwanNode[];\n}\n\nexport interface MatchProps<T> {\n when: Reactive<T | false | null | undefined>;\n children?: SinwanNode | ((value: NonNullable<T>) => SinwanNode);\n}\n\nexport interface IndexProps<T> {\n each: Reactive<readonly T[]>;\n fallback?: SinwanNode;\n children?: (item: () => T, index: number) => SinwanNode;\n}\n\nexport interface KeyProps<T> {\n when: Reactive<T>;\n children?: SinwanNode | ((value: T) => SinwanNode);\n}\n\nexport type DynamicTag<P extends object = any> =\n | string\n | SinwanComponent<P>;\n\nexport type DynamicProps<P extends object = Record<string, unknown>> = P & {\n component: Reactive<DynamicTag<P> | null | undefined>;\n children?: SinwanNode;\n};\n\nexport interface VisibleProps {\n when: Reactive<unknown>;\n as?: string;\n style?: Reactive<Record<string, string | number | null | undefined> | string>;\n children?: SinwanNode;\n [key: string]: unknown;\n}\n\nexport interface PortalProps {\n mount?: Reactive<Node | string | (() => Node | null) | null | undefined>;\n children?: SinwanNode;\n}\n\nexport function Show<T>(props: ShowProps<T>): SinwanElement {\n return {\n tag: SHOW_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function For<T>(props: ForProps<T>): SinwanElement {\n return {\n tag: FOR_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function Switch(props: SwitchProps): SinwanElement {\n return {\n tag: SWITCH_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function Match<T>(props: MatchProps<T>): SinwanElement {\n return {\n tag: MATCH_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function Index<T>(props: IndexProps<T>): SinwanElement {\n return {\n tag: INDEX_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function Key<T>(props: KeyProps<T>): SinwanElement {\n return {\n tag: KEY_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function Dynamic<P extends object = Record<string, unknown>>(\n props: DynamicProps<P>,\n): SinwanElement {\n return {\n tag: DYNAMIC_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function Visible(props: VisibleProps): SinwanElement {\n const {\n when,\n as = \"span\",\n style,\n children,\n ...rest\n } = props;\n\n const visibleStyle = computed(() => {\n const base = readReactive(style);\n const visible = Boolean(readReactive(when));\n\n if (typeof base === \"string\") {\n return visible ? base : appendHiddenDisplay(base);\n }\n\n const styleObject =\n base && typeof base === \"object\"\n ? { ...(base as Record<string, string | number | null | undefined>) }\n : {};\n\n styleObject.display = visible ? styleObject.display : \"none\";\n return styleObject;\n });\n\n return {\n tag: as,\n props: {\n ...rest,\n style: visibleStyle,\n children,\n },\n children: normalizeChildren(children),\n };\n}\n\nexport function Portal(props: PortalProps): SinwanElement {\n return {\n tag: PORTAL_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function isShowElement(element: SinwanElement): boolean {\n return element.tag === SHOW_TYPE;\n}\n\nexport function isForElement(element: SinwanElement): boolean {\n return element.tag === FOR_TYPE;\n}\n\nexport function isSwitchElement(element: SinwanElement): boolean {\n return element.tag === SWITCH_TYPE;\n}\n\nexport function isMatchElement(element: SinwanElement): boolean {\n return element.tag === MATCH_TYPE;\n}\n\nexport function isIndexElement(element: SinwanElement): boolean {\n return element.tag === INDEX_TYPE;\n}\n\nexport function isKeyElement(element: SinwanElement): boolean {\n return element.tag === KEY_TYPE;\n}\n\nexport function isDynamicElement(element: SinwanElement): boolean {\n return element.tag === DYNAMIC_TYPE;\n}\n\nexport function isPortalElement(element: SinwanElement): boolean {\n return element.tag === PORTAL_TYPE;\n}\n\nfunction normalizeChildren(children: SinwanNode | undefined): SinwanNode[] {\n if (children == null || typeof children === \"boolean\") {\n return [];\n }\n return Array.isArray(children) ? children : [children];\n}\n\nfunction readReactive(value: unknown): unknown {\n return resolve(value as any);\n}\n\nfunction appendHiddenDisplay(style: string): string {\n const trimmed = style.trim();\n const separator = trimmed.length > 0 && !trimmed.endsWith(\";\") ? \";\" : \"\";\n return `${trimmed}${separator}display:none`;\n}\n",
|
|
13
|
+
"/// <reference lib=\"dom\" />\n\n/**\n * SinwanJS Client Renderer — Event Binding\n *\n * Direct event binding (not delegation). Each handler is attached\n * directly to its target element for simplicity and easy hydration.\n *\n * Design decision: direct binding like Solid.js, not delegation like React.\n */\n\nimport { domOps } from \"./dom-ops.ts\";\nimport type { CleanupFn } from \"../reactivity/index.ts\";\n\n/**\n * Check if a prop key is an event handler (starts with \"on\").\n */\nexport function isEventProp(key: string): boolean {\n // Matches onClick, onclick, onMouseMove, onmousemove, etc.\n return key.length > 2 && key.startsWith(\"on\");\n}\n\n/**\n * Extract the DOM event name from a prop key.\n * e.g., \"onClick\" → \"click\", \"onMouseEnter\" → \"mouseenter\"\n */\nexport function toEventName(key: string): string {\n return key.slice(2).toLowerCase();\n}\n\n/**\n * Bind an event handler to an element.\n * Returns a cleanup function to remove the listener.\n */\nexport function bindEvent(\n el: Element,\n eventName: string,\n handler: EventListener,\n): CleanupFn {\n domOps.addEventListener(el, eventName, handler);\n return () => {\n domOps.removeEventListener(el, eventName, handler);\n };\n}\n\n/**\n * Bind all event props from an element's props object.\n * Returns an array of cleanup functions.\n */\nexport function bindEvents(\n el: Element,\n props: Record<string, unknown>,\n): CleanupFn[] {\n const cleanups: CleanupFn[] = [];\n\n for (const key of Object.keys(props)) {\n if (isEventProp(key)) {\n const handler = props[key];\n if (typeof handler === \"function\") {\n const eventName = toEventName(key);\n cleanups.push(bindEvent(el, eventName, handler as EventListener));\n }\n }\n }\n\n return cleanups;\n}\n",
|
|
14
|
+
"/**\n * SinwanJS Component Runtime — Instance Management\n *\n * Each component rendered on the client gets a ComponentInstance\n * that tracks its lifecycle hooks, effects, parent/child tree,\n * and provide/inject context.\n *\n * A global `currentInstance` stack lets lifecycle hooks (onMounted, etc.)\n * register themselves during setup or synchronous lifecycle callbacks —\n * same pattern as Vue's getCurrentInstance.\n */\n\nimport type { SinwanComponent } from \"../types.ts\";\nimport type { MountedNode } from \"../renderer/types.ts\";\nimport type { CleanupFn } from \"../reactivity/index.ts\";\nimport { nextTick } from \"../reactivity/scheduler.ts\";\n\n// ─── ComponentInstance ─────────────────────────────────────\n\nlet uidCounter = 0;\n\nexport interface ComponentInstance {\n /** Unique identifier for this instance. */\n uid: number;\n\n /** The component definition (setup function). */\n component: SinwanComponent<any>;\n\n /** Props passed to this component. */\n props: Record<string, any>;\n\n /** The rendered DOM subtree (set after render). */\n element: MountedNode | null;\n\n /** Parent instance in the component tree. */\n parent: ComponentInstance | null;\n\n /** Child component instances. */\n children: ComponentInstance[];\n\n /** All effect dispose functions owned by this component. */\n effects: CleanupFn[];\n\n // ─── Lifecycle hook queues ────────────────────────────\n\n /** Callbacks to fire after the component is mounted to DOM. */\n _mountedHooks: (() => void)[];\n\n /** Callbacks to fire when the component is unmounted. */\n _unmountedHooks: (() => void)[];\n\n /** Callbacks to fire after any reactive update in this component. */\n _updatedHooks: (() => void)[];\n\n /** Error handler callbacks. */\n _errorHooks: ((err: Error) => void)[];\n\n // ─── Provide/Inject context ───────────────────────────\n\n /** Values provided by this instance (for inject in children). */\n provides: Record<string | symbol, unknown>;\n\n // ─── State flags ──────────────────────────────────────\n\n isMounted: boolean;\n isUnmounted: boolean;\n}\n\n/**\n * Create a fresh ComponentInstance.\n */\nexport function createComponentInstance(\n component: SinwanComponent<any>,\n props: Record<string, any>,\n parent: ComponentInstance | null,\n): ComponentInstance {\n return {\n uid: uidCounter++,\n component,\n props,\n element: null,\n parent,\n children: [],\n effects: [],\n _mountedHooks: [],\n _unmountedHooks: [],\n _updatedHooks: [],\n _errorHooks: [],\n // Inherit parent's provides (prototype chain for lookup)\n provides: parent ? Object.create(parent.provides) : Object.create(null),\n isMounted: false,\n isUnmounted: false,\n };\n}\n\n// ─── Current instance stack ────────────────────────────────\n\nlet currentInstance: ComponentInstance | null = null;\n\n/**\n * Get the currently active component instance.\n * Used by lifecycle hooks to register themselves.\n */\nexport function getCurrentInstance(): ComponentInstance | null {\n return currentInstance;\n}\n\n/**\n * Set the current instance (called by renderer before setup).\n * Returns the previous instance for restoration.\n */\nexport function setCurrentInstance(\n instance: ComponentInstance | null,\n): ComponentInstance | null {\n const prev = currentInstance;\n currentInstance = instance;\n return prev;\n}\n\n/**\n * Run a function with `instance` as the current component instance.\n * Automatically restores the previous instance when done.\n */\nexport function withInstance<T>(instance: ComponentInstance, fn: () => T): T {\n const prev = setCurrentInstance(instance);\n try {\n return fn();\n } finally {\n setCurrentInstance(prev);\n }\n}\n\n// ─── Lifecycle execution ───────────────────────────────────\n\n/**\n * Fire all onMounted hooks for an instance and its children (depth-first).\n */\nexport function fireMountedHooks(instance: ComponentInstance): void {\n if (instance.isUnmounted) {\n return;\n }\n\n // Children first\n for (const child of instance.children) {\n fireMountedHooks(child);\n }\n\n if (!instance.isMounted) {\n instance.isMounted = true;\n for (const hook of instance._mountedHooks) {\n hook();\n }\n }\n}\n\n/**\n * Fire all onUnmounted hooks and dispose all effects for an instance\n * and its children (depth-first, children first).\n */\nexport function fireUnmountedHooks(instance: ComponentInstance): void {\n // Children first\n const children = [...instance.children];\n for (const child of children) {\n fireUnmountedHooks(child);\n }\n\n if (!instance.isUnmounted) {\n instance.isUnmounted = true;\n \n // Only fire unmounted hooks if it was ever mounted\n if (instance.isMounted) {\n instance.isMounted = false;\n for (const hook of instance._unmountedHooks) {\n hook();\n }\n }\n\n // ALWAYS dispose effects owned by this component\n for (const dispose of instance.effects) {\n dispose();\n }\n instance.effects.length = 0;\n\n // Remove from parent to prevent memory leaks\n if (instance.parent) {\n const idx = instance.parent.children.indexOf(instance);\n if (idx !== -1) {\n instance.parent.children.splice(idx, 1);\n }\n }\n }\n}\n\n/**\n * Fire onUpdated hooks for the current instance.\n */\nexport function fireUpdatedHooks(instance: ComponentInstance): void {\n for (const hook of instance._updatedHooks) {\n hook();\n }\n}\n\nconst queuedUpdatedHooks = new Set<ComponentInstance>();\n\n/**\n * Queue onUpdated hooks to run after the current reactive flush.\n * Multiple DOM effects in the same flush produce one updated callback.\n */\nexport function queueUpdatedHooks(instance: ComponentInstance | null): void {\n if (\n !instance ||\n !instance.isMounted ||\n instance.isUnmounted ||\n instance._updatedHooks.length === 0 ||\n queuedUpdatedHooks.has(instance)\n ) {\n return;\n }\n\n queuedUpdatedHooks.add(instance);\n nextTick(() => {\n queuedUpdatedHooks.delete(instance);\n if (instance.isMounted && !instance.isUnmounted) {\n fireUpdatedHooks(instance);\n }\n });\n}\n\n/**\n * Handle an error in the component tree — walks up to find an error handler.\n */\nexport function handleComponentError(\n instance: ComponentInstance,\n err: Error,\n): void {\n let current: ComponentInstance | null = instance;\n while (current) {\n if (current._errorHooks.length > 0) {\n for (const hook of current._errorHooks) {\n hook(err);\n }\n return;\n }\n current = current.parent;\n }\n // No handler found — re-throw\n console.error(\"[Sinwan] Unhandled component error:\", err);\n}\n",
|
|
15
|
+
"/// <reference lib=\"dom\" />\n\n/**\n * SinwanJS Client Renderer — Attribute Handling\n *\n * Maps JSX props to DOM attributes and properties.\n * Handles special cases: className→class, htmlFor→for,\n * style objects, boolean attributes, and reactive attributes.\n */\n\nimport { domOps } from \"./dom-ops.ts\";\nimport { isEventProp } from \"./events.ts\";\nimport { effect, isReactive, resolve } from \"../reactivity/index.ts\";\nimport type { CleanupFn } from \"../reactivity/index.ts\";\nimport {\n getCurrentInstance,\n queueUpdatedHooks,\n} from \"../component/instance.ts\";\n\n// Props that should be skipped during attribute rendering\nconst SKIP_PROPS = new Set([\"children\", \"key\", \"ref\", \"dangerouslySetInnerHTML\"]);\n\n// Props that map to DOM properties rather than attributes\nexport const DOM_PROPERTIES = new Set([\"value\", \"checked\", \"selected\", \"disabled\", \"readOnly\", \"multiple\", \"indeterminate\"]);\n\n// Prop name aliases\nexport const PROP_ALIASES: Record<string, string> = {\n className: \"class\",\n htmlFor: \"for\",\n tabIndex: \"tabindex\",\n crossOrigin: \"crossorigin\",\n};\n\ninterface AttributeBindingState {\n previousStyleProps: Set<string>;\n}\n\n/**\n * Apply all non-event props to a DOM element.\n * Handles static values, reactive signals, and special cases.\n * Returns an array of disposers for reactive attributes.\n */\nexport function applyAttributes(\n el: Element,\n props: Record<string, unknown>,\n): CleanupFn[] {\n const disposers: CleanupFn[] = [];\n const owner = getCurrentInstance();\n\n for (const [key, value] of Object.entries(props)) {\n if (SKIP_PROPS.has(key) || isEventProp(key)) continue;\n\n const attrName = resolveAttributeName(key);\n const isComplex = attrName === \"class\" || attrName === \"style\";\n \n if (isReactive(value) || (isComplex && containsReactive(value))) {\n // Reactive attribute — wrap in an effect\n const state: AttributeBindingState = { previousStyleProps: new Set() };\n let initialized = false;\n const dispose = effect(() => {\n setSingleAttribute(el, key, resolve(value as any), state);\n if (initialized) {\n queueUpdatedHooks(owner);\n }\n initialized = true;\n });\n disposers.push(dispose);\n } else {\n setSingleAttribute(el, key, value);\n }\n }\n\n return disposers;\n}\n\n/**\n * Set a single attribute/property on a DOM element.\n */\nexport function setSingleAttribute(\n el: Element,\n key: string,\n value: unknown,\n state?: AttributeBindingState,\n): void {\n // Resolve alias\n const attrName = resolveAttributeName(key);\n\n // Handle style objects\n if (attrName === \"style\" && typeof value === \"object\" && value !== null) {\n applyStyle(\n el as HTMLElement,\n value as Record<string, string | number | null | undefined>,\n state,\n );\n return;\n }\n\n // Handle class arrays/objects\n if (attrName === \"class\" && typeof value === \"object\" && value !== null) {\n applyClass(el, value);\n return;\n }\n\n // Handle null/undefined/false — remove attribute\n if (value == null || value === false) {\n domOps.removeAttribute(el, attrName);\n if (attrName === \"style\" && state) {\n state.previousStyleProps.clear();\n }\n // Also clear the property if it's a DOM property\n if (DOM_PROPERTIES.has(attrName)) {\n domOps.setProperty(el, attrName, attrName === \"value\" ? \"\" : false);\n }\n return;\n }\n\n // Handle boolean true — set as attribute name only\n if (value === true) {\n domOps.setAttribute(el, attrName, \"\");\n if (attrName === \"style\" && state) {\n state.previousStyleProps.clear();\n }\n if (DOM_PROPERTIES.has(attrName)) {\n domOps.setProperty(el, attrName, true);\n }\n return;\n }\n\n // DOM properties — set directly on the element\n if (DOM_PROPERTIES.has(attrName)) {\n if (attrName === \"style\" && state) {\n state.previousStyleProps.clear();\n }\n domOps.setProperty(el, attrName, value);\n return;\n }\n\n // Default — set as string attribute\n if (attrName === \"style\" && state) {\n state.previousStyleProps.clear();\n }\n domOps.setAttribute(el, attrName, String(value));\n}\n\nexport function resolveAttributeName(key: string): string {\n return PROP_ALIASES[key] ?? key;\n}\n\n/**\n * Apply a style object to an element.\n */\n/**\n * Apply a style object to an element.\n */\nfunction applyStyle(\n el: HTMLElement,\n value: unknown,\n state?: AttributeBindingState,\n): void {\n const styleObj = normalizeStyle(value);\n const nextProps = new Set<string>();\n\n for (const [prop, val] of Object.entries(styleObj)) {\n nextProps.add(prop);\n\n if (val == null) {\n removeStyleProperty(el, prop);\n continue;\n }\n\n const kebabProp = prop.startsWith(\"--\") ? prop : camelToKebab(prop);\n el.style.setProperty(kebabProp, String(val));\n }\n\n if (!state) {\n return;\n }\n\n for (const previousProp of state.previousStyleProps) {\n if (!nextProps.has(previousProp)) {\n removeStyleProperty(el, previousProp);\n }\n }\n\n state.previousStyleProps = nextProps;\n}\n\nfunction normalizeStyle(\n value: unknown,\n): Record<string, string | number | null | undefined> {\n const resolved = resolve(value);\n if (!resolved) return {};\n\n if (typeof resolved === \"string\") {\n return parseStyleString(resolved);\n }\n\n if (Array.isArray(resolved)) {\n return resolved.reduce((acc, item) => {\n const normalized = normalizeStyle(item);\n return Object.assign(acc, normalized);\n }, {} as Record<string, any>);\n }\n\n if (typeof resolved === \"object\") {\n const result: Record<string, any> = {};\n for (const [k, v] of Object.entries(resolved)) {\n result[k] = resolve(v);\n }\n return result;\n }\n\n return {};\n}\n\nfunction parseStyleString(style: string): Record<string, string> {\n const result: Record<string, string> = {};\n style.split(\";\").forEach((rule) => {\n const i = rule.indexOf(\":\");\n if (i > 0) {\n const prop = rule.slice(0, i).trim();\n const val = rule.slice(i + 1).trim();\n if (prop && val) {\n result[prop] = val;\n }\n }\n });\n return result;\n}\n\nfunction removeStyleProperty(el: HTMLElement, prop: string): void {\n const kebabProp = prop.startsWith(\"--\") ? prop : camelToKebab(prop);\n el.style.removeProperty(kebabProp);\n}\n\n/**\n * Apply class value — supports string, array, or object notation.\n * Recursively resolves reactive values.\n */\nfunction applyClass(el: Element, value: unknown): void {\n domOps.setAttribute(el, \"class\", normalizeClass(value));\n}\n\nfunction normalizeClass(value: unknown): string {\n const resolved = resolve(value);\n if (!resolved) return \"\";\n if (typeof resolved === \"string\") return resolved;\n\n if (Array.isArray(resolved)) {\n // [\"foo\", \"bar\", false && \"baz\", signal] → \"foo bar val\"\n return resolved\n .map(normalizeClass)\n .filter(Boolean)\n .join(\" \");\n }\n\n if (typeof resolved === \"object\") {\n // { foo: true, bar: false, baz: signal } → \"foo baz\"\n return Object.entries(resolved)\n .filter(([, v]) => Boolean(resolve(v)))\n .map(([k]) => k)\n .join(\" \");\n }\n\n return String(resolved);\n}\n\n/**\n * Recursively check if a value contains any reactive element.\n */\nfunction containsReactive(value: unknown): boolean {\n if (isReactive(value)) return true;\n if (Array.isArray(value)) return value.some(containsReactive);\n if (typeof value === \"object\" && value !== null) {\n // For style objects/class objects, we only check one level deep for performance\n // but recursive is safer for nested class arrays.\n return Object.values(value).some(containsReactive);\n }\n return false;\n}\n\n/**\n * Convert camelCase to kebab-case.\n */\nfunction camelToKebab(str: string): string {\n return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n}\n",
|
|
16
|
+
"import type { Reactive, SinwanComponent, SinwanElement, SinwanNode } from \"../types.ts\";\nimport { computed } from \"../reactivity/computed.ts\";\nimport { resolve } from \"../reactivity/index.ts\";\n\nexport const SHOW_TYPE = Symbol.for(\"Sinwan.Show\");\nexport const FOR_TYPE = Symbol.for(\"Sinwan.For\");\nexport const SWITCH_TYPE = Symbol.for(\"Sinwan.Switch\");\nexport const MATCH_TYPE = Symbol.for(\"Sinwan.Match\");\nexport const INDEX_TYPE = Symbol.for(\"Sinwan.Index\");\nexport const KEY_TYPE = Symbol.for(\"Sinwan.Key\");\nexport const DYNAMIC_TYPE = Symbol.for(\"Sinwan.Dynamic\");\nexport const PORTAL_TYPE = Symbol.for(\"Sinwan.Portal\");\n\nexport interface ShowProps<T> {\n when: Reactive<T | false | null | undefined>;\n fallback?: SinwanNode;\n children?: SinwanNode | ((value: NonNullable<T>) => SinwanNode);\n}\n\nexport interface ForProps<T> {\n each: Reactive<readonly T[]>;\n key?: (item: T, index: number) => string | number | symbol;\n fallback?: SinwanNode;\n children?: (item: T, index: () => number) => SinwanNode;\n}\n\nexport interface SwitchProps {\n fallback?: SinwanNode;\n children?: SinwanNode | SinwanNode[];\n}\n\nexport interface MatchProps<T> {\n when: Reactive<T | false | null | undefined>;\n children?: SinwanNode | ((value: NonNullable<T>) => SinwanNode);\n}\n\nexport interface IndexProps<T> {\n each: Reactive<readonly T[]>;\n fallback?: SinwanNode;\n children?: (item: () => T, index: number) => SinwanNode;\n}\n\nexport interface KeyProps<T> {\n when: Reactive<T>;\n children?: SinwanNode | ((value: T) => SinwanNode);\n}\n\nexport type DynamicTag<P extends object = any> =\n | string\n | SinwanComponent<P>;\n\nexport type DynamicProps<P extends object = Record<string, unknown>> = P & {\n component: Reactive<DynamicTag<P> | null | undefined>;\n children?: SinwanNode;\n};\n\nexport interface VisibleProps {\n when: Reactive<unknown>;\n as?: string;\n style?: Reactive<\n Record<string, string | number | null | undefined> | string | null | undefined\n >;\n children?: SinwanNode;\n [key: string]: unknown;\n}\n\nexport interface PortalProps {\n mount?: Reactive<Node | string | (() => Node | null) | null | undefined>;\n children?: SinwanNode;\n}\n\nexport function Show<T>(props: ShowProps<T>): SinwanElement {\n return {\n tag: SHOW_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function For<T>(props: ForProps<T>): SinwanElement {\n return {\n tag: FOR_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function Switch(props: SwitchProps): SinwanElement {\n return {\n tag: SWITCH_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function Match<T>(props: MatchProps<T>): SinwanElement {\n return {\n tag: MATCH_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function Index<T>(props: IndexProps<T>): SinwanElement {\n return {\n tag: INDEX_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function Key<T>(props: KeyProps<T>): SinwanElement {\n return {\n tag: KEY_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function Dynamic<P extends object = Record<string, unknown>>(\n props: DynamicProps<P>,\n): SinwanElement {\n return {\n tag: DYNAMIC_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function Visible(props: VisibleProps): SinwanElement {\n const {\n when,\n as = \"span\",\n style,\n children,\n ...rest\n } = props;\n\n const visibleStyle = computed(() => {\n const base = readReactive(style);\n const visible = Boolean(readReactive(when));\n\n if (typeof base === \"string\") {\n return visible ? base : appendHiddenDisplay(base);\n }\n\n const styleObject =\n base && typeof base === \"object\"\n ? { ...(base as Record<string, string | number | null | undefined>) }\n : {};\n\n styleObject.display = visible ? styleObject.display : \"none\";\n return styleObject;\n });\n\n return {\n tag: as,\n props: {\n ...rest,\n style: visibleStyle,\n children,\n },\n children: normalizeChildren(children),\n };\n}\n\nexport function Portal(props: PortalProps): SinwanElement {\n return {\n tag: PORTAL_TYPE,\n props: props as unknown as Record<string, unknown>,\n children: [],\n };\n}\n\nexport function isElementLike(value: unknown): value is SinwanElement {\n return value != null && typeof value === \"object\" && \"tag\" in value;\n}\n\nexport function isShowElement(element: SinwanElement): boolean {\n return element.tag === SHOW_TYPE;\n}\n\nexport function isForElement(element: SinwanElement): boolean {\n return element.tag === FOR_TYPE;\n}\n\nexport function isSwitchElement(element: SinwanElement): boolean {\n return element.tag === SWITCH_TYPE;\n}\n\nexport function isMatchElement(element: SinwanElement): boolean {\n return element.tag === MATCH_TYPE;\n}\n\nexport function isIndexElement(element: SinwanElement): boolean {\n return element.tag === INDEX_TYPE;\n}\n\nexport function isKeyElement(element: SinwanElement): boolean {\n return element.tag === KEY_TYPE;\n}\n\nexport function isDynamicElement(element: SinwanElement): boolean {\n return element.tag === DYNAMIC_TYPE;\n}\n\nexport function isPortalElement(element: SinwanElement): boolean {\n return element.tag === PORTAL_TYPE;\n}\n\nexport function resolveSwitchContent(element: SinwanElement): SinwanNode {\n const props = element.props as { fallback?: SinwanNode; children?: SinwanNode };\n const children = normalizeContent(props.children ?? element.children);\n\n const match = findTruthyMatch(children);\n return match !== undefined ? match : props.fallback;\n}\n\nfunction findTruthyMatch(nodes: SinwanNode[]): SinwanNode | undefined {\n for (const node of nodes) {\n if (node == null || typeof node === \"boolean\") continue;\n\n if (Array.isArray(node)) {\n const match = findTruthyMatch(node);\n if (match !== undefined) return match;\n continue;\n }\n\n if (isElementLike(node)) {\n let element = node;\n\n // Expand functional control flow components if needed\n if (typeof element.tag === \"function\") {\n const tag = element.tag;\n if (\n tag === Match ||\n tag === Show ||\n tag === For ||\n tag === Index ||\n tag === Key ||\n tag === Switch\n ) {\n element = (tag as Function)(element.props);\n }\n }\n\n if (isMatchElement(element)) {\n const when = readReactive((element.props as any).when);\n if (when) {\n return resolveMatchChildren(element, when);\n }\n } else if (isShowElement(element)) {\n const when = readReactive((element.props as any).when);\n if (when) {\n const content = resolveShowChildren(element, when);\n const match = findTruthyMatch(normalizeContent(content));\n if (match !== undefined) return match;\n } else if ((element.props as any).fallback) {\n const match = findTruthyMatch(\n normalizeContent((element.props as any).fallback),\n );\n if (match !== undefined) return match;\n }\n } else if (isForElement(element)) {\n const props = element.props as any;\n const items = readReactive(props.each);\n if (Array.isArray(items)) {\n for (let i = 0; i < items.length; i++) {\n const child = props.children(items[i], () => i);\n const match = findTruthyMatch(normalizeContent(child));\n if (match !== undefined) return match;\n }\n }\n } else if (isIndexElement(element)) {\n const props = element.props as any;\n const items = readReactive(props.each);\n if (Array.isArray(items)) {\n for (let i = 0; i < items.length; i++) {\n const child = props.children(() => items[i], i);\n const match = findTruthyMatch(normalizeContent(child));\n if (match !== undefined) return match;\n }\n }\n } else if (isKeyElement(element)) {\n const key = readReactive((element.props as any).when);\n const child = resolveKeyChildren(element, key);\n const match = findTruthyMatch(normalizeContent(child));\n if (match !== undefined) return match;\n }\n }\n }\n return undefined;\n}\n\nexport function resolveMatchChildren(\n element: SinwanElement,\n value: unknown,\n): SinwanNode {\n const children = (element.props as any).children ?? element.children;\n if (typeof children === \"function\") {\n return children(value);\n }\n return children as SinwanNode;\n}\n\nexport function resolveShowChildren(\n element: SinwanElement,\n value: unknown,\n): SinwanNode {\n const children = (element.props as any).children ?? element.children;\n if (typeof children === \"function\") {\n return children(value);\n }\n return children as SinwanNode;\n}\n\nexport function resolveKeyChildren(\n element: SinwanElement,\n value: unknown,\n): SinwanNode {\n const children = (element.props as any).children ?? element.children;\n if (typeof children === \"function\") {\n return children(value);\n }\n return children as SinwanNode;\n}\n\nfunction normalizeContent(content: unknown): SinwanNode[] {\n if (content == null || typeof content === \"boolean\") {\n return [];\n }\n return Array.isArray(content) ? content : [content as SinwanNode];\n}\n\nfunction normalizeChildren(children: SinwanNode | undefined): SinwanNode[] {\n if (children == null || typeof children === \"boolean\") {\n return [];\n }\n return Array.isArray(children) ? children : [children];\n}\n\nfunction readReactive(value: unknown): unknown {\n return resolve(value as any);\n}\n\nfunction appendHiddenDisplay(style: string): string {\n const trimmed = style.trim();\n const separator = trimmed.length > 0 && !trimmed.endsWith(\";\") ? \";\" : \"\";\n return `${trimmed}${separator}display:none`;\n}\n",
|
|
17
17
|
"/// <reference lib=\"dom\" />\n\n/**\n * SinwanJS Client Renderer — Unmount helpers\n *\n * Shared cleanup and DOM removal utilities used by mount(), reactive blocks,\n * and future renderer entrypoints.\n */\n\nimport type { MountedNode } from \"./types.ts\";\nimport { domOps } from \"./dom-ops.ts\";\nimport { fireUnmountedHooks } from \"../component/instance.ts\";\n\n/**\n * Return the actual DOM nodes owned by a mounted tree, in document order.\n */\nexport function getMountedDomNodes(node: MountedNode): Node[] {\n switch (node.type) {\n case \"text\":\n case \"reactive-text\":\n return [node.node];\n\n case \"element\":\n return [node.node];\n\n case \"fragment\":\n return [\n node.anchor,\n ...node.children.flatMap((child) => getMountedDomNodes(child)),\n ];\n\n case \"reactive-block\":\n return [\n node.startAnchor,\n ...node.children.flatMap((child) => getMountedDomNodes(child)),\n node.endAnchor,\n ];\n\n case \"component\":\n return node.children.flatMap((child) => getMountedDomNodes(child));\n\n case \"portal\":\n return [node.anchor];\n }\n}\n\n/**\n * Recursively unmount a node tree — disposes effects, removes events and refs.\n */\nexport function unmountNode(node: MountedNode): void {\n switch (node.type) {\n case \"text\":\n break;\n\n case \"reactive-text\":\n node.dispose();\n break;\n\n case \"element\":\n for (const dispose of node.attrDisposers) {\n dispose();\n }\n for (const cleanup of node.eventCleanups) {\n cleanup();\n }\n node.refCleanup?.();\n for (const child of node.children) {\n unmountNode(child);\n }\n break;\n\n case \"fragment\":\n for (const child of node.children) {\n unmountNode(child);\n }\n break;\n\n case \"reactive-block\":\n node.dispose();\n for (const child of node.children) {\n unmountNode(child);\n }\n break;\n\n case \"component\":\n if (node.instance) {\n fireUnmountedHooks(node.instance);\n } else {\n for (const dispose of node.disposers) {\n dispose();\n }\n }\n for (const child of node.children) {\n unmountNode(child);\n }\n break;\n\n case \"portal\":\n node.dispose();\n for (const child of node.children) {\n removeMountedNode(child);\n }\n node.children = [];\n break;\n }\n}\n\n/**\n * Unmount a mounted tree and remove every DOM node it owns.\n */\nexport function removeMountedNode(node: MountedNode): void {\n const domNodes = getMountedDomNodes(node);\n unmountNode(node);\n for (const domNode of domNodes) {\n if (domNode.parentNode) {\n domOps.remove(domNode);\n }\n }\n}\n",
|
|
18
|
-
"/// <reference lib=\"dom\" />\n\n/**\n * SinwanJS Client Renderer — Reactive control-flow blocks\n *\n * `<Show>` and `<For>` render between stable comment anchors. Updates remove,\n * move, or insert only the block-owned DOM nodes.\n */\n\nimport type { SinwanElement, SinwanNode } from \"../types.ts\";\nimport type { MountedNode, MountedPortal, MountedReactiveBlock } from \"./types.ts\";\nimport { domOps } from \"./dom-ops.ts\";\nimport { effect, resolve, signal, type Signal } from \"../reactivity/index.ts\";\nimport {\n getCurrentInstance,\n fireMountedHooks,\n queueUpdatedHooks,\n withInstance,\n type ComponentInstance,\n} from \"../component/instance.ts\";\nimport {\n isDynamicElement,\n isForElement,\n isIndexElement,\n isKeyElement,\n isMatchElement,\n isPortalElement,\n isShowElement,\n isSwitchElement,\n Match,\n} from \"../component/control-flow.ts\";\nimport {\n getMountedDomNodes,\n removeMountedNode,\n} from \"./unmount.ts\";\nimport { renderNodeToDOM } from \"./render-children.ts\";\n\ninterface ForRecord<T> {\n key: unknown;\n item: T;\n index: number;\n mounted: MountedNode;\n}\n\ninterface IndexRecord<T> {\n item: Signal<T>;\n mounted: MountedNode;\n}\n\n/**\n * Render a built-in reactive helper element.\n */\nexport function renderControlFlowToDOM(\n element: SinwanElement,\n parent: Node,\n anchor: Node | null,\n namespace: string | null,\n): MountedNode {\n if (isPortalElement(element)) {\n return renderPortal(element, parent, anchor, namespace);\n }\n\n const startAnchor = domOps.createComment(\"Sinwan-b\");\n const endAnchor = domOps.createComment(\"/Sinwan-b\");\n insertNode(parent, startAnchor, anchor);\n insertNode(parent, endAnchor, anchor);\n\n const owner = getCurrentInstance();\n let disposeEffect = () => {};\n\n const block: MountedReactiveBlock = {\n type: \"reactive-block\",\n dispose: () => disposeEffect(),\n children: [],\n startAnchor,\n endAnchor,\n };\n\n if (isShowElement(element)) {\n disposeEffect = renderShowBlock(element, block, parent, namespace, owner);\n } else if (isForElement(element)) {\n disposeEffect = renderForBlock(element, block, parent, namespace, owner);\n } else if (isSwitchElement(element)) {\n disposeEffect = renderSwitchBlock(element, block, parent, namespace, owner);\n } else if (isIndexElement(element)) {\n disposeEffect = renderIndexBlock(element, block, parent, namespace, owner);\n } else if (isKeyElement(element)) {\n disposeEffect = renderKeyBlock(element, block, parent, namespace, owner);\n } else if (isDynamicElement(element)) {\n disposeEffect = renderDynamicBlock(element, block, parent, namespace, owner);\n }\n\n return block;\n}\n\nfunction renderShowBlock(\n element: SinwanElement,\n block: MountedReactiveBlock,\n parent: Node,\n namespace: string | null,\n owner: ComponentInstance | null,\n): () => void {\n let initialized = false;\n\n return effect(() => {\n clearChildren(block);\n\n const when = readReactive((element.props as any).when);\n const content = withOptionalInstance(owner, () =>\n when ? resolveShowChildren(element, when) : (element.props as any).fallback,\n );\n\n block.children = renderBlockContent(\n content,\n parent,\n block.endAnchor,\n namespace,\n owner,\n );\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n}\n\nfunction renderForBlock<T>(\n element: SinwanElement,\n block: MountedReactiveBlock,\n parent: Node,\n namespace: string | null,\n owner: ComponentInstance | null,\n): () => void {\n let initialized = false;\n let records: ForRecord<T>[] = [];\n\n return effect(() => {\n const props = element.props as {\n each?: unknown;\n key?: (item: T, index: number) => string | number | symbol;\n fallback?: SinwanNode;\n children?: (item: T, index: () => number) => SinwanNode;\n };\n const items = readReactive(props.each) as readonly T[] | null | undefined;\n const list = Array.isArray(items) ? items : [];\n const renderChild = props.children;\n\n if (typeof renderChild !== \"function\") {\n clearChildren(block);\n records = [];\n if (initialized) {\n queueUpdatedHooks(owner);\n }\n initialized = true;\n return;\n }\n\n if (list.length === 0) {\n clearChildren(block);\n records = [];\n block.children = renderBlockContent(\n props.fallback,\n parent,\n block.endAnchor,\n namespace,\n owner,\n );\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n return;\n }\n\n if (records.length === 0 && block.children.length > 0) {\n clearChildren(block);\n }\n\n const oldByKey = new Map<unknown, ForRecord<T>>();\n for (const record of records) {\n oldByKey.set(record.key, record);\n }\n\n const nextRecords: ForRecord<T>[] = [];\n\n list.forEach((item, index) => {\n const key = props.key ? props.key(item, index) : item;\n const old = oldByKey.get(key);\n\n if (old && old.item === item) {\n old.index = index;\n moveBeforeEnd(parent, old.mounted, block.endAnchor);\n nextRecords.push(old);\n oldByKey.delete(key);\n return;\n }\n\n if (old) {\n removeMountedNode(old.mounted);\n oldByKey.delete(key);\n }\n\n const record: ForRecord<T> = {\n key,\n item,\n index,\n mounted: { type: \"text\", node: domOps.createTextNode(\"\") },\n };\n\n record.mounted = withOptionalInstance(owner, () =>\n renderNodeToDOM(\n renderChild(item, () => record.index),\n parent,\n block.endAnchor,\n namespace,\n ),\n );\n nextRecords.push(record);\n });\n\n for (const record of oldByKey.values()) {\n removeMountedNode(record.mounted);\n }\n\n records = nextRecords;\n block.children = nextRecords.map((record) => record.mounted);\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n}\n\nfunction renderSwitchBlock(\n element: SinwanElement,\n block: MountedReactiveBlock,\n parent: Node,\n namespace: string | null,\n owner: ComponentInstance | null,\n): () => void {\n let initialized = false;\n\n return effect(() => {\n clearChildren(block);\n\n const content = withOptionalInstance(owner, () => resolveSwitchContent(element));\n block.children = renderBlockContent(\n content,\n parent,\n block.endAnchor,\n namespace,\n owner,\n );\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n}\n\nfunction renderIndexBlock<T>(\n element: SinwanElement,\n block: MountedReactiveBlock,\n parent: Node,\n namespace: string | null,\n owner: ComponentInstance | null,\n): () => void {\n let initialized = false;\n let records: IndexRecord<T>[] = [];\n\n return effect(() => {\n const props = element.props as {\n each?: unknown;\n fallback?: SinwanNode;\n children?: (item: () => T, index: number) => SinwanNode;\n };\n const items = readReactive(props.each) as readonly T[] | null | undefined;\n const list = Array.isArray(items) ? items : [];\n const renderChild = props.children;\n\n if (typeof renderChild !== \"function\") {\n clearChildren(block);\n records = [];\n if (initialized) {\n queueUpdatedHooks(owner);\n }\n initialized = true;\n return;\n }\n\n if (list.length === 0) {\n clearChildren(block);\n records = [];\n block.children = renderBlockContent(\n props.fallback,\n parent,\n block.endAnchor,\n namespace,\n owner,\n );\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n return;\n }\n\n if (records.length === 0 && block.children.length > 0) {\n clearChildren(block);\n }\n\n for (let index = 0; index < list.length; index++) {\n const existing = records[index];\n if (existing) {\n existing.item.value = list[index]!;\n continue;\n }\n\n const itemSignal = signal(list[index]!);\n const record: IndexRecord<T> = {\n item: itemSignal,\n mounted: withOptionalInstance(owner, () =>\n renderNodeToDOM(\n renderChild(() => itemSignal.value, index),\n parent,\n block.endAnchor,\n namespace,\n ),\n ),\n };\n records.push(record);\n }\n\n while (records.length > list.length) {\n const removed = records.pop()!;\n removeMountedNode(removed.mounted);\n }\n\n block.children = records.map((record) => record.mounted);\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n}\n\nfunction renderKeyBlock(\n element: SinwanElement,\n block: MountedReactiveBlock,\n parent: Node,\n namespace: string | null,\n owner: ComponentInstance | null,\n): () => void {\n let initialized = false;\n let hasKey = false;\n let currentKey: unknown;\n\n return effect(() => {\n const key = readReactive((element.props as any).when);\n if (hasKey && Object.is(currentKey, key)) {\n return;\n }\n\n currentKey = key;\n hasKey = true;\n clearChildren(block);\n\n const content = withOptionalInstance(owner, () =>\n resolveKeyChildren(element, key),\n );\n block.children = renderBlockContent(\n content,\n parent,\n block.endAnchor,\n namespace,\n owner,\n );\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n}\n\nfunction renderDynamicBlock(\n element: SinwanElement,\n block: MountedReactiveBlock,\n parent: Node,\n namespace: string | null,\n owner: ComponentInstance | null,\n): () => void {\n let initialized = false;\n let hasTag = false;\n let currentTag: unknown;\n\n return effect(() => {\n const tag = readReactive((element.props as any).component);\n if (hasTag && Object.is(currentTag, tag)) {\n return;\n }\n\n currentTag = tag;\n hasTag = true;\n clearChildren(block);\n\n const content = tag ? createDynamicElement(element, tag) : null;\n block.children = renderBlockContent(\n content,\n parent,\n block.endAnchor,\n namespace,\n owner,\n );\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n}\n\nfunction renderPortal(\n element: SinwanElement,\n parent: Node,\n anchor: Node | null,\n namespace: string | null,\n): MountedPortal {\n const placeholder = domOps.createComment(\"Sinwan-p\");\n insertNode(parent, placeholder, anchor);\n\n const owner = getCurrentInstance();\n let disposeEffect = () => {};\n const portal: MountedPortal = {\n type: \"portal\",\n anchor: placeholder,\n children: [],\n dispose: () => disposeEffect(),\n };\n let initialized = false;\n\n disposeEffect = effect(() => {\n clearPortalChildren(portal);\n\n const target = resolvePortalTarget((element.props as any).mount);\n if (target) {\n portal.children = renderBlockContent(\n (element.props as any).children ?? element.children,\n target,\n null,\n namespace,\n owner,\n );\n }\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n\n return portal;\n}\n\nfunction resolveShowChildren(element: SinwanElement, value: unknown): SinwanNode {\n const children = (element.props as any).children ?? element.children;\n if (typeof children === \"function\") {\n return children(value);\n }\n return children as SinwanNode;\n}\n\nfunction resolveSwitchContent(element: SinwanElement): SinwanNode {\n const props = element.props as { fallback?: SinwanNode; children?: SinwanNode };\n const children = normalizeContent(props.children ?? element.children);\n\n for (const child of children) {\n const match = getMatchElement(child);\n if (!match) {\n continue;\n }\n\n const when = readReactive((match.props as any).when);\n if (when) {\n return resolveMatchChildren(match, when);\n }\n }\n\n return props.fallback;\n}\n\nfunction resolveMatchChildren(element: SinwanElement, value: unknown): SinwanNode {\n const children = (element.props as any).children ?? element.children;\n if (typeof children === \"function\") {\n return children(value);\n }\n return children as SinwanNode;\n}\n\nfunction resolveKeyChildren(element: SinwanElement, value: unknown): SinwanNode {\n const children = (element.props as any).children ?? element.children;\n if (typeof children === \"function\") {\n return children(value);\n }\n return children as SinwanNode;\n}\n\nfunction createDynamicElement(element: SinwanElement, tag: unknown): SinwanElement | null {\n if (typeof tag !== \"string\" && typeof tag !== \"function\") {\n return null;\n }\n\n const { component, ...props } = element.props as Record<string, unknown>;\n const children = normalizeContent(props.children ?? element.children);\n\n return {\n tag: tag as SinwanElement[\"tag\"],\n props,\n children,\n };\n}\n\nfunction renderBlockContent(\n content: unknown,\n parent: Node,\n anchor: Node | null,\n namespace: string | null,\n owner: ComponentInstance | null,\n): MountedNode[] {\n if (content == null || typeof content === \"boolean\") {\n return [];\n }\n\n const nodes = Array.isArray(content) ? content : [content];\n return nodes.map((node) =>\n withOptionalInstance(owner, () =>\n renderNodeToDOM(node as SinwanNode, parent, anchor, namespace),\n ),\n );\n}\n\nfunction clearChildren(block: MountedReactiveBlock): void {\n for (const child of block.children) {\n removeMountedNode(child);\n }\n block.children = [];\n}\n\nfunction clearPortalChildren(portal: MountedPortal): void {\n for (const child of portal.children) {\n removeMountedNode(child);\n }\n portal.children = [];\n}\n\nfunction moveBeforeEnd(parent: Node, mounted: MountedNode, endAnchor: Node): void {\n for (const node of getMountedDomNodes(mounted)) {\n domOps.insertBefore(parent, node, endAnchor);\n }\n}\n\nfunction fireMountedAndQueueUpdated(owner: ComponentInstance | null): void {\n if (owner) {\n fireMountedHooks(owner);\n }\n queueUpdatedHooks(owner);\n}\n\nfunction withOptionalInstance<T>(\n owner: ComponentInstance | null,\n fn: () => T,\n): T {\n return owner ? withInstance(owner, fn) : fn();\n}\n\nfunction readReactive(value: unknown): unknown {\n return resolve(value as any);\n}\n\nfunction normalizeContent(content: unknown): SinwanNode[] {\n if (content == null || typeof content === \"boolean\") {\n return [];\n }\n return Array.isArray(content) ? content : [content as SinwanNode];\n}\n\nfunction isElementLike(value: unknown): value is SinwanElement {\n return value != null && typeof value === \"object\" && \"tag\" in value;\n}\n\nfunction getMatchElement(value: unknown): SinwanElement | null {\n if (!isElementLike(value)) {\n return null;\n }\n if (isMatchElement(value)) {\n return value;\n }\n return value.tag === Match ? Match(value.props as any) : null;\n}\n\nfunction resolvePortalTarget(value: unknown): Node | null {\n const target = readReactive(value);\n\n if (target == null) {\n return typeof document === \"undefined\" ? null : document.body;\n }\n\n if (typeof target === \"string\") {\n return document.querySelector(target);\n }\n\n if (typeof target === \"function\") {\n return target() as Node | null;\n }\n\n if (typeof target === \"object\" && \"nodeType\" in target) {\n return target as Node;\n }\n\n return null;\n}\n\nfunction insertNode(parent: Node, child: Node, anchor: Node | null): void {\n if (anchor) {\n domOps.insertBefore(parent, child, anchor);\n } else {\n domOps.appendChild(parent, child);\n }\n}\n",
|
|
19
|
-
"/// <reference lib=\"dom\" />\n\n/**\n * SinwanJS Client Renderer — Element Rendering\n *\n * Converts SinwanElement trees into live DOM nodes.\n * Handles intrinsic HTML elements, functional components, and fragments.\n */\n\nimport type { SinwanElement, SinwanNode } from \"../types.ts\";\nimport type { MountedNode, MountedElement, MountedComponent } from \"./types.ts\";\nimport type { CleanupFn } from \"../reactivity/index.ts\";\nimport { domOps } from \"./dom-ops.ts\";\nimport { applyAttributes } from \"./attributes.ts\";\nimport { bindEvents } from \"./events.ts\";\nimport { renderChildrenToDOM, renderNodeToDOM } from \"./render-children.ts\";\nimport { Fragment } from \"../jsx/jsx-runtime.ts\";\nimport {\n Dynamic,\n For,\n Index,\n Key,\n Portal,\n Switch,\n Visible,\n isDynamicElement,\n isForElement,\n isIndexElement,\n isKeyElement,\n isPortalElement,\n isShowElement,\n isSwitchElement,\n Show,\n} from \"../component/control-flow.ts\";\nimport { renderControlFlowToDOM } from \"./render-control-flow.ts\";\nimport {\n createComponentInstance,\n getCurrentInstance,\n setCurrentInstance,\n handleComponentError,\n type ComponentInstance,\n} from \"../component/instance.ts\";\n\n// Void elements — no children, self-closing\nconst VOID_ELEMENTS = new Set([\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst MATH_NS = \"http://www.w3.org/1998/Math/MathML\";\n\n/**\n * Render an SinwanElement to DOM and insert into parent.\n */\nexport function renderElementToDOM(\n element: SinwanElement,\n parent: Node,\n anchor: Node | null = null,\n namespace: string | null = null,\n): MountedNode {\n const { tag, props, children } = element;\n\n // Fragment — render children directly into parent\n if (tag === \"\" || (tag as any) === Fragment) {\n return renderFragmentToDOM(children, parent, anchor, namespace);\n }\n\n // Built-in control-flow components should belong to the current owner,\n // not create their own component instance.\n if (\n tag === Show ||\n tag === For ||\n tag === Switch ||\n tag === Index ||\n tag === Key ||\n tag === Dynamic ||\n tag === Portal\n ) {\n return renderElementToDOM((tag as Function)(props)
|
|
18
|
+
"/// <reference lib=\"dom\" />\n\n/**\n * SinwanJS Client Renderer — Reactive control-flow blocks\n *\n * `<Show>` and `<For>` render between stable comment anchors. Updates remove,\n * move, or insert only the block-owned DOM nodes.\n */\n\nimport type { SinwanElement, SinwanNode } from \"../types.ts\";\nimport type { MountedNode, MountedPortal, MountedReactiveBlock } from \"./types.ts\";\nimport { domOps } from \"./dom-ops.ts\";\nimport { effect, resolve, signal, type Signal } from \"../reactivity/index.ts\";\nimport {\n getCurrentInstance,\n fireMountedHooks,\n queueUpdatedHooks,\n withInstance,\n type ComponentInstance,\n} from \"../component/instance.ts\";\nimport {\n isDynamicElement,\n isForElement,\n isIndexElement,\n isKeyElement,\n isPortalElement,\n isShowElement,\n isSwitchElement,\n resolveKeyChildren,\n resolveShowChildren,\n resolveSwitchContent,\n} from \"../component/control-flow.ts\";\nimport {\n getMountedDomNodes,\n removeMountedNode,\n} from \"./unmount.ts\";\nimport { renderNodeToDOM } from \"./render-children.ts\";\n\ninterface ForRecord<T> {\n key: unknown;\n item: T;\n index: number;\n mounted: MountedNode;\n}\n\ninterface IndexRecord<T> {\n item: Signal<T>;\n mounted: MountedNode;\n}\n\n/**\n * Render a built-in reactive helper element.\n */\nexport function renderControlFlowToDOM(\n element: SinwanElement,\n parent: Node,\n anchor: Node | null,\n namespace: string | null,\n): MountedNode {\n if (isPortalElement(element)) {\n return renderPortal(element, parent, anchor, namespace);\n }\n\n const startAnchor = domOps.createComment(\"Sinwan-b\");\n const endAnchor = domOps.createComment(\"/Sinwan-b\");\n insertNode(parent, startAnchor, anchor);\n insertNode(parent, endAnchor, anchor);\n\n const owner = getCurrentInstance();\n let disposeEffect = () => {};\n\n const block: MountedReactiveBlock = {\n type: \"reactive-block\",\n dispose: () => disposeEffect(),\n children: [],\n startAnchor,\n endAnchor,\n };\n\n if (isShowElement(element)) {\n disposeEffect = renderShowBlock(element, block, parent, namespace, owner);\n } else if (isForElement(element)) {\n disposeEffect = renderForBlock(element, block, parent, namespace, owner);\n } else if (isSwitchElement(element)) {\n disposeEffect = renderSwitchBlock(element, block, parent, namespace, owner);\n } else if (isIndexElement(element)) {\n disposeEffect = renderIndexBlock(element, block, parent, namespace, owner);\n } else if (isKeyElement(element)) {\n disposeEffect = renderKeyBlock(element, block, parent, namespace, owner);\n } else if (isDynamicElement(element)) {\n disposeEffect = renderDynamicBlock(element, block, parent, namespace, owner);\n }\n\n return block;\n}\n\nfunction renderShowBlock(\n element: SinwanElement,\n block: MountedReactiveBlock,\n parent: Node,\n namespace: string | null,\n owner: ComponentInstance | null,\n): () => void {\n let initialized = false;\n\n return effect(() => {\n clearChildren(block);\n const when = readReactive((element.props as any).when);\n block.children = withOptionalInstance(owner, () => {\n const content = when ? resolveShowChildren(element, when) : (element.props as any).fallback;\n return renderBlockContent(\n content,\n parent,\n block.endAnchor,\n namespace,\n owner,\n );\n });\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n}\n\nfunction renderForBlock<T>(\n element: SinwanElement,\n block: MountedReactiveBlock,\n parent: Node,\n namespace: string | null,\n owner: ComponentInstance | null,\n): () => void {\n let initialized = false;\n let records: ForRecord<T>[] = [];\n\n return effect(() => {\n const props = element.props as {\n each?: unknown;\n key?: (item: T, index: number) => string | number | symbol;\n fallback?: SinwanNode;\n children?: (item: T, index: () => number) => SinwanNode;\n };\n const items = readReactive(props.each) as readonly T[] | null | undefined;\n const list = Array.isArray(items) ? items : [];\n const renderChild = props.children;\n\n if (typeof renderChild !== \"function\") {\n clearChildren(block);\n records = [];\n if (initialized) {\n queueUpdatedHooks(owner);\n }\n initialized = true;\n return;\n }\n\n if (list.length === 0) {\n clearChildren(block);\n records = [];\n block.children = renderBlockContent(\n props.fallback,\n parent,\n block.endAnchor,\n namespace,\n owner,\n );\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n return;\n }\n\n if (records.length === 0 && block.children.length > 0) {\n clearChildren(block);\n }\n\n const oldByKey = new Map<unknown, ForRecord<T>>();\n for (const record of records) {\n oldByKey.set(record.key, record);\n }\n\n const nextRecords: ForRecord<T>[] = [];\n\n list.forEach((item, index) => {\n const key = props.key ? props.key(item, index) : item;\n const old = oldByKey.get(key);\n\n if (old && old.item === item) {\n old.index = index;\n moveBeforeEnd(parent, old.mounted, block.endAnchor);\n nextRecords.push(old);\n oldByKey.delete(key);\n return;\n }\n\n if (old) {\n removeMountedNode(old.mounted);\n oldByKey.delete(key);\n }\n\n const record: ForRecord<T> = {\n key,\n item,\n index,\n mounted: { type: \"text\", node: domOps.createTextNode(\"\") },\n };\n\n record.mounted = withOptionalInstance(owner, () =>\n renderNodeToDOM(\n renderChild(item, () => record.index),\n parent,\n block.endAnchor,\n namespace,\n ),\n );\n nextRecords.push(record);\n });\n\n for (const record of oldByKey.values()) {\n removeMountedNode(record.mounted);\n }\n\n records = nextRecords;\n block.children = nextRecords.map((record) => record.mounted);\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n}\n\nfunction renderSwitchBlock(\n element: SinwanElement,\n block: MountedReactiveBlock,\n parent: Node,\n namespace: string | null,\n owner: ComponentInstance | null,\n): () => void {\n let initialized = false;\n\n return effect(() => {\n clearChildren(block);\n\n const content = withOptionalInstance(owner, () => resolveSwitchContent(element));\n block.children = renderBlockContent(\n content,\n parent,\n block.endAnchor,\n namespace,\n owner,\n );\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n}\n\nfunction renderIndexBlock<T>(\n element: SinwanElement,\n block: MountedReactiveBlock,\n parent: Node,\n namespace: string | null,\n owner: ComponentInstance | null,\n): () => void {\n let initialized = false;\n let records: IndexRecord<T>[] = [];\n\n return effect(() => {\n const props = element.props as {\n each?: unknown;\n fallback?: SinwanNode;\n children?: (item: () => T, index: number) => SinwanNode;\n };\n const items = readReactive(props.each) as readonly T[] | null | undefined;\n const list = Array.isArray(items) ? items : [];\n const renderChild = props.children;\n\n if (typeof renderChild !== \"function\") {\n clearChildren(block);\n records = [];\n if (initialized) {\n queueUpdatedHooks(owner);\n }\n initialized = true;\n return;\n }\n\n if (list.length === 0) {\n clearChildren(block);\n records = [];\n block.children = renderBlockContent(\n props.fallback,\n parent,\n block.endAnchor,\n namespace,\n owner,\n );\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n return;\n }\n\n if (records.length === 0 && block.children.length > 0) {\n clearChildren(block);\n }\n\n for (let index = 0; index < list.length; index++) {\n const existing = records[index];\n if (existing) {\n existing.item.value = list[index]!;\n continue;\n }\n\n const itemSignal = signal(list[index]!);\n const record: IndexRecord<T> = {\n item: itemSignal,\n mounted: withOptionalInstance(owner, () =>\n renderNodeToDOM(\n renderChild(() => itemSignal.value, index),\n parent,\n block.endAnchor,\n namespace,\n ),\n ),\n };\n records.push(record);\n }\n\n while (records.length > list.length) {\n const removed = records.pop()!;\n removeMountedNode(removed.mounted);\n }\n\n block.children = records.map((record) => record.mounted);\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n}\n\nfunction renderKeyBlock(\n element: SinwanElement,\n block: MountedReactiveBlock,\n parent: Node,\n namespace: string | null,\n owner: ComponentInstance | null,\n): () => void {\n let initialized = false;\n let hasKey = false;\n let currentKey: unknown;\n\n return effect(() => {\n const key = readReactive((element.props as any).when);\n if (hasKey && Object.is(currentKey, key)) {\n return;\n }\n\n currentKey = key;\n hasKey = true;\n clearChildren(block);\n\n const content = withOptionalInstance(owner, () =>\n resolveKeyChildren(element, key),\n );\n block.children = renderBlockContent(\n content,\n parent,\n block.endAnchor,\n namespace,\n owner,\n );\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n}\n\nfunction renderDynamicBlock(\n element: SinwanElement,\n block: MountedReactiveBlock,\n parent: Node,\n namespace: string | null,\n owner: ComponentInstance | null,\n): () => void {\n let initialized = false;\n let hasTag = false;\n let currentTag: unknown;\n\n return effect(() => {\n const tag = readReactive((element.props as any).component);\n if (hasTag && Object.is(currentTag, tag)) {\n return;\n }\n\n currentTag = tag;\n hasTag = true;\n clearChildren(block);\n\n const content = tag ? createDynamicElement(element, tag) : null;\n block.children = renderBlockContent(\n content,\n parent,\n block.endAnchor,\n namespace,\n owner,\n );\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n}\n\nfunction renderPortal(\n element: SinwanElement,\n parent: Node,\n anchor: Node | null,\n namespace: string | null,\n): MountedPortal {\n const placeholder = domOps.createComment(\"Sinwan-p\");\n insertNode(parent, placeholder, anchor);\n\n const owner = getCurrentInstance();\n let disposeEffect = () => {};\n \n const targetAnchor = domOps.createComment(\"Sinwan-pa\");\n let lastTarget: Node | null = null;\n\n const portal: MountedPortal = {\n type: \"portal\",\n anchor: placeholder,\n children: [],\n dispose: () => disposeEffect(),\n targetAnchor,\n };\n let initialized = false;\n\n disposeEffect = effect(() => {\n const target = resolvePortalTarget((element.props as any).mount);\n \n if (target !== lastTarget) {\n if (lastTarget) {\n domOps.remove(targetAnchor);\n }\n if (target) {\n domOps.appendChild(target, targetAnchor);\n }\n lastTarget = target;\n portal.target = target as Node;\n }\n\n clearPortalChildren(portal);\n\n if (target) {\n portal.children = renderBlockContent(\n (element.props as any).children ?? element.children,\n target,\n targetAnchor,\n namespace,\n owner,\n );\n }\n\n if (initialized) {\n fireMountedAndQueueUpdated(owner);\n }\n initialized = true;\n });\n\n return portal;\n}\n\nfunction createDynamicElement(element: SinwanElement, tag: unknown): SinwanElement | null {\n if (typeof tag !== \"string\" && typeof tag !== \"function\") {\n return null;\n }\n\n const { component, ...props } = element.props as Record<string, unknown>;\n const children = normalizeContent(props.children ?? element.children);\n\n return {\n tag: tag as SinwanElement[\"tag\"],\n props,\n children,\n };\n}\n\nfunction renderBlockContent(\n content: SinwanNode,\n parent: Node,\n anchor: Node | null,\n namespace: string | null,\n owner: ComponentInstance | null,\n): MountedNode[] {\n if (content == null || typeof content === \"boolean\") return [];\n\n return withOptionalInstance(owner, () => {\n if (Array.isArray(content)) {\n return content.map((child) =>\n renderNodeToDOM(child, parent, anchor, namespace),\n );\n }\n\n return [renderNodeToDOM(content, parent, anchor, namespace)];\n });\n}\n\nfunction clearChildren(block: MountedReactiveBlock): void {\n for (const child of block.children) {\n removeMountedNode(child);\n }\n block.children = [];\n}\n\nfunction clearPortalChildren(portal: MountedPortal): void {\n for (const child of portal.children) {\n removeMountedNode(child);\n }\n portal.children = [];\n}\n\nfunction moveBeforeEnd(parent: Node, mounted: MountedNode, endAnchor: Node): void {\n for (const node of getMountedDomNodes(mounted)) {\n domOps.insertBefore(parent, node, endAnchor);\n }\n syncPortalOrder(mounted);\n}\n\nfunction syncPortalOrder(mounted: MountedNode): void {\n if (mounted.type === \"portal\") {\n if (mounted.target && mounted.targetAnchor) {\n for (const child of mounted.children) {\n for (const node of getMountedDomNodes(child)) {\n domOps.appendChild(mounted.target, node);\n }\n }\n domOps.appendChild(mounted.target, mounted.targetAnchor);\n }\n } else if (\"children\" in mounted && Array.isArray((mounted as any).children)) {\n for (const child of (mounted as any).children) {\n syncPortalOrder(child);\n }\n }\n}\n\nfunction fireMountedAndQueueUpdated(owner: ComponentInstance | null): void {\n if (owner) {\n fireMountedHooks(owner);\n }\n queueUpdatedHooks(owner);\n}\n\nfunction withOptionalInstance<T>(\n owner: ComponentInstance | null,\n fn: () => T,\n): T {\n return owner ? withInstance(owner, fn) : fn();\n}\n\nfunction readReactive(value: unknown): unknown {\n return resolve(value as any);\n}\n\nfunction normalizeContent(content: unknown): SinwanNode[] {\n if (content == null || typeof content === \"boolean\") {\n return [];\n }\n return Array.isArray(content) ? content : [content as SinwanNode];\n}\n\nfunction resolvePortalTarget(value: unknown): Node | null {\n const target = readReactive(value);\n\n if (target == null) {\n return typeof document === \"undefined\" ? null : document.body;\n }\n\n if (typeof target === \"string\") {\n return document.querySelector(target);\n }\n\n if (typeof target === \"function\") {\n return target() as Node | null;\n }\n\n if (typeof target === \"object\" && \"nodeType\" in target) {\n return target as Node;\n }\n\n return null;\n}\n\nfunction insertNode(parent: Node, child: Node, anchor: Node | null): void {\n if (anchor) {\n domOps.insertBefore(parent, child, anchor);\n } else {\n domOps.appendChild(parent, child);\n }\n}\n",
|
|
19
|
+
"/// <reference lib=\"dom\" />\n\n/**\n * SinwanJS Client Renderer — Element Rendering\n *\n * Converts SinwanElement trees into live DOM nodes.\n * Handles intrinsic HTML elements, functional components, and fragments.\n */\n\nimport type { SinwanElement, SinwanNode } from \"../types.ts\";\nimport type { MountedNode, MountedElement, MountedComponent } from \"./types.ts\";\nimport type { CleanupFn } from \"../reactivity/index.ts\";\nimport { domOps } from \"./dom-ops.ts\";\nimport { applyAttributes } from \"./attributes.ts\";\nimport { bindEvents } from \"./events.ts\";\nimport { renderChildrenToDOM, renderNodeToDOM } from \"./render-children.ts\";\nimport { Fragment } from \"../jsx/jsx-runtime.ts\";\nimport {\n Dynamic,\n For,\n Index,\n Key,\n Portal,\n Switch,\n Visible,\n isDynamicElement,\n isForElement,\n isIndexElement,\n isKeyElement,\n isPortalElement,\n isShowElement,\n isSwitchElement,\n Show,\n} from \"../component/control-flow.ts\";\nimport { renderControlFlowToDOM } from \"./render-control-flow.ts\";\nimport {\n createComponentInstance,\n getCurrentInstance,\n setCurrentInstance,\n handleComponentError,\n type ComponentInstance,\n} from \"../component/instance.ts\";\n\n// Void elements — no children, self-closing\nconst VOID_ELEMENTS = new Set([\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst MATH_NS = \"http://www.w3.org/1998/Math/MathML\";\n\n/**\n * Render an SinwanElement to DOM and insert into parent.\n */\nexport function renderElementToDOM(\n element: SinwanElement,\n parent: Node,\n anchor: Node | null = null,\n namespace: string | null = null,\n): MountedNode {\n const { tag, props, children } = element;\n\n // Fragment — render children directly into parent\n if (tag === \"\" || (tag as any) === Fragment) {\n return renderFragmentToDOM(children, parent, anchor, namespace);\n }\n\n // Built-in control-flow components should belong to the current owner,\n // not create their own component instance.\n if (\n tag === Show ||\n tag === For ||\n tag === Switch ||\n tag === Index ||\n tag === Key ||\n tag === Dynamic ||\n tag === Portal\n ) {\n return renderElementToDOM(\n (tag as Function)(props),\n parent,\n anchor,\n namespace,\n );\n }\n\n if (tag === Visible) {\n return renderElementToDOM(\n (tag as Function)(props),\n parent,\n anchor,\n namespace,\n );\n }\n\n if (\n isShowElement(element) ||\n isForElement(element) ||\n isSwitchElement(element) ||\n isIndexElement(element) ||\n isKeyElement(element) ||\n isDynamicElement(element) ||\n isPortalElement(element)\n ) {\n return renderControlFlowToDOM(element, parent, anchor, namespace);\n }\n\n // Functional component — call it and render the result\n if (typeof tag === \"function\") {\n return renderComponentToDOM(tag, props, parent, anchor, namespace);\n }\n\n // Intrinsic HTML element\n if (typeof tag === \"string\") {\n return renderIntrinsicToDOM(\n tag,\n props,\n children,\n parent,\n anchor,\n namespace,\n );\n }\n\n // Fallback — render children\n return renderFragmentToDOM(children, parent, anchor, namespace);\n}\n\n/**\n * Render an intrinsic HTML element (<div>, <p>, <button>, etc.).\n */\nfunction renderIntrinsicToDOM(\n tag: string,\n props: Record<string, unknown>,\n children: SinwanNode[],\n parent: Node,\n anchor: Node | null,\n parentNamespace: string | null,\n): MountedElement {\n const namespace = getElementNamespace(tag, parentNamespace);\n const el = namespace\n ? domOps.createElementNS(namespace, tag)\n : domOps.createElement(tag);\n\n // Apply attributes (returns disposers for reactive attrs)\n const attrDisposers = applyAttributes(el, props);\n\n // Bind event handlers\n const eventCleanups = bindEvents(el, props);\n\n // Render children (unless void element)\n let mountedChildren: MountedNode[] = [];\n if (!VOID_ELEMENTS.has(tag)) {\n // Handle dangerouslySetInnerHTML\n const dangerous = props.dangerouslySetInnerHTML as\n | { __html?: string }\n | undefined;\n if (dangerous && typeof dangerous.__html === \"string\") {\n (el as HTMLElement).innerHTML = dangerous.__html;\n } else {\n mountedChildren = renderChildrenToDOM(\n children,\n el,\n getChildNamespace(tag, namespace),\n );\n }\n }\n\n // Insert into parent\n if (anchor) {\n domOps.insertBefore(parent, el, anchor);\n } else {\n domOps.appendChild(parent, el);\n }\n\n const refCleanup = applyRef(el, props.ref);\n\n return {\n type: \"element\",\n node: el,\n children: mountedChildren,\n eventCleanups,\n attrDisposers,\n refCleanup,\n };\n}\n\n/**\n * Render a functional component.\n *\n * Creates a ComponentInstance, sets it as the active instance during\n * setup so lifecycle hooks (onMounted, etc.) register on it, then\n * renders the returned element tree.\n */\nfunction renderComponentToDOM(\n component: Function,\n props: Record<string, unknown>,\n parent: Node,\n anchor: Node | null,\n namespace: string | null,\n): MountedComponent {\n // Create instance with parent context\n const parentInstance = getCurrentInstance();\n const instance = createComponentInstance(\n component as any,\n props,\n parentInstance,\n );\n\n // Register as child of parent\n if (parentInstance) {\n parentInstance.children.push(instance);\n }\n\n // Set this instance as current during BOTH setup AND rendering,\n // so nested child components discover it as their parent.\n const prevInstance = setCurrentInstance(instance);\n\n let result: any;\n let child: MountedNode;\n\n try {\n result = component(props);\n\n // Render the returned element tree (still under this instance)\n if (result && typeof result === \"object\" && \"tag\" in result) {\n child = renderElementToDOM(\n result as SinwanElement,\n parent,\n anchor,\n namespace,\n );\n } else {\n child = renderNodeToDOM(result as SinwanNode, parent, anchor, namespace);\n }\n } catch (err) {\n // Restore parent before error handling\n setCurrentInstance(prevInstance);\n handleComponentError(instance, err as Error);\n // Return empty placeholder on error\n const text = domOps.createTextNode(\"\");\n if (anchor) {\n domOps.insertBefore(parent, text, anchor);\n } else {\n domOps.appendChild(parent, text);\n }\n return {\n type: \"component\",\n children: [{ type: \"text\", node: text }],\n disposers: [],\n instance,\n };\n }\n\n // Restore parent instance\n setCurrentInstance(prevInstance);\n\n instance.element = child;\n\n return {\n type: \"component\",\n children: [child],\n disposers: instance.effects,\n instance,\n };\n}\n\n/**\n * Render children as a fragment (no wrapper element).\n */\nfunction renderFragmentToDOM(\n children: SinwanNode[],\n parent: Node,\n anchor: Node | null,\n namespace: string | null,\n): MountedNode {\n const anchorComment = domOps.createComment(\"Sinwan-f\");\n if (anchor) {\n domOps.insertBefore(parent, anchorComment, anchor);\n } else {\n domOps.appendChild(parent, anchorComment);\n }\n\n const mounted: MountedNode[] = [];\n for (const child of children) {\n mounted.push(renderNodeToDOM(child, parent, anchor, namespace));\n }\n\n return { type: \"fragment\", children: mounted, anchor: anchorComment };\n}\n\nfunction getElementNamespace(\n tag: string,\n parentNamespace: string | null,\n): string | null {\n if (tag === \"svg\") return SVG_NS;\n if (tag === \"math\") return MATH_NS;\n return parentNamespace;\n}\n\nfunction getChildNamespace(\n tag: string,\n namespace: string | null,\n): string | null {\n if (namespace === SVG_NS && tag === \"foreignObject\") {\n return null;\n }\n return namespace;\n}\n\ntype RefValue =\n | ((el: Element | null) => void)\n | { current: Element | null }\n | null\n | undefined;\n\nfunction applyRef(el: Element, ref: unknown): CleanupFn | null {\n const value = ref as RefValue;\n if (!value) {\n return null;\n }\n\n if (typeof value === \"function\") {\n value(el);\n return () => value(null);\n }\n\n if (typeof value === \"object\" && \"current\" in value) {\n value.current = el;\n return () => {\n value.current = null;\n };\n }\n\n return null;\n}\n",
|
|
20
20
|
"/// <reference lib=\"dom\" />\n\n/**\n * SinwanJS Client Renderer — Child Rendering\n *\n * Renders SinwanNode children to DOM nodes. Handles primitives,\n * elements, arrays, signals, and fragments.\n */\n\nimport type { SinwanNode } from \"../types.ts\";\nimport type { MountedNode, MountedReactiveBlock } from \"./types.ts\";\nimport { domOps } from \"./dom-ops.ts\";\nimport { isReactive, resolve, effect, type Signal, type Computed } from \"../reactivity/index.ts\";\nimport { renderElementToDOM } from \"./render-element.ts\";\nimport { HtmlEscapedString } from \"../jsx/jsx-runtime.ts\";\nimport {\n getCurrentInstance,\n queueUpdatedHooks,\n fireMountedHooks,\n} from \"../component/instance.ts\";\nimport { removeMountedNode } from \"./unmount.ts\";\n\n/**\n * Render a single SinwanNode to DOM and append to parent.\n * Returns the MountedNode descriptor for cleanup/unmount.\n */\nexport function renderNodeToDOM(\n node: SinwanNode,\n parent: Node,\n anchor: Node | null = null,\n namespace: string | null = null,\n): MountedNode {\n // null/undefined/boolean → empty text node (placeholder)\n if (node == null || typeof node === \"boolean\") {\n const text = domOps.createTextNode(\"\");\n insertNode(parent, text, anchor);\n return { type: \"text\", node: text };\n }\n\n // String\n if (typeof node === \"string\") {\n const text = domOps.createTextNode(node);\n insertNode(parent, text, anchor);\n return { type: \"text\", node: text };\n }\n\n // Number\n if (typeof node === \"number\") {\n const text = domOps.createTextNode(String(node));\n insertNode(parent, text, anchor);\n return { type: \"text\", node: text };\n }\n\n // Pre-escaped HTML string\n if (node instanceof HtmlEscapedString) {\n const text = domOps.createTextNode(node.value);\n insertNode(parent, text, anchor);\n return { type: \"text\", node: text };\n }\n\n // Reactive Node (Signal, Computed, or Function Getter)\n if (isReactive(node)) {\n return renderReactiveNodeToDOM(node as any, parent, anchor, namespace);\n }\n\n // Array → fragment\n if (Array.isArray(node)) {\n return renderArrayToDOM(node, parent, anchor, namespace);\n }\n\n // Promise → placeholder (resolved async)\n if (node instanceof Promise) {\n const placeholder = domOps.createTextNode(\"\");\n insertNode(parent, placeholder, anchor);\n // TODO: async component support (Phase 3+)\n node.then((resolved) => {\n const mounted = renderNodeToDOM(resolved, parent, placeholder, namespace);\n domOps.remove(placeholder);\n });\n return { type: \"text\", node: placeholder };\n }\n\n // SinwanElement\n if (typeof node === \"object\" && \"tag\" in node) {\n return renderElementToDOM(node, parent, anchor, namespace);\n }\n\n // Fallback — coerce to string\n const text = domOps.createTextNode(String(node));\n insertNode(parent, text, anchor);\n return { type: \"text\", node: text };\n}\n\n/**\n * Render an array of children to DOM as a fragment.\n */\nfunction renderArrayToDOM(\n nodes: SinwanNode[],\n parent: Node,\n anchor: Node | null,\n namespace: string | null,\n): MountedNode {\n const anchorComment = domOps.createComment(\"Sinwan-f\");\n insertNode(parent, anchorComment, anchor);\n\n const children: MountedNode[] = [];\n for (const child of nodes) {\n children.push(renderNodeToDOM(child, parent, anchor, namespace));\n }\n\n return { type: \"fragment\", children, anchor: anchorComment };\n}\n\n/**\n * Render multiple children into a parent element.\n * Returns array of MountedNode descriptors.\n */\nexport function renderChildrenToDOM(\n children: SinwanNode[],\n parent: Node,\n namespace: string | null = null,\n): MountedNode[] {\n const mounted: MountedNode[] = [];\n for (const child of children) {\n mounted.push(renderNodeToDOM(child, parent, null, namespace));\n }\n return mounted;\n}\n\n/**\n * Render a reactive node (Signal, Computed, or Function) that can resolve to any SinwanNode.\n * Uses comment anchors to allow swapping between different types of content (text, elements, etc.).\n */\nfunction renderReactiveNodeToDOM(\n reactive: Signal<any> | Computed<any> | Function,\n parent: Node,\n anchor: Node | null,\n namespace: string | null,\n): MountedNode {\n const startAnchor = domOps.createComment(\"Sinwan-r\");\n const endAnchor = domOps.createComment(\"/Sinwan-r\");\n insertNode(parent, startAnchor, anchor);\n insertNode(parent, endAnchor, anchor);\n\n const owner = getCurrentInstance();\n let mountedContent: MountedNode | null = null;\n let initialized = false;\n\n const block: MountedReactiveBlock = {\n type: \"reactive-block\",\n startAnchor,\n endAnchor,\n children: [],\n dispose: () => {}, // placeholder\n };\n\n block.dispose = effect(() => {\n // 1. Cleanup previous content\n if (mountedContent) {\n removeMountedNode(mountedContent);\n }\n\n // 2. Resolve and render new content\n const value = resolve(reactive);\n mountedContent = renderNodeToDOM(value as SinwanNode, parent, endAnchor, namespace);\n block.children = [mountedContent];\n\n // 3. Trigger lifecycle hooks\n if (initialized) {\n if (owner) fireMountedHooks(owner);\n queueUpdatedHooks(owner);\n }\n initialized = true;\n });\n\n return block;\n}\n\n/**\n * Insert a node into parent, optionally before an anchor.\n */\nfunction insertNode(parent: Node, child: Node, anchor: Node | null): void {\n if (anchor) {\n domOps.insertBefore(parent, child, anchor);\n } else {\n domOps.appendChild(parent, child);\n }\n}\n",
|
|
21
21
|
"/// <reference lib=\"dom\" />\n\n/**\n * SinwanJS Client Renderer — Mount\n *\n * Entry point for rendering a component tree into a DOM container.\n * Returns an AppInstance handle for unmounting.\n */\n\nimport type { SinwanComponent, SinwanNode, SinwanElement } from \"../types.ts\";\nimport type { AppInstance, MountedNode } from \"./types.ts\";\nimport { renderNodeToDOM } from \"./render-children.ts\";\nimport { renderElementToDOM } from \"./render-element.ts\";\nimport { unmountNode } from \"./unmount.ts\";\nimport {\n createComponentInstance,\n setCurrentInstance,\n fireMountedHooks,\n fireUnmountedHooks,\n handleComponentError,\n} from \"../component/instance.ts\";\n\n/**\n * Mount a component into a DOM container.\n *\n * Creates a root ComponentInstance, runs setup with lifecycle hooks,\n * renders to DOM, then fires onMounted hooks (bottom-up).\n *\n * @example\n * const app = mount(Counter, document.getElementById(\"app\")!, { initial: 0 });\n * // later...\n * app.unmount();\n */\nexport function mount(\n component: SinwanComponent<any>,\n container: Element,\n props?: Record<string, unknown>,\n): AppInstance {\n // Clear the container\n container.innerHTML = \"\";\n\n const mergedProps = props ?? {};\n\n // Create root component instance\n const instance = createComponentInstance(component, mergedProps, null);\n\n let result: any;\n let root: MountedNode;\n\n // Set instance as current for BOTH setup AND rendering,\n // so child components can discover their parent.\n setCurrentInstance(instance);\n\n try {\n result = component(mergedProps);\n\n if (result instanceof Promise) {\n // Async component — render placeholder, then swap\n const placeholder = document.createTextNode(\"\");\n container.appendChild(placeholder);\n root = { type: \"text\", node: placeholder };\n\n result.then((resolved) => {\n container.innerHTML = \"\";\n setCurrentInstance(instance);\n root = renderElementToDOM(resolved, container);\n setCurrentInstance(null);\n instance.element = root;\n fireMountedHooks(instance);\n });\n } else if (result && typeof result === \"object\" && \"tag\" in result) {\n root = renderElementToDOM(result, container);\n } else {\n root = renderNodeToDOM(result as SinwanNode, container);\n }\n } catch (err) {\n setCurrentInstance(null);\n handleComponentError(instance, err as Error);\n return {\n root: { type: \"text\", node: document.createTextNode(\"\") },\n unmount() {},\n };\n }\n\n // Restore — no instance is current at the top level\n setCurrentInstance(null);\n\n instance.element = root;\n\n // Fire onMounted hooks (bottom-up: children first, then parent)\n fireMountedHooks(instance);\n\n return {\n root,\n unmount() {\n // Fire onUnmounted hooks and dispose all effects\n fireUnmountedHooks(instance);\n // Clean up DOM tree\n unmountNode(root);\n container.innerHTML = \"\";\n },\n };\n}\n\n/**\n * Render a raw SinwanElement or SinwanNode tree into a container.\n * Lower-level than mount() — doesn't call a component function.\n */\nexport function render(node: SinwanNode, container: Element): AppInstance {\n container.innerHTML = \"\";\n\n const root = renderNodeToDOM(node, container);\n\n return {\n root,\n unmount() {\n unmountNode(root);\n container.innerHTML = \"\";\n },\n };\n}\n\nexport { unmountNode } from \"./unmount.ts\";\n"
|
|
22
22
|
],
|
|
23
|
-
"mappings": "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",
|
|
24
|
-
"debugId": "
|
|
23
|
+
"mappings": "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",
|
|
24
|
+
"debugId": "EBE55516E78B698564756E2164756E21",
|
|
25
25
|
"names": []
|
|
26
26
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var WS=Symbol("Fragment");class m extends String{value;constructor(S){super(S);this.value=S}toString(){return this.value}}var cY=(S)=>new m(S);function h(S){if(S==null||typeof S==="boolean")return[];if(Array.isArray(S))return S.flat(1/0);return[S]}function $S(S,Y,P){if(S===WS)return{tag:"",props:{},children:P};if(typeof S==="function"||typeof S==="string"){let W=Y??{};if(P.length>0&&W.children===void 0)W.children=P.length===1?P[0]:P;return{tag:S,props:W,children:P}}return{tag:"",props:{},children:P}}function lY(S,Y,P){return $S(S,Y,h(Y?.children))}function oY(S,Y,P){let W=Y?.children;return $S(S,Y,Array.isArray(W)?W.flat(1/0):h(W))}function rY(S,Y,P,W,x,$){let J=W?Array.isArray(Y?.children)?Y.children.flat(1/0):h(Y?.children):h(Y?.children),X=$S(S,Y,J);if(x)X.__source=x;return X}function xY(){return{createElement(S){return document.createElement(S)},createElementNS(S,Y){return document.createElementNS(S,Y)},createTextNode(S){return document.createTextNode(S)},createComment(S){return document.createComment(S)},setAttribute(S,Y,P){S.setAttribute(Y,P)},removeAttribute(S,Y){S.removeAttribute(Y)},setProperty(S,Y,P){S[Y]=P},insertBefore(S,Y,P){S.insertBefore(Y,P)},appendChild(S,Y){S.appendChild(Y)},remove(S){S.parentNode?.removeChild(S)},setTextContent(S,Y){S.data=Y},addEventListener(S,Y,P){S.addEventListener(Y,P)},removeEventListener(S,Y,P){S.removeEventListener(Y,P)},parentNode(S){return S.parentNode},nextSibling(S){return S.nextSibling}}}var HS=xY(),Z={...HS};function WY(S){Object.assign(Z,S)}function $Y(){for(let S of Object.keys(Z))delete Z[S];Object.assign(Z,HS)}var y=new Set,b=!1,JS=!1,wS=[];function BS(S){if(!S.active)return;y.add(S),JY()}function US(S){y.delete(S)}function JY(){if(!b)b=!0,queueMicrotask(AS)}function AS(){JS=!0;let S=[...y].sort((W,x)=>W.id-x.id);y.clear();for(let W of S)if(W.active)W.run();let Y=10;while(y.size>0&&Y-- >0){let W=[...y].sort((x,$)=>x.id-$.id);y.clear();for(let x of W)if(x.active)x.run()}b=!1,JS=!1;let P=wS.splice(0);for(let W of P)W()}function XS(S){return new Promise((Y)=>{let P=()=>{S?.(),Y()};if(b||JS)wS.push(P);else queueMicrotask(P)})}function zS(){if(b)b=!1,AS()}var C=null,ZS=[],XY=0;class i{id;active=!0;fn;cleanup=void 0;deps=new Set;constructor(S){this.id=XY++,this.fn=S}run(){if(!this.active)return;if(ZS.includes(this))return;if(this.cleanupDeps(),this.cleanup)this.cleanup(),this.cleanup=void 0;ZS.push(this);let S=C;C=this;try{let Y=this.fn();if(typeof Y==="function")this.cleanup=Y}finally{C=S,ZS.pop()}}cleanupDeps(){for(let S of this.deps)S.subscribers.delete(this);this.deps.clear()}notify(){BS(this)}dispose(){if(!this.active)return;if(this.active=!1,this.cleanup)this.cleanup(),this.cleanup=void 0;this.cleanupDeps(),US(this)}}function L(S){let Y=new i(S);return Y.run(),()=>Y.dispose()}function p(S){if(C)S.subscribers.add(C),C.deps.add(S)}function s(S){let Y=[...S.subscribers];for(let P of Y)P.notify()}var IS=Symbol("Sinwan:signal");class ES{[IS]=!0;subscribers=new Set;_value;_manualSubs=new Set;constructor(S){this._value=S}get value(){return p(this),this._value}set value(S){if(Object.is(this._value,S))return;this._value=S,s(this);for(let Y of this._manualSubs)Y(S)}peek(){return this._value}subscribe(S){return this._manualSubs.add(S),()=>{this._manualSubs.delete(S)}}toString(){return String(this.value)}valueOf(){return this.value}}function jS(S){return new ES(S)}function d(S){return S!=null&&typeof S==="object"&&IS in S}var DS=Symbol("Sinwan:computed");class yS{[DS]=!0;subscribers=new Set;_value;_dirty=!0;_effect;constructor(S){let Y=this;this._effect=new i(()=>{Y._value=S()}),this._effect.notify=function(){if(!Y._dirty)Y._dirty=!0,s(Y)},this._effect.run(),this._dirty=!1}get value(){if(p(this),this._dirty)this._effect.run(),this._dirty=!1;return this._value}peek(){if(this._dirty)this._effect.run(),this._dirty=!1;return this._value}toString(){return String(this.value)}valueOf(){return this.value}}function TS(S){return new yS(S)}function c(S){return S!=null&&typeof S==="object"&&DS in S}var GS=0;function ZY(S){GS++;try{S()}finally{if(GS--,GS===0)zS()}}function k(S){return d(S)||c(S)||typeof S==="function"}function H(S){if(d(S)||c(S))return S.value;if(typeof S==="function")return S();return S}function l(S){return S.length>2&&S[0]==="o"&&S[1]==="n"&&S[2]>="A"&&S[2]<="Z"}function NS(S){return S.slice(2).toLowerCase()}function MS(S,Y,P){return Z.addEventListener(S,Y,P),()=>{Z.removeEventListener(S,Y,P)}}function _S(S,Y){let P=[];for(let W of Object.keys(Y))if(l(W)){let x=Y[W];if(typeof x==="function"){let $=NS(W);P.push(MS(S,$,x))}}return P}var jY=0;function o(S,Y,P){return{uid:jY++,component:S,props:Y,element:null,parent:P,children:[],effects:[],_mountedHooks:[],_unmountedHooks:[],_updatedHooks:[],_errorHooks:[],provides:P?Object.create(P.provides):Object.create(null),isMounted:!1,isUnmounted:!1}}var LS=null;function w(){return LS}function q(S){let Y=LS;return LS=S,Y}function bS(S,Y){let P=q(S);try{return Y()}finally{q(P)}}function I(S){if(S.isUnmounted)return;for(let Y of S.children)I(Y);if(!S.isMounted){S.isMounted=!0;for(let Y of S._mountedHooks)Y()}}function v(S){for(let Y of S.children)v(Y);if(S.isMounted&&!S.isUnmounted){S.isUnmounted=!0,S.isMounted=!1;for(let Y of S._unmountedHooks)Y();for(let Y of S.effects)Y();S.effects.length=0}}function TY(S){for(let Y of S._updatedHooks)Y()}var FS=new Set;function E(S){if(!S||!S.isMounted||S.isUnmounted||S._updatedHooks.length===0||FS.has(S))return;FS.add(S),XS(()=>{if(FS.delete(S),S.isMounted&&!S.isUnmounted)TY(S)})}function r(S,Y){let P=S;while(P){if(P._errorHooks.length>0){for(let W of P._errorHooks)W(Y);return}P=P.parent}console.error("[Sinwan] Unhandled component error:",Y)}var GY=new Set(["children","key","ref","dangerouslySetInnerHTML"]),VS=new Set(["value","checked","selected","disabled","readOnly","multiple","indeterminate"]),_Y={className:"class",htmlFor:"for",tabIndex:"tabindex",crossOrigin:"crossorigin"};function qS(S,Y){let P=[],W=w();for(let[x,$]of Object.entries(Y)){if(GY.has(x)||l(x))continue;if(k($)){let J={previousStyleProps:new Set},X=!1,j=L(()=>{if(CS(S,x,H($),J),X)E(W);X=!0});P.push(j)}else CS(S,x,$)}return P}function CS(S,Y,P,W){let x=FY(Y);if(x==="style"&&typeof P==="object"&&P!==null){LY(S,P,W);return}if(x==="class"&&typeof P==="object"&&P!==null){VY(S,P);return}if(P==null||P===!1){if(Z.removeAttribute(S,x),x==="style"&&W)W.previousStyleProps.clear();if(VS.has(x))Z.setProperty(S,x,x==="value"?"":!1);return}if(P===!0){if(Z.setAttribute(S,x,""),x==="style"&&W)W.previousStyleProps.clear();if(VS.has(x))Z.setProperty(S,x,!0);return}if(VS.has(x)){if(x==="style"&&W)W.previousStyleProps.clear();Z.setProperty(S,x,P);return}if(x==="style"&&W)W.previousStyleProps.clear();Z.setAttribute(S,x,String(P))}function FY(S){return _Y[S]??S}function LY(S,Y,P){let W=new Set;for(let[x,$]of Object.entries(Y)){if(W.add(x),$==null){gS(S,x);continue}if(x.includes("-"))S.style.setProperty(x,String($));else S.style[x]=$}if(!P)return;for(let x of P.previousStyleProps)if(!W.has(x))gS(S,x);P.previousStyleProps=W}function gS(S,Y){if(Y.includes("-"))S.style.removeProperty(Y);else S.style[Y]=""}function VY(S,Y){let P;if(Array.isArray(Y))P=Y.filter(Boolean).join(" ");else if(typeof Y==="object"&&Y!==null)P=Object.entries(Y).filter(([,W])=>Boolean(W)).map(([W])=>W).join(" ");else P=String(Y);Z.setAttribute(S,"class",P)}var fS=Symbol.for("Sinwan.Show"),kS=Symbol.for("Sinwan.For"),vS=Symbol.for("Sinwan.Switch"),uS=Symbol.for("Sinwan.Match"),hS=Symbol.for("Sinwan.Index"),mS=Symbol.for("Sinwan.Key"),iS=Symbol.for("Sinwan.Dynamic"),pS=Symbol.for("Sinwan.Portal");function sS(S){return{tag:fS,props:S,children:[]}}function dS(S){return{tag:kS,props:S,children:[]}}function cS(S){return{tag:vS,props:S,children:[]}}function KS(S){return{tag:uS,props:S,children:[]}}function lS(S){return{tag:hS,props:S,children:[]}}function oS(S){return{tag:mS,props:S,children:[]}}function rS(S){return{tag:iS,props:S,children:[]}}function aS(S){let{when:Y,as:P="span",style:W,children:x,...$}=S,J=TS(()=>{let X=OS(W),j=Boolean(OS(Y));if(typeof X==="string")return j?X:KY(X);let T=X&&typeof X==="object"?{...X}:{};return T.display=j?T.display:"none",T});return{tag:P,props:{...$,style:J,children:x},children:qY(x)}}function tS(S){return{tag:pS,props:S,children:[]}}function a(S){return S.tag===fS}function t(S){return S.tag===kS}function n(S){return S.tag===vS}function nS(S){return S.tag===uS}function e(S){return S.tag===hS}function SS(S){return S.tag===mS}function YS(S){return S.tag===iS}function PS(S){return S.tag===pS}function qY(S){if(S==null||typeof S==="boolean")return[];return Array.isArray(S)?S:[S]}function OS(S){return H(S)}function KY(S){let Y=S.trim(),P=Y.length>0&&!Y.endsWith(";")?";":"";return`${Y}${P}display:none`}function g(S){switch(S.type){case"text":case"reactive-text":return[S.node];case"element":return[S.node];case"fragment":return[S.anchor,...S.children.flatMap((Y)=>g(Y))];case"reactive-block":return[S.startAnchor,...S.children.flatMap((Y)=>g(Y)),S.endAnchor];case"component":return S.children.flatMap((Y)=>g(Y));case"portal":return[S.anchor]}}function Q(S){switch(S.type){case"text":break;case"reactive-text":S.dispose();break;case"element":for(let Y of S.attrDisposers)Y();for(let Y of S.eventCleanups)Y();S.refCleanup?.();for(let Y of S.children)Q(Y);break;case"fragment":for(let Y of S.children)Q(Y);break;case"reactive-block":S.dispose();for(let Y of S.children)Q(Y);break;case"component":if(S.instance)v(S.instance);else for(let Y of S.disposers)Y();for(let Y of S.children)Q(Y);break;case"portal":S.dispose();for(let Y of S.children)B(Y);S.children=[];break}}function B(S){let Y=g(S);Q(S);for(let P of Y)if(P.parentNode)Z.remove(P)}function eS(S,Y,P,W){if(PS(S))return AY(S,Y,P,W);let x=Z.createComment("Sinwan-b"),$=Z.createComment("/Sinwan-b");QS(Y,x,P),QS(Y,$,P);let J=w(),X=()=>{},j={type:"reactive-block",dispose:()=>X(),children:[],startAnchor:x,endAnchor:$};if(a(S))X=QY(S,j,Y,W,J);else if(t(S))X=RY(S,j,Y,W,J);else if(n(S))X=HY(S,j,Y,W,J);else if(e(S))X=wY(S,j,Y,W,J);else if(SS(S))X=BY(S,j,Y,W,J);else if(YS(S))X=UY(S,j,Y,W,J);return j}function QY(S,Y,P,W,x){let $=!1;return L(()=>{R(Y);let J=M(S.props.when),X=O(x,()=>J?zY(S,J):S.props.fallback);if(Y.children=N(X,P,Y.endAnchor,W,x),$)U(x);$=!0})}function RY(S,Y,P,W,x){let $=!1,J=[];return L(()=>{let X=S.props,j=M(X.each),T=Array.isArray(j)?j:[],V=X.children;if(typeof V!=="function"){if(R(Y),J=[],$)E(x);$=!0;return}if(T.length===0){if(R(Y),J=[],Y.children=N(X.fallback,P,Y.endAnchor,W,x),$)U(x);$=!0;return}if(J.length===0&&Y.children.length>0)R(Y);let G=new Map;for(let _ of J)G.set(_.key,_);let K=[];T.forEach((_,f)=>{let u=X.key?X.key(_,f):_,D=G.get(u);if(D&&D.item===_){D.index=f,MY(P,D.mounted,Y.endAnchor),K.push(D),G.delete(u);return}if(D)B(D.mounted),G.delete(u);let xS={key:u,item:_,index:f,mounted:{type:"text",node:Z.createTextNode("")}};xS.mounted=O(x,()=>F(V(_,()=>xS.index),P,Y.endAnchor,W)),K.push(xS)});for(let _ of G.values())B(_.mounted);if(J=K,Y.children=K.map((_)=>_.mounted),$)U(x);$=!0})}function HY(S,Y,P,W,x){let $=!1;return L(()=>{R(Y);let J=O(x,()=>IY(S));if(Y.children=N(J,P,Y.endAnchor,W,x),$)U(x);$=!0})}function wY(S,Y,P,W,x){let $=!1,J=[];return L(()=>{let X=S.props,j=M(X.each),T=Array.isArray(j)?j:[],V=X.children;if(typeof V!=="function"){if(R(Y),J=[],$)E(x);$=!0;return}if(T.length===0){if(R(Y),J=[],Y.children=N(X.fallback,P,Y.endAnchor,W,x),$)U(x);$=!0;return}if(J.length===0&&Y.children.length>0)R(Y);for(let G=0;G<T.length;G++){let K=J[G];if(K){K.item.value=T[G];continue}let _=jS(T[G]),f={item:_,mounted:O(x,()=>F(V(()=>_.value,G),P,Y.endAnchor,W))};J.push(f)}while(J.length>T.length){let G=J.pop();B(G.mounted)}if(Y.children=J.map((G)=>G.mounted),$)U(x);$=!0})}function BY(S,Y,P,W,x){let $=!1,J=!1,X;return L(()=>{let j=M(S.props.when);if(J&&Object.is(X,j))return;X=j,J=!0,R(Y);let T=O(x,()=>DY(S,j));if(Y.children=N(T,P,Y.endAnchor,W,x),$)U(x);$=!0})}function UY(S,Y,P,W,x){let $=!1,J=!1,X;return L(()=>{let j=M(S.props.component);if(J&&Object.is(X,j))return;X=j,J=!0,R(Y);let T=j?yY(S,j):null;if(Y.children=N(T,P,Y.endAnchor,W,x),$)U(x);$=!0})}function AY(S,Y,P,W){let x=Z.createComment("Sinwan-p");QS(Y,x,P);let $=w(),J=()=>{},X={type:"portal",anchor:x,children:[],dispose:()=>J()},j=!1;return J=L(()=>{NY(X);let T=gY(S.props.mount);if(T)X.children=N(S.props.children??S.children,T,null,W,$);if(j)U($);j=!0}),X}function zY(S,Y){let P=S.props.children??S.children;if(typeof P==="function")return P(Y);return P}function IY(S){let Y=S.props,P=SY(Y.children??S.children);for(let W of P){let x=CY(W);if(!x)continue;let $=M(x.props.when);if($)return EY(x,$)}return Y.fallback}function EY(S,Y){let P=S.props.children??S.children;if(typeof P==="function")return P(Y);return P}function DY(S,Y){let P=S.props.children??S.children;if(typeof P==="function")return P(Y);return P}function yY(S,Y){if(typeof Y!=="string"&&typeof Y!=="function")return null;let{component:P,...W}=S.props,x=SY(W.children??S.children);return{tag:Y,props:W,children:x}}function N(S,Y,P,W,x){if(S==null||typeof S==="boolean")return[];return(Array.isArray(S)?S:[S]).map((J)=>O(x,()=>F(J,Y,P,W)))}function R(S){for(let Y of S.children)B(Y);S.children=[]}function NY(S){for(let Y of S.children)B(Y);S.children=[]}function MY(S,Y,P){for(let W of g(Y))Z.insertBefore(S,W,P)}function U(S){if(S)I(S);E(S)}function O(S,Y){return S?bS(S,Y):Y()}function M(S){return H(S)}function SY(S){if(S==null||typeof S==="boolean")return[];return Array.isArray(S)?S:[S]}function bY(S){return S!=null&&typeof S==="object"&&"tag"in S}function CY(S){if(!bY(S))return null;if(nS(S))return S;return S.tag===KS?KS(S.props):null}function gY(S){let Y=M(S);if(Y==null)return typeof document>"u"?null:document.body;if(typeof Y==="string")return document.querySelector(Y);if(typeof Y==="function")return Y();if(typeof Y==="object"&&"nodeType"in Y)return Y;return null}function QS(S,Y,P){if(P)Z.insertBefore(S,Y,P);else Z.appendChild(S,Y)}var OY=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),PY="http://www.w3.org/2000/svg",fY="http://www.w3.org/1998/Math/MathML";function A(S,Y,P=null,W=null){let{tag:x,props:$,children:J}=S;if(x===""||x===WS)return YY(J,Y,P,W);if(x===sS||x===dS||x===cS||x===lS||x===oS||x===rS||x===tS)return A(x($),Y,P,W);if(x===aS)return A(x($),Y,P,W);if(a(S)||t(S)||n(S)||e(S)||SS(S)||YS(S)||PS(S))return eS(S,Y,P,W);if(typeof x==="function")return vY(x,$,Y,P,W);if(typeof x==="string")return kY(x,$,J,Y,P,W);return YY(J,Y,P,W)}function kY(S,Y,P,W,x,$){let J=uY(S,$),X=J?Z.createElementNS(J,S):Z.createElement(S),j=qS(X,Y),T=_S(X,Y),V=[];if(!OY.has(S)){let K=Y.dangerouslySetInnerHTML;if(K&&typeof K.__html==="string")X.innerHTML=K.__html;else V=RS(P,X,hY(S,J))}if(x)Z.insertBefore(W,X,x);else Z.appendChild(W,X);let G=mY(X,Y.ref);return{type:"element",node:X,children:V,eventCleanups:T,attrDisposers:j,refCleanup:G}}function vY(S,Y,P,W,x){let $=w(),J=o(S,Y,$);if($)$.children.push(J);let X=q(J),j,T;try{if(j=S(Y),j&&typeof j==="object"&&"tag"in j)T=A(j,P,W,x);else T=F(j,P,W,x)}catch(V){q(X),r(J,V);let G=Z.createTextNode("");if(W)Z.insertBefore(P,G,W);else Z.appendChild(P,G);return{type:"component",children:[{type:"text",node:G}],disposers:[],instance:J}}return q(X),J.element=T,{type:"component",children:[T],disposers:J.effects,instance:J}}function YY(S,Y,P,W){let x=Z.createComment("Sinwan-f");if(P)Z.insertBefore(Y,x,P);else Z.appendChild(Y,x);let $=[];for(let J of S)$.push(F(J,Y,P,W));return{type:"fragment",children:$,anchor:x}}function uY(S,Y){if(S==="svg")return PY;if(S==="math")return fY;return Y}function hY(S,Y){if(Y===PY&&S==="foreignObject")return null;return Y}function mY(S,Y){let P=Y;if(!P)return null;if(typeof P==="function")return P(S),()=>P(null);if(typeof P==="object"&&"current"in P)return P.current=S,()=>{P.current=null};return null}function F(S,Y,P=null,W=null){if(S==null||typeof S==="boolean"){let $=Z.createTextNode("");return z(Y,$,P),{type:"text",node:$}}if(typeof S==="string"){let $=Z.createTextNode(S);return z(Y,$,P),{type:"text",node:$}}if(typeof S==="number"){let $=Z.createTextNode(String(S));return z(Y,$,P),{type:"text",node:$}}if(S instanceof m){let $=Z.createTextNode(S.value);return z(Y,$,P),{type:"text",node:$}}if(k(S))return pY(S,Y,P,W);if(Array.isArray(S))return iY(S,Y,P,W);if(S instanceof Promise){let $=Z.createTextNode("");return z(Y,$,P),S.then((J)=>{let X=F(J,Y,$,W);Z.remove($)}),{type:"text",node:$}}if(typeof S==="object"&&"tag"in S)return A(S,Y,P,W);let x=Z.createTextNode(String(S));return z(Y,x,P),{type:"text",node:x}}function iY(S,Y,P,W){let x=Z.createComment("Sinwan-f");z(Y,x,P);let $=[];for(let J of S)$.push(F(J,Y,P,W));return{type:"fragment",children:$,anchor:x}}function RS(S,Y,P=null){let W=[];for(let x of S)W.push(F(x,Y,null,P));return W}function pY(S,Y,P,W){let x=Z.createComment("Sinwan-r"),$=Z.createComment("/Sinwan-r");z(Y,x,P),z(Y,$,P);let J=w(),X=null,j=!1,T={type:"reactive-block",startAnchor:x,endAnchor:$,children:[],dispose:()=>{}};return T.dispose=L(()=>{if(X)B(X);let V=H(S);if(X=F(V,Y,$,W),T.children=[X],j){if(J)I(J);E(J)}j=!0}),T}function z(S,Y,P){if(P)Z.insertBefore(S,Y,P);else Z.appendChild(S,Y)}function sY(S,Y,P){Y.innerHTML="";let W=P??{},x=o(S,W,null),$,J;q(x);try{if($=S(W),$ instanceof Promise){let X=document.createTextNode("");Y.appendChild(X),J={type:"text",node:X},$.then((j)=>{Y.innerHTML="",q(x),J=A(j,Y),q(null),x.element=J,I(x)})}else if($&&typeof $==="object"&&"tag"in $)J=A($,Y);else J=F($,Y)}catch(X){return q(null),r(x,X),{root:{type:"text",node:document.createTextNode("")},unmount(){}}}return q(null),x.element=J,I(x),{root:J,unmount(){v(x),Q(J),Y.innerHTML=""}}}function dY(S,Y){Y.innerHTML="";let P=F(S,Y);return{root:P,unmount(){Q(P),Y.innerHTML=""}}}export{Q as unmountNode,NS as toEventName,WY as setDOMOps,$Y as resetDOMOps,F as renderNodeToDOM,A as renderElementToDOM,RS as renderChildrenToDOM,dY as render,sY as mount,l as isEventProp,Z as domOps,_S as bindEvents,MS as bindEvent,qS as applyAttributes};
|
|
2
|
+
var LJ=Symbol("Fragment");class o extends String{value;constructor(J){super(J);this.value=J}toString(){return this.value}}var eZ=(J)=>new o(J);function l(J){if(J==null||typeof J==="boolean")return[];if(Array.isArray(J))return J.flat(1/0);return[J]}function QJ(J,Z,$){if(J===LJ)return{tag:"",props:{},children:$};if(typeof J==="function"||typeof J==="string"){let G=Z??{};if($.length>0&&G.children===void 0)G.children=$.length===1?$[0]:$;return{tag:J,props:G,children:$}}return{tag:"",props:{},children:$}}function J0(J,Z,$){return QJ(J,Z,l(Z?.children))}function Z0(J,Z,$){let G=Z?.children;return QJ(J,Z,Array.isArray(G)?G.flat(1/0):l(G))}function $0(J,Z,$,G,X,W){let q=G?Array.isArray(Z?.children)?Z.children.flat(1/0):l(Z?.children):l(Z?.children),L=QJ(J,Z,q);if(X)L.__source=X;return L}function FZ(){return{createElement(J){return document.createElement(J)},createElementNS(J,Z){return document.createElementNS(J,Z)},createTextNode(J){return document.createTextNode(J)},createComment(J){return document.createComment(J)},setAttribute(J,Z,$){J.setAttribute(Z,$)},removeAttribute(J,Z){J.removeAttribute(Z)},setProperty(J,Z,$){J[Z]=$},insertBefore(J,Z,$){J.insertBefore(Z,$)},appendChild(J,Z){J.appendChild(Z)},remove(J){J.parentNode?.removeChild(J)},setTextContent(J,Z){J.data=Z},addEventListener(J,Z,$){J.addEventListener(Z,$)},removeEventListener(J,Z,$){J.removeEventListener(Z,$)},parentNode(J){return J.parentNode},nextSibling(J){return J.nextSibling}}}var wJ=FZ(),Q={...wJ};function YZ(J){Object.assign(Q,J)}function KZ(){for(let J of Object.keys(Q))delete Q[J];Object.assign(Q,wJ)}var C=new Set,b=!1,jJ=!1,OJ=[];function yJ(J){if(!J.active)return;C.add(J),BZ()}function bJ(J){C.delete(J)}function BZ(){if(!b)b=!0,queueMicrotask(gJ)}function gJ(){jJ=!0;let J=[...C].sort((G,X)=>G.id-X.id);C.clear();for(let G of J)if(G.active)G.run();let Z=10;while(C.size>0&&Z-- >0){let G=[...C].sort((X,W)=>X.id-W.id);C.clear();for(let X of G)if(X.active)X.run()}b=!1,jJ=!1;let $=OJ.splice(0);for(let G of $)G()}function VJ(J){return new Promise((Z)=>{let $=()=>{J?.(),Z()};if(b||jJ)OJ.push($);else queueMicrotask($)})}function FJ(){if(b)b=!1,gJ()}var g=null,YJ=[],UZ=0;class r{id;active=!0;fn;cleanup=void 0;deps=new Set;constructor(J){this.id=UZ++,this.fn=J}run(){if(!this.active)return;if(YJ.includes(this))return;if(this.cleanupDeps(),this.cleanup)this.cleanup(),this.cleanup=void 0;YJ.push(this);let J=g;g=this;try{let Z=this.fn();if(typeof Z==="function")this.cleanup=Z}finally{g=J,YJ.pop()}}cleanupDeps(){for(let J of this.deps)J.subscribers.delete(this);this.deps.clear()}notify(){yJ(this)}dispose(){if(!this.active)return;if(this.active=!1,this.cleanup)this.cleanup(),this.cleanup=void 0;this.cleanupDeps(),bJ(this)}}function U(J){let Z=new r(J);return Z.run(),()=>Z.dispose()}function a(J){if(g)J.subscribers.add(g),g.deps.add(J)}function t(J){let Z=[...J.subscribers];for(let $ of Z)$.notify()}var kJ=Symbol("Sinwan:signal");class fJ{[kJ]=!0;subscribers=new Set;_value;_manualSubs=new Set;constructor(J){this._value=J}get value(){return a(this),this._value}set value(J){if(Object.is(this._value,J))return;this._value=J,t(this);for(let Z of this._manualSubs)Z(J)}peek(){return this._value}subscribe(J){return this._manualSubs.add(J),()=>{this._manualSubs.delete(J)}}toString(){return String(this.value)}valueOf(){return this.value}}function KJ(J){return new fJ(J)}function n(J){return J!=null&&typeof J==="object"&&kJ in J}var vJ=Symbol("Sinwan:computed");class hJ{[vJ]=!0;subscribers=new Set;_value;_dirty=!0;_effect;constructor(J){let Z=this;this._effect=new r(()=>{Z._value=J()}),this._effect.notify=function(){if(!Z._dirty)Z._dirty=!0,t(Z)},this._effect.run(),this._dirty=!1}get value(){if(a(this),this._dirty)this._effect.run(),this._dirty=!1;return this._value}peek(){if(this._dirty)this._effect.run(),this._dirty=!1;return this._value}toString(){return String(this.value)}valueOf(){return this.value}}function BJ(J){return new hJ(J)}function e(J){return J!=null&&typeof J==="object"&&vJ in J}var UJ=0;function HZ(J){UJ++;try{J()}finally{if(UJ--,UJ===0)FJ()}}function k(J){return n(J)||e(J)||typeof J==="function"}function H(J){if(n(J)||e(J))return J.value;if(typeof J==="function")return J();return J}function JJ(J){return J.length>2&&J.startsWith("on")}function uJ(J){return J.slice(2).toLowerCase()}function mJ(J,Z,$){return Q.addEventListener(J,Z,$),()=>{Q.removeEventListener(J,Z,$)}}function HJ(J,Z){let $=[];for(let G of Object.keys(Z))if(JJ(G)){let X=Z[G];if(typeof X==="function"){let W=uJ(G);$.push(mJ(J,W,X))}}return $}var _Z=0;function ZJ(J,Z,$){return{uid:_Z++,component:J,props:Z,element:null,parent:$,children:[],effects:[],_mountedHooks:[],_unmountedHooks:[],_updatedHooks:[],_errorHooks:[],provides:$?Object.create($.provides):Object.create(null),isMounted:!1,isUnmounted:!1}}var zJ=null;function x(){return zJ}function _(J){let Z=zJ;return zJ=J,Z}function pJ(J,Z){let $=_(J);try{return Z()}finally{_($)}}function T(J){if(J.isUnmounted)return;for(let Z of J.children)T(Z);if(!J.isMounted){J.isMounted=!0;for(let Z of J._mountedHooks)Z()}}function m(J){let Z=[...J.children];for(let $ of Z)m($);if(!J.isUnmounted){if(J.isUnmounted=!0,J.isMounted){J.isMounted=!1;for(let $ of J._unmountedHooks)$()}for(let $ of J.effects)$();if(J.effects.length=0,J.parent){let $=J.parent.children.indexOf(J);if($!==-1)J.parent.children.splice($,1)}}}function zZ(J){for(let Z of J._updatedHooks)Z()}var _J=new Set;function M(J){if(!J||!J.isMounted||J.isUnmounted||J._updatedHooks.length===0||_J.has(J))return;_J.add(J),VJ(()=>{if(_J.delete(J),J.isMounted&&!J.isUnmounted)zZ(J)})}function $J(J,Z){let $=J;while($){if($._errorHooks.length>0){for(let G of $._errorHooks)G(Z);return}$=$.parent}console.error("[Sinwan] Unhandled component error:",Z)}var AZ=new Set(["children","key","ref","dangerouslySetInnerHTML"]),AJ=new Set(["value","checked","selected","disabled","readOnly","multiple","indeterminate"]),RZ={className:"class",htmlFor:"for",tabIndex:"tabindex",crossOrigin:"crossorigin"};function xJ(J,Z){let $=[],G=x();for(let[X,W]of Object.entries(Z)){if(AZ.has(X)||JJ(X))continue;let q=dJ(X),L=q==="class"||q==="style";if(k(W)||L&&RJ(W)){let j={previousStyleProps:new Set},V=!1,Y=U(()=>{if(iJ(J,X,H(W),j),V)M(G);V=!0});$.push(Y)}else iJ(J,X,W)}return $}function iJ(J,Z,$,G){let X=dJ(Z);if(X==="style"&&typeof $==="object"&&$!==null){xZ(J,$,G);return}if(X==="class"&&typeof $==="object"&&$!==null){IZ(J,$);return}if($==null||$===!1){if(Q.removeAttribute(J,X),X==="style"&&G)G.previousStyleProps.clear();if(AJ.has(X))Q.setProperty(J,X,X==="value"?"":!1);return}if($===!0){if(Q.setAttribute(J,X,""),X==="style"&&G)G.previousStyleProps.clear();if(AJ.has(X))Q.setProperty(J,X,!0);return}if(AJ.has(X)){if(X==="style"&&G)G.previousStyleProps.clear();Q.setProperty(J,X,$);return}if(X==="style"&&G)G.previousStyleProps.clear();Q.setAttribute(J,X,String($))}function dJ(J){return RZ[J]??J}function xZ(J,Z,$){let G=cJ(Z),X=new Set;for(let[W,q]of Object.entries(G)){if(X.add(W),q==null){sJ(J,W);continue}let L=W.startsWith("--")?W:oJ(W);J.style.setProperty(L,String(q))}if(!$)return;for(let W of $.previousStyleProps)if(!X.has(W))sJ(J,W);$.previousStyleProps=X}function cJ(J){let Z=H(J);if(!Z)return{};if(typeof Z==="string")return PZ(Z);if(Array.isArray(Z))return Z.reduce(($,G)=>{let X=cJ(G);return Object.assign($,X)},{});if(typeof Z==="object"){let $={};for(let[G,X]of Object.entries(Z))$[G]=H(X);return $}return{}}function PZ(J){let Z={};return J.split(";").forEach(($)=>{let G=$.indexOf(":");if(G>0){let X=$.slice(0,G).trim(),W=$.slice(G+1).trim();if(X&&W)Z[X]=W}}),Z}function sJ(J,Z){let $=Z.startsWith("--")?Z:oJ(Z);J.style.removeProperty($)}function IZ(J,Z){Q.setAttribute(J,"class",lJ(Z))}function lJ(J){let Z=H(J);if(!Z)return"";if(typeof Z==="string")return Z;if(Array.isArray(Z))return Z.map(lJ).filter(Boolean).join(" ");if(typeof Z==="object")return Object.entries(Z).filter(([,$])=>Boolean(H($))).map(([$])=>$).join(" ");return String(Z)}function RJ(J){if(k(J))return!0;if(Array.isArray(J))return J.some(RJ);if(typeof J==="object"&&J!==null)return Object.values(J).some(RJ);return!1}function oJ(J){return J.replace(/[A-Z]/g,(Z)=>`-${Z.toLowerCase()}`)}var rJ=Symbol.for("Sinwan.Show"),aJ=Symbol.for("Sinwan.For"),tJ=Symbol.for("Sinwan.Switch"),nJ=Symbol.for("Sinwan.Match"),eJ=Symbol.for("Sinwan.Index"),JZ=Symbol.for("Sinwan.Key"),ZZ=Symbol.for("Sinwan.Dynamic"),$Z=Symbol.for("Sinwan.Portal");function PJ(J){return{tag:rJ,props:J,children:[]}}function IJ(J){return{tag:aJ,props:J,children:[]}}function SJ(J){return{tag:tJ,props:J,children:[]}}function SZ(J){return{tag:nJ,props:J,children:[]}}function DJ(J){return{tag:eJ,props:J,children:[]}}function TJ(J){return{tag:JZ,props:J,children:[]}}function XZ(J){return{tag:ZZ,props:J,children:[]}}function GZ(J){let{when:Z,as:$="span",style:G,children:X,...W}=J,q=BJ(()=>{let L=w(G),j=Boolean(w(Z));if(typeof L==="string")return j?L:CZ(L);let V=L&&typeof L==="object"?{...L}:{};return V.display=j?V.display:"none",V});return{tag:$,props:{...W,style:q,children:X},children:NZ(X)}}function WZ(J){return{tag:$Z,props:J,children:[]}}function DZ(J){return J!=null&&typeof J==="object"&&"tag"in J}function p(J){return J.tag===rJ}function i(J){return J.tag===aJ}function XJ(J){return J.tag===tJ}function TZ(J){return J.tag===nJ}function s(J){return J.tag===eJ}function d(J){return J.tag===JZ}function GJ(J){return J.tag===ZZ}function WJ(J){return J.tag===$Z}function qZ(J){let Z=J.props,$=f(Z.children??J.children),G=E($);return G!==void 0?G:Z.fallback}function E(J){for(let Z of J){if(Z==null||typeof Z==="boolean")continue;if(Array.isArray(Z)){let $=E(Z);if($!==void 0)return $;continue}if(DZ(Z)){let $=Z;if(typeof $.tag==="function"){let G=$.tag;if(G===SZ||G===PJ||G===IJ||G===DJ||G===TJ||G===SJ)$=G($.props)}if(TZ($)){let G=w($.props.when);if(G)return MZ($,G)}else if(p($)){let G=w($.props.when);if(G){let X=MJ($,G),W=E(f(X));if(W!==void 0)return W}else if($.props.fallback){let X=E(f($.props.fallback));if(X!==void 0)return X}}else if(i($)){let G=$.props,X=w(G.each);if(Array.isArray(X))for(let W=0;W<X.length;W++){let q=G.children(X[W],()=>W),L=E(f(q));if(L!==void 0)return L}}else if(s($)){let G=$.props,X=w(G.each);if(Array.isArray(X))for(let W=0;W<X.length;W++){let q=G.children(()=>X[W],W),L=E(f(q));if(L!==void 0)return L}}else if(d($)){let G=w($.props.when),X=NJ($,G),W=E(f(X));if(W!==void 0)return W}}}return}function MZ(J,Z){let $=J.props.children??J.children;if(typeof $==="function")return $(Z);return $}function MJ(J,Z){let $=J.props.children??J.children;if(typeof $==="function")return $(Z);return $}function NJ(J,Z){let $=J.props.children??J.children;if(typeof $==="function")return $(Z);return $}function f(J){if(J==null||typeof J==="boolean")return[];return Array.isArray(J)?J:[J]}function NZ(J){if(J==null||typeof J==="boolean")return[];return Array.isArray(J)?J:[J]}function w(J){return H(J)}function CZ(J){let Z=J.trim(),$=Z.length>0&&!Z.endsWith(";")?";":"";return`${Z}${$}display:none`}function O(J){switch(J.type){case"text":case"reactive-text":return[J.node];case"element":return[J.node];case"fragment":return[J.anchor,...J.children.flatMap((Z)=>O(Z))];case"reactive-block":return[J.startAnchor,...J.children.flatMap((Z)=>O(Z)),J.endAnchor];case"component":return J.children.flatMap((Z)=>O(Z));case"portal":return[J.anchor]}}function A(J){switch(J.type){case"text":break;case"reactive-text":J.dispose();break;case"element":for(let Z of J.attrDisposers)Z();for(let Z of J.eventCleanups)Z();J.refCleanup?.();for(let Z of J.children)A(Z);break;case"fragment":for(let Z of J.children)A(Z);break;case"reactive-block":J.dispose();for(let Z of J.children)A(Z);break;case"component":if(J.instance)m(J.instance);else for(let Z of J.disposers)Z();for(let Z of J.children)A(Z);break;case"portal":J.dispose();for(let Z of J.children)P(Z);J.children=[];break}}function P(J){let Z=O(J);A(J);for(let $ of Z)if($.parentNode)Q.remove($)}function LZ(J,Z,$,G){if(WJ(J))return kZ(J,Z,$,G);let X=Q.createComment("Sinwan-b"),W=Q.createComment("/Sinwan-b");CJ(Z,X,$),CJ(Z,W,$);let q=x(),L=()=>{},j={type:"reactive-block",dispose:()=>L(),children:[],startAnchor:X,endAnchor:W};if(p(J))L=EZ(J,j,Z,G,q);else if(i(J))L=wZ(J,j,Z,G,q);else if(XJ(J))L=OZ(J,j,Z,G,q);else if(s(J))L=yZ(J,j,Z,G,q);else if(d(J))L=bZ(J,j,Z,G,q);else if(GJ(J))L=gZ(J,j,Z,G,q);return j}function EZ(J,Z,$,G,X){let W=!1;return U(()=>{R(Z);let q=h(J.props.when);if(Z.children=v(X,()=>{let L=q?MJ(J,q):J.props.fallback;return y(L,$,Z.endAnchor,G,X)}),W)I(X);W=!0})}function wZ(J,Z,$,G,X){let W=!1,q=[];return U(()=>{let L=J.props,j=h(L.each),V=Array.isArray(j)?j:[],Y=L.children;if(typeof Y!=="function"){if(R(Z),q=[],W)M(X);W=!0;return}if(V.length===0){if(R(Z),q=[],Z.children=y(L.fallback,$,Z.endAnchor,G,X),W)I(X);W=!0;return}if(q.length===0&&Z.children.length>0)R(Z);let F=new Map;for(let B of q)F.set(B.key,B);let z=[];V.forEach((B,u)=>{let c=L.key?L.key(B,u):B,N=F.get(c);if(N&&N.item===B){N.index=u,hZ($,N.mounted,Z.endAnchor),z.push(N),F.delete(c);return}if(N)P(N.mounted),F.delete(c);let qJ={key:c,item:B,index:u,mounted:{type:"text",node:Q.createTextNode("")}};qJ.mounted=v(X,()=>K(Y(B,()=>qJ.index),$,Z.endAnchor,G)),z.push(qJ)});for(let B of F.values())P(B.mounted);if(q=z,Z.children=z.map((B)=>B.mounted),W)I(X);W=!0})}function OZ(J,Z,$,G,X){let W=!1;return U(()=>{R(Z);let q=v(X,()=>qZ(J));if(Z.children=y(q,$,Z.endAnchor,G,X),W)I(X);W=!0})}function yZ(J,Z,$,G,X){let W=!1,q=[];return U(()=>{let L=J.props,j=h(L.each),V=Array.isArray(j)?j:[],Y=L.children;if(typeof Y!=="function"){if(R(Z),q=[],W)M(X);W=!0;return}if(V.length===0){if(R(Z),q=[],Z.children=y(L.fallback,$,Z.endAnchor,G,X),W)I(X);W=!0;return}if(q.length===0&&Z.children.length>0)R(Z);for(let F=0;F<V.length;F++){let z=q[F];if(z){z.item.value=V[F];continue}let B=KJ(V[F]),u={item:B,mounted:v(X,()=>K(Y(()=>B.value,F),$,Z.endAnchor,G))};q.push(u)}while(q.length>V.length){let F=q.pop();P(F.mounted)}if(Z.children=q.map((F)=>F.mounted),W)I(X);W=!0})}function bZ(J,Z,$,G,X){let W=!1,q=!1,L;return U(()=>{let j=h(J.props.when);if(q&&Object.is(L,j))return;L=j,q=!0,R(Z);let V=v(X,()=>NJ(J,j));if(Z.children=y(V,$,Z.endAnchor,G,X),W)I(X);W=!0})}function gZ(J,Z,$,G,X){let W=!1,q=!1,L;return U(()=>{let j=h(J.props.component);if(q&&Object.is(L,j))return;L=j,q=!0,R(Z);let V=j?fZ(J,j):null;if(Z.children=y(V,$,Z.endAnchor,G,X),W)I(X);W=!0})}function kZ(J,Z,$,G){let X=Q.createComment("Sinwan-p");CJ(Z,X,$);let W=x(),q=()=>{},L=Q.createComment("Sinwan-pa"),j=null,V={type:"portal",anchor:X,children:[],dispose:()=>q(),targetAnchor:L},Y=!1;return q=U(()=>{let F=mZ(J.props.mount);if(F!==j){if(j)Q.remove(L);if(F)Q.appendChild(F,L);j=F,V.target=F}if(vZ(V),F)V.children=y(J.props.children??J.children,F,L,G,W);if(Y)I(W);Y=!0}),V}function fZ(J,Z){if(typeof Z!=="string"&&typeof Z!=="function")return null;let{component:$,...G}=J.props,X=uZ(G.children??J.children);return{tag:Z,props:G,children:X}}function y(J,Z,$,G,X){if(J==null||typeof J==="boolean")return[];return v(X,()=>{if(Array.isArray(J))return J.map((W)=>K(W,Z,$,G));return[K(J,Z,$,G)]})}function R(J){for(let Z of J.children)P(Z);J.children=[]}function vZ(J){for(let Z of J.children)P(Z);J.children=[]}function hZ(J,Z,$){for(let G of O(Z))Q.insertBefore(J,G,$);QZ(Z)}function QZ(J){if(J.type==="portal"){if(J.target&&J.targetAnchor){for(let Z of J.children)for(let $ of O(Z))Q.appendChild(J.target,$);Q.appendChild(J.target,J.targetAnchor)}}else if("children"in J&&Array.isArray(J.children))for(let Z of J.children)QZ(Z)}function I(J){if(J)T(J);M(J)}function v(J,Z){return J?pJ(J,Z):Z()}function h(J){return H(J)}function uZ(J){if(J==null||typeof J==="boolean")return[];return Array.isArray(J)?J:[J]}function mZ(J){let Z=h(J);if(Z==null)return typeof document>"u"?null:document.body;if(typeof Z==="string")return document.querySelector(Z);if(typeof Z==="function")return Z();if(typeof Z==="object"&&"nodeType"in Z)return Z;return null}function CJ(J,Z,$){if($)Q.insertBefore(J,Z,$);else Q.appendChild(J,Z)}var pZ=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),VZ="http://www.w3.org/2000/svg",iZ="http://www.w3.org/1998/Math/MathML";function S(J,Z,$=null,G=null){let{tag:X,props:W,children:q}=J;if(X===""||X===LJ)return jZ(q,Z,$,G);if(X===PJ||X===IJ||X===SJ||X===DJ||X===TJ||X===XZ||X===WZ)return S(X(W),Z,$,G);if(X===GZ)return S(X(W),Z,$,G);if(p(J)||i(J)||XJ(J)||s(J)||d(J)||GJ(J)||WJ(J))return LZ(J,Z,$,G);if(typeof X==="function")return dZ(X,W,Z,$,G);if(typeof X==="string")return sZ(X,W,q,Z,$,G);return jZ(q,Z,$,G)}function sZ(J,Z,$,G,X,W){let q=cZ(J,W),L=q?Q.createElementNS(q,J):Q.createElement(J),j=xJ(L,Z),V=HJ(L,Z),Y=[];if(!pZ.has(J)){let z=Z.dangerouslySetInnerHTML;if(z&&typeof z.__html==="string")L.innerHTML=z.__html;else Y=EJ($,L,lZ(J,q))}if(X)Q.insertBefore(G,L,X);else Q.appendChild(G,L);let F=oZ(L,Z.ref);return{type:"element",node:L,children:Y,eventCleanups:V,attrDisposers:j,refCleanup:F}}function dZ(J,Z,$,G,X){let W=x(),q=ZJ(J,Z,W);if(W)W.children.push(q);let L=_(q),j,V;try{if(j=J(Z),j&&typeof j==="object"&&"tag"in j)V=S(j,$,G,X);else V=K(j,$,G,X)}catch(Y){_(L),$J(q,Y);let F=Q.createTextNode("");if(G)Q.insertBefore($,F,G);else Q.appendChild($,F);return{type:"component",children:[{type:"text",node:F}],disposers:[],instance:q}}return _(L),q.element=V,{type:"component",children:[V],disposers:q.effects,instance:q}}function jZ(J,Z,$,G){let X=Q.createComment("Sinwan-f");if($)Q.insertBefore(Z,X,$);else Q.appendChild(Z,X);let W=[];for(let q of J)W.push(K(q,Z,$,G));return{type:"fragment",children:W,anchor:X}}function cZ(J,Z){if(J==="svg")return VZ;if(J==="math")return iZ;return Z}function lZ(J,Z){if(Z===VZ&&J==="foreignObject")return null;return Z}function oZ(J,Z){let $=Z;if(!$)return null;if(typeof $==="function")return $(J),()=>$(null);if(typeof $==="object"&&"current"in $)return $.current=J,()=>{$.current=null};return null}function K(J,Z,$=null,G=null){if(J==null||typeof J==="boolean"){let W=Q.createTextNode("");return D(Z,W,$),{type:"text",node:W}}if(typeof J==="string"){let W=Q.createTextNode(J);return D(Z,W,$),{type:"text",node:W}}if(typeof J==="number"){let W=Q.createTextNode(String(J));return D(Z,W,$),{type:"text",node:W}}if(J instanceof o){let W=Q.createTextNode(J.value);return D(Z,W,$),{type:"text",node:W}}if(k(J))return aZ(J,Z,$,G);if(Array.isArray(J))return rZ(J,Z,$,G);if(J instanceof Promise){let W=Q.createTextNode("");return D(Z,W,$),J.then((q)=>{let L=K(q,Z,W,G);Q.remove(W)}),{type:"text",node:W}}if(typeof J==="object"&&"tag"in J)return S(J,Z,$,G);let X=Q.createTextNode(String(J));return D(Z,X,$),{type:"text",node:X}}function rZ(J,Z,$,G){let X=Q.createComment("Sinwan-f");D(Z,X,$);let W=[];for(let q of J)W.push(K(q,Z,$,G));return{type:"fragment",children:W,anchor:X}}function EJ(J,Z,$=null){let G=[];for(let X of J)G.push(K(X,Z,null,$));return G}function aZ(J,Z,$,G){let X=Q.createComment("Sinwan-r"),W=Q.createComment("/Sinwan-r");D(Z,X,$),D(Z,W,$);let q=x(),L=null,j=!1,V={type:"reactive-block",startAnchor:X,endAnchor:W,children:[],dispose:()=>{}};return V.dispose=U(()=>{if(L)P(L);let Y=H(J);if(L=K(Y,Z,W,G),V.children=[L],j){if(q)T(q);M(q)}j=!0}),V}function D(J,Z,$){if($)Q.insertBefore(J,Z,$);else Q.appendChild(J,Z)}function tZ(J,Z,$){Z.innerHTML="";let G=$??{},X=ZJ(J,G,null),W,q;_(X);try{if(W=J(G),W instanceof Promise){let L=document.createTextNode("");Z.appendChild(L),q={type:"text",node:L},W.then((j)=>{Z.innerHTML="",_(X),q=S(j,Z),_(null),X.element=q,T(X)})}else if(W&&typeof W==="object"&&"tag"in W)q=S(W,Z);else q=K(W,Z)}catch(L){return _(null),$J(X,L),{root:{type:"text",node:document.createTextNode("")},unmount(){}}}return _(null),X.element=q,T(X),{root:q,unmount(){m(X),A(q),Z.innerHTML=""}}}function nZ(J,Z){Z.innerHTML="";let $=K(J,Z);return{root:$,unmount(){A($),Z.innerHTML=""}}}export{A as unmountNode,uJ as toEventName,YZ as setDOMOps,KZ as resetDOMOps,K as renderNodeToDOM,S as renderElementToDOM,EJ as renderChildrenToDOM,nZ as render,tZ as mount,JJ as isEventProp,Q as domOps,HJ as bindEvents,mJ as bindEvent,xJ as applyAttributes};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=38B497FBF63C4B4764756E2164756E21
|