airx 0.3.0 → 0.3.1
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/output/esm/index.js
CHANGED
|
@@ -84,11 +84,14 @@ const airxElementSymbol = Symbol('airx-element');
|
|
|
84
84
|
*/
|
|
85
85
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
86
86
|
function createElement(type, props, ...children) {
|
|
87
|
+
const localChildren = children.length > 0
|
|
88
|
+
? children
|
|
89
|
+
: props.children;
|
|
87
90
|
return {
|
|
88
91
|
type,
|
|
89
92
|
props: {
|
|
90
93
|
...props,
|
|
91
|
-
children
|
|
94
|
+
children: localChildren
|
|
92
95
|
},
|
|
93
96
|
[airxElementSymbol]: true
|
|
94
97
|
};
|
package/output/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../source/render/common/hooks.ts","../../source/logger.ts","../../source/signal/index.ts","../../source/symbol.ts","../../source/element.ts","../../source/render/common/index.ts","../../source/render/server.ts","../../source/render/browser.ts","../../source/render/common/plugins/internal/basic.ts","../../source/render/common/plugins/internal/inject.ts","../../source/render/common/plugins/context.ts","../../source/index.ts"],"sourcesContent":["import { AirxComponentContext } from '../../element'\n\ninterface GlobalContext {\n current: AirxComponentContext | null\n}\n\nexport const globalContext: GlobalContext = {\n current: null\n}\n\nfunction useContext(): AirxComponentContext {\n if (globalContext.current == null) {\n throw new Error('Unable to find a valid component context')\n }\n\n return globalContext.current\n}\n\nexport const onMounted: AirxComponentContext['onMounted'] = (listener) => {\n return useContext().onMounted(listener)\n}\n\nexport const onUnmounted: AirxComponentContext['onUnmounted'] = (listener) => {\n return useContext().onUnmounted(listener)\n}\n\nexport const inject: AirxComponentContext['inject'] = (key) => {\n return useContext().inject(key)\n}\n\nexport const provide: AirxComponentContext['provide'] = (key, value) => {\n return useContext().provide(key, value)\n}\n","declare const process: { env?: { NODE_ENV?: string, AIRX_DEBUG?: string } } | undefined\nconst isPrintLogs = typeof process != 'undefined'\n && process?.env?.NODE_ENV === 'development'\n && process?.env?.AIRX_DEBUG === 'true'\n\nexport function createLogger(name: string) {\n function getPrintPrefix() {\n const date = new Date().toLocaleString()\n return `[${date}][${name}]`\n }\n\n function debug(...args: unknown[]) {\n if (isPrintLogs) console.log(getPrintPrefix(), ...args)\n }\n\n return { debug }\n}\n","// https://github.com/proposal-signals/signal-polyfill/issues/10\nimport type { Signal as Polyfill } from 'signal-polyfill'\n\nexport declare type Watcher = Polyfill.subtle.Watcher\n\nlet firstSignal: typeof Polyfill | undefined = undefined\n\ndeclare let self: unknown\ndeclare let window: unknown\ndeclare let global: unknown\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst globalNS: any = (function () {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n\n if (typeof self !== 'undefined') {\n return self\n }\n if (typeof window !== 'undefined') {\n return window\n }\n if (typeof global !== 'undefined') {\n return global\n }\n throw new Error('unable to locate global object')\n})()\n\n// 通过函数包装来延迟加载 Signal\n// 这对使用 Polyfill 的应用来说更友好\nfunction getSignal() {\n const globalSignal: typeof Polyfill = globalNS['Signal']\n if (globalSignal == null) throw new Error('Signal is undefined')\n if (firstSignal == null) firstSignal = globalSignal\n if (firstSignal !== globalSignal) throw new Error('Signal have multiple instances')\n\n return globalSignal\n}\n\nexport function createWatch(notify: (this: Polyfill.subtle.Watcher) => void): Polyfill.subtle.Watcher {\n const signal = getSignal()\n return new signal.subtle.Watcher(notify)\n}\n\nexport function createState<T>(initial: T, options?: Polyfill.Options<T> | undefined): Polyfill.State<T> {\n const signal = getSignal()\n return new signal.State(initial, options)\n}\n\nexport function createComputed<T>(computation: () => T, options?: Polyfill.Options<T> | undefined): Polyfill.Computed<T> {\n const signal = getSignal()\n return new signal.Computed(computation, options)\n}\n\nexport function isState<T>(target: unknown): target is Polyfill.State<T> {\n const signal = getSignal()\n return target instanceof signal.State\n}\n","export const airxElementSymbol = Symbol('airx-element')\nexport const airxReactiveDependenciesSymbol = Symbol('airx-dependencies')\n","import * as symbol from './symbol'\nimport { CSSProperties } from './types'\n\ntype AirxElementType<P> = string | AirxComponent<P>\n\nexport type Props = { [propKey: string]: unknown }\n\n/**\n * AirxElement 表示一个 Airx 元素\n * type 表示元素的类型,可能是一个 html 标签,\n * 也可能是一个自定义组件\n * props 表示元素的属性\n * children 表示元素的子元素\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface AirxElement<P = any> {\n type: AirxElementType<P>\n props: Props & P\n [symbol.airxElementSymbol]: true\n}\n\nexport type AirxChildren =\n | null\n | string\n | number\n | boolean\n | undefined\n | AirxElement\n | Array<AirxChildren>\n\n/**\n * 函数式组件接收自己的 props,并返回一个 AirxElement\n */\nexport type AirxComponentRender = () => AirxChildren\nexport type AirxComponent<P = unknown> = ReactiveComponent<P>\nexport type ReactiveComponent<P = unknown> = (props: P) => AirxComponentRender\n\n/**\n * createElement 是用于创建 AirxElement 的工具函数\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createElement<P = any>(\n type: AirxElementType<P>,\n props: { [key: string]: unknown } & P,\n ...children: AirxChildren[]\n): AirxElement<P> {\n return {\n type,\n props: {\n ...props,\n children\n },\n [symbol.airxElementSymbol]: true\n }\n}\n\nexport function isValidElement(element: unknown): element is AirxElement {\n return typeof element === 'object'\n && element !== null\n && Reflect.get(element, symbol.airxElementSymbol)\n}\n\nexport function Fragment(props: { children: AirxElement }) {\n return () => props.children\n}\n\nexport type AirxComponentUnmountedListener = () => void\nexport type AirxComponentMountedListener = () => (() => void) | void\n\nexport interface AirxComponentLifecycle {\n onMounted: (listener: AirxComponentMountedListener) => void\n onUnmounted: (listener: AirxComponentUnmountedListener) => void\n}\n\ntype ProvideUpdater<T = unknown> = (newValue: T | ((old: T) => T)) => void\n\nexport type AirxComponentContext = AirxComponentLifecycle & {\n provide: <T = unknown>(key: unknown, value: T) => ProvideUpdater<T>\n inject: <T = unknown>(key: unknown) => T | undefined\n}\n\nexport function component<P = unknown>(comp: AirxComponent<P>): AirxComponent<P> {\n return comp\n}\n\nexport function createErrorRender(error: unknown): AirxComponentRender {\n console.error(error)\n\n const handleClick = () => {\n // 点击输出错误是为了避免\n // 页面上多个组件同时出错时\n // 无法定位错误与之对应的组件\n console.error(error)\n }\n\n const formattingError = (): string => {\n if (error == null) return 'Unknown rendering error'\n if (error instanceof Error) return error.message\n return JSON.stringify(error)\n }\n\n const errorBlockStyle: CSSProperties = {\n padding: '8px',\n fontSize: '20px',\n color: 'rgb(255,255,255)',\n backgroundColor: 'rgb(255, 0, 0)',\n }\n\n return () => createElement('div', { style: errorBlockStyle, onClick: handleClick }, formattingError())\n}\n","import * as signal from '../../signal'\n\nimport { createLogger } from '../../logger'\nimport {\n AirxElement,\n AirxChildren,\n createElement,\n isValidElement,\n AirxComponentContext,\n AirxComponentMountedListener,\n AirxComponentUnmountedListener,\n AirxComponentRender,\n createErrorRender,\n} from '../../element'\nimport { PluginContext } from './plugins'\nimport { globalContext } from './hooks'\n\nexport type Disposer = () => void\n\nexport class InnerAirxComponentContext<E extends AbstractElement> implements AirxComponentContext {\n public instance!: Instance<E>\n private disposers = new Set<Disposer>()\n public providedMap = new Map<unknown, unknown>()\n public injectedMap = new Map<unknown, unknown>()\n private mountListeners = new Set<AirxComponentMountedListener>()\n private unmountedListeners = new Set<AirxComponentUnmountedListener>()\n\n public triggerMounted() {\n this.mountListeners.forEach(listener => {\n let disposer: Disposer | void = undefined\n\n try {\n disposer = listener()\n } catch (err: unknown) {\n console.error(err, listener)\n }\n\n if (typeof disposer === 'function') {\n this.addDisposer(disposer)\n }\n })\n // 生命周期只会调用一次\n this.mountListeners.clear()\n }\n\n public triggerUnmounted() {\n // 递归的调用子 child 的 Unmounted\n if (this.instance?.child != null) {\n this.instance.child.context.triggerUnmounted()\n }\n\n // 处理自己\n this.unmountedListeners.forEach(listener => {\n try {\n listener()\n } catch (err: unknown) {\n console.error(err, listener)\n }\n })\n\n // 处理兄弟节点\n if (this.instance?.sibling != null) {\n this.instance.sibling.context.triggerUnmounted()\n }\n\n this.dispose()\n }\n\n public onMounted(listener: AirxComponentMountedListener) {\n this.mountListeners.add(listener)\n }\n\n public onUnmounted(listener: AirxComponentUnmountedListener) {\n this.unmountedListeners.add(listener)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public provide<T = unknown>(key: any, value: any): (v: T | ((old: T) => T)) => void {\n this.providedMap.set(key, value)\n return v => {\n if (typeof v === 'function') {\n const old = this.providedMap.get(key)\n const func = v as (old: T) => T\n this.providedMap.set(key, func(old as T))\n return\n }\n\n this.providedMap.set(key, v)\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public inject<T = unknown>(key: any): T | undefined {\n const getProvideValueForParent = (instance: Instance<E> | undefined, key: unknown): unknown => {\n if (instance && instance.context) {\n const value = instance.context.providedMap.get(key)\n if (value != undefined) return value\n if (instance.parent) return getProvideValueForParent(instance.parent, key)\n }\n\n return undefined\n }\n\n const currentParentValue = getProvideValueForParent(this.instance.parent, key)\n this.injectedMap.set(key, currentParentValue) // 更新本地值\n return this.injectedMap.get(key) as T\n }\n\n addDisposer(...disposers: Disposer[]) {\n disposers.forEach(disposer => {\n this.disposers.add(disposer)\n })\n }\n\n dispose() {\n this.disposers.forEach(\n (disposer: Disposer) => {\n try {\n disposer()\n } catch (err: unknown) {\n // eslint-disable-next-line no-console\n console.error(err, disposer)\n }\n }\n )\n\n this.disposers.clear()\n this.injectedMap.clear()\n this.providedMap.clear()\n this.mountListeners.clear()\n this.unmountedListeners.clear()\n }\n\n /**\n * 当 context 传递给外部消费时,隐藏内部实现,仅暴露接口定义的内容\n * @returns 和 AirxComponentContext 接口完全一致的对象\n */\n public getSafeContext(): AirxComponentContext {\n return {\n inject: k => this.inject(k),\n provide: (k, v) => this.provide(k, v),\n onMounted: listener => this.onMounted(listener),\n onUnmounted: listener => this.onUnmounted(listener)\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface AbstractElement {\n\n}\n\n/**\n * 树结构\n * instance ←--------------\n * | ↑ ↑\n * child parent parent\n * ↓ | |\n * instance -sibling→ instance...\n */\nexport interface Instance<E extends AbstractElement = AbstractElement> {\n domRef?: E\n\n child?: Instance<E> // 子节点\n parent?: Instance<E> // 父节点\n sibling?: Instance<E> // 兄弟节点\n deletions?: Set<Instance<E>> // 需要移除的实例\n\n element?: AirxElement\n beforeElement?: AirxElement\n signalWatcher?: signal.Watcher\n childrenRender?: AirxComponentRender\n\n needReRender?: boolean\n elementNamespace?: string\n context: InnerAirxComponentContext<E>\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n memoProps?: any // props 的引用\n}\n\n\n/**\n * 更新 children\n * @param parentInstance 当前正在处理的组件的实例\n * @param children 当前组件的子节点\n */\nexport function reconcileChildren<E extends AbstractElement>(appContext: PluginContext, parentInstance: Instance<E>, childrenElementArray: AirxElement[]) {\n const logger = createLogger('reconcileChildren')\n logger.debug('reconcileChildren', parentInstance, childrenElementArray)\n // parentInstance ←-------- \n // | ↑ ↑\n // child parent parent\n // ↓ | |\n // instance -sibling→ instance -→ ....\n\n /**\n * 内部通过 index 生成 element 的 key\n * 通过前缀来避免和用户手动设置的 key 发生冲突\n * @param index \n * @returns 生成的 key\n */\n function getInnerElementIndexKey(index: number): string {\n return `airx-element-inner-key:${index}`\n }\n\n /**\n * 将 children 实例链转成 Map 便于此处消费\n * @param firstChild children 实例的第一个元素\n * @returns 从 firstChild 开始之后的所有 sibling 实例组成的 Map\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getChildrenInstanceMap(firstChild?: Instance<E>): Map<any, Instance<E>> {\n // 不使用递归是因为递归容易爆栈\n let nextIndex = 0\n let nextChild = firstChild\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const map = new Map<any, Instance<E>>()\n\n while (nextChild) {\n /* 如果有 key,则将 key 作为 map key,否则将 index 作为 key */\n if (nextChild.element?.props.key != null) {\n map.set(nextChild.element?.props.key, nextChild)\n } else {\n map.set(getInnerElementIndexKey(nextIndex), nextChild)\n }\n\n nextChild = nextChild.sibling\n nextIndex += 1\n }\n\n return map\n }\n\n const newChildrenInstanceArray: Instance<E>[] = []\n const childrenInstanceMap = getChildrenInstanceMap(parentInstance.child)\n\n function getChildInstance(child: AirxElement, index: number): [Instance<E> | null, () => void] {\n if (child.props.key != null) {\n const key = child.props.key\n const instance = childrenInstanceMap.get(key) || null\n return [instance, () => childrenInstanceMap.delete(key)]\n }\n\n const innerKey = getInnerElementIndexKey(index)\n const instance = childrenInstanceMap.get(innerKey) || null\n return [instance, () => childrenInstanceMap.delete(innerKey)]\n }\n\n /** 是否复用实例 */\n function isReuseInstance(instance: Instance<E>, nextElement: AirxElement): boolean {\n for (const plugin of appContext.plugins) {\n if (typeof plugin.isReuseInstance === 'function') {\n const result = plugin.isReuseInstance(instance, nextElement)\n // 任意一个插件要求不复用就不复用\n if (result === false) return false\n }\n }\n return true\n }\n\n function updateMemoProps(instance: Instance<E>) {\n if (instance.element == null) return\n if (instance.memoProps == null) instance.memoProps = {}\n // 简单来说就是以下几件事情\n // 始终保持 props 的引用不变\n // 1. 创建一个新对象来保存 beforeElement props 的状态\n // 2. 将新的 element 上的 props 引用设置为之前的 props\n // 3. 将新的 element 上的 props 更新到之前的 props 上去\n\n if (instance.memoProps != null) {\n for (const key in instance.memoProps) {\n delete instance.memoProps[key]\n }\n }\n\n // 将新的 props 更新上去\n for (const key in instance.element.props) {\n const value = instance.element.props[key]\n instance.memoProps[key] = value\n }\n }\n\n function isNeedReRender(instance: Instance<E>): boolean {\n for (const plugin of appContext.plugins) {\n if (typeof plugin.isReRender === 'function') {\n const result = plugin.isReRender(instance)\n // 任意一个插件要求重新渲染就重新渲染\n if (result === true) return true\n }\n }\n\n return false\n }\n\n function getElementNamespace(element: AirxElement): string {\n const ns = Object.keys(element.props)\n .filter(key => (key === 'xmlns' || key.startsWith('xmlns:')))\n .sort((a, b) => a.length - b.length)\n\n if (ns.length > 1) {\n console.log('airx currently does not support setting multiple xmlns')\n return ''\n }\n\n if (ns.some(i => i.startsWith('xmlns:'))) {\n console.log('airx does not currently support setting named namespaces,only supports default')\n return ''\n }\n\n // 原则上来说 html 仅支持设置默认的 namespace\n return element.props[ns[0]]\n }\n\n // 依次遍历 child 并和 instance 对比\n for (let index = 0; index < childrenElementArray.length; index++) {\n const element = childrenElementArray[index]\n const [instance, seize] = getChildInstance(element, index)\n\n if (instance && isReuseInstance(instance, element)) {\n seize() // 从 childrenInstanceMap 中释放\n newChildrenInstanceArray.push(instance)\n instance.beforeElement = instance.element\n instance.element = element\n updateMemoProps(instance)\n\n // 如果父组件更新了,子组件全部都要更新\n if (instance.needReRender !== true && typeof element.type === 'function') {\n instance.needReRender = parentInstance.needReRender || isNeedReRender(instance)\n }\n } else {\n const context = new InnerAirxComponentContext<E>()\n const elementNamespace = getElementNamespace(element)\n const instance: Instance<E> = { element, context, elementNamespace }\n newChildrenInstanceArray.push(instance)\n context.instance = instance\n updateMemoProps(instance)\n\n // 添加 ref 处理\n if ('ref' in instance.memoProps) {\n context.onMounted(() => {\n const ref = instance.memoProps.ref\n // 如果组件有自己的 dom 并且 ref 为 state\n if (instance.domRef && signal.isState(ref)) {\n ref.set(instance.domRef)\n return () => ref.set(undefined)\n }\n })\n }\n }\n }\n\n // 新的 node\n for (let index = 0; index < newChildrenInstanceArray.length; index++) {\n const instance = newChildrenInstanceArray[index]\n\n // 确保链的干净\n instance.parent = parentInstance\n if (index === 0) parentInstance.child = instance\n if (index > 0) newChildrenInstanceArray[index - 1].sibling = instance\n if (index === newChildrenInstanceArray.length - 1) delete instance.sibling\n\n // 处理 ElementNS: 继承父级 namespace\n if (!instance.elementNamespace && instance.parent?.elementNamespace) {\n // SVG 中 foreignObject 代表外来对象,起到隔离 namespace 的作用\n if (instance.parent.element?.type !== 'foreignObject') {\n instance.elementNamespace = instance.parent.elementNamespace\n }\n }\n }\n\n // 剩余的是需要移除的\n if (childrenInstanceMap.size > 0) {\n if (parentInstance.deletions == null) {\n parentInstance.deletions = new Set()\n }\n\n childrenInstanceMap.forEach(instance => {\n parentInstance.deletions?.add(instance)\n })\n }\n\n logger.debug('parentInstance', parentInstance)\n}\n\ntype OnUpdateRequire<E extends AbstractElement> = (instance: Instance<E>) => void\n\n/**\n * 处理单个 instance\n * @param instance 当前处理的实例\n * @returns 返回下一个需要处理的 instance\n */\nexport function performUnitOfWork<E extends AbstractElement>(pluginContext: PluginContext, instance: Instance<E>, onUpdateRequire?: OnUpdateRequire<E>): Instance<E> | null {\n const element = instance.element\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function childrenAsElements(children: AirxChildren): AirxElement<any>[] {\n const childrenAsArray = Array.isArray(children) ? children : [children]\n function isComment(element: AirxChildren): boolean {\n if (element === '') return true\n if (element == null) return true\n if (element === false) return true\n return false\n }\n\n return childrenAsArray.flat(3).map(element => {\n if (isValidElement(element)) return element\n const elementType = isComment(element) ? 'comment' : 'text'\n const textContent = element === '' ? 'empty-string' : String(element)\n return createElement(elementType, { textContent })\n })\n }\n\n // airx 组件\n if (typeof element?.type === 'function') {\n if (instance.signalWatcher == null) {\n // Watch 是惰性的,只有当 Signal 被读取时才会触发 --!\n const signalWatcher = signal.createWatch(async () => {\n instance.needReRender = true\n onUpdateRequire?.(instance)\n\n queueMicrotask(() => {\n signalWatcher.watch()\n const paddings = signalWatcher.getPending()\n for (const padding of paddings) padding.get()\n })\n })\n\n instance.signalWatcher = signalWatcher\n instance.context.addDisposer(() => signalWatcher.unwatch())\n }\n\n if (instance.childrenRender == null) {\n const component = element.type\n const beforeContext = globalContext.current\n globalContext.current = instance.context.getSafeContext()\n\n let componentReturnValue: AirxComponentRender | undefined = undefined\n\n try {\n componentReturnValue = component(instance.memoProps)\n } catch (error) {\n componentReturnValue = createErrorRender(error)\n }\n\n if (typeof componentReturnValue !== 'function') {\n const error = new Error('Component must return a render function')\n componentReturnValue = createErrorRender(error.message)\n }\n\n // restore context\n globalContext.current = beforeContext\n instance.childrenRender = componentReturnValue\n const childrenComputed = signal.createComputed(() => {\n try {\n return instance.childrenRender!()\n } catch (error) {\n return createErrorRender(error)()\n }\n })\n instance.signalWatcher.watch(childrenComputed)\n const children = childrenComputed.get()\n\n reconcileChildren(pluginContext, instance, childrenAsElements(children))\n }\n\n if (instance.needReRender) {\n let children: AirxChildren\n\n try {\n // 如果是由于父组件导致的子组件渲染\n // 直接使用 childrenComputed.get() 将读取到缓存值\n // 因此这里使用 childrenRender 来更新 children 的值\n children = instance.childrenRender!()\n } catch (error) {\n children = createErrorRender(error)()\n }\n\n reconcileChildren(pluginContext, instance, childrenAsElements(children))\n delete instance.needReRender\n }\n }\n\n // 浏览器组件/标签\n if (typeof element?.type === 'string') {\n if ('children' in element.props && Array.isArray(element.props.children)) {\n reconcileChildren(pluginContext, instance, childrenAsElements(element.props.children))\n }\n }\n\n // 优先处理 child\n if (instance.child) {\n return instance.child\n }\n\n /**\n * 递归向上查找可用的兄弟 instance\n * @param instance \n * @returns 返回下一个需要处理的兄弟 instance\n */\n function returnSibling(instance: Instance<E>): Instance<E> | null {\n if (instance.sibling) {\n return instance.sibling\n }\n if (instance.parent) {\n return returnSibling(instance.parent)\n }\n\n return null\n }\n\n return returnSibling(instance)\n}\n","import { CSSProperties } from '..'\nimport { AirxElement } from '../element'\nimport { createLogger } from '../logger'\nimport { InnerAirxComponentContext, Instance, performUnitOfWork, AbstractElement } from './common'\nimport { PluginContext } from './common/plugins'\n\nfunction camelToKebab(str: string): string {\n return str.replace(/([A-Z])/g, (match, p1, offset) => {\n if (offset === 0) {\n return p1.toLowerCase()\n } else {\n return '-' + p1.toLowerCase()\n }\n })\n}\n\nclass ServerElement implements AbstractElement {\n static createTextNode(content: string) {\n const dom = new ServerElement('#text')\n dom.content = content\n return dom\n }\n\n static createComment(content: string) {\n const dom = new ServerElement('#comment')\n dom.content = content\n return dom\n }\n\n static createElement(tag: string) {\n return new ServerElement(tag)\n }\n\n constructor(public nodeName: string) {\n this.style = {}\n this.content = ''\n this.children = []\n this.className = ''\n this.attributes = new Map()\n }\n\n\n readonly firstChild?: ServerElement\n readonly nextSibling?: ServerElement\n readonly parentNode?: ServerElement\n\n readonly className: string\n readonly style: CSSProperties\n private content: string\n private children: ServerElement[]\n private attributes: Map<string, string>\n\n removeChild(dom: ServerElement) {\n /* eslint-disable @typescript-eslint/ban-ts-comment */\n const index = this.children.findIndex(v => v === dom)\n if (index != -1) this.children.splice(index, 1)\n // @ts-ignore\n this.firstChild = undefined\n // @ts-ignore\n this.nextSibling = undefined\n // @ts-ignore\n this.parentNode = undefined\n /* eslint-enable @typescript-eslint/ban-ts-comment */\n }\n\n appendChild(dom: ServerElement) {\n /* eslint-disable @typescript-eslint/ban-ts-comment */\n // @ts-ignore\n dom.parentNode = this\n\n if (this.children.length > 0) {\n // @ts-ignore\n this.children[this.children.length - 1].nextSibling = dom\n }\n\n // @ts-ignore\n this.firstChild = this.children[0]\n this.children.push(dom)\n /* eslint-enable @typescript-eslint/ban-ts-comment */\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setAttribute(name: string, value: any) {\n if (value === '') return this.attributes.delete(name)\n /* eslint-disable @typescript-eslint/ban-ts-comment */\n // @ts-ignore\n if (name === 'class') return this.className = value\n // @ts-ignore\n if (name === 'style') return this.style = value\n /* eslint-enable @typescript-eslint/ban-ts-comment */\n this.attributes.set(name, value)\n }\n\n removeAttribute(name: string) {\n this.attributes.delete(name)\n }\n\n toString(): string {\n if (this.nodeName === '#text') return this.content\n if (this.nodeName === '#comment') return this.content\n\n const styleString = Object.entries(this.style)\n .map(([key, value]) => `${camelToKebab(key)}:${value}`)\n .join(';')\n\n const attributes = [...this.attributes.entries()]\n if (styleString.length > 0) attributes.push(['style', styleString])\n if (this.className.length > 0) attributes.push(['class', this.className])\n const attributesString = attributes.map(([name, value]) => ` ${name}=\"${value}\"`).join('')\n return `<${this.nodeName}${attributesString}>${this.children.map(child => child.toString()).join('')}</${this.nodeName}>`\n }\n}\n\ninterface RenderContext {\n rootInstance: Instance<ServerElement>\n needCommitDom: boolean\n nextUnitOfWork: Instance<ServerElement> | null\n}\n\ntype ServerCompleteHandler = (data: string) => void\n\nexport function render(pluginContext: PluginContext, element: AirxElement, onComplete: ServerCompleteHandler) {\n const rootInstance: Instance<ServerElement> = {\n domRef: ServerElement.createElement('div'),\n context: new InnerAirxComponentContext()\n }\n rootInstance.context.instance = rootInstance\n\n const context: RenderContext = {\n rootInstance,\n nextUnitOfWork: null,\n needCommitDom: false\n }\n\n const appInstance: Instance<ServerElement> = {\n element,\n parent: context.rootInstance,\n memoProps: { ...element.props },\n context: new InnerAirxComponentContext()\n }\n\n appInstance.context.instance = appInstance\n\n context.rootInstance.child = appInstance\n context.nextUnitOfWork = appInstance\n\n /**\n * 提交 Dom 变化\n */\n function commitDom(rootInstance: Instance<ServerElement>, rootNode?: ServerElement) {\n const logger = createLogger('commitDom')\n logger.debug('commitDom', rootInstance)\n\n type PropsType = Record<string, unknown>\n\n function updateDomProperties(dom: ServerElement, nextProps: PropsType, prevProps: PropsType = {}) {\n const isKey = (key: string) => key === 'key'\n const isRef = (key: string) => key === 'ref'\n const isStyle = (key: string) => key === 'style'\n const isClass = (key: string) => key === 'class'\n const isEvent = (key: string) => key.startsWith(\"on\")\n const isChildren = (key: string) => key === 'children'\n const isGone = (_prev: PropsType, next: PropsType) => (key: string) => !(key in next)\n const isNew = (prev: PropsType, next: PropsType) => (key: string) => prev[key] !== next[key]\n const isProperty = (key: string) => !isChildren(key) && !isEvent(key) && !isStyle(key) && !isClass(key) && !isKey(key) && !isRef(key)\n\n // https://developer.mozilla.org/zh-CN/docs/Web/API/Node\n if (dom.nodeName === '#text' || dom.nodeName === '#comment') {\n const textNode = (dom as unknown as Text | Comment)\n if (textNode.nodeValue !== nextProps.textContent) {\n textNode.nodeValue = String(nextProps.textContent)\n }\n return\n }\n\n // remove old style\n const oldStyle = prevProps?.style\n if (typeof oldStyle === 'object' && oldStyle != null) {\n Object.keys(oldStyle).forEach(key => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n delete dom.style[key as any]\n /* eslint-enable @typescript-eslint/no-explicit-any */\n })\n }\n\n // add new style\n const newStyle = nextProps?.style\n if (typeof newStyle === 'object' && newStyle != null) {\n Object.keys(newStyle).forEach((key: unknown) => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const value = (newStyle as any)?.[key as any]\n dom.style[key as any] = value == null ? '' : value\n /* eslint-enable @typescript-eslint/no-explicit-any */\n })\n }\n\n if (dom.className !== nextProps?.class) {\n if (!nextProps?.class) {\n dom.removeAttribute('class')\n } else if (typeof nextProps?.class === 'string') {\n dom.setAttribute('class', nextProps?.class)\n }\n }\n\n // Remove old properties\n Object.keys(prevProps)\n .filter(isProperty)\n .filter(isGone(prevProps, nextProps))\n .forEach(name => dom.removeAttribute(name))\n\n // Set new or changed properties\n Object.keys(nextProps)\n .filter(isProperty)\n .filter(isNew(prevProps, nextProps))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .forEach(name => dom.setAttribute(name, nextProps[name] as any))\n }\n\n function getParentDom(instance: Instance<ServerElement>): ServerElement {\n if (instance.parent?.domRef != null) {\n return instance.parent.domRef\n }\n if (instance.parent) {\n return getParentDom(instance.parent)\n }\n\n throw new Error('Cant find dom')\n }\n\n /**\n * 查找 instance 下所有的一级 dom\n * @param instance \n * @returns \n */\n function getChildDoms(instance: Instance<ServerElement>): ServerElement[] {\n const domList: ServerElement[] = []\n const todoList: Instance<ServerElement>[] = [instance]\n\n while (todoList.length > 0) {\n const current = todoList.pop()\n\n // 找到真实 dom 直接提交\n if (current?.domRef != null) {\n domList.push(current.domRef)\n }\n\n // 有子节点但是无真实 dom,向下继续查找\n if (current?.domRef == null) {\n if (current?.child != null) {\n todoList.push(current.child)\n }\n }\n\n // 可能有兄弟节点,则需要继续查找\n if (current?.sibling != null) {\n todoList.push(current.sibling)\n }\n }\n\n return domList\n }\n\n function commitInstanceDom(nextInstance: Instance<ServerElement>, oldNode?: ServerElement) {\n // 移除标删元素\n if (nextInstance.deletions) {\n for (const deletion of nextInstance.deletions) {\n const domList = getChildDoms(deletion)\n for (let index = 0; index < domList.length; index++) {\n const dom = domList[index]\n if (dom && dom.parentNode) dom.parentNode.removeChild(dom)\n }\n deletion.context.triggerUnmounted()\n }\n\n nextInstance.deletions.clear()\n }\n\n // 创建 dom\n if (nextInstance.domRef == null) {\n if (nextInstance.element == null) throw new Error('???')\n if (typeof nextInstance.element.type === 'string') {\n if (nextInstance.element.type === 'text') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = ServerElement.createTextNode(textContent as string) as any\n } else if (nextInstance.element.type === 'comment') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = ServerElement.createComment(textContent as string) as any\n } else {\n nextInstance.domRef = ServerElement.createElement(nextInstance.element.type)\n }\n }\n }\n\n // 更新属性\n if (nextInstance.domRef != null && nextInstance.element != null) {\n updateDomProperties(\n nextInstance.domRef,\n nextInstance.element.props,\n nextInstance.beforeElement?.props\n )\n }\n\n // 插入 parent\n // TODO: 针对仅移动时优化\n if (nextInstance.domRef != null) {\n if (oldNode !== nextInstance.domRef) {\n if (nextInstance.domRef.parentNode) {\n nextInstance.domRef.parentNode.removeChild(nextInstance.domRef)\n }\n\n const parentDom = getParentDom(nextInstance)\n parentDom.appendChild(nextInstance.domRef)\n }\n }\n }\n\n function commitWalkV2(initInstance: Instance<ServerElement>, initNode?: ServerElement) {\n // 创建一个栈,将根节点压入栈中\n\n type StackLayer = [Instance<ServerElement>, ServerElement | undefined] | (() => void)\n const stack: StackLayer[] = [[initInstance, initNode]]\n\n while (stack.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const stackLayer = stack.pop()!\n if (typeof stackLayer === 'function') {\n stackLayer()\n continue\n }\n\n const [instance, node] = stackLayer\n commitInstanceDom(instance, node)\n\n // stack 是先入后出\n // 实际上是先渲染 child\n // 这里然后再渲染 sibling\n\n // 执行生命周期的 Mount\n stack.push(() => instance.context.triggerMounted())\n\n // 更新下一个兄弟节点\n if (instance.sibling != null) {\n const siblingNode = instance.domRef\n ? instance.domRef.nextSibling\n : node?.nextSibling\n\n stack.push([instance.sibling, siblingNode || undefined])\n }\n\n // 更新下一个子节点\n if (instance.child != null) {\n const childNode = instance.domRef\n ? instance.domRef.firstChild\n : node\n\n stack.push([instance.child, childNode || undefined])\n }\n }\n }\n\n commitWalkV2(rootInstance, rootNode)\n }\n\n while (context.nextUnitOfWork) {\n context.nextUnitOfWork = performUnitOfWork<ServerElement>(\n pluginContext,\n context.nextUnitOfWork\n )\n }\n\n commitDom(\n context.rootInstance.child,\n context.rootInstance.domRef?.firstChild || undefined\n )\n\n onComplete(context.rootInstance.domRef?.toString() || '')\n}\n","import { AirxElement } from '../element'\nimport { createLogger } from '../logger'\nimport { PluginContext } from './common/plugins'\nimport { AbstractElement, InnerAirxComponentContext, Instance, performUnitOfWork } from './common'\n\nclass BrowserElement extends Element implements AbstractElement {}\n\ninterface RenderContext {\n rootInstance: Instance<BrowserElement>\n needCommitDom: boolean\n nextUnitOfWork: Instance<BrowserElement> | null\n}\n\nexport function render(pluginContext: PluginContext, element: AirxElement, domRef: BrowserElement) {\n const rootInstance: Instance<BrowserElement> = {\n domRef,\n context: new InnerAirxComponentContext()\n }\n rootInstance.context.instance = rootInstance\n\n const context: RenderContext = {\n rootInstance,\n nextUnitOfWork: null,\n needCommitDom: false\n }\n\n const appInstance: Instance<BrowserElement> = {\n element,\n parent: context.rootInstance,\n memoProps: { ...element.props },\n context: new InnerAirxComponentContext()\n }\n\n appInstance.context.instance = appInstance\n\n context.rootInstance.child = appInstance\n context.nextUnitOfWork = appInstance\n\n /**\n * 提交 Dom 变化\n */\n function commitDom(rootInstance: Instance<BrowserElement>, rootNode?: ChildNode) {\n const logger = createLogger('commitDom')\n logger.debug('commitDom', rootInstance)\n\n type PropsType = Record<string, unknown>\n\n function updateDomProperties(dom: BrowserElement, nextProps: PropsType, prevProps: PropsType = {}) {\n for (const plugin of pluginContext.plugins) {\n if (plugin.updateDom) plugin.updateDom(dom, nextProps, prevProps)\n }\n }\n\n function getParentDom(instance: Instance<BrowserElement>): BrowserElement {\n if (instance.parent?.domRef != null) {\n return instance.parent.domRef\n }\n if (instance.parent) {\n return getParentDom(instance.parent)\n }\n\n throw new Error('Cant find dom')\n }\n\n /**\n * 查找 instance 下所有的一级 dom\n * @param instance \n * @returns \n */\n function getChildDoms(instance: Instance<BrowserElement>): BrowserElement[] {\n const domList: BrowserElement[] = []\n const todoList: Instance<BrowserElement>[] = [instance]\n\n while (todoList.length > 0) {\n const current = todoList.pop()\n\n // 找到真实 dom 直接提交\n if (current?.domRef != null) {\n domList.push(current.domRef)\n }\n\n // 有子节点但是无真实 dom,向下继续查找\n if (current?.domRef == null) {\n if (current?.child != null) {\n todoList.push(current.child)\n }\n }\n\n // 可能有兄弟节点,则需要继续查找\n if (current?.sibling != null) {\n todoList.push(current.sibling)\n }\n }\n\n return domList\n }\n\n function commitInstanceDom(nextInstance: Instance<BrowserElement>, oldNode?: ChildNode) {\n // 移除标删元素\n if (nextInstance.deletions) {\n for (const deletion of nextInstance.deletions) {\n const domList = getChildDoms(deletion)\n for (let index = 0; index < domList.length; index++) {\n const dom = domList[index]\n if (dom && dom.parentNode) dom.parentNode.removeChild(dom)\n }\n deletion.context.triggerUnmounted()\n }\n\n nextInstance.deletions.clear()\n }\n\n // 创建 dom\n if (nextInstance.domRef == null) {\n if (nextInstance.element == null) throw new Error('???')\n if (typeof nextInstance.element.type === 'string') {\n if (nextInstance.element.type === 'text') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = document.createTextNode(textContent as string) as any\n } else if (nextInstance.element.type === 'comment') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = document.createComment(textContent as string) as any\n } else {\n nextInstance.domRef = nextInstance.elementNamespace\n ? document.createElementNS(nextInstance.elementNamespace, nextInstance.element.type)\n : document.createElement(nextInstance.element.type)\n }\n\n if (nextInstance.domRef) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (nextInstance.domRef as any).airxInstance = nextInstance\n }\n }\n }\n\n // 更新属性\n if (nextInstance.domRef != null && nextInstance.element != null) {\n updateDomProperties(\n nextInstance.domRef,\n nextInstance.element.props,\n nextInstance.beforeElement?.props\n )\n }\n\n // 插入 parent\n // TODO: 针对仅移动时优化\n if (nextInstance.domRef != null) {\n if (oldNode !== nextInstance.domRef) {\n if (nextInstance.domRef.parentNode) {\n nextInstance.domRef.parentNode.removeChild(nextInstance.domRef)\n }\n\n const parentDom = getParentDom(nextInstance)\n parentDom.appendChild(nextInstance.domRef)\n }\n }\n }\n\n function commitWalkV2(initInstance: Instance<BrowserElement>, initNode?: ChildNode) {\n // 创建一个栈,将根节点压入栈中\n\n type StackLayer = [Instance<BrowserElement>, ChildNode | undefined] | (() => void)\n const stack: StackLayer[] = [[initInstance, initNode]]\n\n while (stack.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const stackLayer = stack.pop()!\n if (typeof stackLayer === 'function') {\n stackLayer()\n continue\n }\n\n const [instance, node] = stackLayer\n commitInstanceDom(instance, node)\n\n // stack 是先入后出\n // 实际上是先渲染 child\n // 这里然后再渲染 sibling\n\n // 执行生命周期的 Mount\n stack.push(() => instance.context.triggerMounted())\n\n // 更新下一个兄弟节点\n if (instance.sibling != null) {\n const siblingNode = instance.domRef\n ? instance.domRef.nextSibling\n : node?.nextSibling\n\n stack.push([instance.sibling, siblingNode || undefined])\n }\n\n // 更新下一个子节点\n if (instance.child != null) {\n const childNode = instance.domRef\n ? instance.domRef.firstChild\n : node\n\n stack.push([instance.child, childNode || undefined])\n }\n }\n }\n\n commitWalkV2(rootInstance, rootNode)\n }\n\n function onUpdateRequire() {\n if (context.nextUnitOfWork == null && context.rootInstance.child) {\n context.nextUnitOfWork = context.rootInstance.child\n }\n }\n\n /**\n * 调度\n */\n function workLoop(deadline?: IdleDeadline) {\n let shouldYield = false\n const logger = createLogger('workLoop')\n while (context.nextUnitOfWork && !shouldYield) {\n logger.debug('nextUnitOfWork', context.nextUnitOfWork)\n context.nextUnitOfWork = performUnitOfWork(pluginContext, context.nextUnitOfWork, onUpdateRequire) as Instance<BrowserElement>\n if (context.nextUnitOfWork == null) context.needCommitDom = true\n if (deadline) shouldYield = deadline.timeRemaining() < 1\n }\n\n if (context.needCommitDom && context.rootInstance.child) {\n commitDom(context.rootInstance.child,\n context.rootInstance.domRef?.firstChild || undefined\n )\n context.needCommitDom = false\n }\n\n // TODO: 兼容性\n requestIdleCallback(workLoop)\n }\n\n // 开始调度\n workLoop()\n return context.rootInstance\n}\n","import { AirxChildren, AirxElement, Props } from '../../../../element'\nimport { createLogger } from '../../../../logger'\nimport { Instance } from '../../index'\nimport { Plugin } from '../index'\n\nexport class BasicLogic implements Plugin {\n private logger = createLogger('basicLogicPlugin')\n\n private isSameProps(preProps: Props, nextProps: Props): boolean {\n if (Object.is(nextProps, preProps)) {\n return true\n }\n\n if (\n typeof preProps !== 'object'\n || typeof nextProps !== 'object'\n || preProps === null\n || nextProps === null\n ) {\n this.logger.debug('props must be an object')\n return false\n }\n\n // 对应 key 的值不相同返回 false\n const prevKeys = Object.keys(preProps)\n for (let index = 0; index < prevKeys.length; index++) {\n const key = prevKeys[index]\n if (key !== 'children' && key !== 'key') {\n if (!Object.hasOwn(nextProps, key)) return false\n if (!Object.is(preProps[key], nextProps[key])) return false\n }\n\n if (key === 'children') {\n const prevChildren = preProps['children'] as AirxChildren[]\n const nextChildren = nextProps['children'] as AirxChildren[]\n // children 都是空的,则无需更新\n if (prevChildren.length === 0 && nextChildren.length === 0) return true\n\n // 简单比较一下 child 的引用\n for (let index = 0; index < prevChildren.length; index++) {\n const prevChild = prevChildren[index]\n const nextChild = nextChildren[index]\n\n if (prevChild !== nextChild) return false\n if (typeof prevChild !== typeof nextChild) return false\n }\n }\n\n return true\n }\n\n return false\n }\n\n isReRender(instance: Instance): true | void {\n const nextProps = instance.element?.props\n const preProps = instance.beforeElement?.props\n if (!this.isSameProps(preProps, nextProps)) return true\n }\n\n updateDom(dom: Element, nextProps: Props, prevProps: Props = {}): void {\n this.logger.debug('updateDom', dom, nextProps, prevProps)\n const isKey = (key: string) => key === 'key'\n const isRef = (key: string) => key === 'ref'\n const isStyle = (key: string) => key === 'style'\n const isClass = (key: string) => key === 'class'\n const isEvent = (key: string) => key.startsWith(\"on\")\n const isChildren = (key: string) => key === 'children'\n const isGone = (_prev: Props, next: Props) => (key: string) => !(key in next)\n const isNew = (prev: Props, next: Props) => (key: string) => prev[key] !== next[key]\n const isProperty = (key: string) => !isChildren(key) && !isEvent(key) && !isStyle(key) && !isClass(key) && !isKey(key) && !isRef(key)\n\n // https://developer.mozilla.org/zh-CN/docs/Web/API/Node\n if (dom.nodeName === '#text' || dom.nodeName === '#comment') {\n const textNode = (dom as unknown as Text | Comment)\n if (textNode.nodeValue !== nextProps.textContent) {\n textNode.nodeValue = String(nextProps.textContent)\n }\n return\n }\n\n // remove old style\n const oldStyle = prevProps?.style\n if (typeof oldStyle === 'object' && oldStyle != null) {\n if (!('style' in dom) || !dom.style) return\n Object.keys(oldStyle).forEach(key => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n if ('style' in dom && dom.style) {\n delete (dom.style as any)[key as any]\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n })\n }\n\n // add new style\n const newStyle = nextProps?.style\n if (typeof newStyle === 'object' && newStyle != null) {\n if (!('style' in dom) || !dom.style) return\n Object.keys(newStyle).forEach((key: unknown) => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const value = (newStyle as any)?.[key as any];\n (dom.style as any)[key as any] = value == null ? '' : value\n /* eslint-enable @typescript-eslint/no-explicit-any */\n })\n }\n\n if (dom.className !== nextProps?.class) {\n if (!nextProps?.class) {\n dom.removeAttribute('class')\n } else if (typeof nextProps?.class === 'string') {\n dom.setAttribute('class', nextProps?.class)\n }\n }\n\n //Remove old or changed event listeners\n Object.keys(prevProps)\n .filter(isEvent)\n .filter(\n key =>\n !(key in nextProps) ||\n isNew(prevProps, nextProps)(key)\n )\n .forEach(name => {\n const eventType = name\n .toLowerCase()\n .substring(2)\n\n if (prevProps[name] == null) return\n if (typeof prevProps[name] !== 'function') {\n console.error('EventListener is not a function')\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dom.removeEventListener(eventType as any, prevProps[name] as any)\n }\n })\n\n // Add event listeners\n Object.keys(nextProps)\n .filter(isEvent)\n .filter(isNew(prevProps, nextProps))\n .forEach(name => {\n const eventType = name\n .toLowerCase()\n .substring(2)\n if (nextProps[name] == null) return\n if (typeof nextProps[name] !== 'function') {\n console.error('EventListener is not a function')\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dom.addEventListener(eventType as any, nextProps[name] as any)\n }\n })\n\n // Remove old properties\n Object.keys(prevProps)\n .filter(isProperty)\n .filter(isGone(prevProps, nextProps))\n .forEach(name => dom.removeAttribute(name))\n\n // Set new or changed properties\n Object.keys(nextProps)\n .filter(isProperty)\n .filter(isNew(prevProps, nextProps))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .forEach(name => dom.setAttribute(name, nextProps[name] as any))\n }\n\n isReuseInstance(instance: Instance, nextElement: AirxElement): false | void {\n if (instance && instance.element && instance.element.type !== nextElement.type) {\n return false\n }\n }\n}\n","import { Plugin } from '..'\nimport { Instance } from '../..'\n\nexport class InjectSystem implements Plugin {\n private getProvideValueForParent(instance: Instance | undefined, key: unknown): unknown {\n if (instance && instance.context) {\n const value = instance.context.providedMap.get(key)\n if (value != undefined) return value\n if (instance.parent) {\n return this.getProvideValueForParent(instance.parent, key)\n }\n }\n\n return undefined\n }\n\n isReuseInstance(instance: Instance): false | undefined {\n const injectedKeys = [...instance.context.injectedMap.keys()]\n for (let index = 0; index < injectedKeys.length; index++) {\n const key = injectedKeys[index]\n const currentValue = instance.context.injectedMap.get(key)\n const parentValue = this.getProvideValueForParent(instance.parent, key)\n\n // 如果发现任何值发生变化,则重建实例\n if (parentValue !== currentValue) return false\n }\n }\n}\n","import { Plugin } from '.'\nimport { BasicLogic } from './internal/basic'\nimport { InjectSystem } from './internal/inject'\n\nexport class PluginContext {\n plugins: Plugin[] = [\n new BasicLogic(),\n new InjectSystem()\n ]\n\n registerPlugin(...plugins: Plugin[]) {\n this.plugins.push(...plugins)\n }\n}\n","import { browserRender, serverRender, Plugin, PluginContext } from './render'\nimport { AirxComponent, AirxElement, createElement } from './element'\n\nexport * from './types'\nexport { Plugin } from './render'\n\nexport {\n Fragment,\n component,\n createElement,\n AirxComponent,\n AirxElement,\n AirxChildren,\n AirxComponentContext\n} from './element'\n\nexport {\n inject,\n provide,\n onMounted,\n onUnmounted\n} from './render'\n\nexport interface AirxApp {\n mount: (container: HTMLElement) => AirxApp\n\n /** @deprecated WIP */\n plugin: (...plugins: Plugin[]) => AirxApp\n /** @deprecated WIP */\n renderToHTML: () => Promise<string>\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createApp(element: AirxElement<any> | AirxComponent): AirxApp {\n const appContext = new PluginContext()\n\n const ensureAsElement = (element: AirxElement | AirxComponent): AirxElement => {\n if (typeof element === 'function') {\n return createElement(element, {})\n }\n\n return element\n }\n\n const app: AirxApp = {\n plugin: (...plugins: Plugin[]) => {\n appContext.registerPlugin(...plugins)\n return app\n },\n\n mount: (container: HTMLElement) => {\n container.innerHTML = '' // 先清空再说\n browserRender(appContext, ensureAsElement(element), container)\n return app\n },\n\n renderToHTML: (): Promise<string> => {\n return new Promise<string>(resolve => {\n serverRender(appContext, ensureAsElement(element), resolve)\n })\n }\n }\n\n return app\n}\n"],"names":["symbol.airxElementSymbol","signal.isState","signal.createWatch","signal.createComputed","render","browserRender","serverRender"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../source/render/common/hooks.ts","../../source/logger.ts","../../source/signal/index.ts","../../source/symbol.ts","../../source/element.ts","../../source/render/common/index.ts","../../source/render/server.ts","../../source/render/browser.ts","../../source/render/common/plugins/internal/basic.ts","../../source/render/common/plugins/internal/inject.ts","../../source/render/common/plugins/context.ts","../../source/index.ts"],"sourcesContent":["import { AirxComponentContext } from '../../element'\n\ninterface GlobalContext {\n current: AirxComponentContext | null\n}\n\nexport const globalContext: GlobalContext = {\n current: null\n}\n\nfunction useContext(): AirxComponentContext {\n if (globalContext.current == null) {\n throw new Error('Unable to find a valid component context')\n }\n\n return globalContext.current\n}\n\nexport const onMounted: AirxComponentContext['onMounted'] = (listener) => {\n return useContext().onMounted(listener)\n}\n\nexport const onUnmounted: AirxComponentContext['onUnmounted'] = (listener) => {\n return useContext().onUnmounted(listener)\n}\n\nexport const inject: AirxComponentContext['inject'] = (key) => {\n return useContext().inject(key)\n}\n\nexport const provide: AirxComponentContext['provide'] = (key, value) => {\n return useContext().provide(key, value)\n}\n","declare const process: { env?: { NODE_ENV?: string, AIRX_DEBUG?: string } } | undefined\nconst isPrintLogs = typeof process != 'undefined'\n && process?.env?.NODE_ENV === 'development'\n && process?.env?.AIRX_DEBUG === 'true'\n\nexport function createLogger(name: string) {\n function getPrintPrefix() {\n const date = new Date().toLocaleString()\n return `[${date}][${name}]`\n }\n\n function debug(...args: unknown[]) {\n if (isPrintLogs) console.log(getPrintPrefix(), ...args)\n }\n\n return { debug }\n}\n","// https://github.com/proposal-signals/signal-polyfill/issues/10\nimport type { Signal as Polyfill } from 'signal-polyfill'\n\nexport declare type Watcher = Polyfill.subtle.Watcher\n\nlet firstSignal: typeof Polyfill | undefined = undefined\n\ndeclare let self: unknown\ndeclare let window: unknown\ndeclare let global: unknown\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst globalNS: any = (function () {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n\n if (typeof self !== 'undefined') {\n return self\n }\n if (typeof window !== 'undefined') {\n return window\n }\n if (typeof global !== 'undefined') {\n return global\n }\n throw new Error('unable to locate global object')\n})()\n\n// 通过函数包装来延迟加载 Signal\n// 这对使用 Polyfill 的应用来说更友好\nfunction getSignal() {\n const globalSignal: typeof Polyfill = globalNS['Signal']\n if (globalSignal == null) throw new Error('Signal is undefined')\n if (firstSignal == null) firstSignal = globalSignal\n if (firstSignal !== globalSignal) throw new Error('Signal have multiple instances')\n\n return globalSignal\n}\n\nexport function createWatch(notify: (this: Polyfill.subtle.Watcher) => void): Polyfill.subtle.Watcher {\n const signal = getSignal()\n return new signal.subtle.Watcher(notify)\n}\n\nexport function createState<T>(initial: T, options?: Polyfill.Options<T> | undefined): Polyfill.State<T> {\n const signal = getSignal()\n return new signal.State(initial, options)\n}\n\nexport function createComputed<T>(computation: () => T, options?: Polyfill.Options<T> | undefined): Polyfill.Computed<T> {\n const signal = getSignal()\n return new signal.Computed(computation, options)\n}\n\nexport function isState<T>(target: unknown): target is Polyfill.State<T> {\n const signal = getSignal()\n return target instanceof signal.State\n}\n","export const airxElementSymbol = Symbol('airx-element')\nexport const airxReactiveDependenciesSymbol = Symbol('airx-dependencies')\n","import * as symbol from './symbol'\nimport { CSSProperties } from './types'\n\ntype AirxElementType<P> = string | AirxComponent<P>\n\nexport type Props = { [propKey: string]: unknown }\n\n/**\n * AirxElement 表示一个 Airx 元素\n * type 表示元素的类型,可能是一个 html 标签,\n * 也可能是一个自定义组件\n * props 表示元素的属性\n * children 表示元素的子元素\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface AirxElement<P = any> {\n type: AirxElementType<P>\n props: Props & P\n [symbol.airxElementSymbol]: true\n}\n\nexport type AirxChildren =\n | null\n | string\n | number\n | boolean\n | undefined\n | AirxElement\n | Array<AirxChildren>\n\n/**\n * 函数式组件接收自己的 props,并返回一个 AirxElement\n */\nexport type AirxComponentRender = () => AirxChildren\nexport type AirxComponent<P = unknown> = ReactiveComponent<P>\nexport type ReactiveComponent<P = unknown> = (props: P) => AirxComponentRender\n\n/**\n * createElement 是用于创建 AirxElement 的工具函数\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createElement<P = any>(\n type: AirxElementType<P>,\n props: { [key: string]: unknown } & P,\n ...children: AirxChildren[]\n): AirxElement<P> {\n const localChildren = children.length > 0\n ? children\n : props.children\n\n return {\n type,\n props: {\n ...props,\n children: localChildren\n },\n [symbol.airxElementSymbol]: true\n }\n}\n\nexport function isValidElement(element: unknown): element is AirxElement {\n return typeof element === 'object'\n && element !== null\n && Reflect.get(element, symbol.airxElementSymbol)\n}\n\nexport function Fragment(props: { children: AirxElement }) {\n return () => props.children\n}\n\nexport type AirxComponentUnmountedListener = () => void\nexport type AirxComponentMountedListener = () => (() => void) | void\n\nexport interface AirxComponentLifecycle {\n onMounted: (listener: AirxComponentMountedListener) => void\n onUnmounted: (listener: AirxComponentUnmountedListener) => void\n}\n\ntype ProvideUpdater<T = unknown> = (newValue: T | ((old: T) => T)) => void\n\nexport type AirxComponentContext = AirxComponentLifecycle & {\n provide: <T = unknown>(key: unknown, value: T) => ProvideUpdater<T>\n inject: <T = unknown>(key: unknown) => T | undefined\n}\n\nexport function component<P = unknown>(comp: AirxComponent<P>): AirxComponent<P> {\n return comp\n}\n\nexport function createErrorRender(error: unknown): AirxComponentRender {\n console.error(error)\n\n const handleClick = () => {\n // 点击输出错误是为了避免\n // 页面上多个组件同时出错时\n // 无法定位错误与之对应的组件\n console.error(error)\n }\n\n const formattingError = (): string => {\n if (error == null) return 'Unknown rendering error'\n if (error instanceof Error) return error.message\n return JSON.stringify(error)\n }\n\n const errorBlockStyle: CSSProperties = {\n padding: '8px',\n fontSize: '20px',\n color: 'rgb(255,255,255)',\n backgroundColor: 'rgb(255, 0, 0)',\n }\n\n return () => createElement('div', { style: errorBlockStyle, onClick: handleClick }, formattingError())\n}\n","import * as signal from '../../signal'\n\nimport { createLogger } from '../../logger'\nimport {\n AirxElement,\n AirxChildren,\n createElement,\n isValidElement,\n AirxComponentContext,\n AirxComponentMountedListener,\n AirxComponentUnmountedListener,\n AirxComponentRender,\n createErrorRender,\n} from '../../element'\nimport { PluginContext } from './plugins'\nimport { globalContext } from './hooks'\n\nexport type Disposer = () => void\n\nexport class InnerAirxComponentContext<E extends AbstractElement> implements AirxComponentContext {\n public instance!: Instance<E>\n private disposers = new Set<Disposer>()\n public providedMap = new Map<unknown, unknown>()\n public injectedMap = new Map<unknown, unknown>()\n private mountListeners = new Set<AirxComponentMountedListener>()\n private unmountedListeners = new Set<AirxComponentUnmountedListener>()\n\n public triggerMounted() {\n this.mountListeners.forEach(listener => {\n let disposer: Disposer | void = undefined\n\n try {\n disposer = listener()\n } catch (err: unknown) {\n console.error(err, listener)\n }\n\n if (typeof disposer === 'function') {\n this.addDisposer(disposer)\n }\n })\n // 生命周期只会调用一次\n this.mountListeners.clear()\n }\n\n public triggerUnmounted() {\n // 递归的调用子 child 的 Unmounted\n if (this.instance?.child != null) {\n this.instance.child.context.triggerUnmounted()\n }\n\n // 处理自己\n this.unmountedListeners.forEach(listener => {\n try {\n listener()\n } catch (err: unknown) {\n console.error(err, listener)\n }\n })\n\n // 处理兄弟节点\n if (this.instance?.sibling != null) {\n this.instance.sibling.context.triggerUnmounted()\n }\n\n this.dispose()\n }\n\n public onMounted(listener: AirxComponentMountedListener) {\n this.mountListeners.add(listener)\n }\n\n public onUnmounted(listener: AirxComponentUnmountedListener) {\n this.unmountedListeners.add(listener)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public provide<T = unknown>(key: any, value: any): (v: T | ((old: T) => T)) => void {\n this.providedMap.set(key, value)\n return v => {\n if (typeof v === 'function') {\n const old = this.providedMap.get(key)\n const func = v as (old: T) => T\n this.providedMap.set(key, func(old as T))\n return\n }\n\n this.providedMap.set(key, v)\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public inject<T = unknown>(key: any): T | undefined {\n const getProvideValueForParent = (instance: Instance<E> | undefined, key: unknown): unknown => {\n if (instance && instance.context) {\n const value = instance.context.providedMap.get(key)\n if (value != undefined) return value\n if (instance.parent) return getProvideValueForParent(instance.parent, key)\n }\n\n return undefined\n }\n\n const currentParentValue = getProvideValueForParent(this.instance.parent, key)\n this.injectedMap.set(key, currentParentValue) // 更新本地值\n return this.injectedMap.get(key) as T\n }\n\n addDisposer(...disposers: Disposer[]) {\n disposers.forEach(disposer => {\n this.disposers.add(disposer)\n })\n }\n\n dispose() {\n this.disposers.forEach(\n (disposer: Disposer) => {\n try {\n disposer()\n } catch (err: unknown) {\n // eslint-disable-next-line no-console\n console.error(err, disposer)\n }\n }\n )\n\n this.disposers.clear()\n this.injectedMap.clear()\n this.providedMap.clear()\n this.mountListeners.clear()\n this.unmountedListeners.clear()\n }\n\n /**\n * 当 context 传递给外部消费时,隐藏内部实现,仅暴露接口定义的内容\n * @returns 和 AirxComponentContext 接口完全一致的对象\n */\n public getSafeContext(): AirxComponentContext {\n return {\n inject: k => this.inject(k),\n provide: (k, v) => this.provide(k, v),\n onMounted: listener => this.onMounted(listener),\n onUnmounted: listener => this.onUnmounted(listener)\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface AbstractElement {\n\n}\n\n/**\n * 树结构\n * instance ←--------------\n * | ↑ ↑\n * child parent parent\n * ↓ | |\n * instance -sibling→ instance...\n */\nexport interface Instance<E extends AbstractElement = AbstractElement> {\n domRef?: E\n\n child?: Instance<E> // 子节点\n parent?: Instance<E> // 父节点\n sibling?: Instance<E> // 兄弟节点\n deletions?: Set<Instance<E>> // 需要移除的实例\n\n element?: AirxElement\n beforeElement?: AirxElement\n signalWatcher?: signal.Watcher\n childrenRender?: AirxComponentRender\n\n needReRender?: boolean\n elementNamespace?: string\n context: InnerAirxComponentContext<E>\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n memoProps?: any // props 的引用\n}\n\n\n/**\n * 更新 children\n * @param parentInstance 当前正在处理的组件的实例\n * @param children 当前组件的子节点\n */\nexport function reconcileChildren<E extends AbstractElement>(appContext: PluginContext, parentInstance: Instance<E>, childrenElementArray: AirxElement[]) {\n const logger = createLogger('reconcileChildren')\n logger.debug('reconcileChildren', parentInstance, childrenElementArray)\n // parentInstance ←-------- \n // | ↑ ↑\n // child parent parent\n // ↓ | |\n // instance -sibling→ instance -→ ....\n\n /**\n * 内部通过 index 生成 element 的 key\n * 通过前缀来避免和用户手动设置的 key 发生冲突\n * @param index \n * @returns 生成的 key\n */\n function getInnerElementIndexKey(index: number): string {\n return `airx-element-inner-key:${index}`\n }\n\n /**\n * 将 children 实例链转成 Map 便于此处消费\n * @param firstChild children 实例的第一个元素\n * @returns 从 firstChild 开始之后的所有 sibling 实例组成的 Map\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getChildrenInstanceMap(firstChild?: Instance<E>): Map<any, Instance<E>> {\n // 不使用递归是因为递归容易爆栈\n let nextIndex = 0\n let nextChild = firstChild\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const map = new Map<any, Instance<E>>()\n\n while (nextChild) {\n /* 如果有 key,则将 key 作为 map key,否则将 index 作为 key */\n if (nextChild.element?.props.key != null) {\n map.set(nextChild.element?.props.key, nextChild)\n } else {\n map.set(getInnerElementIndexKey(nextIndex), nextChild)\n }\n\n nextChild = nextChild.sibling\n nextIndex += 1\n }\n\n return map\n }\n\n const newChildrenInstanceArray: Instance<E>[] = []\n const childrenInstanceMap = getChildrenInstanceMap(parentInstance.child)\n\n function getChildInstance(child: AirxElement, index: number): [Instance<E> | null, () => void] {\n if (child.props.key != null) {\n const key = child.props.key\n const instance = childrenInstanceMap.get(key) || null\n return [instance, () => childrenInstanceMap.delete(key)]\n }\n\n const innerKey = getInnerElementIndexKey(index)\n const instance = childrenInstanceMap.get(innerKey) || null\n return [instance, () => childrenInstanceMap.delete(innerKey)]\n }\n\n /** 是否复用实例 */\n function isReuseInstance(instance: Instance<E>, nextElement: AirxElement): boolean {\n for (const plugin of appContext.plugins) {\n if (typeof plugin.isReuseInstance === 'function') {\n const result = plugin.isReuseInstance(instance, nextElement)\n // 任意一个插件要求不复用就不复用\n if (result === false) return false\n }\n }\n return true\n }\n\n function updateMemoProps(instance: Instance<E>) {\n if (instance.element == null) return\n if (instance.memoProps == null) instance.memoProps = {}\n // 简单来说就是以下几件事情\n // 始终保持 props 的引用不变\n // 1. 创建一个新对象来保存 beforeElement props 的状态\n // 2. 将新的 element 上的 props 引用设置为之前的 props\n // 3. 将新的 element 上的 props 更新到之前的 props 上去\n\n if (instance.memoProps != null) {\n for (const key in instance.memoProps) {\n delete instance.memoProps[key]\n }\n }\n\n // 将新的 props 更新上去\n for (const key in instance.element.props) {\n const value = instance.element.props[key]\n instance.memoProps[key] = value\n }\n }\n\n function isNeedReRender(instance: Instance<E>): boolean {\n for (const plugin of appContext.plugins) {\n if (typeof plugin.isReRender === 'function') {\n const result = plugin.isReRender(instance)\n // 任意一个插件要求重新渲染就重新渲染\n if (result === true) return true\n }\n }\n\n return false\n }\n\n function getElementNamespace(element: AirxElement): string {\n const ns = Object.keys(element.props)\n .filter(key => (key === 'xmlns' || key.startsWith('xmlns:')))\n .sort((a, b) => a.length - b.length)\n\n if (ns.length > 1) {\n console.log('airx currently does not support setting multiple xmlns')\n return ''\n }\n\n if (ns.some(i => i.startsWith('xmlns:'))) {\n console.log('airx does not currently support setting named namespaces,only supports default')\n return ''\n }\n\n // 原则上来说 html 仅支持设置默认的 namespace\n return element.props[ns[0]]\n }\n\n // 依次遍历 child 并和 instance 对比\n for (let index = 0; index < childrenElementArray.length; index++) {\n const element = childrenElementArray[index]\n const [instance, seize] = getChildInstance(element, index)\n\n if (instance && isReuseInstance(instance, element)) {\n seize() // 从 childrenInstanceMap 中释放\n newChildrenInstanceArray.push(instance)\n instance.beforeElement = instance.element\n instance.element = element\n updateMemoProps(instance)\n\n // 如果父组件更新了,子组件全部都要更新\n if (instance.needReRender !== true && typeof element.type === 'function') {\n instance.needReRender = parentInstance.needReRender || isNeedReRender(instance)\n }\n } else {\n const context = new InnerAirxComponentContext<E>()\n const elementNamespace = getElementNamespace(element)\n const instance: Instance<E> = { element, context, elementNamespace }\n newChildrenInstanceArray.push(instance)\n context.instance = instance\n updateMemoProps(instance)\n\n // 添加 ref 处理\n if ('ref' in instance.memoProps) {\n context.onMounted(() => {\n const ref = instance.memoProps.ref\n // 如果组件有自己的 dom 并且 ref 为 state\n if (instance.domRef && signal.isState(ref)) {\n ref.set(instance.domRef)\n return () => ref.set(undefined)\n }\n })\n }\n }\n }\n\n // 新的 node\n for (let index = 0; index < newChildrenInstanceArray.length; index++) {\n const instance = newChildrenInstanceArray[index]\n\n // 确保链的干净\n instance.parent = parentInstance\n if (index === 0) parentInstance.child = instance\n if (index > 0) newChildrenInstanceArray[index - 1].sibling = instance\n if (index === newChildrenInstanceArray.length - 1) delete instance.sibling\n\n // 处理 ElementNS: 继承父级 namespace\n if (!instance.elementNamespace && instance.parent?.elementNamespace) {\n // SVG 中 foreignObject 代表外来对象,起到隔离 namespace 的作用\n if (instance.parent.element?.type !== 'foreignObject') {\n instance.elementNamespace = instance.parent.elementNamespace\n }\n }\n }\n\n // 剩余的是需要移除的\n if (childrenInstanceMap.size > 0) {\n if (parentInstance.deletions == null) {\n parentInstance.deletions = new Set()\n }\n\n childrenInstanceMap.forEach(instance => {\n parentInstance.deletions?.add(instance)\n })\n }\n\n logger.debug('parentInstance', parentInstance)\n}\n\ntype OnUpdateRequire<E extends AbstractElement> = (instance: Instance<E>) => void\n\n/**\n * 处理单个 instance\n * @param instance 当前处理的实例\n * @returns 返回下一个需要处理的 instance\n */\nexport function performUnitOfWork<E extends AbstractElement>(pluginContext: PluginContext, instance: Instance<E>, onUpdateRequire?: OnUpdateRequire<E>): Instance<E> | null {\n const element = instance.element\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function childrenAsElements(children: AirxChildren): AirxElement<any>[] {\n const childrenAsArray = Array.isArray(children) ? children : [children]\n function isComment(element: AirxChildren): boolean {\n if (element === '') return true\n if (element == null) return true\n if (element === false) return true\n return false\n }\n\n return childrenAsArray.flat(3).map(element => {\n if (isValidElement(element)) return element\n const elementType = isComment(element) ? 'comment' : 'text'\n const textContent = element === '' ? 'empty-string' : String(element)\n return createElement(elementType, { textContent })\n })\n }\n\n // airx 组件\n if (typeof element?.type === 'function') {\n if (instance.signalWatcher == null) {\n // Watch 是惰性的,只有当 Signal 被读取时才会触发 --!\n const signalWatcher = signal.createWatch(async () => {\n instance.needReRender = true\n onUpdateRequire?.(instance)\n\n queueMicrotask(() => {\n signalWatcher.watch()\n const paddings = signalWatcher.getPending()\n for (const padding of paddings) padding.get()\n })\n })\n\n instance.signalWatcher = signalWatcher\n instance.context.addDisposer(() => signalWatcher.unwatch())\n }\n\n if (instance.childrenRender == null) {\n const component = element.type\n const beforeContext = globalContext.current\n globalContext.current = instance.context.getSafeContext()\n\n let componentReturnValue: AirxComponentRender | undefined = undefined\n\n try {\n componentReturnValue = component(instance.memoProps)\n } catch (error) {\n componentReturnValue = createErrorRender(error)\n }\n\n if (typeof componentReturnValue !== 'function') {\n const error = new Error('Component must return a render function')\n componentReturnValue = createErrorRender(error.message)\n }\n\n // restore context\n globalContext.current = beforeContext\n instance.childrenRender = componentReturnValue\n const childrenComputed = signal.createComputed(() => {\n try {\n return instance.childrenRender!()\n } catch (error) {\n return createErrorRender(error)()\n }\n })\n instance.signalWatcher.watch(childrenComputed)\n const children = childrenComputed.get()\n\n reconcileChildren(pluginContext, instance, childrenAsElements(children))\n }\n\n if (instance.needReRender) {\n let children: AirxChildren\n\n try {\n // 如果是由于父组件导致的子组件渲染\n // 直接使用 childrenComputed.get() 将读取到缓存值\n // 因此这里使用 childrenRender 来更新 children 的值\n children = instance.childrenRender!()\n } catch (error) {\n children = createErrorRender(error)()\n }\n\n reconcileChildren(pluginContext, instance, childrenAsElements(children))\n delete instance.needReRender\n }\n }\n\n // 浏览器组件/标签\n if (typeof element?.type === 'string') {\n if ('children' in element.props && Array.isArray(element.props.children)) {\n reconcileChildren(pluginContext, instance, childrenAsElements(element.props.children))\n }\n }\n\n // 优先处理 child\n if (instance.child) {\n return instance.child\n }\n\n /**\n * 递归向上查找可用的兄弟 instance\n * @param instance \n * @returns 返回下一个需要处理的兄弟 instance\n */\n function returnSibling(instance: Instance<E>): Instance<E> | null {\n if (instance.sibling) {\n return instance.sibling\n }\n if (instance.parent) {\n return returnSibling(instance.parent)\n }\n\n return null\n }\n\n return returnSibling(instance)\n}\n","import { CSSProperties } from '..'\nimport { AirxElement } from '../element'\nimport { createLogger } from '../logger'\nimport { InnerAirxComponentContext, Instance, performUnitOfWork, AbstractElement } from './common'\nimport { PluginContext } from './common/plugins'\n\nfunction camelToKebab(str: string): string {\n return str.replace(/([A-Z])/g, (match, p1, offset) => {\n if (offset === 0) {\n return p1.toLowerCase()\n } else {\n return '-' + p1.toLowerCase()\n }\n })\n}\n\nclass ServerElement implements AbstractElement {\n static createTextNode(content: string) {\n const dom = new ServerElement('#text')\n dom.content = content\n return dom\n }\n\n static createComment(content: string) {\n const dom = new ServerElement('#comment')\n dom.content = content\n return dom\n }\n\n static createElement(tag: string) {\n return new ServerElement(tag)\n }\n\n constructor(public nodeName: string) {\n this.style = {}\n this.content = ''\n this.children = []\n this.className = ''\n this.attributes = new Map()\n }\n\n\n readonly firstChild?: ServerElement\n readonly nextSibling?: ServerElement\n readonly parentNode?: ServerElement\n\n readonly className: string\n readonly style: CSSProperties\n private content: string\n private children: ServerElement[]\n private attributes: Map<string, string>\n\n removeChild(dom: ServerElement) {\n /* eslint-disable @typescript-eslint/ban-ts-comment */\n const index = this.children.findIndex(v => v === dom)\n if (index != -1) this.children.splice(index, 1)\n // @ts-ignore\n this.firstChild = undefined\n // @ts-ignore\n this.nextSibling = undefined\n // @ts-ignore\n this.parentNode = undefined\n /* eslint-enable @typescript-eslint/ban-ts-comment */\n }\n\n appendChild(dom: ServerElement) {\n /* eslint-disable @typescript-eslint/ban-ts-comment */\n // @ts-ignore\n dom.parentNode = this\n\n if (this.children.length > 0) {\n // @ts-ignore\n this.children[this.children.length - 1].nextSibling = dom\n }\n\n // @ts-ignore\n this.firstChild = this.children[0]\n this.children.push(dom)\n /* eslint-enable @typescript-eslint/ban-ts-comment */\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setAttribute(name: string, value: any) {\n if (value === '') return this.attributes.delete(name)\n /* eslint-disable @typescript-eslint/ban-ts-comment */\n // @ts-ignore\n if (name === 'class') return this.className = value\n // @ts-ignore\n if (name === 'style') return this.style = value\n /* eslint-enable @typescript-eslint/ban-ts-comment */\n this.attributes.set(name, value)\n }\n\n removeAttribute(name: string) {\n this.attributes.delete(name)\n }\n\n toString(): string {\n if (this.nodeName === '#text') return this.content\n if (this.nodeName === '#comment') return this.content\n\n const styleString = Object.entries(this.style)\n .map(([key, value]) => `${camelToKebab(key)}:${value}`)\n .join(';')\n\n const attributes = [...this.attributes.entries()]\n if (styleString.length > 0) attributes.push(['style', styleString])\n if (this.className.length > 0) attributes.push(['class', this.className])\n const attributesString = attributes.map(([name, value]) => ` ${name}=\"${value}\"`).join('')\n return `<${this.nodeName}${attributesString}>${this.children.map(child => child.toString()).join('')}</${this.nodeName}>`\n }\n}\n\ninterface RenderContext {\n rootInstance: Instance<ServerElement>\n needCommitDom: boolean\n nextUnitOfWork: Instance<ServerElement> | null\n}\n\ntype ServerCompleteHandler = (data: string) => void\n\nexport function render(pluginContext: PluginContext, element: AirxElement, onComplete: ServerCompleteHandler) {\n const rootInstance: Instance<ServerElement> = {\n domRef: ServerElement.createElement('div'),\n context: new InnerAirxComponentContext()\n }\n rootInstance.context.instance = rootInstance\n\n const context: RenderContext = {\n rootInstance,\n nextUnitOfWork: null,\n needCommitDom: false\n }\n\n const appInstance: Instance<ServerElement> = {\n element,\n parent: context.rootInstance,\n memoProps: { ...element.props },\n context: new InnerAirxComponentContext()\n }\n\n appInstance.context.instance = appInstance\n\n context.rootInstance.child = appInstance\n context.nextUnitOfWork = appInstance\n\n /**\n * 提交 Dom 变化\n */\n function commitDom(rootInstance: Instance<ServerElement>, rootNode?: ServerElement) {\n const logger = createLogger('commitDom')\n logger.debug('commitDom', rootInstance)\n\n type PropsType = Record<string, unknown>\n\n function updateDomProperties(dom: ServerElement, nextProps: PropsType, prevProps: PropsType = {}) {\n const isKey = (key: string) => key === 'key'\n const isRef = (key: string) => key === 'ref'\n const isStyle = (key: string) => key === 'style'\n const isClass = (key: string) => key === 'class'\n const isEvent = (key: string) => key.startsWith(\"on\")\n const isChildren = (key: string) => key === 'children'\n const isGone = (_prev: PropsType, next: PropsType) => (key: string) => !(key in next)\n const isNew = (prev: PropsType, next: PropsType) => (key: string) => prev[key] !== next[key]\n const isProperty = (key: string) => !isChildren(key) && !isEvent(key) && !isStyle(key) && !isClass(key) && !isKey(key) && !isRef(key)\n\n // https://developer.mozilla.org/zh-CN/docs/Web/API/Node\n if (dom.nodeName === '#text' || dom.nodeName === '#comment') {\n const textNode = (dom as unknown as Text | Comment)\n if (textNode.nodeValue !== nextProps.textContent) {\n textNode.nodeValue = String(nextProps.textContent)\n }\n return\n }\n\n // remove old style\n const oldStyle = prevProps?.style\n if (typeof oldStyle === 'object' && oldStyle != null) {\n Object.keys(oldStyle).forEach(key => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n delete dom.style[key as any]\n /* eslint-enable @typescript-eslint/no-explicit-any */\n })\n }\n\n // add new style\n const newStyle = nextProps?.style\n if (typeof newStyle === 'object' && newStyle != null) {\n Object.keys(newStyle).forEach((key: unknown) => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const value = (newStyle as any)?.[key as any]\n dom.style[key as any] = value == null ? '' : value\n /* eslint-enable @typescript-eslint/no-explicit-any */\n })\n }\n\n if (dom.className !== nextProps?.class) {\n if (!nextProps?.class) {\n dom.removeAttribute('class')\n } else if (typeof nextProps?.class === 'string') {\n dom.setAttribute('class', nextProps?.class)\n }\n }\n\n // Remove old properties\n Object.keys(prevProps)\n .filter(isProperty)\n .filter(isGone(prevProps, nextProps))\n .forEach(name => dom.removeAttribute(name))\n\n // Set new or changed properties\n Object.keys(nextProps)\n .filter(isProperty)\n .filter(isNew(prevProps, nextProps))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .forEach(name => dom.setAttribute(name, nextProps[name] as any))\n }\n\n function getParentDom(instance: Instance<ServerElement>): ServerElement {\n if (instance.parent?.domRef != null) {\n return instance.parent.domRef\n }\n if (instance.parent) {\n return getParentDom(instance.parent)\n }\n\n throw new Error('Cant find dom')\n }\n\n /**\n * 查找 instance 下所有的一级 dom\n * @param instance \n * @returns \n */\n function getChildDoms(instance: Instance<ServerElement>): ServerElement[] {\n const domList: ServerElement[] = []\n const todoList: Instance<ServerElement>[] = [instance]\n\n while (todoList.length > 0) {\n const current = todoList.pop()\n\n // 找到真实 dom 直接提交\n if (current?.domRef != null) {\n domList.push(current.domRef)\n }\n\n // 有子节点但是无真实 dom,向下继续查找\n if (current?.domRef == null) {\n if (current?.child != null) {\n todoList.push(current.child)\n }\n }\n\n // 可能有兄弟节点,则需要继续查找\n if (current?.sibling != null) {\n todoList.push(current.sibling)\n }\n }\n\n return domList\n }\n\n function commitInstanceDom(nextInstance: Instance<ServerElement>, oldNode?: ServerElement) {\n // 移除标删元素\n if (nextInstance.deletions) {\n for (const deletion of nextInstance.deletions) {\n const domList = getChildDoms(deletion)\n for (let index = 0; index < domList.length; index++) {\n const dom = domList[index]\n if (dom && dom.parentNode) dom.parentNode.removeChild(dom)\n }\n deletion.context.triggerUnmounted()\n }\n\n nextInstance.deletions.clear()\n }\n\n // 创建 dom\n if (nextInstance.domRef == null) {\n if (nextInstance.element == null) throw new Error('???')\n if (typeof nextInstance.element.type === 'string') {\n if (nextInstance.element.type === 'text') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = ServerElement.createTextNode(textContent as string) as any\n } else if (nextInstance.element.type === 'comment') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = ServerElement.createComment(textContent as string) as any\n } else {\n nextInstance.domRef = ServerElement.createElement(nextInstance.element.type)\n }\n }\n }\n\n // 更新属性\n if (nextInstance.domRef != null && nextInstance.element != null) {\n updateDomProperties(\n nextInstance.domRef,\n nextInstance.element.props,\n nextInstance.beforeElement?.props\n )\n }\n\n // 插入 parent\n // TODO: 针对仅移动时优化\n if (nextInstance.domRef != null) {\n if (oldNode !== nextInstance.domRef) {\n if (nextInstance.domRef.parentNode) {\n nextInstance.domRef.parentNode.removeChild(nextInstance.domRef)\n }\n\n const parentDom = getParentDom(nextInstance)\n parentDom.appendChild(nextInstance.domRef)\n }\n }\n }\n\n function commitWalkV2(initInstance: Instance<ServerElement>, initNode?: ServerElement) {\n // 创建一个栈,将根节点压入栈中\n\n type StackLayer = [Instance<ServerElement>, ServerElement | undefined] | (() => void)\n const stack: StackLayer[] = [[initInstance, initNode]]\n\n while (stack.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const stackLayer = stack.pop()!\n if (typeof stackLayer === 'function') {\n stackLayer()\n continue\n }\n\n const [instance, node] = stackLayer\n commitInstanceDom(instance, node)\n\n // stack 是先入后出\n // 实际上是先渲染 child\n // 这里然后再渲染 sibling\n\n // 执行生命周期的 Mount\n stack.push(() => instance.context.triggerMounted())\n\n // 更新下一个兄弟节点\n if (instance.sibling != null) {\n const siblingNode = instance.domRef\n ? instance.domRef.nextSibling\n : node?.nextSibling\n\n stack.push([instance.sibling, siblingNode || undefined])\n }\n\n // 更新下一个子节点\n if (instance.child != null) {\n const childNode = instance.domRef\n ? instance.domRef.firstChild\n : node\n\n stack.push([instance.child, childNode || undefined])\n }\n }\n }\n\n commitWalkV2(rootInstance, rootNode)\n }\n\n while (context.nextUnitOfWork) {\n context.nextUnitOfWork = performUnitOfWork<ServerElement>(\n pluginContext,\n context.nextUnitOfWork\n )\n }\n\n commitDom(\n context.rootInstance.child,\n context.rootInstance.domRef?.firstChild || undefined\n )\n\n onComplete(context.rootInstance.domRef?.toString() || '')\n}\n","import { AirxElement } from '../element'\nimport { createLogger } from '../logger'\nimport { PluginContext } from './common/plugins'\nimport { AbstractElement, InnerAirxComponentContext, Instance, performUnitOfWork } from './common'\n\nclass BrowserElement extends Element implements AbstractElement {}\n\ninterface RenderContext {\n rootInstance: Instance<BrowserElement>\n needCommitDom: boolean\n nextUnitOfWork: Instance<BrowserElement> | null\n}\n\nexport function render(pluginContext: PluginContext, element: AirxElement, domRef: BrowserElement) {\n const rootInstance: Instance<BrowserElement> = {\n domRef,\n context: new InnerAirxComponentContext()\n }\n rootInstance.context.instance = rootInstance\n\n const context: RenderContext = {\n rootInstance,\n nextUnitOfWork: null,\n needCommitDom: false\n }\n\n const appInstance: Instance<BrowserElement> = {\n element,\n parent: context.rootInstance,\n memoProps: { ...element.props },\n context: new InnerAirxComponentContext()\n }\n\n appInstance.context.instance = appInstance\n\n context.rootInstance.child = appInstance\n context.nextUnitOfWork = appInstance\n\n /**\n * 提交 Dom 变化\n */\n function commitDom(rootInstance: Instance<BrowserElement>, rootNode?: ChildNode) {\n const logger = createLogger('commitDom')\n logger.debug('commitDom', rootInstance)\n\n type PropsType = Record<string, unknown>\n\n function updateDomProperties(dom: BrowserElement, nextProps: PropsType, prevProps: PropsType = {}) {\n for (const plugin of pluginContext.plugins) {\n if (plugin.updateDom) plugin.updateDom(dom, nextProps, prevProps)\n }\n }\n\n function getParentDom(instance: Instance<BrowserElement>): BrowserElement {\n if (instance.parent?.domRef != null) {\n return instance.parent.domRef\n }\n if (instance.parent) {\n return getParentDom(instance.parent)\n }\n\n throw new Error('Cant find dom')\n }\n\n /**\n * 查找 instance 下所有的一级 dom\n * @param instance \n * @returns \n */\n function getChildDoms(instance: Instance<BrowserElement>): BrowserElement[] {\n const domList: BrowserElement[] = []\n const todoList: Instance<BrowserElement>[] = [instance]\n\n while (todoList.length > 0) {\n const current = todoList.pop()\n\n // 找到真实 dom 直接提交\n if (current?.domRef != null) {\n domList.push(current.domRef)\n }\n\n // 有子节点但是无真实 dom,向下继续查找\n if (current?.domRef == null) {\n if (current?.child != null) {\n todoList.push(current.child)\n }\n }\n\n // 可能有兄弟节点,则需要继续查找\n if (current?.sibling != null) {\n todoList.push(current.sibling)\n }\n }\n\n return domList\n }\n\n function commitInstanceDom(nextInstance: Instance<BrowserElement>, oldNode?: ChildNode) {\n // 移除标删元素\n if (nextInstance.deletions) {\n for (const deletion of nextInstance.deletions) {\n const domList = getChildDoms(deletion)\n for (let index = 0; index < domList.length; index++) {\n const dom = domList[index]\n if (dom && dom.parentNode) dom.parentNode.removeChild(dom)\n }\n deletion.context.triggerUnmounted()\n }\n\n nextInstance.deletions.clear()\n }\n\n // 创建 dom\n if (nextInstance.domRef == null) {\n if (nextInstance.element == null) throw new Error('???')\n if (typeof nextInstance.element.type === 'string') {\n if (nextInstance.element.type === 'text') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = document.createTextNode(textContent as string) as any\n } else if (nextInstance.element.type === 'comment') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = document.createComment(textContent as string) as any\n } else {\n nextInstance.domRef = nextInstance.elementNamespace\n ? document.createElementNS(nextInstance.elementNamespace, nextInstance.element.type)\n : document.createElement(nextInstance.element.type)\n }\n\n if (nextInstance.domRef) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (nextInstance.domRef as any).airxInstance = nextInstance\n }\n }\n }\n\n // 更新属性\n if (nextInstance.domRef != null && nextInstance.element != null) {\n updateDomProperties(\n nextInstance.domRef,\n nextInstance.element.props,\n nextInstance.beforeElement?.props\n )\n }\n\n // 插入 parent\n // TODO: 针对仅移动时优化\n if (nextInstance.domRef != null) {\n if (oldNode !== nextInstance.domRef) {\n if (nextInstance.domRef.parentNode) {\n nextInstance.domRef.parentNode.removeChild(nextInstance.domRef)\n }\n\n const parentDom = getParentDom(nextInstance)\n parentDom.appendChild(nextInstance.domRef)\n }\n }\n }\n\n function commitWalkV2(initInstance: Instance<BrowserElement>, initNode?: ChildNode) {\n // 创建一个栈,将根节点压入栈中\n\n type StackLayer = [Instance<BrowserElement>, ChildNode | undefined] | (() => void)\n const stack: StackLayer[] = [[initInstance, initNode]]\n\n while (stack.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const stackLayer = stack.pop()!\n if (typeof stackLayer === 'function') {\n stackLayer()\n continue\n }\n\n const [instance, node] = stackLayer\n commitInstanceDom(instance, node)\n\n // stack 是先入后出\n // 实际上是先渲染 child\n // 这里然后再渲染 sibling\n\n // 执行生命周期的 Mount\n stack.push(() => instance.context.triggerMounted())\n\n // 更新下一个兄弟节点\n if (instance.sibling != null) {\n const siblingNode = instance.domRef\n ? instance.domRef.nextSibling\n : node?.nextSibling\n\n stack.push([instance.sibling, siblingNode || undefined])\n }\n\n // 更新下一个子节点\n if (instance.child != null) {\n const childNode = instance.domRef\n ? instance.domRef.firstChild\n : node\n\n stack.push([instance.child, childNode || undefined])\n }\n }\n }\n\n commitWalkV2(rootInstance, rootNode)\n }\n\n function onUpdateRequire() {\n if (context.nextUnitOfWork == null && context.rootInstance.child) {\n context.nextUnitOfWork = context.rootInstance.child\n }\n }\n\n /**\n * 调度\n */\n function workLoop(deadline?: IdleDeadline) {\n let shouldYield = false\n const logger = createLogger('workLoop')\n while (context.nextUnitOfWork && !shouldYield) {\n logger.debug('nextUnitOfWork', context.nextUnitOfWork)\n context.nextUnitOfWork = performUnitOfWork(pluginContext, context.nextUnitOfWork, onUpdateRequire) as Instance<BrowserElement>\n if (context.nextUnitOfWork == null) context.needCommitDom = true\n if (deadline) shouldYield = deadline.timeRemaining() < 1\n }\n\n if (context.needCommitDom && context.rootInstance.child) {\n commitDom(context.rootInstance.child,\n context.rootInstance.domRef?.firstChild || undefined\n )\n context.needCommitDom = false\n }\n\n // TODO: 兼容性\n requestIdleCallback(workLoop)\n }\n\n // 开始调度\n workLoop()\n return context.rootInstance\n}\n","import { AirxChildren, AirxElement, Props } from '../../../../element'\nimport { createLogger } from '../../../../logger'\nimport { Instance } from '../../index'\nimport { Plugin } from '../index'\n\nexport class BasicLogic implements Plugin {\n private logger = createLogger('basicLogicPlugin')\n\n private isSameProps(preProps: Props, nextProps: Props): boolean {\n if (Object.is(nextProps, preProps)) {\n return true\n }\n\n if (\n typeof preProps !== 'object'\n || typeof nextProps !== 'object'\n || preProps === null\n || nextProps === null\n ) {\n this.logger.debug('props must be an object')\n return false\n }\n\n // 对应 key 的值不相同返回 false\n const prevKeys = Object.keys(preProps)\n for (let index = 0; index < prevKeys.length; index++) {\n const key = prevKeys[index]\n if (key !== 'children' && key !== 'key') {\n if (!Object.hasOwn(nextProps, key)) return false\n if (!Object.is(preProps[key], nextProps[key])) return false\n }\n\n if (key === 'children') {\n const prevChildren = preProps['children'] as AirxChildren[]\n const nextChildren = nextProps['children'] as AirxChildren[]\n // children 都是空的,则无需更新\n if (prevChildren.length === 0 && nextChildren.length === 0) return true\n\n // 简单比较一下 child 的引用\n for (let index = 0; index < prevChildren.length; index++) {\n const prevChild = prevChildren[index]\n const nextChild = nextChildren[index]\n\n if (prevChild !== nextChild) return false\n if (typeof prevChild !== typeof nextChild) return false\n }\n }\n\n return true\n }\n\n return false\n }\n\n isReRender(instance: Instance): true | void {\n const nextProps = instance.element?.props\n const preProps = instance.beforeElement?.props\n if (!this.isSameProps(preProps, nextProps)) return true\n }\n\n updateDom(dom: Element, nextProps: Props, prevProps: Props = {}): void {\n this.logger.debug('updateDom', dom, nextProps, prevProps)\n const isKey = (key: string) => key === 'key'\n const isRef = (key: string) => key === 'ref'\n const isStyle = (key: string) => key === 'style'\n const isClass = (key: string) => key === 'class'\n const isEvent = (key: string) => key.startsWith(\"on\")\n const isChildren = (key: string) => key === 'children'\n const isGone = (_prev: Props, next: Props) => (key: string) => !(key in next)\n const isNew = (prev: Props, next: Props) => (key: string) => prev[key] !== next[key]\n const isProperty = (key: string) => !isChildren(key) && !isEvent(key) && !isStyle(key) && !isClass(key) && !isKey(key) && !isRef(key)\n\n // https://developer.mozilla.org/zh-CN/docs/Web/API/Node\n if (dom.nodeName === '#text' || dom.nodeName === '#comment') {\n const textNode = (dom as unknown as Text | Comment)\n if (textNode.nodeValue !== nextProps.textContent) {\n textNode.nodeValue = String(nextProps.textContent)\n }\n return\n }\n\n // remove old style\n const oldStyle = prevProps?.style\n if (typeof oldStyle === 'object' && oldStyle != null) {\n if (!('style' in dom) || !dom.style) return\n Object.keys(oldStyle).forEach(key => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n if ('style' in dom && dom.style) {\n delete (dom.style as any)[key as any]\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n })\n }\n\n // add new style\n const newStyle = nextProps?.style\n if (typeof newStyle === 'object' && newStyle != null) {\n if (!('style' in dom) || !dom.style) return\n Object.keys(newStyle).forEach((key: unknown) => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const value = (newStyle as any)?.[key as any];\n (dom.style as any)[key as any] = value == null ? '' : value\n /* eslint-enable @typescript-eslint/no-explicit-any */\n })\n }\n\n if (dom.className !== nextProps?.class) {\n if (!nextProps?.class) {\n dom.removeAttribute('class')\n } else if (typeof nextProps?.class === 'string') {\n dom.setAttribute('class', nextProps?.class)\n }\n }\n\n //Remove old or changed event listeners\n Object.keys(prevProps)\n .filter(isEvent)\n .filter(\n key =>\n !(key in nextProps) ||\n isNew(prevProps, nextProps)(key)\n )\n .forEach(name => {\n const eventType = name\n .toLowerCase()\n .substring(2)\n\n if (prevProps[name] == null) return\n if (typeof prevProps[name] !== 'function') {\n console.error('EventListener is not a function')\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dom.removeEventListener(eventType as any, prevProps[name] as any)\n }\n })\n\n // Add event listeners\n Object.keys(nextProps)\n .filter(isEvent)\n .filter(isNew(prevProps, nextProps))\n .forEach(name => {\n const eventType = name\n .toLowerCase()\n .substring(2)\n if (nextProps[name] == null) return\n if (typeof nextProps[name] !== 'function') {\n console.error('EventListener is not a function')\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dom.addEventListener(eventType as any, nextProps[name] as any)\n }\n })\n\n // Remove old properties\n Object.keys(prevProps)\n .filter(isProperty)\n .filter(isGone(prevProps, nextProps))\n .forEach(name => dom.removeAttribute(name))\n\n // Set new or changed properties\n Object.keys(nextProps)\n .filter(isProperty)\n .filter(isNew(prevProps, nextProps))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .forEach(name => dom.setAttribute(name, nextProps[name] as any))\n }\n\n isReuseInstance(instance: Instance, nextElement: AirxElement): false | void {\n if (instance && instance.element && instance.element.type !== nextElement.type) {\n return false\n }\n }\n}\n","import { Plugin } from '..'\nimport { Instance } from '../..'\n\nexport class InjectSystem implements Plugin {\n private getProvideValueForParent(instance: Instance | undefined, key: unknown): unknown {\n if (instance && instance.context) {\n const value = instance.context.providedMap.get(key)\n if (value != undefined) return value\n if (instance.parent) {\n return this.getProvideValueForParent(instance.parent, key)\n }\n }\n\n return undefined\n }\n\n isReuseInstance(instance: Instance): false | undefined {\n const injectedKeys = [...instance.context.injectedMap.keys()]\n for (let index = 0; index < injectedKeys.length; index++) {\n const key = injectedKeys[index]\n const currentValue = instance.context.injectedMap.get(key)\n const parentValue = this.getProvideValueForParent(instance.parent, key)\n\n // 如果发现任何值发生变化,则重建实例\n if (parentValue !== currentValue) return false\n }\n }\n}\n","import { Plugin } from '.'\nimport { BasicLogic } from './internal/basic'\nimport { InjectSystem } from './internal/inject'\n\nexport class PluginContext {\n plugins: Plugin[] = [\n new BasicLogic(),\n new InjectSystem()\n ]\n\n registerPlugin(...plugins: Plugin[]) {\n this.plugins.push(...plugins)\n }\n}\n","import { browserRender, serverRender, Plugin, PluginContext } from './render'\nimport { AirxComponent, AirxElement, createElement } from './element'\n\nexport * from './types'\nexport { Plugin } from './render'\n\nexport {\n Fragment,\n component,\n createElement,\n AirxComponent,\n AirxElement,\n AirxChildren,\n AirxComponentContext\n} from './element'\n\nexport {\n inject,\n provide,\n onMounted,\n onUnmounted\n} from './render'\n\nexport interface AirxApp {\n mount: (container: HTMLElement) => AirxApp\n\n /** @deprecated WIP */\n plugin: (...plugins: Plugin[]) => AirxApp\n /** @deprecated WIP */\n renderToHTML: () => Promise<string>\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createApp(element: AirxElement<any> | AirxComponent): AirxApp {\n const appContext = new PluginContext()\n\n const ensureAsElement = (element: AirxElement | AirxComponent): AirxElement => {\n if (typeof element === 'function') {\n return createElement(element, {})\n }\n\n return element\n }\n\n const app: AirxApp = {\n plugin: (...plugins: Plugin[]) => {\n appContext.registerPlugin(...plugins)\n return app\n },\n\n mount: (container: HTMLElement) => {\n container.innerHTML = '' // 先清空再说\n browserRender(appContext, ensureAsElement(element), container)\n return app\n },\n\n renderToHTML: (): Promise<string> => {\n return new Promise<string>(resolve => {\n serverRender(appContext, ensureAsElement(element), resolve)\n })\n }\n }\n\n return app\n}\n"],"names":["symbol.airxElementSymbol","signal.isState","signal.createWatch","signal.createComputed","render","browserRender","serverRender"],"mappings":"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"}
|
package/output/esm/types.d.ts
CHANGED
|
@@ -971,7 +971,7 @@ export interface SVGAttributes extends AriaAttributes, EventHandlers<Events> {
|
|
|
971
971
|
z?: Numberish;
|
|
972
972
|
zoomAndPan?: string;
|
|
973
973
|
}
|
|
974
|
-
interface
|
|
974
|
+
interface IntrinsicElementAttributesMap {
|
|
975
975
|
a: AnchorHTMLAttributes;
|
|
976
976
|
abbr: HTMLAttributes;
|
|
977
977
|
address: HTMLAttributes;
|
|
@@ -1145,15 +1145,13 @@ interface IntrinsicElementAttributes {
|
|
|
1145
1145
|
use: SVGAttributes;
|
|
1146
1146
|
view: SVGAttributes;
|
|
1147
1147
|
}
|
|
1148
|
-
export type HtmlRef<T extends HTMLElement = HTMLElement> = {
|
|
1149
|
-
ref?: Signal.State<T | undefined>;
|
|
1150
|
-
};
|
|
1151
1148
|
export type ReservedProps = {
|
|
1152
1149
|
children?: AirxChildren;
|
|
1153
1150
|
key?: string | number | symbol;
|
|
1151
|
+
ref?: Signal.State<any | undefined>;
|
|
1154
1152
|
};
|
|
1155
1153
|
export type NativeElements = {
|
|
1156
|
-
[K in keyof
|
|
1154
|
+
[K in keyof IntrinsicElementAttributesMap]: IntrinsicElementAttributesMap[K] & ReservedProps;
|
|
1157
1155
|
};
|
|
1158
1156
|
declare global {
|
|
1159
1157
|
namespace JSX {
|
package/output/umd/index.js
CHANGED
|
@@ -90,11 +90,14 @@
|
|
|
90
90
|
*/
|
|
91
91
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
92
92
|
function createElement(type, props, ...children) {
|
|
93
|
+
const localChildren = children.length > 0
|
|
94
|
+
? children
|
|
95
|
+
: props.children;
|
|
93
96
|
return {
|
|
94
97
|
type,
|
|
95
98
|
props: {
|
|
96
99
|
...props,
|
|
97
|
-
children
|
|
100
|
+
children: localChildren
|
|
98
101
|
},
|
|
99
102
|
[airxElementSymbol]: true
|
|
100
103
|
};
|
package/output/umd/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../source/render/common/hooks.ts","../../source/logger.ts","../../source/signal/index.ts","../../source/symbol.ts","../../source/element.ts","../../source/render/common/index.ts","../../source/render/server.ts","../../source/render/browser.ts","../../source/render/common/plugins/internal/basic.ts","../../source/render/common/plugins/internal/inject.ts","../../source/render/common/plugins/context.ts","../../source/index.ts"],"sourcesContent":["import { AirxComponentContext } from '../../element'\n\ninterface GlobalContext {\n current: AirxComponentContext | null\n}\n\nexport const globalContext: GlobalContext = {\n current: null\n}\n\nfunction useContext(): AirxComponentContext {\n if (globalContext.current == null) {\n throw new Error('Unable to find a valid component context')\n }\n\n return globalContext.current\n}\n\nexport const onMounted: AirxComponentContext['onMounted'] = (listener) => {\n return useContext().onMounted(listener)\n}\n\nexport const onUnmounted: AirxComponentContext['onUnmounted'] = (listener) => {\n return useContext().onUnmounted(listener)\n}\n\nexport const inject: AirxComponentContext['inject'] = (key) => {\n return useContext().inject(key)\n}\n\nexport const provide: AirxComponentContext['provide'] = (key, value) => {\n return useContext().provide(key, value)\n}\n","declare const process: { env?: { NODE_ENV?: string, AIRX_DEBUG?: string } } | undefined\nconst isPrintLogs = typeof process != 'undefined'\n && process?.env?.NODE_ENV === 'development'\n && process?.env?.AIRX_DEBUG === 'true'\n\nexport function createLogger(name: string) {\n function getPrintPrefix() {\n const date = new Date().toLocaleString()\n return `[${date}][${name}]`\n }\n\n function debug(...args: unknown[]) {\n if (isPrintLogs) console.log(getPrintPrefix(), ...args)\n }\n\n return { debug }\n}\n","// https://github.com/proposal-signals/signal-polyfill/issues/10\nimport type { Signal as Polyfill } from 'signal-polyfill'\n\nexport declare type Watcher = Polyfill.subtle.Watcher\n\nlet firstSignal: typeof Polyfill | undefined = undefined\n\ndeclare let self: unknown\ndeclare let window: unknown\ndeclare let global: unknown\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst globalNS: any = (function () {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n\n if (typeof self !== 'undefined') {\n return self\n }\n if (typeof window !== 'undefined') {\n return window\n }\n if (typeof global !== 'undefined') {\n return global\n }\n throw new Error('unable to locate global object')\n})()\n\n// 通过函数包装来延迟加载 Signal\n// 这对使用 Polyfill 的应用来说更友好\nfunction getSignal() {\n const globalSignal: typeof Polyfill = globalNS['Signal']\n if (globalSignal == null) throw new Error('Signal is undefined')\n if (firstSignal == null) firstSignal = globalSignal\n if (firstSignal !== globalSignal) throw new Error('Signal have multiple instances')\n\n return globalSignal\n}\n\nexport function createWatch(notify: (this: Polyfill.subtle.Watcher) => void): Polyfill.subtle.Watcher {\n const signal = getSignal()\n return new signal.subtle.Watcher(notify)\n}\n\nexport function createState<T>(initial: T, options?: Polyfill.Options<T> | undefined): Polyfill.State<T> {\n const signal = getSignal()\n return new signal.State(initial, options)\n}\n\nexport function createComputed<T>(computation: () => T, options?: Polyfill.Options<T> | undefined): Polyfill.Computed<T> {\n const signal = getSignal()\n return new signal.Computed(computation, options)\n}\n\nexport function isState<T>(target: unknown): target is Polyfill.State<T> {\n const signal = getSignal()\n return target instanceof signal.State\n}\n","export const airxElementSymbol = Symbol('airx-element')\nexport const airxReactiveDependenciesSymbol = Symbol('airx-dependencies')\n","import * as symbol from './symbol'\nimport { CSSProperties } from './types'\n\ntype AirxElementType<P> = string | AirxComponent<P>\n\nexport type Props = { [propKey: string]: unknown }\n\n/**\n * AirxElement 表示一个 Airx 元素\n * type 表示元素的类型,可能是一个 html 标签,\n * 也可能是一个自定义组件\n * props 表示元素的属性\n * children 表示元素的子元素\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface AirxElement<P = any> {\n type: AirxElementType<P>\n props: Props & P\n [symbol.airxElementSymbol]: true\n}\n\nexport type AirxChildren =\n | null\n | string\n | number\n | boolean\n | undefined\n | AirxElement\n | Array<AirxChildren>\n\n/**\n * 函数式组件接收自己的 props,并返回一个 AirxElement\n */\nexport type AirxComponentRender = () => AirxChildren\nexport type AirxComponent<P = unknown> = ReactiveComponent<P>\nexport type ReactiveComponent<P = unknown> = (props: P) => AirxComponentRender\n\n/**\n * createElement 是用于创建 AirxElement 的工具函数\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createElement<P = any>(\n type: AirxElementType<P>,\n props: { [key: string]: unknown } & P,\n ...children: AirxChildren[]\n): AirxElement<P> {\n return {\n type,\n props: {\n ...props,\n children\n },\n [symbol.airxElementSymbol]: true\n }\n}\n\nexport function isValidElement(element: unknown): element is AirxElement {\n return typeof element === 'object'\n && element !== null\n && Reflect.get(element, symbol.airxElementSymbol)\n}\n\nexport function Fragment(props: { children: AirxElement }) {\n return () => props.children\n}\n\nexport type AirxComponentUnmountedListener = () => void\nexport type AirxComponentMountedListener = () => (() => void) | void\n\nexport interface AirxComponentLifecycle {\n onMounted: (listener: AirxComponentMountedListener) => void\n onUnmounted: (listener: AirxComponentUnmountedListener) => void\n}\n\ntype ProvideUpdater<T = unknown> = (newValue: T | ((old: T) => T)) => void\n\nexport type AirxComponentContext = AirxComponentLifecycle & {\n provide: <T = unknown>(key: unknown, value: T) => ProvideUpdater<T>\n inject: <T = unknown>(key: unknown) => T | undefined\n}\n\nexport function component<P = unknown>(comp: AirxComponent<P>): AirxComponent<P> {\n return comp\n}\n\nexport function createErrorRender(error: unknown): AirxComponentRender {\n console.error(error)\n\n const handleClick = () => {\n // 点击输出错误是为了避免\n // 页面上多个组件同时出错时\n // 无法定位错误与之对应的组件\n console.error(error)\n }\n\n const formattingError = (): string => {\n if (error == null) return 'Unknown rendering error'\n if (error instanceof Error) return error.message\n return JSON.stringify(error)\n }\n\n const errorBlockStyle: CSSProperties = {\n padding: '8px',\n fontSize: '20px',\n color: 'rgb(255,255,255)',\n backgroundColor: 'rgb(255, 0, 0)',\n }\n\n return () => createElement('div', { style: errorBlockStyle, onClick: handleClick }, formattingError())\n}\n","import * as signal from '../../signal'\n\nimport { createLogger } from '../../logger'\nimport {\n AirxElement,\n AirxChildren,\n createElement,\n isValidElement,\n AirxComponentContext,\n AirxComponentMountedListener,\n AirxComponentUnmountedListener,\n AirxComponentRender,\n createErrorRender,\n} from '../../element'\nimport { PluginContext } from './plugins'\nimport { globalContext } from './hooks'\n\nexport type Disposer = () => void\n\nexport class InnerAirxComponentContext<E extends AbstractElement> implements AirxComponentContext {\n public instance!: Instance<E>\n private disposers = new Set<Disposer>()\n public providedMap = new Map<unknown, unknown>()\n public injectedMap = new Map<unknown, unknown>()\n private mountListeners = new Set<AirxComponentMountedListener>()\n private unmountedListeners = new Set<AirxComponentUnmountedListener>()\n\n public triggerMounted() {\n this.mountListeners.forEach(listener => {\n let disposer: Disposer | void = undefined\n\n try {\n disposer = listener()\n } catch (err: unknown) {\n console.error(err, listener)\n }\n\n if (typeof disposer === 'function') {\n this.addDisposer(disposer)\n }\n })\n // 生命周期只会调用一次\n this.mountListeners.clear()\n }\n\n public triggerUnmounted() {\n // 递归的调用子 child 的 Unmounted\n if (this.instance?.child != null) {\n this.instance.child.context.triggerUnmounted()\n }\n\n // 处理自己\n this.unmountedListeners.forEach(listener => {\n try {\n listener()\n } catch (err: unknown) {\n console.error(err, listener)\n }\n })\n\n // 处理兄弟节点\n if (this.instance?.sibling != null) {\n this.instance.sibling.context.triggerUnmounted()\n }\n\n this.dispose()\n }\n\n public onMounted(listener: AirxComponentMountedListener) {\n this.mountListeners.add(listener)\n }\n\n public onUnmounted(listener: AirxComponentUnmountedListener) {\n this.unmountedListeners.add(listener)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public provide<T = unknown>(key: any, value: any): (v: T | ((old: T) => T)) => void {\n this.providedMap.set(key, value)\n return v => {\n if (typeof v === 'function') {\n const old = this.providedMap.get(key)\n const func = v as (old: T) => T\n this.providedMap.set(key, func(old as T))\n return\n }\n\n this.providedMap.set(key, v)\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public inject<T = unknown>(key: any): T | undefined {\n const getProvideValueForParent = (instance: Instance<E> | undefined, key: unknown): unknown => {\n if (instance && instance.context) {\n const value = instance.context.providedMap.get(key)\n if (value != undefined) return value\n if (instance.parent) return getProvideValueForParent(instance.parent, key)\n }\n\n return undefined\n }\n\n const currentParentValue = getProvideValueForParent(this.instance.parent, key)\n this.injectedMap.set(key, currentParentValue) // 更新本地值\n return this.injectedMap.get(key) as T\n }\n\n addDisposer(...disposers: Disposer[]) {\n disposers.forEach(disposer => {\n this.disposers.add(disposer)\n })\n }\n\n dispose() {\n this.disposers.forEach(\n (disposer: Disposer) => {\n try {\n disposer()\n } catch (err: unknown) {\n // eslint-disable-next-line no-console\n console.error(err, disposer)\n }\n }\n )\n\n this.disposers.clear()\n this.injectedMap.clear()\n this.providedMap.clear()\n this.mountListeners.clear()\n this.unmountedListeners.clear()\n }\n\n /**\n * 当 context 传递给外部消费时,隐藏内部实现,仅暴露接口定义的内容\n * @returns 和 AirxComponentContext 接口完全一致的对象\n */\n public getSafeContext(): AirxComponentContext {\n return {\n inject: k => this.inject(k),\n provide: (k, v) => this.provide(k, v),\n onMounted: listener => this.onMounted(listener),\n onUnmounted: listener => this.onUnmounted(listener)\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface AbstractElement {\n\n}\n\n/**\n * 树结构\n * instance ←--------------\n * | ↑ ↑\n * child parent parent\n * ↓ | |\n * instance -sibling→ instance...\n */\nexport interface Instance<E extends AbstractElement = AbstractElement> {\n domRef?: E\n\n child?: Instance<E> // 子节点\n parent?: Instance<E> // 父节点\n sibling?: Instance<E> // 兄弟节点\n deletions?: Set<Instance<E>> // 需要移除的实例\n\n element?: AirxElement\n beforeElement?: AirxElement\n signalWatcher?: signal.Watcher\n childrenRender?: AirxComponentRender\n\n needReRender?: boolean\n elementNamespace?: string\n context: InnerAirxComponentContext<E>\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n memoProps?: any // props 的引用\n}\n\n\n/**\n * 更新 children\n * @param parentInstance 当前正在处理的组件的实例\n * @param children 当前组件的子节点\n */\nexport function reconcileChildren<E extends AbstractElement>(appContext: PluginContext, parentInstance: Instance<E>, childrenElementArray: AirxElement[]) {\n const logger = createLogger('reconcileChildren')\n logger.debug('reconcileChildren', parentInstance, childrenElementArray)\n // parentInstance ←-------- \n // | ↑ ↑\n // child parent parent\n // ↓ | |\n // instance -sibling→ instance -→ ....\n\n /**\n * 内部通过 index 生成 element 的 key\n * 通过前缀来避免和用户手动设置的 key 发生冲突\n * @param index \n * @returns 生成的 key\n */\n function getInnerElementIndexKey(index: number): string {\n return `airx-element-inner-key:${index}`\n }\n\n /**\n * 将 children 实例链转成 Map 便于此处消费\n * @param firstChild children 实例的第一个元素\n * @returns 从 firstChild 开始之后的所有 sibling 实例组成的 Map\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getChildrenInstanceMap(firstChild?: Instance<E>): Map<any, Instance<E>> {\n // 不使用递归是因为递归容易爆栈\n let nextIndex = 0\n let nextChild = firstChild\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const map = new Map<any, Instance<E>>()\n\n while (nextChild) {\n /* 如果有 key,则将 key 作为 map key,否则将 index 作为 key */\n if (nextChild.element?.props.key != null) {\n map.set(nextChild.element?.props.key, nextChild)\n } else {\n map.set(getInnerElementIndexKey(nextIndex), nextChild)\n }\n\n nextChild = nextChild.sibling\n nextIndex += 1\n }\n\n return map\n }\n\n const newChildrenInstanceArray: Instance<E>[] = []\n const childrenInstanceMap = getChildrenInstanceMap(parentInstance.child)\n\n function getChildInstance(child: AirxElement, index: number): [Instance<E> | null, () => void] {\n if (child.props.key != null) {\n const key = child.props.key\n const instance = childrenInstanceMap.get(key) || null\n return [instance, () => childrenInstanceMap.delete(key)]\n }\n\n const innerKey = getInnerElementIndexKey(index)\n const instance = childrenInstanceMap.get(innerKey) || null\n return [instance, () => childrenInstanceMap.delete(innerKey)]\n }\n\n /** 是否复用实例 */\n function isReuseInstance(instance: Instance<E>, nextElement: AirxElement): boolean {\n for (const plugin of appContext.plugins) {\n if (typeof plugin.isReuseInstance === 'function') {\n const result = plugin.isReuseInstance(instance, nextElement)\n // 任意一个插件要求不复用就不复用\n if (result === false) return false\n }\n }\n return true\n }\n\n function updateMemoProps(instance: Instance<E>) {\n if (instance.element == null) return\n if (instance.memoProps == null) instance.memoProps = {}\n // 简单来说就是以下几件事情\n // 始终保持 props 的引用不变\n // 1. 创建一个新对象来保存 beforeElement props 的状态\n // 2. 将新的 element 上的 props 引用设置为之前的 props\n // 3. 将新的 element 上的 props 更新到之前的 props 上去\n\n if (instance.memoProps != null) {\n for (const key in instance.memoProps) {\n delete instance.memoProps[key]\n }\n }\n\n // 将新的 props 更新上去\n for (const key in instance.element.props) {\n const value = instance.element.props[key]\n instance.memoProps[key] = value\n }\n }\n\n function isNeedReRender(instance: Instance<E>): boolean {\n for (const plugin of appContext.plugins) {\n if (typeof plugin.isReRender === 'function') {\n const result = plugin.isReRender(instance)\n // 任意一个插件要求重新渲染就重新渲染\n if (result === true) return true\n }\n }\n\n return false\n }\n\n function getElementNamespace(element: AirxElement): string {\n const ns = Object.keys(element.props)\n .filter(key => (key === 'xmlns' || key.startsWith('xmlns:')))\n .sort((a, b) => a.length - b.length)\n\n if (ns.length > 1) {\n console.log('airx currently does not support setting multiple xmlns')\n return ''\n }\n\n if (ns.some(i => i.startsWith('xmlns:'))) {\n console.log('airx does not currently support setting named namespaces,only supports default')\n return ''\n }\n\n // 原则上来说 html 仅支持设置默认的 namespace\n return element.props[ns[0]]\n }\n\n // 依次遍历 child 并和 instance 对比\n for (let index = 0; index < childrenElementArray.length; index++) {\n const element = childrenElementArray[index]\n const [instance, seize] = getChildInstance(element, index)\n\n if (instance && isReuseInstance(instance, element)) {\n seize() // 从 childrenInstanceMap 中释放\n newChildrenInstanceArray.push(instance)\n instance.beforeElement = instance.element\n instance.element = element\n updateMemoProps(instance)\n\n // 如果父组件更新了,子组件全部都要更新\n if (instance.needReRender !== true && typeof element.type === 'function') {\n instance.needReRender = parentInstance.needReRender || isNeedReRender(instance)\n }\n } else {\n const context = new InnerAirxComponentContext<E>()\n const elementNamespace = getElementNamespace(element)\n const instance: Instance<E> = { element, context, elementNamespace }\n newChildrenInstanceArray.push(instance)\n context.instance = instance\n updateMemoProps(instance)\n\n // 添加 ref 处理\n if ('ref' in instance.memoProps) {\n context.onMounted(() => {\n const ref = instance.memoProps.ref\n // 如果组件有自己的 dom 并且 ref 为 state\n if (instance.domRef && signal.isState(ref)) {\n ref.set(instance.domRef)\n return () => ref.set(undefined)\n }\n })\n }\n }\n }\n\n // 新的 node\n for (let index = 0; index < newChildrenInstanceArray.length; index++) {\n const instance = newChildrenInstanceArray[index]\n\n // 确保链的干净\n instance.parent = parentInstance\n if (index === 0) parentInstance.child = instance\n if (index > 0) newChildrenInstanceArray[index - 1].sibling = instance\n if (index === newChildrenInstanceArray.length - 1) delete instance.sibling\n\n // 处理 ElementNS: 继承父级 namespace\n if (!instance.elementNamespace && instance.parent?.elementNamespace) {\n // SVG 中 foreignObject 代表外来对象,起到隔离 namespace 的作用\n if (instance.parent.element?.type !== 'foreignObject') {\n instance.elementNamespace = instance.parent.elementNamespace\n }\n }\n }\n\n // 剩余的是需要移除的\n if (childrenInstanceMap.size > 0) {\n if (parentInstance.deletions == null) {\n parentInstance.deletions = new Set()\n }\n\n childrenInstanceMap.forEach(instance => {\n parentInstance.deletions?.add(instance)\n })\n }\n\n logger.debug('parentInstance', parentInstance)\n}\n\ntype OnUpdateRequire<E extends AbstractElement> = (instance: Instance<E>) => void\n\n/**\n * 处理单个 instance\n * @param instance 当前处理的实例\n * @returns 返回下一个需要处理的 instance\n */\nexport function performUnitOfWork<E extends AbstractElement>(pluginContext: PluginContext, instance: Instance<E>, onUpdateRequire?: OnUpdateRequire<E>): Instance<E> | null {\n const element = instance.element\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function childrenAsElements(children: AirxChildren): AirxElement<any>[] {\n const childrenAsArray = Array.isArray(children) ? children : [children]\n function isComment(element: AirxChildren): boolean {\n if (element === '') return true\n if (element == null) return true\n if (element === false) return true\n return false\n }\n\n return childrenAsArray.flat(3).map(element => {\n if (isValidElement(element)) return element\n const elementType = isComment(element) ? 'comment' : 'text'\n const textContent = element === '' ? 'empty-string' : String(element)\n return createElement(elementType, { textContent })\n })\n }\n\n // airx 组件\n if (typeof element?.type === 'function') {\n if (instance.signalWatcher == null) {\n // Watch 是惰性的,只有当 Signal 被读取时才会触发 --!\n const signalWatcher = signal.createWatch(async () => {\n instance.needReRender = true\n onUpdateRequire?.(instance)\n\n queueMicrotask(() => {\n signalWatcher.watch()\n const paddings = signalWatcher.getPending()\n for (const padding of paddings) padding.get()\n })\n })\n\n instance.signalWatcher = signalWatcher\n instance.context.addDisposer(() => signalWatcher.unwatch())\n }\n\n if (instance.childrenRender == null) {\n const component = element.type\n const beforeContext = globalContext.current\n globalContext.current = instance.context.getSafeContext()\n\n let componentReturnValue: AirxComponentRender | undefined = undefined\n\n try {\n componentReturnValue = component(instance.memoProps)\n } catch (error) {\n componentReturnValue = createErrorRender(error)\n }\n\n if (typeof componentReturnValue !== 'function') {\n const error = new Error('Component must return a render function')\n componentReturnValue = createErrorRender(error.message)\n }\n\n // restore context\n globalContext.current = beforeContext\n instance.childrenRender = componentReturnValue\n const childrenComputed = signal.createComputed(() => {\n try {\n return instance.childrenRender!()\n } catch (error) {\n return createErrorRender(error)()\n }\n })\n instance.signalWatcher.watch(childrenComputed)\n const children = childrenComputed.get()\n\n reconcileChildren(pluginContext, instance, childrenAsElements(children))\n }\n\n if (instance.needReRender) {\n let children: AirxChildren\n\n try {\n // 如果是由于父组件导致的子组件渲染\n // 直接使用 childrenComputed.get() 将读取到缓存值\n // 因此这里使用 childrenRender 来更新 children 的值\n children = instance.childrenRender!()\n } catch (error) {\n children = createErrorRender(error)()\n }\n\n reconcileChildren(pluginContext, instance, childrenAsElements(children))\n delete instance.needReRender\n }\n }\n\n // 浏览器组件/标签\n if (typeof element?.type === 'string') {\n if ('children' in element.props && Array.isArray(element.props.children)) {\n reconcileChildren(pluginContext, instance, childrenAsElements(element.props.children))\n }\n }\n\n // 优先处理 child\n if (instance.child) {\n return instance.child\n }\n\n /**\n * 递归向上查找可用的兄弟 instance\n * @param instance \n * @returns 返回下一个需要处理的兄弟 instance\n */\n function returnSibling(instance: Instance<E>): Instance<E> | null {\n if (instance.sibling) {\n return instance.sibling\n }\n if (instance.parent) {\n return returnSibling(instance.parent)\n }\n\n return null\n }\n\n return returnSibling(instance)\n}\n","import { CSSProperties } from '..'\nimport { AirxElement } from '../element'\nimport { createLogger } from '../logger'\nimport { InnerAirxComponentContext, Instance, performUnitOfWork, AbstractElement } from './common'\nimport { PluginContext } from './common/plugins'\n\nfunction camelToKebab(str: string): string {\n return str.replace(/([A-Z])/g, (match, p1, offset) => {\n if (offset === 0) {\n return p1.toLowerCase()\n } else {\n return '-' + p1.toLowerCase()\n }\n })\n}\n\nclass ServerElement implements AbstractElement {\n static createTextNode(content: string) {\n const dom = new ServerElement('#text')\n dom.content = content\n return dom\n }\n\n static createComment(content: string) {\n const dom = new ServerElement('#comment')\n dom.content = content\n return dom\n }\n\n static createElement(tag: string) {\n return new ServerElement(tag)\n }\n\n constructor(public nodeName: string) {\n this.style = {}\n this.content = ''\n this.children = []\n this.className = ''\n this.attributes = new Map()\n }\n\n\n readonly firstChild?: ServerElement\n readonly nextSibling?: ServerElement\n readonly parentNode?: ServerElement\n\n readonly className: string\n readonly style: CSSProperties\n private content: string\n private children: ServerElement[]\n private attributes: Map<string, string>\n\n removeChild(dom: ServerElement) {\n /* eslint-disable @typescript-eslint/ban-ts-comment */\n const index = this.children.findIndex(v => v === dom)\n if (index != -1) this.children.splice(index, 1)\n // @ts-ignore\n this.firstChild = undefined\n // @ts-ignore\n this.nextSibling = undefined\n // @ts-ignore\n this.parentNode = undefined\n /* eslint-enable @typescript-eslint/ban-ts-comment */\n }\n\n appendChild(dom: ServerElement) {\n /* eslint-disable @typescript-eslint/ban-ts-comment */\n // @ts-ignore\n dom.parentNode = this\n\n if (this.children.length > 0) {\n // @ts-ignore\n this.children[this.children.length - 1].nextSibling = dom\n }\n\n // @ts-ignore\n this.firstChild = this.children[0]\n this.children.push(dom)\n /* eslint-enable @typescript-eslint/ban-ts-comment */\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setAttribute(name: string, value: any) {\n if (value === '') return this.attributes.delete(name)\n /* eslint-disable @typescript-eslint/ban-ts-comment */\n // @ts-ignore\n if (name === 'class') return this.className = value\n // @ts-ignore\n if (name === 'style') return this.style = value\n /* eslint-enable @typescript-eslint/ban-ts-comment */\n this.attributes.set(name, value)\n }\n\n removeAttribute(name: string) {\n this.attributes.delete(name)\n }\n\n toString(): string {\n if (this.nodeName === '#text') return this.content\n if (this.nodeName === '#comment') return this.content\n\n const styleString = Object.entries(this.style)\n .map(([key, value]) => `${camelToKebab(key)}:${value}`)\n .join(';')\n\n const attributes = [...this.attributes.entries()]\n if (styleString.length > 0) attributes.push(['style', styleString])\n if (this.className.length > 0) attributes.push(['class', this.className])\n const attributesString = attributes.map(([name, value]) => ` ${name}=\"${value}\"`).join('')\n return `<${this.nodeName}${attributesString}>${this.children.map(child => child.toString()).join('')}</${this.nodeName}>`\n }\n}\n\ninterface RenderContext {\n rootInstance: Instance<ServerElement>\n needCommitDom: boolean\n nextUnitOfWork: Instance<ServerElement> | null\n}\n\ntype ServerCompleteHandler = (data: string) => void\n\nexport function render(pluginContext: PluginContext, element: AirxElement, onComplete: ServerCompleteHandler) {\n const rootInstance: Instance<ServerElement> = {\n domRef: ServerElement.createElement('div'),\n context: new InnerAirxComponentContext()\n }\n rootInstance.context.instance = rootInstance\n\n const context: RenderContext = {\n rootInstance,\n nextUnitOfWork: null,\n needCommitDom: false\n }\n\n const appInstance: Instance<ServerElement> = {\n element,\n parent: context.rootInstance,\n memoProps: { ...element.props },\n context: new InnerAirxComponentContext()\n }\n\n appInstance.context.instance = appInstance\n\n context.rootInstance.child = appInstance\n context.nextUnitOfWork = appInstance\n\n /**\n * 提交 Dom 变化\n */\n function commitDom(rootInstance: Instance<ServerElement>, rootNode?: ServerElement) {\n const logger = createLogger('commitDom')\n logger.debug('commitDom', rootInstance)\n\n type PropsType = Record<string, unknown>\n\n function updateDomProperties(dom: ServerElement, nextProps: PropsType, prevProps: PropsType = {}) {\n const isKey = (key: string) => key === 'key'\n const isRef = (key: string) => key === 'ref'\n const isStyle = (key: string) => key === 'style'\n const isClass = (key: string) => key === 'class'\n const isEvent = (key: string) => key.startsWith(\"on\")\n const isChildren = (key: string) => key === 'children'\n const isGone = (_prev: PropsType, next: PropsType) => (key: string) => !(key in next)\n const isNew = (prev: PropsType, next: PropsType) => (key: string) => prev[key] !== next[key]\n const isProperty = (key: string) => !isChildren(key) && !isEvent(key) && !isStyle(key) && !isClass(key) && !isKey(key) && !isRef(key)\n\n // https://developer.mozilla.org/zh-CN/docs/Web/API/Node\n if (dom.nodeName === '#text' || dom.nodeName === '#comment') {\n const textNode = (dom as unknown as Text | Comment)\n if (textNode.nodeValue !== nextProps.textContent) {\n textNode.nodeValue = String(nextProps.textContent)\n }\n return\n }\n\n // remove old style\n const oldStyle = prevProps?.style\n if (typeof oldStyle === 'object' && oldStyle != null) {\n Object.keys(oldStyle).forEach(key => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n delete dom.style[key as any]\n /* eslint-enable @typescript-eslint/no-explicit-any */\n })\n }\n\n // add new style\n const newStyle = nextProps?.style\n if (typeof newStyle === 'object' && newStyle != null) {\n Object.keys(newStyle).forEach((key: unknown) => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const value = (newStyle as any)?.[key as any]\n dom.style[key as any] = value == null ? '' : value\n /* eslint-enable @typescript-eslint/no-explicit-any */\n })\n }\n\n if (dom.className !== nextProps?.class) {\n if (!nextProps?.class) {\n dom.removeAttribute('class')\n } else if (typeof nextProps?.class === 'string') {\n dom.setAttribute('class', nextProps?.class)\n }\n }\n\n // Remove old properties\n Object.keys(prevProps)\n .filter(isProperty)\n .filter(isGone(prevProps, nextProps))\n .forEach(name => dom.removeAttribute(name))\n\n // Set new or changed properties\n Object.keys(nextProps)\n .filter(isProperty)\n .filter(isNew(prevProps, nextProps))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .forEach(name => dom.setAttribute(name, nextProps[name] as any))\n }\n\n function getParentDom(instance: Instance<ServerElement>): ServerElement {\n if (instance.parent?.domRef != null) {\n return instance.parent.domRef\n }\n if (instance.parent) {\n return getParentDom(instance.parent)\n }\n\n throw new Error('Cant find dom')\n }\n\n /**\n * 查找 instance 下所有的一级 dom\n * @param instance \n * @returns \n */\n function getChildDoms(instance: Instance<ServerElement>): ServerElement[] {\n const domList: ServerElement[] = []\n const todoList: Instance<ServerElement>[] = [instance]\n\n while (todoList.length > 0) {\n const current = todoList.pop()\n\n // 找到真实 dom 直接提交\n if (current?.domRef != null) {\n domList.push(current.domRef)\n }\n\n // 有子节点但是无真实 dom,向下继续查找\n if (current?.domRef == null) {\n if (current?.child != null) {\n todoList.push(current.child)\n }\n }\n\n // 可能有兄弟节点,则需要继续查找\n if (current?.sibling != null) {\n todoList.push(current.sibling)\n }\n }\n\n return domList\n }\n\n function commitInstanceDom(nextInstance: Instance<ServerElement>, oldNode?: ServerElement) {\n // 移除标删元素\n if (nextInstance.deletions) {\n for (const deletion of nextInstance.deletions) {\n const domList = getChildDoms(deletion)\n for (let index = 0; index < domList.length; index++) {\n const dom = domList[index]\n if (dom && dom.parentNode) dom.parentNode.removeChild(dom)\n }\n deletion.context.triggerUnmounted()\n }\n\n nextInstance.deletions.clear()\n }\n\n // 创建 dom\n if (nextInstance.domRef == null) {\n if (nextInstance.element == null) throw new Error('???')\n if (typeof nextInstance.element.type === 'string') {\n if (nextInstance.element.type === 'text') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = ServerElement.createTextNode(textContent as string) as any\n } else if (nextInstance.element.type === 'comment') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = ServerElement.createComment(textContent as string) as any\n } else {\n nextInstance.domRef = ServerElement.createElement(nextInstance.element.type)\n }\n }\n }\n\n // 更新属性\n if (nextInstance.domRef != null && nextInstance.element != null) {\n updateDomProperties(\n nextInstance.domRef,\n nextInstance.element.props,\n nextInstance.beforeElement?.props\n )\n }\n\n // 插入 parent\n // TODO: 针对仅移动时优化\n if (nextInstance.domRef != null) {\n if (oldNode !== nextInstance.domRef) {\n if (nextInstance.domRef.parentNode) {\n nextInstance.domRef.parentNode.removeChild(nextInstance.domRef)\n }\n\n const parentDom = getParentDom(nextInstance)\n parentDom.appendChild(nextInstance.domRef)\n }\n }\n }\n\n function commitWalkV2(initInstance: Instance<ServerElement>, initNode?: ServerElement) {\n // 创建一个栈,将根节点压入栈中\n\n type StackLayer = [Instance<ServerElement>, ServerElement | undefined] | (() => void)\n const stack: StackLayer[] = [[initInstance, initNode]]\n\n while (stack.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const stackLayer = stack.pop()!\n if (typeof stackLayer === 'function') {\n stackLayer()\n continue\n }\n\n const [instance, node] = stackLayer\n commitInstanceDom(instance, node)\n\n // stack 是先入后出\n // 实际上是先渲染 child\n // 这里然后再渲染 sibling\n\n // 执行生命周期的 Mount\n stack.push(() => instance.context.triggerMounted())\n\n // 更新下一个兄弟节点\n if (instance.sibling != null) {\n const siblingNode = instance.domRef\n ? instance.domRef.nextSibling\n : node?.nextSibling\n\n stack.push([instance.sibling, siblingNode || undefined])\n }\n\n // 更新下一个子节点\n if (instance.child != null) {\n const childNode = instance.domRef\n ? instance.domRef.firstChild\n : node\n\n stack.push([instance.child, childNode || undefined])\n }\n }\n }\n\n commitWalkV2(rootInstance, rootNode)\n }\n\n while (context.nextUnitOfWork) {\n context.nextUnitOfWork = performUnitOfWork<ServerElement>(\n pluginContext,\n context.nextUnitOfWork\n )\n }\n\n commitDom(\n context.rootInstance.child,\n context.rootInstance.domRef?.firstChild || undefined\n )\n\n onComplete(context.rootInstance.domRef?.toString() || '')\n}\n","import { AirxElement } from '../element'\nimport { createLogger } from '../logger'\nimport { PluginContext } from './common/plugins'\nimport { AbstractElement, InnerAirxComponentContext, Instance, performUnitOfWork } from './common'\n\nclass BrowserElement extends Element implements AbstractElement {}\n\ninterface RenderContext {\n rootInstance: Instance<BrowserElement>\n needCommitDom: boolean\n nextUnitOfWork: Instance<BrowserElement> | null\n}\n\nexport function render(pluginContext: PluginContext, element: AirxElement, domRef: BrowserElement) {\n const rootInstance: Instance<BrowserElement> = {\n domRef,\n context: new InnerAirxComponentContext()\n }\n rootInstance.context.instance = rootInstance\n\n const context: RenderContext = {\n rootInstance,\n nextUnitOfWork: null,\n needCommitDom: false\n }\n\n const appInstance: Instance<BrowserElement> = {\n element,\n parent: context.rootInstance,\n memoProps: { ...element.props },\n context: new InnerAirxComponentContext()\n }\n\n appInstance.context.instance = appInstance\n\n context.rootInstance.child = appInstance\n context.nextUnitOfWork = appInstance\n\n /**\n * 提交 Dom 变化\n */\n function commitDom(rootInstance: Instance<BrowserElement>, rootNode?: ChildNode) {\n const logger = createLogger('commitDom')\n logger.debug('commitDom', rootInstance)\n\n type PropsType = Record<string, unknown>\n\n function updateDomProperties(dom: BrowserElement, nextProps: PropsType, prevProps: PropsType = {}) {\n for (const plugin of pluginContext.plugins) {\n if (plugin.updateDom) plugin.updateDom(dom, nextProps, prevProps)\n }\n }\n\n function getParentDom(instance: Instance<BrowserElement>): BrowserElement {\n if (instance.parent?.domRef != null) {\n return instance.parent.domRef\n }\n if (instance.parent) {\n return getParentDom(instance.parent)\n }\n\n throw new Error('Cant find dom')\n }\n\n /**\n * 查找 instance 下所有的一级 dom\n * @param instance \n * @returns \n */\n function getChildDoms(instance: Instance<BrowserElement>): BrowserElement[] {\n const domList: BrowserElement[] = []\n const todoList: Instance<BrowserElement>[] = [instance]\n\n while (todoList.length > 0) {\n const current = todoList.pop()\n\n // 找到真实 dom 直接提交\n if (current?.domRef != null) {\n domList.push(current.domRef)\n }\n\n // 有子节点但是无真实 dom,向下继续查找\n if (current?.domRef == null) {\n if (current?.child != null) {\n todoList.push(current.child)\n }\n }\n\n // 可能有兄弟节点,则需要继续查找\n if (current?.sibling != null) {\n todoList.push(current.sibling)\n }\n }\n\n return domList\n }\n\n function commitInstanceDom(nextInstance: Instance<BrowserElement>, oldNode?: ChildNode) {\n // 移除标删元素\n if (nextInstance.deletions) {\n for (const deletion of nextInstance.deletions) {\n const domList = getChildDoms(deletion)\n for (let index = 0; index < domList.length; index++) {\n const dom = domList[index]\n if (dom && dom.parentNode) dom.parentNode.removeChild(dom)\n }\n deletion.context.triggerUnmounted()\n }\n\n nextInstance.deletions.clear()\n }\n\n // 创建 dom\n if (nextInstance.domRef == null) {\n if (nextInstance.element == null) throw new Error('???')\n if (typeof nextInstance.element.type === 'string') {\n if (nextInstance.element.type === 'text') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = document.createTextNode(textContent as string) as any\n } else if (nextInstance.element.type === 'comment') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = document.createComment(textContent as string) as any\n } else {\n nextInstance.domRef = nextInstance.elementNamespace\n ? document.createElementNS(nextInstance.elementNamespace, nextInstance.element.type)\n : document.createElement(nextInstance.element.type)\n }\n\n if (nextInstance.domRef) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (nextInstance.domRef as any).airxInstance = nextInstance\n }\n }\n }\n\n // 更新属性\n if (nextInstance.domRef != null && nextInstance.element != null) {\n updateDomProperties(\n nextInstance.domRef,\n nextInstance.element.props,\n nextInstance.beforeElement?.props\n )\n }\n\n // 插入 parent\n // TODO: 针对仅移动时优化\n if (nextInstance.domRef != null) {\n if (oldNode !== nextInstance.domRef) {\n if (nextInstance.domRef.parentNode) {\n nextInstance.domRef.parentNode.removeChild(nextInstance.domRef)\n }\n\n const parentDom = getParentDom(nextInstance)\n parentDom.appendChild(nextInstance.domRef)\n }\n }\n }\n\n function commitWalkV2(initInstance: Instance<BrowserElement>, initNode?: ChildNode) {\n // 创建一个栈,将根节点压入栈中\n\n type StackLayer = [Instance<BrowserElement>, ChildNode | undefined] | (() => void)\n const stack: StackLayer[] = [[initInstance, initNode]]\n\n while (stack.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const stackLayer = stack.pop()!\n if (typeof stackLayer === 'function') {\n stackLayer()\n continue\n }\n\n const [instance, node] = stackLayer\n commitInstanceDom(instance, node)\n\n // stack 是先入后出\n // 实际上是先渲染 child\n // 这里然后再渲染 sibling\n\n // 执行生命周期的 Mount\n stack.push(() => instance.context.triggerMounted())\n\n // 更新下一个兄弟节点\n if (instance.sibling != null) {\n const siblingNode = instance.domRef\n ? instance.domRef.nextSibling\n : node?.nextSibling\n\n stack.push([instance.sibling, siblingNode || undefined])\n }\n\n // 更新下一个子节点\n if (instance.child != null) {\n const childNode = instance.domRef\n ? instance.domRef.firstChild\n : node\n\n stack.push([instance.child, childNode || undefined])\n }\n }\n }\n\n commitWalkV2(rootInstance, rootNode)\n }\n\n function onUpdateRequire() {\n if (context.nextUnitOfWork == null && context.rootInstance.child) {\n context.nextUnitOfWork = context.rootInstance.child\n }\n }\n\n /**\n * 调度\n */\n function workLoop(deadline?: IdleDeadline) {\n let shouldYield = false\n const logger = createLogger('workLoop')\n while (context.nextUnitOfWork && !shouldYield) {\n logger.debug('nextUnitOfWork', context.nextUnitOfWork)\n context.nextUnitOfWork = performUnitOfWork(pluginContext, context.nextUnitOfWork, onUpdateRequire) as Instance<BrowserElement>\n if (context.nextUnitOfWork == null) context.needCommitDom = true\n if (deadline) shouldYield = deadline.timeRemaining() < 1\n }\n\n if (context.needCommitDom && context.rootInstance.child) {\n commitDom(context.rootInstance.child,\n context.rootInstance.domRef?.firstChild || undefined\n )\n context.needCommitDom = false\n }\n\n // TODO: 兼容性\n requestIdleCallback(workLoop)\n }\n\n // 开始调度\n workLoop()\n return context.rootInstance\n}\n","import { AirxChildren, AirxElement, Props } from '../../../../element'\nimport { createLogger } from '../../../../logger'\nimport { Instance } from '../../index'\nimport { Plugin } from '../index'\n\nexport class BasicLogic implements Plugin {\n private logger = createLogger('basicLogicPlugin')\n\n private isSameProps(preProps: Props, nextProps: Props): boolean {\n if (Object.is(nextProps, preProps)) {\n return true\n }\n\n if (\n typeof preProps !== 'object'\n || typeof nextProps !== 'object'\n || preProps === null\n || nextProps === null\n ) {\n this.logger.debug('props must be an object')\n return false\n }\n\n // 对应 key 的值不相同返回 false\n const prevKeys = Object.keys(preProps)\n for (let index = 0; index < prevKeys.length; index++) {\n const key = prevKeys[index]\n if (key !== 'children' && key !== 'key') {\n if (!Object.hasOwn(nextProps, key)) return false\n if (!Object.is(preProps[key], nextProps[key])) return false\n }\n\n if (key === 'children') {\n const prevChildren = preProps['children'] as AirxChildren[]\n const nextChildren = nextProps['children'] as AirxChildren[]\n // children 都是空的,则无需更新\n if (prevChildren.length === 0 && nextChildren.length === 0) return true\n\n // 简单比较一下 child 的引用\n for (let index = 0; index < prevChildren.length; index++) {\n const prevChild = prevChildren[index]\n const nextChild = nextChildren[index]\n\n if (prevChild !== nextChild) return false\n if (typeof prevChild !== typeof nextChild) return false\n }\n }\n\n return true\n }\n\n return false\n }\n\n isReRender(instance: Instance): true | void {\n const nextProps = instance.element?.props\n const preProps = instance.beforeElement?.props\n if (!this.isSameProps(preProps, nextProps)) return true\n }\n\n updateDom(dom: Element, nextProps: Props, prevProps: Props = {}): void {\n this.logger.debug('updateDom', dom, nextProps, prevProps)\n const isKey = (key: string) => key === 'key'\n const isRef = (key: string) => key === 'ref'\n const isStyle = (key: string) => key === 'style'\n const isClass = (key: string) => key === 'class'\n const isEvent = (key: string) => key.startsWith(\"on\")\n const isChildren = (key: string) => key === 'children'\n const isGone = (_prev: Props, next: Props) => (key: string) => !(key in next)\n const isNew = (prev: Props, next: Props) => (key: string) => prev[key] !== next[key]\n const isProperty = (key: string) => !isChildren(key) && !isEvent(key) && !isStyle(key) && !isClass(key) && !isKey(key) && !isRef(key)\n\n // https://developer.mozilla.org/zh-CN/docs/Web/API/Node\n if (dom.nodeName === '#text' || dom.nodeName === '#comment') {\n const textNode = (dom as unknown as Text | Comment)\n if (textNode.nodeValue !== nextProps.textContent) {\n textNode.nodeValue = String(nextProps.textContent)\n }\n return\n }\n\n // remove old style\n const oldStyle = prevProps?.style\n if (typeof oldStyle === 'object' && oldStyle != null) {\n if (!('style' in dom) || !dom.style) return\n Object.keys(oldStyle).forEach(key => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n if ('style' in dom && dom.style) {\n delete (dom.style as any)[key as any]\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n })\n }\n\n // add new style\n const newStyle = nextProps?.style\n if (typeof newStyle === 'object' && newStyle != null) {\n if (!('style' in dom) || !dom.style) return\n Object.keys(newStyle).forEach((key: unknown) => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const value = (newStyle as any)?.[key as any];\n (dom.style as any)[key as any] = value == null ? '' : value\n /* eslint-enable @typescript-eslint/no-explicit-any */\n })\n }\n\n if (dom.className !== nextProps?.class) {\n if (!nextProps?.class) {\n dom.removeAttribute('class')\n } else if (typeof nextProps?.class === 'string') {\n dom.setAttribute('class', nextProps?.class)\n }\n }\n\n //Remove old or changed event listeners\n Object.keys(prevProps)\n .filter(isEvent)\n .filter(\n key =>\n !(key in nextProps) ||\n isNew(prevProps, nextProps)(key)\n )\n .forEach(name => {\n const eventType = name\n .toLowerCase()\n .substring(2)\n\n if (prevProps[name] == null) return\n if (typeof prevProps[name] !== 'function') {\n console.error('EventListener is not a function')\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dom.removeEventListener(eventType as any, prevProps[name] as any)\n }\n })\n\n // Add event listeners\n Object.keys(nextProps)\n .filter(isEvent)\n .filter(isNew(prevProps, nextProps))\n .forEach(name => {\n const eventType = name\n .toLowerCase()\n .substring(2)\n if (nextProps[name] == null) return\n if (typeof nextProps[name] !== 'function') {\n console.error('EventListener is not a function')\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dom.addEventListener(eventType as any, nextProps[name] as any)\n }\n })\n\n // Remove old properties\n Object.keys(prevProps)\n .filter(isProperty)\n .filter(isGone(prevProps, nextProps))\n .forEach(name => dom.removeAttribute(name))\n\n // Set new or changed properties\n Object.keys(nextProps)\n .filter(isProperty)\n .filter(isNew(prevProps, nextProps))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .forEach(name => dom.setAttribute(name, nextProps[name] as any))\n }\n\n isReuseInstance(instance: Instance, nextElement: AirxElement): false | void {\n if (instance && instance.element && instance.element.type !== nextElement.type) {\n return false\n }\n }\n}\n","import { Plugin } from '..'\nimport { Instance } from '../..'\n\nexport class InjectSystem implements Plugin {\n private getProvideValueForParent(instance: Instance | undefined, key: unknown): unknown {\n if (instance && instance.context) {\n const value = instance.context.providedMap.get(key)\n if (value != undefined) return value\n if (instance.parent) {\n return this.getProvideValueForParent(instance.parent, key)\n }\n }\n\n return undefined\n }\n\n isReuseInstance(instance: Instance): false | undefined {\n const injectedKeys = [...instance.context.injectedMap.keys()]\n for (let index = 0; index < injectedKeys.length; index++) {\n const key = injectedKeys[index]\n const currentValue = instance.context.injectedMap.get(key)\n const parentValue = this.getProvideValueForParent(instance.parent, key)\n\n // 如果发现任何值发生变化,则重建实例\n if (parentValue !== currentValue) return false\n }\n }\n}\n","import { Plugin } from '.'\nimport { BasicLogic } from './internal/basic'\nimport { InjectSystem } from './internal/inject'\n\nexport class PluginContext {\n plugins: Plugin[] = [\n new BasicLogic(),\n new InjectSystem()\n ]\n\n registerPlugin(...plugins: Plugin[]) {\n this.plugins.push(...plugins)\n }\n}\n","import { browserRender, serverRender, Plugin, PluginContext } from './render'\nimport { AirxComponent, AirxElement, createElement } from './element'\n\nexport * from './types'\nexport { Plugin } from './render'\n\nexport {\n Fragment,\n component,\n createElement,\n AirxComponent,\n AirxElement,\n AirxChildren,\n AirxComponentContext\n} from './element'\n\nexport {\n inject,\n provide,\n onMounted,\n onUnmounted\n} from './render'\n\nexport interface AirxApp {\n mount: (container: HTMLElement) => AirxApp\n\n /** @deprecated WIP */\n plugin: (...plugins: Plugin[]) => AirxApp\n /** @deprecated WIP */\n renderToHTML: () => Promise<string>\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createApp(element: AirxElement<any> | AirxComponent): AirxApp {\n const appContext = new PluginContext()\n\n const ensureAsElement = (element: AirxElement | AirxComponent): AirxElement => {\n if (typeof element === 'function') {\n return createElement(element, {})\n }\n\n return element\n }\n\n const app: AirxApp = {\n plugin: (...plugins: Plugin[]) => {\n appContext.registerPlugin(...plugins)\n return app\n },\n\n mount: (container: HTMLElement) => {\n container.innerHTML = '' // 先清空再说\n browserRender(appContext, ensureAsElement(element), container)\n return app\n },\n\n renderToHTML: (): Promise<string> => {\n return new Promise<string>(resolve => {\n serverRender(appContext, ensureAsElement(element), resolve)\n })\n }\n }\n\n return app\n}\n"],"names":["symbol.airxElementSymbol","signal.isState","signal.createWatch","signal.createComputed","render","browserRender","serverRender"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../source/render/common/hooks.ts","../../source/logger.ts","../../source/signal/index.ts","../../source/symbol.ts","../../source/element.ts","../../source/render/common/index.ts","../../source/render/server.ts","../../source/render/browser.ts","../../source/render/common/plugins/internal/basic.ts","../../source/render/common/plugins/internal/inject.ts","../../source/render/common/plugins/context.ts","../../source/index.ts"],"sourcesContent":["import { AirxComponentContext } from '../../element'\n\ninterface GlobalContext {\n current: AirxComponentContext | null\n}\n\nexport const globalContext: GlobalContext = {\n current: null\n}\n\nfunction useContext(): AirxComponentContext {\n if (globalContext.current == null) {\n throw new Error('Unable to find a valid component context')\n }\n\n return globalContext.current\n}\n\nexport const onMounted: AirxComponentContext['onMounted'] = (listener) => {\n return useContext().onMounted(listener)\n}\n\nexport const onUnmounted: AirxComponentContext['onUnmounted'] = (listener) => {\n return useContext().onUnmounted(listener)\n}\n\nexport const inject: AirxComponentContext['inject'] = (key) => {\n return useContext().inject(key)\n}\n\nexport const provide: AirxComponentContext['provide'] = (key, value) => {\n return useContext().provide(key, value)\n}\n","declare const process: { env?: { NODE_ENV?: string, AIRX_DEBUG?: string } } | undefined\nconst isPrintLogs = typeof process != 'undefined'\n && process?.env?.NODE_ENV === 'development'\n && process?.env?.AIRX_DEBUG === 'true'\n\nexport function createLogger(name: string) {\n function getPrintPrefix() {\n const date = new Date().toLocaleString()\n return `[${date}][${name}]`\n }\n\n function debug(...args: unknown[]) {\n if (isPrintLogs) console.log(getPrintPrefix(), ...args)\n }\n\n return { debug }\n}\n","// https://github.com/proposal-signals/signal-polyfill/issues/10\nimport type { Signal as Polyfill } from 'signal-polyfill'\n\nexport declare type Watcher = Polyfill.subtle.Watcher\n\nlet firstSignal: typeof Polyfill | undefined = undefined\n\ndeclare let self: unknown\ndeclare let window: unknown\ndeclare let global: unknown\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst globalNS: any = (function () {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n\n if (typeof self !== 'undefined') {\n return self\n }\n if (typeof window !== 'undefined') {\n return window\n }\n if (typeof global !== 'undefined') {\n return global\n }\n throw new Error('unable to locate global object')\n})()\n\n// 通过函数包装来延迟加载 Signal\n// 这对使用 Polyfill 的应用来说更友好\nfunction getSignal() {\n const globalSignal: typeof Polyfill = globalNS['Signal']\n if (globalSignal == null) throw new Error('Signal is undefined')\n if (firstSignal == null) firstSignal = globalSignal\n if (firstSignal !== globalSignal) throw new Error('Signal have multiple instances')\n\n return globalSignal\n}\n\nexport function createWatch(notify: (this: Polyfill.subtle.Watcher) => void): Polyfill.subtle.Watcher {\n const signal = getSignal()\n return new signal.subtle.Watcher(notify)\n}\n\nexport function createState<T>(initial: T, options?: Polyfill.Options<T> | undefined): Polyfill.State<T> {\n const signal = getSignal()\n return new signal.State(initial, options)\n}\n\nexport function createComputed<T>(computation: () => T, options?: Polyfill.Options<T> | undefined): Polyfill.Computed<T> {\n const signal = getSignal()\n return new signal.Computed(computation, options)\n}\n\nexport function isState<T>(target: unknown): target is Polyfill.State<T> {\n const signal = getSignal()\n return target instanceof signal.State\n}\n","export const airxElementSymbol = Symbol('airx-element')\nexport const airxReactiveDependenciesSymbol = Symbol('airx-dependencies')\n","import * as symbol from './symbol'\nimport { CSSProperties } from './types'\n\ntype AirxElementType<P> = string | AirxComponent<P>\n\nexport type Props = { [propKey: string]: unknown }\n\n/**\n * AirxElement 表示一个 Airx 元素\n * type 表示元素的类型,可能是一个 html 标签,\n * 也可能是一个自定义组件\n * props 表示元素的属性\n * children 表示元素的子元素\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface AirxElement<P = any> {\n type: AirxElementType<P>\n props: Props & P\n [symbol.airxElementSymbol]: true\n}\n\nexport type AirxChildren =\n | null\n | string\n | number\n | boolean\n | undefined\n | AirxElement\n | Array<AirxChildren>\n\n/**\n * 函数式组件接收自己的 props,并返回一个 AirxElement\n */\nexport type AirxComponentRender = () => AirxChildren\nexport type AirxComponent<P = unknown> = ReactiveComponent<P>\nexport type ReactiveComponent<P = unknown> = (props: P) => AirxComponentRender\n\n/**\n * createElement 是用于创建 AirxElement 的工具函数\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createElement<P = any>(\n type: AirxElementType<P>,\n props: { [key: string]: unknown } & P,\n ...children: AirxChildren[]\n): AirxElement<P> {\n const localChildren = children.length > 0\n ? children\n : props.children\n\n return {\n type,\n props: {\n ...props,\n children: localChildren\n },\n [symbol.airxElementSymbol]: true\n }\n}\n\nexport function isValidElement(element: unknown): element is AirxElement {\n return typeof element === 'object'\n && element !== null\n && Reflect.get(element, symbol.airxElementSymbol)\n}\n\nexport function Fragment(props: { children: AirxElement }) {\n return () => props.children\n}\n\nexport type AirxComponentUnmountedListener = () => void\nexport type AirxComponentMountedListener = () => (() => void) | void\n\nexport interface AirxComponentLifecycle {\n onMounted: (listener: AirxComponentMountedListener) => void\n onUnmounted: (listener: AirxComponentUnmountedListener) => void\n}\n\ntype ProvideUpdater<T = unknown> = (newValue: T | ((old: T) => T)) => void\n\nexport type AirxComponentContext = AirxComponentLifecycle & {\n provide: <T = unknown>(key: unknown, value: T) => ProvideUpdater<T>\n inject: <T = unknown>(key: unknown) => T | undefined\n}\n\nexport function component<P = unknown>(comp: AirxComponent<P>): AirxComponent<P> {\n return comp\n}\n\nexport function createErrorRender(error: unknown): AirxComponentRender {\n console.error(error)\n\n const handleClick = () => {\n // 点击输出错误是为了避免\n // 页面上多个组件同时出错时\n // 无法定位错误与之对应的组件\n console.error(error)\n }\n\n const formattingError = (): string => {\n if (error == null) return 'Unknown rendering error'\n if (error instanceof Error) return error.message\n return JSON.stringify(error)\n }\n\n const errorBlockStyle: CSSProperties = {\n padding: '8px',\n fontSize: '20px',\n color: 'rgb(255,255,255)',\n backgroundColor: 'rgb(255, 0, 0)',\n }\n\n return () => createElement('div', { style: errorBlockStyle, onClick: handleClick }, formattingError())\n}\n","import * as signal from '../../signal'\n\nimport { createLogger } from '../../logger'\nimport {\n AirxElement,\n AirxChildren,\n createElement,\n isValidElement,\n AirxComponentContext,\n AirxComponentMountedListener,\n AirxComponentUnmountedListener,\n AirxComponentRender,\n createErrorRender,\n} from '../../element'\nimport { PluginContext } from './plugins'\nimport { globalContext } from './hooks'\n\nexport type Disposer = () => void\n\nexport class InnerAirxComponentContext<E extends AbstractElement> implements AirxComponentContext {\n public instance!: Instance<E>\n private disposers = new Set<Disposer>()\n public providedMap = new Map<unknown, unknown>()\n public injectedMap = new Map<unknown, unknown>()\n private mountListeners = new Set<AirxComponentMountedListener>()\n private unmountedListeners = new Set<AirxComponentUnmountedListener>()\n\n public triggerMounted() {\n this.mountListeners.forEach(listener => {\n let disposer: Disposer | void = undefined\n\n try {\n disposer = listener()\n } catch (err: unknown) {\n console.error(err, listener)\n }\n\n if (typeof disposer === 'function') {\n this.addDisposer(disposer)\n }\n })\n // 生命周期只会调用一次\n this.mountListeners.clear()\n }\n\n public triggerUnmounted() {\n // 递归的调用子 child 的 Unmounted\n if (this.instance?.child != null) {\n this.instance.child.context.triggerUnmounted()\n }\n\n // 处理自己\n this.unmountedListeners.forEach(listener => {\n try {\n listener()\n } catch (err: unknown) {\n console.error(err, listener)\n }\n })\n\n // 处理兄弟节点\n if (this.instance?.sibling != null) {\n this.instance.sibling.context.triggerUnmounted()\n }\n\n this.dispose()\n }\n\n public onMounted(listener: AirxComponentMountedListener) {\n this.mountListeners.add(listener)\n }\n\n public onUnmounted(listener: AirxComponentUnmountedListener) {\n this.unmountedListeners.add(listener)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public provide<T = unknown>(key: any, value: any): (v: T | ((old: T) => T)) => void {\n this.providedMap.set(key, value)\n return v => {\n if (typeof v === 'function') {\n const old = this.providedMap.get(key)\n const func = v as (old: T) => T\n this.providedMap.set(key, func(old as T))\n return\n }\n\n this.providedMap.set(key, v)\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public inject<T = unknown>(key: any): T | undefined {\n const getProvideValueForParent = (instance: Instance<E> | undefined, key: unknown): unknown => {\n if (instance && instance.context) {\n const value = instance.context.providedMap.get(key)\n if (value != undefined) return value\n if (instance.parent) return getProvideValueForParent(instance.parent, key)\n }\n\n return undefined\n }\n\n const currentParentValue = getProvideValueForParent(this.instance.parent, key)\n this.injectedMap.set(key, currentParentValue) // 更新本地值\n return this.injectedMap.get(key) as T\n }\n\n addDisposer(...disposers: Disposer[]) {\n disposers.forEach(disposer => {\n this.disposers.add(disposer)\n })\n }\n\n dispose() {\n this.disposers.forEach(\n (disposer: Disposer) => {\n try {\n disposer()\n } catch (err: unknown) {\n // eslint-disable-next-line no-console\n console.error(err, disposer)\n }\n }\n )\n\n this.disposers.clear()\n this.injectedMap.clear()\n this.providedMap.clear()\n this.mountListeners.clear()\n this.unmountedListeners.clear()\n }\n\n /**\n * 当 context 传递给外部消费时,隐藏内部实现,仅暴露接口定义的内容\n * @returns 和 AirxComponentContext 接口完全一致的对象\n */\n public getSafeContext(): AirxComponentContext {\n return {\n inject: k => this.inject(k),\n provide: (k, v) => this.provide(k, v),\n onMounted: listener => this.onMounted(listener),\n onUnmounted: listener => this.onUnmounted(listener)\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface AbstractElement {\n\n}\n\n/**\n * 树结构\n * instance ←--------------\n * | ↑ ↑\n * child parent parent\n * ↓ | |\n * instance -sibling→ instance...\n */\nexport interface Instance<E extends AbstractElement = AbstractElement> {\n domRef?: E\n\n child?: Instance<E> // 子节点\n parent?: Instance<E> // 父节点\n sibling?: Instance<E> // 兄弟节点\n deletions?: Set<Instance<E>> // 需要移除的实例\n\n element?: AirxElement\n beforeElement?: AirxElement\n signalWatcher?: signal.Watcher\n childrenRender?: AirxComponentRender\n\n needReRender?: boolean\n elementNamespace?: string\n context: InnerAirxComponentContext<E>\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n memoProps?: any // props 的引用\n}\n\n\n/**\n * 更新 children\n * @param parentInstance 当前正在处理的组件的实例\n * @param children 当前组件的子节点\n */\nexport function reconcileChildren<E extends AbstractElement>(appContext: PluginContext, parentInstance: Instance<E>, childrenElementArray: AirxElement[]) {\n const logger = createLogger('reconcileChildren')\n logger.debug('reconcileChildren', parentInstance, childrenElementArray)\n // parentInstance ←-------- \n // | ↑ ↑\n // child parent parent\n // ↓ | |\n // instance -sibling→ instance -→ ....\n\n /**\n * 内部通过 index 生成 element 的 key\n * 通过前缀来避免和用户手动设置的 key 发生冲突\n * @param index \n * @returns 生成的 key\n */\n function getInnerElementIndexKey(index: number): string {\n return `airx-element-inner-key:${index}`\n }\n\n /**\n * 将 children 实例链转成 Map 便于此处消费\n * @param firstChild children 实例的第一个元素\n * @returns 从 firstChild 开始之后的所有 sibling 实例组成的 Map\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getChildrenInstanceMap(firstChild?: Instance<E>): Map<any, Instance<E>> {\n // 不使用递归是因为递归容易爆栈\n let nextIndex = 0\n let nextChild = firstChild\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const map = new Map<any, Instance<E>>()\n\n while (nextChild) {\n /* 如果有 key,则将 key 作为 map key,否则将 index 作为 key */\n if (nextChild.element?.props.key != null) {\n map.set(nextChild.element?.props.key, nextChild)\n } else {\n map.set(getInnerElementIndexKey(nextIndex), nextChild)\n }\n\n nextChild = nextChild.sibling\n nextIndex += 1\n }\n\n return map\n }\n\n const newChildrenInstanceArray: Instance<E>[] = []\n const childrenInstanceMap = getChildrenInstanceMap(parentInstance.child)\n\n function getChildInstance(child: AirxElement, index: number): [Instance<E> | null, () => void] {\n if (child.props.key != null) {\n const key = child.props.key\n const instance = childrenInstanceMap.get(key) || null\n return [instance, () => childrenInstanceMap.delete(key)]\n }\n\n const innerKey = getInnerElementIndexKey(index)\n const instance = childrenInstanceMap.get(innerKey) || null\n return [instance, () => childrenInstanceMap.delete(innerKey)]\n }\n\n /** 是否复用实例 */\n function isReuseInstance(instance: Instance<E>, nextElement: AirxElement): boolean {\n for (const plugin of appContext.plugins) {\n if (typeof plugin.isReuseInstance === 'function') {\n const result = plugin.isReuseInstance(instance, nextElement)\n // 任意一个插件要求不复用就不复用\n if (result === false) return false\n }\n }\n return true\n }\n\n function updateMemoProps(instance: Instance<E>) {\n if (instance.element == null) return\n if (instance.memoProps == null) instance.memoProps = {}\n // 简单来说就是以下几件事情\n // 始终保持 props 的引用不变\n // 1. 创建一个新对象来保存 beforeElement props 的状态\n // 2. 将新的 element 上的 props 引用设置为之前的 props\n // 3. 将新的 element 上的 props 更新到之前的 props 上去\n\n if (instance.memoProps != null) {\n for (const key in instance.memoProps) {\n delete instance.memoProps[key]\n }\n }\n\n // 将新的 props 更新上去\n for (const key in instance.element.props) {\n const value = instance.element.props[key]\n instance.memoProps[key] = value\n }\n }\n\n function isNeedReRender(instance: Instance<E>): boolean {\n for (const plugin of appContext.plugins) {\n if (typeof plugin.isReRender === 'function') {\n const result = plugin.isReRender(instance)\n // 任意一个插件要求重新渲染就重新渲染\n if (result === true) return true\n }\n }\n\n return false\n }\n\n function getElementNamespace(element: AirxElement): string {\n const ns = Object.keys(element.props)\n .filter(key => (key === 'xmlns' || key.startsWith('xmlns:')))\n .sort((a, b) => a.length - b.length)\n\n if (ns.length > 1) {\n console.log('airx currently does not support setting multiple xmlns')\n return ''\n }\n\n if (ns.some(i => i.startsWith('xmlns:'))) {\n console.log('airx does not currently support setting named namespaces,only supports default')\n return ''\n }\n\n // 原则上来说 html 仅支持设置默认的 namespace\n return element.props[ns[0]]\n }\n\n // 依次遍历 child 并和 instance 对比\n for (let index = 0; index < childrenElementArray.length; index++) {\n const element = childrenElementArray[index]\n const [instance, seize] = getChildInstance(element, index)\n\n if (instance && isReuseInstance(instance, element)) {\n seize() // 从 childrenInstanceMap 中释放\n newChildrenInstanceArray.push(instance)\n instance.beforeElement = instance.element\n instance.element = element\n updateMemoProps(instance)\n\n // 如果父组件更新了,子组件全部都要更新\n if (instance.needReRender !== true && typeof element.type === 'function') {\n instance.needReRender = parentInstance.needReRender || isNeedReRender(instance)\n }\n } else {\n const context = new InnerAirxComponentContext<E>()\n const elementNamespace = getElementNamespace(element)\n const instance: Instance<E> = { element, context, elementNamespace }\n newChildrenInstanceArray.push(instance)\n context.instance = instance\n updateMemoProps(instance)\n\n // 添加 ref 处理\n if ('ref' in instance.memoProps) {\n context.onMounted(() => {\n const ref = instance.memoProps.ref\n // 如果组件有自己的 dom 并且 ref 为 state\n if (instance.domRef && signal.isState(ref)) {\n ref.set(instance.domRef)\n return () => ref.set(undefined)\n }\n })\n }\n }\n }\n\n // 新的 node\n for (let index = 0; index < newChildrenInstanceArray.length; index++) {\n const instance = newChildrenInstanceArray[index]\n\n // 确保链的干净\n instance.parent = parentInstance\n if (index === 0) parentInstance.child = instance\n if (index > 0) newChildrenInstanceArray[index - 1].sibling = instance\n if (index === newChildrenInstanceArray.length - 1) delete instance.sibling\n\n // 处理 ElementNS: 继承父级 namespace\n if (!instance.elementNamespace && instance.parent?.elementNamespace) {\n // SVG 中 foreignObject 代表外来对象,起到隔离 namespace 的作用\n if (instance.parent.element?.type !== 'foreignObject') {\n instance.elementNamespace = instance.parent.elementNamespace\n }\n }\n }\n\n // 剩余的是需要移除的\n if (childrenInstanceMap.size > 0) {\n if (parentInstance.deletions == null) {\n parentInstance.deletions = new Set()\n }\n\n childrenInstanceMap.forEach(instance => {\n parentInstance.deletions?.add(instance)\n })\n }\n\n logger.debug('parentInstance', parentInstance)\n}\n\ntype OnUpdateRequire<E extends AbstractElement> = (instance: Instance<E>) => void\n\n/**\n * 处理单个 instance\n * @param instance 当前处理的实例\n * @returns 返回下一个需要处理的 instance\n */\nexport function performUnitOfWork<E extends AbstractElement>(pluginContext: PluginContext, instance: Instance<E>, onUpdateRequire?: OnUpdateRequire<E>): Instance<E> | null {\n const element = instance.element\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function childrenAsElements(children: AirxChildren): AirxElement<any>[] {\n const childrenAsArray = Array.isArray(children) ? children : [children]\n function isComment(element: AirxChildren): boolean {\n if (element === '') return true\n if (element == null) return true\n if (element === false) return true\n return false\n }\n\n return childrenAsArray.flat(3).map(element => {\n if (isValidElement(element)) return element\n const elementType = isComment(element) ? 'comment' : 'text'\n const textContent = element === '' ? 'empty-string' : String(element)\n return createElement(elementType, { textContent })\n })\n }\n\n // airx 组件\n if (typeof element?.type === 'function') {\n if (instance.signalWatcher == null) {\n // Watch 是惰性的,只有当 Signal 被读取时才会触发 --!\n const signalWatcher = signal.createWatch(async () => {\n instance.needReRender = true\n onUpdateRequire?.(instance)\n\n queueMicrotask(() => {\n signalWatcher.watch()\n const paddings = signalWatcher.getPending()\n for (const padding of paddings) padding.get()\n })\n })\n\n instance.signalWatcher = signalWatcher\n instance.context.addDisposer(() => signalWatcher.unwatch())\n }\n\n if (instance.childrenRender == null) {\n const component = element.type\n const beforeContext = globalContext.current\n globalContext.current = instance.context.getSafeContext()\n\n let componentReturnValue: AirxComponentRender | undefined = undefined\n\n try {\n componentReturnValue = component(instance.memoProps)\n } catch (error) {\n componentReturnValue = createErrorRender(error)\n }\n\n if (typeof componentReturnValue !== 'function') {\n const error = new Error('Component must return a render function')\n componentReturnValue = createErrorRender(error.message)\n }\n\n // restore context\n globalContext.current = beforeContext\n instance.childrenRender = componentReturnValue\n const childrenComputed = signal.createComputed(() => {\n try {\n return instance.childrenRender!()\n } catch (error) {\n return createErrorRender(error)()\n }\n })\n instance.signalWatcher.watch(childrenComputed)\n const children = childrenComputed.get()\n\n reconcileChildren(pluginContext, instance, childrenAsElements(children))\n }\n\n if (instance.needReRender) {\n let children: AirxChildren\n\n try {\n // 如果是由于父组件导致的子组件渲染\n // 直接使用 childrenComputed.get() 将读取到缓存值\n // 因此这里使用 childrenRender 来更新 children 的值\n children = instance.childrenRender!()\n } catch (error) {\n children = createErrorRender(error)()\n }\n\n reconcileChildren(pluginContext, instance, childrenAsElements(children))\n delete instance.needReRender\n }\n }\n\n // 浏览器组件/标签\n if (typeof element?.type === 'string') {\n if ('children' in element.props && Array.isArray(element.props.children)) {\n reconcileChildren(pluginContext, instance, childrenAsElements(element.props.children))\n }\n }\n\n // 优先处理 child\n if (instance.child) {\n return instance.child\n }\n\n /**\n * 递归向上查找可用的兄弟 instance\n * @param instance \n * @returns 返回下一个需要处理的兄弟 instance\n */\n function returnSibling(instance: Instance<E>): Instance<E> | null {\n if (instance.sibling) {\n return instance.sibling\n }\n if (instance.parent) {\n return returnSibling(instance.parent)\n }\n\n return null\n }\n\n return returnSibling(instance)\n}\n","import { CSSProperties } from '..'\nimport { AirxElement } from '../element'\nimport { createLogger } from '../logger'\nimport { InnerAirxComponentContext, Instance, performUnitOfWork, AbstractElement } from './common'\nimport { PluginContext } from './common/plugins'\n\nfunction camelToKebab(str: string): string {\n return str.replace(/([A-Z])/g, (match, p1, offset) => {\n if (offset === 0) {\n return p1.toLowerCase()\n } else {\n return '-' + p1.toLowerCase()\n }\n })\n}\n\nclass ServerElement implements AbstractElement {\n static createTextNode(content: string) {\n const dom = new ServerElement('#text')\n dom.content = content\n return dom\n }\n\n static createComment(content: string) {\n const dom = new ServerElement('#comment')\n dom.content = content\n return dom\n }\n\n static createElement(tag: string) {\n return new ServerElement(tag)\n }\n\n constructor(public nodeName: string) {\n this.style = {}\n this.content = ''\n this.children = []\n this.className = ''\n this.attributes = new Map()\n }\n\n\n readonly firstChild?: ServerElement\n readonly nextSibling?: ServerElement\n readonly parentNode?: ServerElement\n\n readonly className: string\n readonly style: CSSProperties\n private content: string\n private children: ServerElement[]\n private attributes: Map<string, string>\n\n removeChild(dom: ServerElement) {\n /* eslint-disable @typescript-eslint/ban-ts-comment */\n const index = this.children.findIndex(v => v === dom)\n if (index != -1) this.children.splice(index, 1)\n // @ts-ignore\n this.firstChild = undefined\n // @ts-ignore\n this.nextSibling = undefined\n // @ts-ignore\n this.parentNode = undefined\n /* eslint-enable @typescript-eslint/ban-ts-comment */\n }\n\n appendChild(dom: ServerElement) {\n /* eslint-disable @typescript-eslint/ban-ts-comment */\n // @ts-ignore\n dom.parentNode = this\n\n if (this.children.length > 0) {\n // @ts-ignore\n this.children[this.children.length - 1].nextSibling = dom\n }\n\n // @ts-ignore\n this.firstChild = this.children[0]\n this.children.push(dom)\n /* eslint-enable @typescript-eslint/ban-ts-comment */\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setAttribute(name: string, value: any) {\n if (value === '') return this.attributes.delete(name)\n /* eslint-disable @typescript-eslint/ban-ts-comment */\n // @ts-ignore\n if (name === 'class') return this.className = value\n // @ts-ignore\n if (name === 'style') return this.style = value\n /* eslint-enable @typescript-eslint/ban-ts-comment */\n this.attributes.set(name, value)\n }\n\n removeAttribute(name: string) {\n this.attributes.delete(name)\n }\n\n toString(): string {\n if (this.nodeName === '#text') return this.content\n if (this.nodeName === '#comment') return this.content\n\n const styleString = Object.entries(this.style)\n .map(([key, value]) => `${camelToKebab(key)}:${value}`)\n .join(';')\n\n const attributes = [...this.attributes.entries()]\n if (styleString.length > 0) attributes.push(['style', styleString])\n if (this.className.length > 0) attributes.push(['class', this.className])\n const attributesString = attributes.map(([name, value]) => ` ${name}=\"${value}\"`).join('')\n return `<${this.nodeName}${attributesString}>${this.children.map(child => child.toString()).join('')}</${this.nodeName}>`\n }\n}\n\ninterface RenderContext {\n rootInstance: Instance<ServerElement>\n needCommitDom: boolean\n nextUnitOfWork: Instance<ServerElement> | null\n}\n\ntype ServerCompleteHandler = (data: string) => void\n\nexport function render(pluginContext: PluginContext, element: AirxElement, onComplete: ServerCompleteHandler) {\n const rootInstance: Instance<ServerElement> = {\n domRef: ServerElement.createElement('div'),\n context: new InnerAirxComponentContext()\n }\n rootInstance.context.instance = rootInstance\n\n const context: RenderContext = {\n rootInstance,\n nextUnitOfWork: null,\n needCommitDom: false\n }\n\n const appInstance: Instance<ServerElement> = {\n element,\n parent: context.rootInstance,\n memoProps: { ...element.props },\n context: new InnerAirxComponentContext()\n }\n\n appInstance.context.instance = appInstance\n\n context.rootInstance.child = appInstance\n context.nextUnitOfWork = appInstance\n\n /**\n * 提交 Dom 变化\n */\n function commitDom(rootInstance: Instance<ServerElement>, rootNode?: ServerElement) {\n const logger = createLogger('commitDom')\n logger.debug('commitDom', rootInstance)\n\n type PropsType = Record<string, unknown>\n\n function updateDomProperties(dom: ServerElement, nextProps: PropsType, prevProps: PropsType = {}) {\n const isKey = (key: string) => key === 'key'\n const isRef = (key: string) => key === 'ref'\n const isStyle = (key: string) => key === 'style'\n const isClass = (key: string) => key === 'class'\n const isEvent = (key: string) => key.startsWith(\"on\")\n const isChildren = (key: string) => key === 'children'\n const isGone = (_prev: PropsType, next: PropsType) => (key: string) => !(key in next)\n const isNew = (prev: PropsType, next: PropsType) => (key: string) => prev[key] !== next[key]\n const isProperty = (key: string) => !isChildren(key) && !isEvent(key) && !isStyle(key) && !isClass(key) && !isKey(key) && !isRef(key)\n\n // https://developer.mozilla.org/zh-CN/docs/Web/API/Node\n if (dom.nodeName === '#text' || dom.nodeName === '#comment') {\n const textNode = (dom as unknown as Text | Comment)\n if (textNode.nodeValue !== nextProps.textContent) {\n textNode.nodeValue = String(nextProps.textContent)\n }\n return\n }\n\n // remove old style\n const oldStyle = prevProps?.style\n if (typeof oldStyle === 'object' && oldStyle != null) {\n Object.keys(oldStyle).forEach(key => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n delete dom.style[key as any]\n /* eslint-enable @typescript-eslint/no-explicit-any */\n })\n }\n\n // add new style\n const newStyle = nextProps?.style\n if (typeof newStyle === 'object' && newStyle != null) {\n Object.keys(newStyle).forEach((key: unknown) => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const value = (newStyle as any)?.[key as any]\n dom.style[key as any] = value == null ? '' : value\n /* eslint-enable @typescript-eslint/no-explicit-any */\n })\n }\n\n if (dom.className !== nextProps?.class) {\n if (!nextProps?.class) {\n dom.removeAttribute('class')\n } else if (typeof nextProps?.class === 'string') {\n dom.setAttribute('class', nextProps?.class)\n }\n }\n\n // Remove old properties\n Object.keys(prevProps)\n .filter(isProperty)\n .filter(isGone(prevProps, nextProps))\n .forEach(name => dom.removeAttribute(name))\n\n // Set new or changed properties\n Object.keys(nextProps)\n .filter(isProperty)\n .filter(isNew(prevProps, nextProps))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .forEach(name => dom.setAttribute(name, nextProps[name] as any))\n }\n\n function getParentDom(instance: Instance<ServerElement>): ServerElement {\n if (instance.parent?.domRef != null) {\n return instance.parent.domRef\n }\n if (instance.parent) {\n return getParentDom(instance.parent)\n }\n\n throw new Error('Cant find dom')\n }\n\n /**\n * 查找 instance 下所有的一级 dom\n * @param instance \n * @returns \n */\n function getChildDoms(instance: Instance<ServerElement>): ServerElement[] {\n const domList: ServerElement[] = []\n const todoList: Instance<ServerElement>[] = [instance]\n\n while (todoList.length > 0) {\n const current = todoList.pop()\n\n // 找到真实 dom 直接提交\n if (current?.domRef != null) {\n domList.push(current.domRef)\n }\n\n // 有子节点但是无真实 dom,向下继续查找\n if (current?.domRef == null) {\n if (current?.child != null) {\n todoList.push(current.child)\n }\n }\n\n // 可能有兄弟节点,则需要继续查找\n if (current?.sibling != null) {\n todoList.push(current.sibling)\n }\n }\n\n return domList\n }\n\n function commitInstanceDom(nextInstance: Instance<ServerElement>, oldNode?: ServerElement) {\n // 移除标删元素\n if (nextInstance.deletions) {\n for (const deletion of nextInstance.deletions) {\n const domList = getChildDoms(deletion)\n for (let index = 0; index < domList.length; index++) {\n const dom = domList[index]\n if (dom && dom.parentNode) dom.parentNode.removeChild(dom)\n }\n deletion.context.triggerUnmounted()\n }\n\n nextInstance.deletions.clear()\n }\n\n // 创建 dom\n if (nextInstance.domRef == null) {\n if (nextInstance.element == null) throw new Error('???')\n if (typeof nextInstance.element.type === 'string') {\n if (nextInstance.element.type === 'text') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = ServerElement.createTextNode(textContent as string) as any\n } else if (nextInstance.element.type === 'comment') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = ServerElement.createComment(textContent as string) as any\n } else {\n nextInstance.domRef = ServerElement.createElement(nextInstance.element.type)\n }\n }\n }\n\n // 更新属性\n if (nextInstance.domRef != null && nextInstance.element != null) {\n updateDomProperties(\n nextInstance.domRef,\n nextInstance.element.props,\n nextInstance.beforeElement?.props\n )\n }\n\n // 插入 parent\n // TODO: 针对仅移动时优化\n if (nextInstance.domRef != null) {\n if (oldNode !== nextInstance.domRef) {\n if (nextInstance.domRef.parentNode) {\n nextInstance.domRef.parentNode.removeChild(nextInstance.domRef)\n }\n\n const parentDom = getParentDom(nextInstance)\n parentDom.appendChild(nextInstance.domRef)\n }\n }\n }\n\n function commitWalkV2(initInstance: Instance<ServerElement>, initNode?: ServerElement) {\n // 创建一个栈,将根节点压入栈中\n\n type StackLayer = [Instance<ServerElement>, ServerElement | undefined] | (() => void)\n const stack: StackLayer[] = [[initInstance, initNode]]\n\n while (stack.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const stackLayer = stack.pop()!\n if (typeof stackLayer === 'function') {\n stackLayer()\n continue\n }\n\n const [instance, node] = stackLayer\n commitInstanceDom(instance, node)\n\n // stack 是先入后出\n // 实际上是先渲染 child\n // 这里然后再渲染 sibling\n\n // 执行生命周期的 Mount\n stack.push(() => instance.context.triggerMounted())\n\n // 更新下一个兄弟节点\n if (instance.sibling != null) {\n const siblingNode = instance.domRef\n ? instance.domRef.nextSibling\n : node?.nextSibling\n\n stack.push([instance.sibling, siblingNode || undefined])\n }\n\n // 更新下一个子节点\n if (instance.child != null) {\n const childNode = instance.domRef\n ? instance.domRef.firstChild\n : node\n\n stack.push([instance.child, childNode || undefined])\n }\n }\n }\n\n commitWalkV2(rootInstance, rootNode)\n }\n\n while (context.nextUnitOfWork) {\n context.nextUnitOfWork = performUnitOfWork<ServerElement>(\n pluginContext,\n context.nextUnitOfWork\n )\n }\n\n commitDom(\n context.rootInstance.child,\n context.rootInstance.domRef?.firstChild || undefined\n )\n\n onComplete(context.rootInstance.domRef?.toString() || '')\n}\n","import { AirxElement } from '../element'\nimport { createLogger } from '../logger'\nimport { PluginContext } from './common/plugins'\nimport { AbstractElement, InnerAirxComponentContext, Instance, performUnitOfWork } from './common'\n\nclass BrowserElement extends Element implements AbstractElement {}\n\ninterface RenderContext {\n rootInstance: Instance<BrowserElement>\n needCommitDom: boolean\n nextUnitOfWork: Instance<BrowserElement> | null\n}\n\nexport function render(pluginContext: PluginContext, element: AirxElement, domRef: BrowserElement) {\n const rootInstance: Instance<BrowserElement> = {\n domRef,\n context: new InnerAirxComponentContext()\n }\n rootInstance.context.instance = rootInstance\n\n const context: RenderContext = {\n rootInstance,\n nextUnitOfWork: null,\n needCommitDom: false\n }\n\n const appInstance: Instance<BrowserElement> = {\n element,\n parent: context.rootInstance,\n memoProps: { ...element.props },\n context: new InnerAirxComponentContext()\n }\n\n appInstance.context.instance = appInstance\n\n context.rootInstance.child = appInstance\n context.nextUnitOfWork = appInstance\n\n /**\n * 提交 Dom 变化\n */\n function commitDom(rootInstance: Instance<BrowserElement>, rootNode?: ChildNode) {\n const logger = createLogger('commitDom')\n logger.debug('commitDom', rootInstance)\n\n type PropsType = Record<string, unknown>\n\n function updateDomProperties(dom: BrowserElement, nextProps: PropsType, prevProps: PropsType = {}) {\n for (const plugin of pluginContext.plugins) {\n if (plugin.updateDom) plugin.updateDom(dom, nextProps, prevProps)\n }\n }\n\n function getParentDom(instance: Instance<BrowserElement>): BrowserElement {\n if (instance.parent?.domRef != null) {\n return instance.parent.domRef\n }\n if (instance.parent) {\n return getParentDom(instance.parent)\n }\n\n throw new Error('Cant find dom')\n }\n\n /**\n * 查找 instance 下所有的一级 dom\n * @param instance \n * @returns \n */\n function getChildDoms(instance: Instance<BrowserElement>): BrowserElement[] {\n const domList: BrowserElement[] = []\n const todoList: Instance<BrowserElement>[] = [instance]\n\n while (todoList.length > 0) {\n const current = todoList.pop()\n\n // 找到真实 dom 直接提交\n if (current?.domRef != null) {\n domList.push(current.domRef)\n }\n\n // 有子节点但是无真实 dom,向下继续查找\n if (current?.domRef == null) {\n if (current?.child != null) {\n todoList.push(current.child)\n }\n }\n\n // 可能有兄弟节点,则需要继续查找\n if (current?.sibling != null) {\n todoList.push(current.sibling)\n }\n }\n\n return domList\n }\n\n function commitInstanceDom(nextInstance: Instance<BrowserElement>, oldNode?: ChildNode) {\n // 移除标删元素\n if (nextInstance.deletions) {\n for (const deletion of nextInstance.deletions) {\n const domList = getChildDoms(deletion)\n for (let index = 0; index < domList.length; index++) {\n const dom = domList[index]\n if (dom && dom.parentNode) dom.parentNode.removeChild(dom)\n }\n deletion.context.triggerUnmounted()\n }\n\n nextInstance.deletions.clear()\n }\n\n // 创建 dom\n if (nextInstance.domRef == null) {\n if (nextInstance.element == null) throw new Error('???')\n if (typeof nextInstance.element.type === 'string') {\n if (nextInstance.element.type === 'text') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = document.createTextNode(textContent as string) as any\n } else if (nextInstance.element.type === 'comment') {\n const textContent = nextInstance.element.props.textContent\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextInstance.domRef = document.createComment(textContent as string) as any\n } else {\n nextInstance.domRef = nextInstance.elementNamespace\n ? document.createElementNS(nextInstance.elementNamespace, nextInstance.element.type)\n : document.createElement(nextInstance.element.type)\n }\n\n if (nextInstance.domRef) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (nextInstance.domRef as any).airxInstance = nextInstance\n }\n }\n }\n\n // 更新属性\n if (nextInstance.domRef != null && nextInstance.element != null) {\n updateDomProperties(\n nextInstance.domRef,\n nextInstance.element.props,\n nextInstance.beforeElement?.props\n )\n }\n\n // 插入 parent\n // TODO: 针对仅移动时优化\n if (nextInstance.domRef != null) {\n if (oldNode !== nextInstance.domRef) {\n if (nextInstance.domRef.parentNode) {\n nextInstance.domRef.parentNode.removeChild(nextInstance.domRef)\n }\n\n const parentDom = getParentDom(nextInstance)\n parentDom.appendChild(nextInstance.domRef)\n }\n }\n }\n\n function commitWalkV2(initInstance: Instance<BrowserElement>, initNode?: ChildNode) {\n // 创建一个栈,将根节点压入栈中\n\n type StackLayer = [Instance<BrowserElement>, ChildNode | undefined] | (() => void)\n const stack: StackLayer[] = [[initInstance, initNode]]\n\n while (stack.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const stackLayer = stack.pop()!\n if (typeof stackLayer === 'function') {\n stackLayer()\n continue\n }\n\n const [instance, node] = stackLayer\n commitInstanceDom(instance, node)\n\n // stack 是先入后出\n // 实际上是先渲染 child\n // 这里然后再渲染 sibling\n\n // 执行生命周期的 Mount\n stack.push(() => instance.context.triggerMounted())\n\n // 更新下一个兄弟节点\n if (instance.sibling != null) {\n const siblingNode = instance.domRef\n ? instance.domRef.nextSibling\n : node?.nextSibling\n\n stack.push([instance.sibling, siblingNode || undefined])\n }\n\n // 更新下一个子节点\n if (instance.child != null) {\n const childNode = instance.domRef\n ? instance.domRef.firstChild\n : node\n\n stack.push([instance.child, childNode || undefined])\n }\n }\n }\n\n commitWalkV2(rootInstance, rootNode)\n }\n\n function onUpdateRequire() {\n if (context.nextUnitOfWork == null && context.rootInstance.child) {\n context.nextUnitOfWork = context.rootInstance.child\n }\n }\n\n /**\n * 调度\n */\n function workLoop(deadline?: IdleDeadline) {\n let shouldYield = false\n const logger = createLogger('workLoop')\n while (context.nextUnitOfWork && !shouldYield) {\n logger.debug('nextUnitOfWork', context.nextUnitOfWork)\n context.nextUnitOfWork = performUnitOfWork(pluginContext, context.nextUnitOfWork, onUpdateRequire) as Instance<BrowserElement>\n if (context.nextUnitOfWork == null) context.needCommitDom = true\n if (deadline) shouldYield = deadline.timeRemaining() < 1\n }\n\n if (context.needCommitDom && context.rootInstance.child) {\n commitDom(context.rootInstance.child,\n context.rootInstance.domRef?.firstChild || undefined\n )\n context.needCommitDom = false\n }\n\n // TODO: 兼容性\n requestIdleCallback(workLoop)\n }\n\n // 开始调度\n workLoop()\n return context.rootInstance\n}\n","import { AirxChildren, AirxElement, Props } from '../../../../element'\nimport { createLogger } from '../../../../logger'\nimport { Instance } from '../../index'\nimport { Plugin } from '../index'\n\nexport class BasicLogic implements Plugin {\n private logger = createLogger('basicLogicPlugin')\n\n private isSameProps(preProps: Props, nextProps: Props): boolean {\n if (Object.is(nextProps, preProps)) {\n return true\n }\n\n if (\n typeof preProps !== 'object'\n || typeof nextProps !== 'object'\n || preProps === null\n || nextProps === null\n ) {\n this.logger.debug('props must be an object')\n return false\n }\n\n // 对应 key 的值不相同返回 false\n const prevKeys = Object.keys(preProps)\n for (let index = 0; index < prevKeys.length; index++) {\n const key = prevKeys[index]\n if (key !== 'children' && key !== 'key') {\n if (!Object.hasOwn(nextProps, key)) return false\n if (!Object.is(preProps[key], nextProps[key])) return false\n }\n\n if (key === 'children') {\n const prevChildren = preProps['children'] as AirxChildren[]\n const nextChildren = nextProps['children'] as AirxChildren[]\n // children 都是空的,则无需更新\n if (prevChildren.length === 0 && nextChildren.length === 0) return true\n\n // 简单比较一下 child 的引用\n for (let index = 0; index < prevChildren.length; index++) {\n const prevChild = prevChildren[index]\n const nextChild = nextChildren[index]\n\n if (prevChild !== nextChild) return false\n if (typeof prevChild !== typeof nextChild) return false\n }\n }\n\n return true\n }\n\n return false\n }\n\n isReRender(instance: Instance): true | void {\n const nextProps = instance.element?.props\n const preProps = instance.beforeElement?.props\n if (!this.isSameProps(preProps, nextProps)) return true\n }\n\n updateDom(dom: Element, nextProps: Props, prevProps: Props = {}): void {\n this.logger.debug('updateDom', dom, nextProps, prevProps)\n const isKey = (key: string) => key === 'key'\n const isRef = (key: string) => key === 'ref'\n const isStyle = (key: string) => key === 'style'\n const isClass = (key: string) => key === 'class'\n const isEvent = (key: string) => key.startsWith(\"on\")\n const isChildren = (key: string) => key === 'children'\n const isGone = (_prev: Props, next: Props) => (key: string) => !(key in next)\n const isNew = (prev: Props, next: Props) => (key: string) => prev[key] !== next[key]\n const isProperty = (key: string) => !isChildren(key) && !isEvent(key) && !isStyle(key) && !isClass(key) && !isKey(key) && !isRef(key)\n\n // https://developer.mozilla.org/zh-CN/docs/Web/API/Node\n if (dom.nodeName === '#text' || dom.nodeName === '#comment') {\n const textNode = (dom as unknown as Text | Comment)\n if (textNode.nodeValue !== nextProps.textContent) {\n textNode.nodeValue = String(nextProps.textContent)\n }\n return\n }\n\n // remove old style\n const oldStyle = prevProps?.style\n if (typeof oldStyle === 'object' && oldStyle != null) {\n if (!('style' in dom) || !dom.style) return\n Object.keys(oldStyle).forEach(key => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n if ('style' in dom && dom.style) {\n delete (dom.style as any)[key as any]\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n })\n }\n\n // add new style\n const newStyle = nextProps?.style\n if (typeof newStyle === 'object' && newStyle != null) {\n if (!('style' in dom) || !dom.style) return\n Object.keys(newStyle).forEach((key: unknown) => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const value = (newStyle as any)?.[key as any];\n (dom.style as any)[key as any] = value == null ? '' : value\n /* eslint-enable @typescript-eslint/no-explicit-any */\n })\n }\n\n if (dom.className !== nextProps?.class) {\n if (!nextProps?.class) {\n dom.removeAttribute('class')\n } else if (typeof nextProps?.class === 'string') {\n dom.setAttribute('class', nextProps?.class)\n }\n }\n\n //Remove old or changed event listeners\n Object.keys(prevProps)\n .filter(isEvent)\n .filter(\n key =>\n !(key in nextProps) ||\n isNew(prevProps, nextProps)(key)\n )\n .forEach(name => {\n const eventType = name\n .toLowerCase()\n .substring(2)\n\n if (prevProps[name] == null) return\n if (typeof prevProps[name] !== 'function') {\n console.error('EventListener is not a function')\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dom.removeEventListener(eventType as any, prevProps[name] as any)\n }\n })\n\n // Add event listeners\n Object.keys(nextProps)\n .filter(isEvent)\n .filter(isNew(prevProps, nextProps))\n .forEach(name => {\n const eventType = name\n .toLowerCase()\n .substring(2)\n if (nextProps[name] == null) return\n if (typeof nextProps[name] !== 'function') {\n console.error('EventListener is not a function')\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dom.addEventListener(eventType as any, nextProps[name] as any)\n }\n })\n\n // Remove old properties\n Object.keys(prevProps)\n .filter(isProperty)\n .filter(isGone(prevProps, nextProps))\n .forEach(name => dom.removeAttribute(name))\n\n // Set new or changed properties\n Object.keys(nextProps)\n .filter(isProperty)\n .filter(isNew(prevProps, nextProps))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .forEach(name => dom.setAttribute(name, nextProps[name] as any))\n }\n\n isReuseInstance(instance: Instance, nextElement: AirxElement): false | void {\n if (instance && instance.element && instance.element.type !== nextElement.type) {\n return false\n }\n }\n}\n","import { Plugin } from '..'\nimport { Instance } from '../..'\n\nexport class InjectSystem implements Plugin {\n private getProvideValueForParent(instance: Instance | undefined, key: unknown): unknown {\n if (instance && instance.context) {\n const value = instance.context.providedMap.get(key)\n if (value != undefined) return value\n if (instance.parent) {\n return this.getProvideValueForParent(instance.parent, key)\n }\n }\n\n return undefined\n }\n\n isReuseInstance(instance: Instance): false | undefined {\n const injectedKeys = [...instance.context.injectedMap.keys()]\n for (let index = 0; index < injectedKeys.length; index++) {\n const key = injectedKeys[index]\n const currentValue = instance.context.injectedMap.get(key)\n const parentValue = this.getProvideValueForParent(instance.parent, key)\n\n // 如果发现任何值发生变化,则重建实例\n if (parentValue !== currentValue) return false\n }\n }\n}\n","import { Plugin } from '.'\nimport { BasicLogic } from './internal/basic'\nimport { InjectSystem } from './internal/inject'\n\nexport class PluginContext {\n plugins: Plugin[] = [\n new BasicLogic(),\n new InjectSystem()\n ]\n\n registerPlugin(...plugins: Plugin[]) {\n this.plugins.push(...plugins)\n }\n}\n","import { browserRender, serverRender, Plugin, PluginContext } from './render'\nimport { AirxComponent, AirxElement, createElement } from './element'\n\nexport * from './types'\nexport { Plugin } from './render'\n\nexport {\n Fragment,\n component,\n createElement,\n AirxComponent,\n AirxElement,\n AirxChildren,\n AirxComponentContext\n} from './element'\n\nexport {\n inject,\n provide,\n onMounted,\n onUnmounted\n} from './render'\n\nexport interface AirxApp {\n mount: (container: HTMLElement) => AirxApp\n\n /** @deprecated WIP */\n plugin: (...plugins: Plugin[]) => AirxApp\n /** @deprecated WIP */\n renderToHTML: () => Promise<string>\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createApp(element: AirxElement<any> | AirxComponent): AirxApp {\n const appContext = new PluginContext()\n\n const ensureAsElement = (element: AirxElement | AirxComponent): AirxElement => {\n if (typeof element === 'function') {\n return createElement(element, {})\n }\n\n return element\n }\n\n const app: AirxApp = {\n plugin: (...plugins: Plugin[]) => {\n appContext.registerPlugin(...plugins)\n return app\n },\n\n mount: (container: HTMLElement) => {\n container.innerHTML = '' // 先清空再说\n browserRender(appContext, ensureAsElement(element), container)\n return app\n },\n\n renderToHTML: (): Promise<string> => {\n return new Promise<string>(resolve => {\n serverRender(appContext, ensureAsElement(element), resolve)\n })\n }\n }\n\n return app\n}\n"],"names":["symbol.airxElementSymbol","signal.isState","signal.createWatch","signal.createComputed","render","browserRender","serverRender"],"mappings":";;;;;;EAMO,MAAM,aAAa,GAAkB;EAC1C,IAAA,OAAO,EAAE,IAAI;GACd,CAAA;EAED,SAAS,UAAU,GAAA;EACjB,IAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;EACjC,QAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;OAC5D;MAED,OAAO,aAAa,CAAC,OAAO,CAAA;EAC9B,CAAC;AAEY,QAAA,SAAS,GAAsC,CAAC,QAAQ,KAAI;EACvE,IAAA,OAAO,UAAU,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;EACzC,EAAC;AAEY,QAAA,WAAW,GAAwC,CAAC,QAAQ,KAAI;EAC3E,IAAA,OAAO,UAAU,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;EAC3C,EAAC;AAEY,QAAA,MAAM,GAAmC,CAAC,GAAG,KAAI;EAC5D,IAAA,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;EACjC,EAAC;QAEY,OAAO,GAAoC,CAAC,GAAG,EAAE,KAAK,KAAI;MACrE,OAAO,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;EACzC;;EC/BA,MAAM,WAAW,GAAG,OAAO,OAAO,IAAI,WAAW;EAC5C,OAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,aAAa;EACxC,OAAA,OAAO,EAAE,GAAG,EAAE,UAAU,KAAK,MAAM,CAAA;EAElC,SAAU,YAAY,CAAC,IAAY,EAAA;EACvC,IAAA,SAAS,cAAc,GAAA;UACrB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,CAAA;EACxC,QAAA,OAAO,CAAI,CAAA,EAAA,IAAI,CAAK,EAAA,EAAA,IAAI,GAAG,CAAA;OAC5B;MAED,SAAS,KAAK,CAAC,GAAG,IAAe,EAAA;EAC/B,QAAA,IAAI,WAAW;cAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;OACxD;MAED,OAAO,EAAE,KAAK,EAAE,CAAA;EAClB;;ECXA,IAAI,WAAW,GAAgC,SAAS,CAAA;EAMxD;EACA,MAAM,QAAQ,GAAQ,CAAC,YAAA;;;;EAKrB,IAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;EAC/B,QAAA,OAAO,IAAI,CAAA;OACZ;EACD,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;EACjC,QAAA,OAAO,MAAM,CAAA;OACd;EACD,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;EACjC,QAAA,OAAO,MAAM,CAAA;OACd;EACD,IAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;EACnD,CAAC,GAAG,CAAA;EAEJ;EACA;EACA,SAAS,SAAS,GAAA;EAChB,IAAA,MAAM,YAAY,GAAoB,QAAQ,CAAC,QAAQ,CAAC,CAAA;MACxD,IAAI,YAAY,IAAI,IAAI;EAAE,QAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;MAChE,IAAI,WAAW,IAAI,IAAI;UAAE,WAAW,GAAG,YAAY,CAAA;MACnD,IAAI,WAAW,KAAK,YAAY;EAAE,QAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;EAEnF,IAAA,OAAO,YAAY,CAAA;EACrB,CAAC;EAEK,SAAU,WAAW,CAAC,MAA+C,EAAA;EACzE,IAAA,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;MAC1B,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;EAC1C,CAAC;EAOe,SAAA,cAAc,CAAI,WAAoB,EAAE,OAAyC,EAAA;EAC/F,IAAA,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;MAC1B,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;EAClD,CAAC;EAEK,SAAU,OAAO,CAAI,MAAe,EAAA;EACxC,IAAA,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;EAC1B,IAAA,OAAO,MAAM,YAAY,MAAM,CAAC,KAAK,CAAA;EACvC;;EC1DO,MAAM,iBAAiB,GAAG,MAAM,CAAC,cAAc,CAAC;;ECqCvD;;EAEG;EACH;EACM,SAAU,aAAa,CAC3B,IAAwB,EACxB,KAAqC,EACrC,GAAG,QAAwB,EAAA;EAE3B,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;EACvC,UAAE,QAAQ;EACV,UAAE,KAAK,CAAC,QAAQ,CAAA;MAElB,OAAO;UACL,IAAI;EACJ,QAAA,KAAK,EAAE;EACL,YAAA,GAAG,KAAK;EACR,YAAA,QAAQ,EAAE,aAAa;EACxB,SAAA;EACD,QAAA,CAACA,iBAAwB,GAAG,IAAI;OACjC,CAAA;EACH,CAAC;EAEK,SAAU,cAAc,CAAC,OAAgB,EAAA;MAC7C,OAAO,OAAO,OAAO,KAAK,QAAQ;EAC7B,WAAA,OAAO,KAAK,IAAI;aAChB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAEA,iBAAwB,CAAC,CAAA;EACrD,CAAC;EAEK,SAAU,QAAQ,CAAC,KAAgC,EAAA;EACvD,IAAA,OAAO,MAAM,KAAK,CAAC,QAAQ,CAAA;EAC7B,CAAC;EAiBK,SAAU,SAAS,CAAc,IAAsB,EAAA;EAC3D,IAAA,OAAO,IAAI,CAAA;EACb,CAAC;EAEK,SAAU,iBAAiB,CAAC,KAAc,EAAA;EAC9C,IAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;MAEpB,MAAM,WAAW,GAAG,MAAK;;;;EAIvB,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;EACtB,KAAC,CAAA;MAED,MAAM,eAAe,GAAG,MAAa;UACnC,IAAI,KAAK,IAAI,IAAI;EAAE,YAAA,OAAO,yBAAyB,CAAA;UACnD,IAAI,KAAK,YAAY,KAAK;cAAE,OAAO,KAAK,CAAC,OAAO,CAAA;EAChD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;EAC9B,KAAC,CAAA;EAED,IAAA,MAAM,eAAe,GAAkB;EACrC,QAAA,OAAO,EAAE,KAAK;EACd,QAAA,QAAQ,EAAE,MAAM;EAChB,QAAA,KAAK,EAAE,kBAAkB;EACzB,QAAA,eAAe,EAAE,gBAAgB;OAClC,CAAA;MAED,OAAO,MAAM,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,eAAe,EAAE,CAAC,CAAA;EACxG;;QC9Fa,yBAAyB,CAAA;EAC7B,IAAA,QAAQ,CAAc;EACrB,IAAA,SAAS,GAAG,IAAI,GAAG,EAAY,CAAA;EAChC,IAAA,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAA;EACzC,IAAA,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAA;EACxC,IAAA,cAAc,GAAG,IAAI,GAAG,EAAgC,CAAA;EACxD,IAAA,kBAAkB,GAAG,IAAI,GAAG,EAAkC,CAAA;MAE/D,cAAc,GAAA;EACnB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,IAAG;cACrC,IAAI,QAAQ,GAAoB,SAAS,CAAA;EAEzC,YAAA,IAAI;kBACF,QAAQ,GAAG,QAAQ,EAAE,CAAA;eACtB;cAAC,OAAO,GAAY,EAAE;EACrB,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;eAC7B;EAED,YAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;EAClC,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;eAC3B;EACH,SAAC,CAAC,CAAA;;EAEF,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;OAC5B;MAEM,gBAAgB,GAAA;;UAErB,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,EAAE;cAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAA;WAC/C;;EAGD,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,IAAG;EACzC,YAAA,IAAI;EACF,gBAAA,QAAQ,EAAE,CAAA;eACX;cAAC,OAAO,GAAY,EAAE;EACrB,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;eAC7B;EACH,SAAC,CAAC,CAAA;;UAGF,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,EAAE;cAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAA;WACjD;UAED,IAAI,CAAC,OAAO,EAAE,CAAA;OACf;EAEM,IAAA,SAAS,CAAC,QAAsC,EAAA;EACrD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;OAClC;EAEM,IAAA,WAAW,CAAC,QAAwC,EAAA;EACzD,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;OACtC;;MAGM,OAAO,CAAc,GAAQ,EAAE,KAAU,EAAA;UAC9C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;UAChC,OAAO,CAAC,IAAG;EACT,YAAA,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;kBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;kBACrC,MAAM,IAAI,GAAG,CAAkB,CAAA;EAC/B,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAQ,CAAC,CAAC,CAAA;kBACzC,OAAM;eACP;cAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;EAC9B,SAAC,CAAA;OACF;;EAGM,IAAA,MAAM,CAAc,GAAQ,EAAA;EACjC,QAAA,MAAM,wBAAwB,GAAG,CAAC,QAAiC,EAAE,GAAY,KAAa;EAC5F,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE;EAChC,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;kBACnD,IAAI,KAAK,IAAI,SAAS;EAAE,oBAAA,OAAO,KAAK,CAAA;kBACpC,IAAI,QAAQ,CAAC,MAAM;sBAAE,OAAO,wBAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;eAC3E;EAED,YAAA,OAAO,SAAS,CAAA;EAClB,SAAC,CAAA;EAED,QAAA,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;UAC9E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAA;UAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAM,CAAA;OACtC;MAED,WAAW,CAAC,GAAG,SAAqB,EAAA;EAClC,QAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;EAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;EAC9B,SAAC,CAAC,CAAA;OACH;MAED,OAAO,GAAA;UACL,IAAI,CAAC,SAAS,CAAC,OAAO,CACpB,CAAC,QAAkB,KAAI;EACrB,YAAA,IAAI;EACF,gBAAA,QAAQ,EAAE,CAAA;eACX;cAAC,OAAO,GAAY,EAAE;;EAErB,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;eAC7B;EACH,SAAC,CACF,CAAA;EAED,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;EACtB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;EACxB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;EACxB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;EAC3B,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;OAChC;EAED;;;EAGG;MACI,cAAc,GAAA;UACnB,OAAO;cACL,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EAC3B,YAAA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;cACrC,SAAS,EAAE,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;cAC/C,WAAW,EAAE,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;WACpD,CAAA;OACF;EACF,CAAA;EAqCD;;;;EAIK;WACW,iBAAiB,CAA4B,UAAyB,EAAE,cAA2B,EAAE,oBAAmC,EAAA;EACtJ,IAAA,MAAM,MAAM,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAA;MAChD,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAA;;;;;;EAOvE;;;;;EAKG;MACH,SAAS,uBAAuB,CAAC,KAAa,EAAA;UAC5C,OAAO,CAAA,uBAAA,EAA0B,KAAK,CAAA,CAAE,CAAA;OACzC;EAED;;;;EAIG;;MAEH,SAAS,sBAAsB,CAAC,UAAwB,EAAA;;UAEtD,IAAI,SAAS,GAAG,CAAC,CAAA;UACjB,IAAI,SAAS,GAAG,UAAU,CAAA;;EAE1B,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAoB,CAAA;UAEvC,OAAO,SAAS,EAAE;;cAEhB,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;EACxC,gBAAA,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;eACjD;mBAAM;kBACL,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;eACvD;EAED,YAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAA;cAC7B,SAAS,IAAI,CAAC,CAAA;WACf;EAED,QAAA,OAAO,GAAG,CAAA;OACX;MAED,MAAM,wBAAwB,GAAkB,EAAE,CAAA;MAClD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;EAExE,IAAA,SAAS,gBAAgB,CAAC,KAAkB,EAAE,KAAa,EAAA;UACzD,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;EAC3B,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAA;cAC3B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;EACrD,YAAA,OAAO,CAAC,QAAQ,EAAE,MAAM,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;WACzD;EAED,QAAA,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAA;UAC/C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAA;EAC1D,QAAA,OAAO,CAAC,QAAQ,EAAE,MAAM,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;OAC9D;;EAGD,IAAA,SAAS,eAAe,CAAC,QAAqB,EAAE,WAAwB,EAAA;EACtE,QAAA,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE;EACvC,YAAA,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE;kBAChD,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;;kBAE5D,IAAI,MAAM,KAAK,KAAK;EAAE,oBAAA,OAAO,KAAK,CAAA;eACnC;WACF;EACD,QAAA,OAAO,IAAI,CAAA;OACZ;MAED,SAAS,eAAe,CAAC,QAAqB,EAAA;EAC5C,QAAA,IAAI,QAAQ,CAAC,OAAO,IAAI,IAAI;cAAE,OAAM;EACpC,QAAA,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI;EAAE,YAAA,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAA;;;;;;EAOvD,QAAA,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,EAAE;EAC9B,YAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE;EACpC,gBAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;eAC/B;WACF;;UAGD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;cACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;EACzC,YAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;WAChC;OACF;MAED,SAAS,cAAc,CAAC,QAAqB,EAAA;EAC3C,QAAA,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE;EACvC,YAAA,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;kBAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;;kBAE1C,IAAI,MAAM,KAAK,IAAI;EAAE,oBAAA,OAAO,IAAI,CAAA;eACjC;WACF;EAED,QAAA,OAAO,KAAK,CAAA;OACb;MAED,SAAS,mBAAmB,CAAC,OAAoB,EAAA;UAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;EAClC,aAAA,MAAM,CAAC,GAAG,KAAK,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC5D,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;EAEtC,QAAA,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;EACjB,YAAA,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAA;EACrE,YAAA,OAAO,EAAE,CAAA;WACV;EAED,QAAA,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE;EACxC,YAAA,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAA;EAC7F,YAAA,OAAO,EAAE,CAAA;WACV;;UAGD,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;OAC5B;;EAGD,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;EAChE,QAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;EAC3C,QAAA,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;UAE1D,IAAI,QAAQ,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;cAClD,KAAK,EAAE,CAAA;EACP,YAAA,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;EACvC,YAAA,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAA;EACzC,YAAA,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;cAC1B,eAAe,CAAC,QAAQ,CAAC,CAAA;;EAGzB,YAAA,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE;kBACxE,QAAQ,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAA;eAChF;WACF;eAAM;EACL,YAAA,MAAM,OAAO,GAAG,IAAI,yBAAyB,EAAK,CAAA;EAClD,YAAA,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;cACrD,MAAM,QAAQ,GAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAA;EACpE,YAAA,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;EACvC,YAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;cAC3B,eAAe,CAAC,QAAQ,CAAC,CAAA;;EAGzB,YAAA,IAAI,KAAK,IAAI,QAAQ,CAAC,SAAS,EAAE;EAC/B,gBAAA,OAAO,CAAC,SAAS,CAAC,MAAK;EACrB,oBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAA;;sBAElC,IAAI,QAAQ,CAAC,MAAM,IAAIC,OAAc,CAAC,GAAG,CAAC,EAAE;EAC1C,wBAAA,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;0BACxB,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;uBAChC;EACH,iBAAC,CAAC,CAAA;eACH;WACF;OACF;;EAGD,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;EACpE,QAAA,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAA;;EAGhD,QAAA,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAA;UAChC,IAAI,KAAK,KAAK,CAAC;EAAE,YAAA,cAAc,CAAC,KAAK,GAAG,QAAQ,CAAA;UAChD,IAAI,KAAK,GAAG,CAAC;cAAE,wBAAwB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAA;EACrE,QAAA,IAAI,KAAK,KAAK,wBAAwB,CAAC,MAAM,GAAG,CAAC;cAAE,OAAO,QAAQ,CAAC,OAAO,CAAA;;UAG1E,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE;;cAEnE,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,eAAe,EAAE;kBACrD,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAA;eAC7D;WACF;OACF;;EAGD,IAAA,IAAI,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE;EAChC,QAAA,IAAI,cAAc,CAAC,SAAS,IAAI,IAAI,EAAE;EACpC,YAAA,cAAc,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAA;WACrC;EAED,QAAA,mBAAmB,CAAC,OAAO,CAAC,QAAQ,IAAG;EACrC,YAAA,cAAc,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;EACzC,SAAC,CAAC,CAAA;OACH;EAED,IAAA,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAA;EAChD,CAAC;EAID;;;;EAIG;WACa,iBAAiB,CAA4B,aAA4B,EAAE,QAAqB,EAAE,eAAoC,EAAA;EACpJ,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;;MAGhC,SAAS,kBAAkB,CAAC,QAAsB,EAAA;EAChD,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAA;UACvE,SAAS,SAAS,CAAC,OAAqB,EAAA;cACtC,IAAI,OAAO,KAAK,EAAE;EAAE,gBAAA,OAAO,IAAI,CAAA;cAC/B,IAAI,OAAO,IAAI,IAAI;EAAE,gBAAA,OAAO,IAAI,CAAA;cAChC,IAAI,OAAO,KAAK,KAAK;EAAE,gBAAA,OAAO,IAAI,CAAA;EAClC,YAAA,OAAO,KAAK,CAAA;WACb;UAED,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAG;cAC3C,IAAI,cAAc,CAAC,OAAO,CAAC;EAAE,gBAAA,OAAO,OAAO,CAAA;EAC3C,YAAA,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAAA;EAC3D,YAAA,MAAM,WAAW,GAAG,OAAO,KAAK,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;cACrE,OAAO,aAAa,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;EACpD,SAAC,CAAC,CAAA;OACH;;EAGD,IAAA,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,UAAU,EAAE;EACvC,QAAA,IAAI,QAAQ,CAAC,aAAa,IAAI,IAAI,EAAE;;cAElC,MAAM,aAAa,GAAGC,WAAkB,CAAC,YAAW;EAClD,gBAAA,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAA;EAC5B,gBAAA,eAAe,GAAG,QAAQ,CAAC,CAAA;kBAE3B,cAAc,CAAC,MAAK;sBAClB,aAAa,CAAC,KAAK,EAAE,CAAA;EACrB,oBAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,EAAE,CAAA;sBAC3C,KAAK,MAAM,OAAO,IAAI,QAAQ;0BAAE,OAAO,CAAC,GAAG,EAAE,CAAA;EAC/C,iBAAC,CAAC,CAAA;EACJ,aAAC,CAAC,CAAA;EAEF,YAAA,QAAQ,CAAC,aAAa,GAAG,aAAa,CAAA;EACtC,YAAA,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC,CAAA;WAC5D;EAED,QAAA,IAAI,QAAQ,CAAC,cAAc,IAAI,IAAI,EAAE;EACnC,YAAA,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAA;EAC9B,YAAA,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAA;cAC3C,aAAa,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAA;cAEzD,IAAI,oBAAoB,GAAoC,SAAS,CAAA;EAErE,YAAA,IAAI;EACF,gBAAA,oBAAoB,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;eACrD;cAAC,OAAO,KAAK,EAAE;EACd,gBAAA,oBAAoB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;eAChD;EAED,YAAA,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE;EAC9C,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;EAClE,gBAAA,oBAAoB,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;eACxD;;EAGD,YAAA,aAAa,CAAC,OAAO,GAAG,aAAa,CAAA;EACrC,YAAA,QAAQ,CAAC,cAAc,GAAG,oBAAoB,CAAA;EAC9C,YAAA,MAAM,gBAAgB,GAAGC,cAAqB,CAAC,MAAK;EAClD,gBAAA,IAAI;EACF,oBAAA,OAAO,QAAQ,CAAC,cAAe,EAAE,CAAA;mBAClC;kBAAC,OAAO,KAAK,EAAE;EACd,oBAAA,OAAO,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAA;mBAClC;EACH,aAAC,CAAC,CAAA;EACF,YAAA,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;EAC9C,YAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAA;cAEvC,iBAAiB,CAAC,aAAa,EAAE,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAA;WACzE;EAED,QAAA,IAAI,QAAQ,CAAC,YAAY,EAAE;EACzB,YAAA,IAAI,QAAsB,CAAA;EAE1B,YAAA,IAAI;;;;EAIF,gBAAA,QAAQ,GAAG,QAAQ,CAAC,cAAe,EAAE,CAAA;eACtC;cAAC,OAAO,KAAK,EAAE;EACd,gBAAA,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAA;eACtC;cAED,iBAAiB,CAAC,aAAa,EAAE,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAA;cACxE,OAAO,QAAQ,CAAC,YAAY,CAAA;WAC7B;OACF;;EAGD,IAAA,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ,EAAE;EACrC,QAAA,IAAI,UAAU,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;EACxE,YAAA,iBAAiB,CAAC,aAAa,EAAE,QAAQ,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;WACvF;OACF;;EAGD,IAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;UAClB,OAAO,QAAQ,CAAC,KAAK,CAAA;OACtB;EAED;;;;EAIG;MACH,SAAS,aAAa,CAAC,QAAqB,EAAA;EAC1C,QAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;cACpB,OAAO,QAAQ,CAAC,OAAO,CAAA;WACxB;EACD,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;EACnB,YAAA,OAAO,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;WACtC;EAED,QAAA,OAAO,IAAI,CAAA;OACZ;EAED,IAAA,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAA;EAChC;;EC1fA,SAAS,YAAY,CAAC,GAAW,EAAA;EAC/B,IAAA,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,KAAI;EACnD,QAAA,IAAI,MAAM,KAAK,CAAC,EAAE;EAChB,YAAA,OAAO,EAAE,CAAC,WAAW,EAAE,CAAA;WACxB;eAAM;EACL,YAAA,OAAO,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,CAAA;WAC9B;EACH,KAAC,CAAC,CAAA;EACJ,CAAC;EAED,MAAM,aAAa,CAAA;EAiBE,IAAA,QAAA,CAAA;MAhBnB,OAAO,cAAc,CAAC,OAAe,EAAA;EACnC,QAAA,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAA;EACtC,QAAA,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA;EACrB,QAAA,OAAO,GAAG,CAAA;OACX;MAED,OAAO,aAAa,CAAC,OAAe,EAAA;EAClC,QAAA,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAA;EACzC,QAAA,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA;EACrB,QAAA,OAAO,GAAG,CAAA;OACX;MAED,OAAO,aAAa,CAAC,GAAW,EAAA;EAC9B,QAAA,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,CAAA;OAC9B;EAED,IAAA,WAAA,CAAmB,QAAgB,EAAA;UAAhB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;EACjC,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;EACf,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;EACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;EAClB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;EACnB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAA;OAC5B;EAGQ,IAAA,UAAU,CAAgB;EAC1B,IAAA,WAAW,CAAgB;EAC3B,IAAA,UAAU,CAAgB;EAE1B,IAAA,SAAS,CAAQ;EACjB,IAAA,KAAK,CAAe;EACrB,IAAA,OAAO,CAAQ;EACf,IAAA,QAAQ,CAAiB;EACzB,IAAA,UAAU,CAAqB;EAEvC,IAAA,WAAW,CAAC,GAAkB,EAAA;;EAE5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;UACrD,IAAI,KAAK,IAAI,CAAC,CAAC;cAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;;EAE/C,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;;EAE3B,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;;EAE5B,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;;OAE5B;EAED,IAAA,WAAW,CAAC,GAAkB,EAAA;;;EAG5B,QAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAA;UAErB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;;EAE5B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAA;WAC1D;;UAGD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;EAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;;OAExB;;MAGD,YAAY,CAAC,IAAY,EAAE,KAAU,EAAA;UACnC,IAAI,KAAK,KAAK,EAAE;cAAE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;;;UAGrD,IAAI,IAAI,KAAK,OAAO;EAAE,YAAA,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;;UAEnD,IAAI,IAAI,KAAK,OAAO;EAAE,YAAA,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;;UAE/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;OACjC;EAED,IAAA,eAAe,CAAC,IAAY,EAAA;EAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;OAC7B;MAED,QAAQ,GAAA;EACN,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO;cAAE,OAAO,IAAI,CAAC,OAAO,CAAA;EAClD,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU;cAAE,OAAO,IAAI,CAAC,OAAO,CAAA;UAErD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;EAC3C,aAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAA,EAAG,YAAY,CAAC,GAAG,CAAC,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;eACtD,IAAI,CAAC,GAAG,CAAC,CAAA;UAEZ,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAA;EACjD,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;cAAE,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAA;EACnE,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;cAAE,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;UACzE,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;EAC1F,QAAA,OAAO,CAAI,CAAA,EAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAK,EAAA,EAAA,IAAI,CAAC,QAAQ,GAAG,CAAA;OAC1H;EACF,CAAA;WAUeC,QAAM,CAAC,aAA4B,EAAE,OAAoB,EAAE,UAAiC,EAAA;EAC1G,IAAA,MAAM,YAAY,GAA4B;EAC5C,QAAA,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC;UAC1C,OAAO,EAAE,IAAI,yBAAyB,EAAE;OACzC,CAAA;EACD,IAAA,YAAY,CAAC,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAA;EAE5C,IAAA,MAAM,OAAO,GAAkB;UAC7B,YAAY;EACZ,QAAA,cAAc,EAAE,IAAI;EACpB,QAAA,aAAa,EAAE,KAAK;OACrB,CAAA;EAED,IAAA,MAAM,WAAW,GAA4B;UAC3C,OAAO;UACP,MAAM,EAAE,OAAO,CAAC,YAAY;EAC5B,QAAA,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE;UAC/B,OAAO,EAAE,IAAI,yBAAyB,EAAE;OACzC,CAAA;EAED,IAAA,WAAW,CAAC,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAA;EAE1C,IAAA,OAAO,CAAC,YAAY,CAAC,KAAK,GAAG,WAAW,CAAA;EACxC,IAAA,OAAO,CAAC,cAAc,GAAG,WAAW,CAAA;EAEpC;;EAEG;EACH,IAAA,SAAS,SAAS,CAAC,YAAqC,EAAE,QAAwB,EAAA;EAChF,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;EACxC,QAAA,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;EAIvC,QAAA,SAAS,mBAAmB,CAAC,GAAkB,EAAE,SAAoB,EAAE,YAAuB,EAAE,EAAA;cAC9F,MAAM,KAAK,GAAG,CAAC,GAAW,KAAK,GAAG,KAAK,KAAK,CAAA;cAC5C,MAAM,KAAK,GAAG,CAAC,GAAW,KAAK,GAAG,KAAK,KAAK,CAAA;cAC5C,MAAM,OAAO,GAAG,CAAC,GAAW,KAAK,GAAG,KAAK,OAAO,CAAA;cAChD,MAAM,OAAO,GAAG,CAAC,GAAW,KAAK,GAAG,KAAK,OAAO,CAAA;EAChD,YAAA,MAAM,OAAO,GAAG,CAAC,GAAW,KAAK,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;cACrD,MAAM,UAAU,GAAG,CAAC,GAAW,KAAK,GAAG,KAAK,UAAU,CAAA;cACtD,MAAM,MAAM,GAAG,CAAC,KAAgB,EAAE,IAAe,KAAK,CAAC,GAAW,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC,CAAA;cACrF,MAAM,KAAK,GAAG,CAAC,IAAe,EAAE,IAAe,KAAK,CAAC,GAAW,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAA;EAC5F,YAAA,MAAM,UAAU,GAAG,CAAC,GAAW,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;EAGrI,YAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;kBAC3D,MAAM,QAAQ,GAAI,GAAiC,CAAA;kBACnD,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,WAAW,EAAE;sBAChD,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;mBACnD;kBACD,OAAM;eACP;;EAGD,YAAA,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAA;cACjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;kBACpD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;;EAElC,oBAAA,OAAO,GAAG,CAAC,KAAK,CAAC,GAAU,CAAC,CAAA;;EAE9B,iBAAC,CAAC,CAAA;eACH;;EAGD,YAAA,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAA;cACjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;kBACpD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAY,KAAI;;EAE7C,oBAAA,MAAM,KAAK,GAAI,QAAgB,GAAG,GAAU,CAAC,CAAA;EAC7C,oBAAA,GAAG,CAAC,KAAK,CAAC,GAAU,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,KAAK,CAAA;;EAEpD,iBAAC,CAAC,CAAA;eACH;cAED,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,KAAK,EAAE;EACtC,gBAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;EACrB,oBAAA,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;mBAC7B;EAAM,qBAAA,IAAI,OAAO,SAAS,EAAE,KAAK,KAAK,QAAQ,EAAE;sBAC/C,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;mBAC5C;eACF;;EAGD,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;mBACnB,MAAM,CAAC,UAAU,CAAC;EAClB,iBAAA,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;EACpC,iBAAA,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAA;;EAG7C,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;mBACnB,MAAM,CAAC,UAAU,CAAC;EAClB,iBAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;;EAEnC,iBAAA,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAQ,CAAC,CAAC,CAAA;WACnE;UAED,SAAS,YAAY,CAAC,QAAiC,EAAA;cACrD,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE;EACnC,gBAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAA;eAC9B;EACD,YAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;EACnB,gBAAA,OAAO,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;eACrC;EAED,YAAA,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;WACjC;EAED;;;;EAIG;UACH,SAAS,YAAY,CAAC,QAAiC,EAAA;cACrD,MAAM,OAAO,GAAoB,EAAE,CAAA;EACnC,YAAA,MAAM,QAAQ,GAA8B,CAAC,QAAQ,CAAC,CAAA;EAEtD,YAAA,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;EAC1B,gBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAA;;EAG9B,gBAAA,IAAI,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE;EAC3B,oBAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;mBAC7B;;EAGD,gBAAA,IAAI,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE;EAC3B,oBAAA,IAAI,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE;EAC1B,wBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;uBAC7B;mBACF;;EAGD,gBAAA,IAAI,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE;EAC5B,oBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;mBAC/B;eACF;EAED,YAAA,OAAO,OAAO,CAAA;WACf;EAED,QAAA,SAAS,iBAAiB,CAAC,YAAqC,EAAE,OAAuB,EAAA;;EAEvF,YAAA,IAAI,YAAY,CAAC,SAAS,EAAE;EAC1B,gBAAA,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,SAAS,EAAE;EAC7C,oBAAA,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;EACtC,oBAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;EACnD,wBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;EAC1B,wBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU;EAAE,4BAAA,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;uBAC3D;EACD,oBAAA,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAA;mBACpC;EAED,gBAAA,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;eAC/B;;EAGD,YAAA,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,EAAE;EAC/B,gBAAA,IAAI,YAAY,CAAC,OAAO,IAAI,IAAI;EAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;kBACxD,IAAI,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;sBACjD,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;0BACxC,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAA;;0BAE1D,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,WAAqB,CAAQ,CAAA;uBACjF;2BAAM,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;0BAClD,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAA;;0BAE1D,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,WAAqB,CAAQ,CAAA;uBAChF;2BAAM;EACL,wBAAA,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;uBAC7E;mBACF;eACF;;EAGD,YAAA,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,IAAI,YAAY,CAAC,OAAO,IAAI,IAAI,EAAE;EAC/D,gBAAA,mBAAmB,CACjB,YAAY,CAAC,MAAM,EACnB,YAAY,CAAC,OAAO,CAAC,KAAK,EAC1B,YAAY,CAAC,aAAa,EAAE,KAAK,CAClC,CAAA;eACF;;;EAID,YAAA,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,EAAE;EAC/B,gBAAA,IAAI,OAAO,KAAK,YAAY,CAAC,MAAM,EAAE;EACnC,oBAAA,IAAI,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE;0BAClC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;uBAChE;EAED,oBAAA,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;EAC5C,oBAAA,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;mBAC3C;eACF;WACF;EAED,QAAA,SAAS,YAAY,CAAC,YAAqC,EAAE,QAAwB,EAAA;;cAInF,MAAM,KAAK,GAAiB,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAA;EAEtD,YAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;EAEvB,gBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,EAAG,CAAA;EAC/B,gBAAA,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;EACpC,oBAAA,UAAU,EAAE,CAAA;sBACZ,SAAQ;mBACT;EAED,gBAAA,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,UAAU,CAAA;EACnC,gBAAA,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;;;;;EAOjC,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;;EAGnD,gBAAA,IAAI,QAAQ,CAAC,OAAO,IAAI,IAAI,EAAE;EAC5B,oBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM;EACjC,0BAAE,QAAQ,CAAC,MAAM,CAAC,WAAW;EAC7B,0BAAE,IAAI,EAAE,WAAW,CAAA;EAErB,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC,CAAC,CAAA;mBACzD;;EAGD,gBAAA,IAAI,QAAQ,CAAC,KAAK,IAAI,IAAI,EAAE;EAC1B,oBAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM;EAC/B,0BAAE,QAAQ,CAAC,MAAM,CAAC,UAAU;4BAC1B,IAAI,CAAA;EAER,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC,CAAA;mBACrD;eACF;WACF;EAED,QAAA,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;OACrC;EAED,IAAA,OAAO,OAAO,CAAC,cAAc,EAAE;UAC7B,OAAO,CAAC,cAAc,GAAG,iBAAiB,CACxC,aAAa,EACb,OAAO,CAAC,cAAc,CACvB,CAAA;OACF;EAED,IAAA,SAAS,CACP,OAAO,CAAC,YAAY,CAAC,KAAK,EAC1B,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,IAAI,SAAS,CACrD,CAAA;EAED,IAAA,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;EAC3D;;WC7WgB,MAAM,CAAC,aAA4B,EAAE,OAAoB,EAAE,MAAsB,EAAA;EAC/F,IAAA,MAAM,YAAY,GAA6B;UAC7C,MAAM;UACN,OAAO,EAAE,IAAI,yBAAyB,EAAE;OACzC,CAAA;EACD,IAAA,YAAY,CAAC,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAA;EAE5C,IAAA,MAAM,OAAO,GAAkB;UAC7B,YAAY;EACZ,QAAA,cAAc,EAAE,IAAI;EACpB,QAAA,aAAa,EAAE,KAAK;OACrB,CAAA;EAED,IAAA,MAAM,WAAW,GAA6B;UAC5C,OAAO;UACP,MAAM,EAAE,OAAO,CAAC,YAAY;EAC5B,QAAA,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE;UAC/B,OAAO,EAAE,IAAI,yBAAyB,EAAE;OACzC,CAAA;EAED,IAAA,WAAW,CAAC,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAA;EAE1C,IAAA,OAAO,CAAC,YAAY,CAAC,KAAK,GAAG,WAAW,CAAA;EACxC,IAAA,OAAO,CAAC,cAAc,GAAG,WAAW,CAAA;EAEpC;;EAEG;EACH,IAAA,SAAS,SAAS,CAAC,YAAsC,EAAE,QAAoB,EAAA;EAC7E,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;EACxC,QAAA,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;EAIvC,QAAA,SAAS,mBAAmB,CAAC,GAAmB,EAAE,SAAoB,EAAE,YAAuB,EAAE,EAAA;EAC/F,YAAA,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;kBAC1C,IAAI,MAAM,CAAC,SAAS;sBAAE,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;eAClE;WACF;UAED,SAAS,YAAY,CAAC,QAAkC,EAAA;cACtD,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE;EACnC,gBAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAA;eAC9B;EACD,YAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;EACnB,gBAAA,OAAO,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;eACrC;EAED,YAAA,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;WACjC;EAED;;;;EAIG;UACH,SAAS,YAAY,CAAC,QAAkC,EAAA;cACtD,MAAM,OAAO,GAAqB,EAAE,CAAA;EACpC,YAAA,MAAM,QAAQ,GAA+B,CAAC,QAAQ,CAAC,CAAA;EAEvD,YAAA,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;EAC1B,gBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAA;;EAG9B,gBAAA,IAAI,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE;EAC3B,oBAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;mBAC7B;;EAGD,gBAAA,IAAI,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE;EAC3B,oBAAA,IAAI,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE;EAC1B,wBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;uBAC7B;mBACF;;EAGD,gBAAA,IAAI,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE;EAC5B,oBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;mBAC/B;eACF;EAED,YAAA,OAAO,OAAO,CAAA;WACf;EAED,QAAA,SAAS,iBAAiB,CAAC,YAAsC,EAAE,OAAmB,EAAA;;EAEpF,YAAA,IAAI,YAAY,CAAC,SAAS,EAAE;EAC1B,gBAAA,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,SAAS,EAAE;EAC7C,oBAAA,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;EACtC,oBAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;EACnD,wBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;EAC1B,wBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU;EAAE,4BAAA,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;uBAC3D;EACD,oBAAA,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAA;mBACpC;EAED,gBAAA,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;eAC/B;;EAGD,YAAA,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,EAAE;EAC/B,gBAAA,IAAI,YAAY,CAAC,OAAO,IAAI,IAAI;EAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;kBACxD,IAAI,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;sBACjD,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;0BACxC,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAA;;0BAE1D,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAqB,CAAQ,CAAA;uBAC5E;2BAAM,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;0BAClD,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAA;;0BAE1D,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAqB,CAAQ,CAAA;uBAC3E;2BAAM;EACL,wBAAA,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,gBAAgB;EACjD,8BAAE,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,gBAAgB,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;gCAClF,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;uBACtD;EAED,oBAAA,IAAI,YAAY,CAAC,MAAM,EAAE;;EAEtB,wBAAA,YAAY,CAAC,MAAc,CAAC,YAAY,GAAG,YAAY,CAAA;uBACzD;mBACF;eACF;;EAGD,YAAA,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,IAAI,YAAY,CAAC,OAAO,IAAI,IAAI,EAAE;EAC/D,gBAAA,mBAAmB,CACjB,YAAY,CAAC,MAAM,EACnB,YAAY,CAAC,OAAO,CAAC,KAAK,EAC1B,YAAY,CAAC,aAAa,EAAE,KAAK,CAClC,CAAA;eACF;;;EAID,YAAA,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,EAAE;EAC/B,gBAAA,IAAI,OAAO,KAAK,YAAY,CAAC,MAAM,EAAE;EACnC,oBAAA,IAAI,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE;0BAClC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;uBAChE;EAED,oBAAA,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;EAC5C,oBAAA,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;mBAC3C;eACF;WACF;EAED,QAAA,SAAS,YAAY,CAAC,YAAsC,EAAE,QAAoB,EAAA;;cAIhF,MAAM,KAAK,GAAiB,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAA;EAEtD,YAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;EAEvB,gBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,EAAG,CAAA;EAC/B,gBAAA,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;EACpC,oBAAA,UAAU,EAAE,CAAA;sBACZ,SAAQ;mBACT;EAED,gBAAA,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,UAAU,CAAA;EACnC,gBAAA,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;;;;;EAOjC,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;;EAGnD,gBAAA,IAAI,QAAQ,CAAC,OAAO,IAAI,IAAI,EAAE;EAC5B,oBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM;EACjC,0BAAE,QAAQ,CAAC,MAAM,CAAC,WAAW;EAC7B,0BAAE,IAAI,EAAE,WAAW,CAAA;EAErB,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC,CAAC,CAAA;mBACzD;;EAGD,gBAAA,IAAI,QAAQ,CAAC,KAAK,IAAI,IAAI,EAAE;EAC1B,oBAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM;EAC/B,0BAAE,QAAQ,CAAC,MAAM,CAAC,UAAU;4BAC1B,IAAI,CAAA;EAER,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC,CAAA;mBACrD;eACF;WACF;EAED,QAAA,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;OACrC;EAED,IAAA,SAAS,eAAe,GAAA;EACtB,QAAA,IAAI,OAAO,CAAC,cAAc,IAAI,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE;cAChE,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAA;WACpD;OACF;EAED;;EAEG;MACH,SAAS,QAAQ,CAAC,QAAuB,EAAA;UACvC,IAAI,WAAW,GAAG,KAAK,CAAA;EACvB,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;EACvC,QAAA,OAAO,OAAO,CAAC,cAAc,IAAI,CAAC,WAAW,EAAE;cAC7C,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;EACtD,YAAA,OAAO,CAAC,cAAc,GAAG,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,EAAE,eAAe,CAA6B,CAAA;EAC9H,YAAA,IAAI,OAAO,CAAC,cAAc,IAAI,IAAI;EAAE,gBAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAA;EAChE,YAAA,IAAI,QAAQ;EAAE,gBAAA,WAAW,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;WACzD;UAED,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE;EACvD,YAAA,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAClC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,IAAI,SAAS,CACrD,CAAA;EACD,YAAA,OAAO,CAAC,aAAa,GAAG,KAAK,CAAA;WAC9B;;UAGD,mBAAmB,CAAC,QAAQ,CAAC,CAAA;OAC9B;;EAGD,IAAA,QAAQ,EAAE,CAAA;MACV,OAAO,OAAO,CAAC,YAAY,CAAA;EAC7B;;QC3Oa,UAAU,CAAA;EACb,IAAA,MAAM,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAA;MAEzC,WAAW,CAAC,QAAe,EAAE,SAAgB,EAAA;UACnD,IAAI,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;EAClC,YAAA,OAAO,IAAI,CAAA;WACZ;UAED,IACE,OAAO,QAAQ,KAAK,QAAQ;iBACzB,OAAO,SAAS,KAAK,QAAQ;EAC7B,eAAA,QAAQ,KAAK,IAAI;iBACjB,SAAS,KAAK,IAAI,EACrB;EACA,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;EAC5C,YAAA,OAAO,KAAK,CAAA;WACb;;UAGD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;EACtC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;EACpD,YAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;cAC3B,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,KAAK,EAAE;kBACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC;EAAE,oBAAA,OAAO,KAAK,CAAA;EAChD,gBAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;EAAE,oBAAA,OAAO,KAAK,CAAA;eAC5D;EAED,YAAA,IAAI,GAAG,KAAK,UAAU,EAAE;EACtB,gBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAmB,CAAA;EAC3D,gBAAA,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,CAAmB,CAAA;;kBAE5D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;EAAE,oBAAA,OAAO,IAAI,CAAA;;EAGvE,gBAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;EACxD,oBAAA,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;EACrC,oBAAA,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;sBAErC,IAAI,SAAS,KAAK,SAAS;EAAE,wBAAA,OAAO,KAAK,CAAA;EACzC,oBAAA,IAAI,OAAO,SAAS,KAAK,OAAO,SAAS;EAAE,wBAAA,OAAO,KAAK,CAAA;mBACxD;eACF;EAED,YAAA,OAAO,IAAI,CAAA;WACZ;EAED,QAAA,OAAO,KAAK,CAAA;OACb;EAED,IAAA,UAAU,CAAC,QAAkB,EAAA;EAC3B,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAA;EACzC,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAA;UAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC;EAAE,YAAA,OAAO,IAAI,CAAA;OACxD;EAED,IAAA,SAAS,CAAC,GAAY,EAAE,SAAgB,EAAE,YAAmB,EAAE,EAAA;EAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;UACzD,MAAM,KAAK,GAAG,CAAC,GAAW,KAAK,GAAG,KAAK,KAAK,CAAA;UAC5C,MAAM,KAAK,GAAG,CAAC,GAAW,KAAK,GAAG,KAAK,KAAK,CAAA;UAC5C,MAAM,OAAO,GAAG,CAAC,GAAW,KAAK,GAAG,KAAK,OAAO,CAAA;UAChD,MAAM,OAAO,GAAG,CAAC,GAAW,KAAK,GAAG,KAAK,OAAO,CAAA;EAChD,QAAA,MAAM,OAAO,GAAG,CAAC,GAAW,KAAK,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;UACrD,MAAM,UAAU,GAAG,CAAC,GAAW,KAAK,GAAG,KAAK,UAAU,CAAA;UACtD,MAAM,MAAM,GAAG,CAAC,KAAY,EAAE,IAAW,KAAK,CAAC,GAAW,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC,CAAA;UAC7E,MAAM,KAAK,GAAG,CAAC,IAAW,EAAE,IAAW,KAAK,CAAC,GAAW,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAA;EACpF,QAAA,MAAM,UAAU,GAAG,CAAC,GAAW,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;EAGrI,QAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;cAC3D,MAAM,QAAQ,GAAI,GAAiC,CAAA;cACnD,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,WAAW,EAAE;kBAChD,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;eACnD;cACD,OAAM;WACP;;EAGD,QAAA,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAA;UACjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;cACpD,IAAI,EAAE,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;kBAAE,OAAM;cAC3C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;;kBAElC,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;EAC/B,oBAAA,OAAQ,GAAG,CAAC,KAAa,CAAC,GAAU,CAAC,CAAA;;mBAEtC;EACH,aAAC,CAAC,CAAA;WACH;;EAGD,QAAA,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAA;UACjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;cACpD,IAAI,EAAE,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;kBAAE,OAAM;cAC3C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAY,KAAI;;EAE7C,gBAAA,MAAM,KAAK,GAAI,QAAgB,GAAG,GAAU,CAAC,CAAC;EAC7C,gBAAA,GAAG,CAAC,KAAa,CAAC,GAAU,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,KAAK,CAAA;;EAE7D,aAAC,CAAC,CAAA;WACH;UAED,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,KAAK,EAAE;EACtC,YAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;EACrB,gBAAA,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;eAC7B;EAAM,iBAAA,IAAI,OAAO,SAAS,EAAE,KAAK,KAAK,QAAQ,EAAE;kBAC/C,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;eAC5C;WACF;;EAGD,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;eACnB,MAAM,CAAC,OAAO,CAAC;eACf,MAAM,CACL,GAAG,IACD,EAAE,GAAG,IAAI,SAAS,CAAC;cACnB,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CACnC;eACA,OAAO,CAAC,IAAI,IAAG;cACd,MAAM,SAAS,GAAG,IAAI;EACnB,iBAAA,WAAW,EAAE;mBACb,SAAS,CAAC,CAAC,CAAC,CAAA;EAEf,YAAA,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI;kBAAE,OAAM;cACnC,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE;EACzC,gBAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;eACjD;mBAAM;;kBAEL,GAAG,CAAC,mBAAmB,CAAC,SAAgB,EAAE,SAAS,CAAC,IAAI,CAAQ,CAAC,CAAA;eAClE;EACH,SAAC,CAAC,CAAA;;EAGJ,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;eACnB,MAAM,CAAC,OAAO,CAAC;EACf,aAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;eACnC,OAAO,CAAC,IAAI,IAAG;cACd,MAAM,SAAS,GAAG,IAAI;EACnB,iBAAA,WAAW,EAAE;mBACb,SAAS,CAAC,CAAC,CAAC,CAAA;EACf,YAAA,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI;kBAAE,OAAM;cACnC,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE;EACzC,gBAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;eACjD;mBAAM;;kBAEL,GAAG,CAAC,gBAAgB,CAAC,SAAgB,EAAE,SAAS,CAAC,IAAI,CAAQ,CAAC,CAAA;eAC/D;EACH,SAAC,CAAC,CAAA;;EAGJ,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;eACnB,MAAM,CAAC,UAAU,CAAC;EAClB,aAAA,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;EACpC,aAAA,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAA;;EAG7C,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;eACnB,MAAM,CAAC,UAAU,CAAC;EAClB,aAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;;EAEnC,aAAA,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAQ,CAAC,CAAC,CAAA;OACnE;MAED,eAAe,CAAC,QAAkB,EAAE,WAAwB,EAAA;EAC1D,QAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE;EAC9E,YAAA,OAAO,KAAK,CAAA;WACb;OACF;EACF;;QCzKY,YAAY,CAAA;MACf,wBAAwB,CAAC,QAA8B,EAAE,GAAY,EAAA;EAC3E,QAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE;EAChC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;cACnD,IAAI,KAAK,IAAI,SAAS;EAAE,gBAAA,OAAO,KAAK,CAAA;EACpC,YAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;kBACnB,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;eAC3D;WACF;EAED,QAAA,OAAO,SAAS,CAAA;OACjB;EAED,IAAA,eAAe,CAAC,QAAkB,EAAA;EAChC,QAAA,MAAM,YAAY,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;EAC7D,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;EACxD,YAAA,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;EAC/B,YAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;EAC1D,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;;cAGvE,IAAI,WAAW,KAAK,YAAY;EAAE,gBAAA,OAAO,KAAK,CAAA;WAC/C;OACF;EACF;;QCvBY,aAAa,CAAA;EACxB,IAAA,OAAO,GAAa;EAClB,QAAA,IAAI,UAAU,EAAE;EAChB,QAAA,IAAI,YAAY,EAAE;OACnB,CAAA;MAED,cAAc,CAAC,GAAG,OAAiB,EAAA;UACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;OAC9B;EACF;;ECmBD;EACM,SAAU,SAAS,CAAC,OAAyC,EAAA;EACjE,IAAA,MAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAA;EAEtC,IAAA,MAAM,eAAe,GAAG,CAAC,OAAoC,KAAiB;EAC5E,QAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;EACjC,YAAA,OAAO,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;WAClC;EAED,QAAA,OAAO,OAAO,CAAA;EAChB,KAAC,CAAA;EAED,IAAA,MAAM,GAAG,GAAY;EACnB,QAAA,MAAM,EAAE,CAAC,GAAG,OAAiB,KAAI;EAC/B,YAAA,UAAU,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,CAAA;EACrC,YAAA,OAAO,GAAG,CAAA;WACX;EAED,QAAA,KAAK,EAAE,CAAC,SAAsB,KAAI;EAChC,YAAA,SAAS,CAAC,SAAS,GAAG,EAAE,CAAA;cACxBC,MAAa,CAAC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAA;EAC9D,YAAA,OAAO,GAAG,CAAA;WACX;UAED,YAAY,EAAE,MAAsB;EAClC,YAAA,OAAO,IAAI,OAAO,CAAS,OAAO,IAAG;kBACnCC,QAAY,CAAC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;EAC7D,aAAC,CAAC,CAAA;WACH;OACF,CAAA;EAED,IAAA,OAAO,GAAG,CAAA;EACZ;;;;;;;;;;;;;;;"}
|
package/output/umd/types.d.ts
CHANGED
|
@@ -971,7 +971,7 @@ export interface SVGAttributes extends AriaAttributes, EventHandlers<Events> {
|
|
|
971
971
|
z?: Numberish;
|
|
972
972
|
zoomAndPan?: string;
|
|
973
973
|
}
|
|
974
|
-
interface
|
|
974
|
+
interface IntrinsicElementAttributesMap {
|
|
975
975
|
a: AnchorHTMLAttributes;
|
|
976
976
|
abbr: HTMLAttributes;
|
|
977
977
|
address: HTMLAttributes;
|
|
@@ -1145,15 +1145,13 @@ interface IntrinsicElementAttributes {
|
|
|
1145
1145
|
use: SVGAttributes;
|
|
1146
1146
|
view: SVGAttributes;
|
|
1147
1147
|
}
|
|
1148
|
-
export type HtmlRef<T extends HTMLElement = HTMLElement> = {
|
|
1149
|
-
ref?: Signal.State<T | undefined>;
|
|
1150
|
-
};
|
|
1151
1148
|
export type ReservedProps = {
|
|
1152
1149
|
children?: AirxChildren;
|
|
1153
1150
|
key?: string | number | symbol;
|
|
1151
|
+
ref?: Signal.State<any | undefined>;
|
|
1154
1152
|
};
|
|
1155
1153
|
export type NativeElements = {
|
|
1156
|
-
[K in keyof
|
|
1154
|
+
[K in keyof IntrinsicElementAttributesMap]: IntrinsicElementAttributesMap[K] & ReservedProps;
|
|
1157
1155
|
};
|
|
1158
1156
|
declare global {
|
|
1159
1157
|
namespace JSX {
|