diff --git a/packages/core/package.json b/packages/core/package.json index df4b77e7..4728bcf0 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@dark-engine/core", - "version": "0.7.1", + "version": "0.7.3", "description": "Dark is lightweight (10 Kb gzipped) component-and-hook-based UI rendering engine for javascript apps without dependencies and written in Typescript 💫", "author": "AlexPlex", "license": "MIT", diff --git a/packages/core/umd/dark-core.development.js b/packages/core/umd/dark-core.development.js index ba8dad87..c69de070 100644 --- a/packages/core/umd/dark-core.development.js +++ b/packages/core/umd/dark-core.development.js @@ -608,7 +608,7 @@ function performChild(options) { }), performedInstance = _a.performedInstance, performedShadow = _a.performedShadow; instance = performedInstance || instance; shadow = performedShadow || shadow; - alternate && mutateAlternate({ fiber: fiber, alternate: alternate, instance: instance }); + alternate && mutateAlternate({ alternate: alternate, instance: instance }); mutateFiber({ fiber: fiber, alternate: alternate, instance: instance }); fiber = alternate ? performMemo({ fiber: fiber, alternate: alternate, instance: instance }) : fiber; nextFiber.child = fiber; @@ -648,7 +648,7 @@ function performSibling(options) { }), performedInstance = _a.performedInstance, performedShadow = _a.performedShadow; instance = performedInstance || instance; shadow = performedShadow || shadow; - alternate && mutateAlternate({ fiber: fiber, alternate: alternate, instance: instance }); + alternate && mutateAlternate({ alternate: alternate, instance: instance }); mutateFiber({ fiber: fiber, alternate: alternate, instance: instance }); fiber = alternate ? performMemo({ fiber: fiber, alternate: alternate, instance: instance }) : fiber; fiber.parent = nextFiber.parent; @@ -704,7 +704,7 @@ function mutateFiber(options) { } } function mutateAlternate(options) { - var fiber = options.fiber, alternate = options.alternate, instance = options.instance; + var alternate = options.alternate, instance = options.instance; var alternateType = getInstanceType(alternate.instance); var elementType = getInstanceType(instance); var isSameType = elementType === alternateType; @@ -740,10 +740,10 @@ function mutateAlternate(options) { try { for (var diffKeys_1 = __values(diffKeys), diffKeys_1_1 = diffKeys_1.next(); !diffKeys_1_1.done; diffKeys_1_1 = diffKeys_1.next()) { var key = diffKeys_1_1.value; - var fiber_1 = fibersMap[key] || null; - if (fiber_1) { - fiber_1.effectTag = _types__WEBPACK_IMPORTED_MODULE_7__.EffectTag.DELETION; - _scope__WEBPACK_IMPORTED_MODULE_2__.deletionsHelper.get().push(fiber_1); + var fiber = fibersMap[key] || null; + if (fiber) { + fiber.effectTag = _types__WEBPACK_IMPORTED_MODULE_7__.EffectTag.DELETION; + _scope__WEBPACK_IMPORTED_MODULE_2__.deletionsHelper.get().push(fiber); } } } @@ -760,8 +760,8 @@ function mutateAlternate(options) { var fibers = (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.takeListFromEnd)(getSiblingFibers(alternate.child), diffCount); try { for (var fibers_1 = __values(fibers), fibers_1_1 = fibers_1.next(); !fibers_1_1.done; fibers_1_1 = fibers_1.next()) { - var fiber_2 = fibers_1_1.value; - fiber_2.effectTag = _types__WEBPACK_IMPORTED_MODULE_7__.EffectTag.DELETION; + var fiber = fibers_1_1.value; + fiber.effectTag = _types__WEBPACK_IMPORTED_MODULE_7__.EffectTag.DELETION; } } catch (e_2_1) { e_2 = { error: e_2_1 }; } @@ -802,9 +802,9 @@ function mutateAlternate(options) { alternate.child = insertionFiber; } else { - var fiber_3 = fibersByPositionsMap[keyIdx] || null; - if (fiber_3) { - insertionFiber.nextSibling = fiber_3; + var fiber = fibersByPositionsMap[keyIdx] || null; + if (fiber) { + insertionFiber.nextSibling = fiber; } } } diff --git a/packages/core/umd/dark-core.development.js.map b/packages/core/umd/dark-core.development.js.map index 8c6dbdce..1760b103 100644 --- a/packages/core/umd/dark-core.development.js.map +++ b/packages/core/umd/dark-core.development.js.map @@ -1 +1 @@ -{"version":3,"file":"dark-core.development.js","mappings":"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","sources":["webpack://DarkCore/webpack/universalModuleDefinition","webpack://DarkCore/./src/component/component.ts","webpack://DarkCore/./src/component/index.ts","webpack://DarkCore/./src/component/types.ts","webpack://DarkCore/./src/constants.ts","webpack://DarkCore/./src/context/context.ts","webpack://DarkCore/./src/context/index.ts","webpack://DarkCore/./src/context/types.ts","webpack://DarkCore/./src/element/element.ts","webpack://DarkCore/./src/element/index.ts","webpack://DarkCore/./src/fiber/fiber.ts","webpack://DarkCore/./src/fiber/index.ts","webpack://DarkCore/./src/fiber/types.ts","webpack://DarkCore/./src/fragment/fragment.ts","webpack://DarkCore/./src/fragment/index.ts","webpack://DarkCore/./src/helpers/index.ts","webpack://DarkCore/./src/lazy/index.ts","webpack://DarkCore/./src/lazy/lazy.ts","webpack://DarkCore/./src/memo/index.ts","webpack://DarkCore/./src/memo/memo.ts","webpack://DarkCore/./src/platform/index.ts","webpack://DarkCore/./src/platform/platform.ts","webpack://DarkCore/./src/platform/types.ts","webpack://DarkCore/./src/ref/index.ts","webpack://DarkCore/./src/ref/ref.ts","webpack://DarkCore/./src/scope/index.ts","webpack://DarkCore/./src/scope/scope.ts","webpack://DarkCore/./src/shared/index.ts","webpack://DarkCore/./src/shared/types.ts","webpack://DarkCore/./src/suspense/index.ts","webpack://DarkCore/./src/suspense/suspense.ts","webpack://DarkCore/./src/unmount/index.ts","webpack://DarkCore/./src/unmount/unmount.ts","webpack://DarkCore/./src/use-callback/index.ts","webpack://DarkCore/./src/use-callback/use-callback.ts","webpack://DarkCore/./src/use-context/index.ts","webpack://DarkCore/./src/use-context/use-context.ts","webpack://DarkCore/./src/use-deferred-value/index.ts","webpack://DarkCore/./src/use-deferred-value/use-deferred-value.ts","webpack://DarkCore/./src/use-effect/index.ts","webpack://DarkCore/./src/use-effect/use-effect.ts","webpack://DarkCore/./src/use-error/index.ts","webpack://DarkCore/./src/use-error/use-error.ts","webpack://DarkCore/./src/use-event/index.ts","webpack://DarkCore/./src/use-event/use-event.ts","webpack://DarkCore/./src/use-imperative-handle/index.ts","webpack://DarkCore/./src/use-imperative-handle/use-imperative-handle.ts","webpack://DarkCore/./src/use-layout-effect/index.ts","webpack://DarkCore/./src/use-layout-effect/use-layout-effect.ts","webpack://DarkCore/./src/use-memo/index.ts","webpack://DarkCore/./src/use-memo/use-memo.ts","webpack://DarkCore/./src/use-reducer/index.ts","webpack://DarkCore/./src/use-reducer/use-reducer.ts","webpack://DarkCore/./src/use-ref/index.ts","webpack://DarkCore/./src/use-ref/use-ref.ts","webpack://DarkCore/./src/use-state/index.ts","webpack://DarkCore/./src/use-state/use-state.ts","webpack://DarkCore/./src/use-update/index.ts","webpack://DarkCore/./src/use-update/use-update.ts","webpack://DarkCore/./src/view/index.ts","webpack://DarkCore/./src/view/types.ts","webpack://DarkCore/./src/view/view.ts","webpack://DarkCore/./src/walk/index.ts","webpack://DarkCore/./src/walk/walk.ts","webpack://DarkCore/webpack/bootstrap","webpack://DarkCore/webpack/runtime/define property getters","webpack://DarkCore/webpack/runtime/hasOwnProperty shorthand","webpack://DarkCore/webpack/runtime/make namespace object","webpack://DarkCore/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DarkCore\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DarkCore\"] = factory();\n\telse\n\t\troot[\"DarkCore\"] = factory();\n})(self, () => {\nreturn ","import { ATTR_KEY } from '../constants';\r\nimport { error, detectIsEmpty } from '../helpers';\r\nimport type { DarkElementKey, DarkElementInstance } from '../shared';\r\nimport type { MutableRef } from '../ref';\r\nimport type { CreateElement, ComponentOptions, StandardComponentProps, SlotProps } from './types';\r\n\r\nconst $$component = Symbol('component');\r\nconst defaultOptions: ComponentOptions = {\r\n displayName: '',\r\n defaultProps: {},\r\n token: $$component,\r\n};\r\nclass ComponentFactory

{\r\n public type: CreateElement

;\r\n public token: Symbol;\r\n public props: P;\r\n public ref: MutableRef;\r\n public displayName: string;\r\n public children: Array = [];\r\n public shouldUpdate?: (props: P, nextProps: P) => boolean;\r\n\r\n constructor(options: ComponentFactory

) {\r\n this.type = options.type || null;\r\n this.token = options.token || null;\r\n this.props = options.props || null;\r\n this.ref = options.ref || null;\r\n this.displayName = options.displayName || '';\r\n this.shouldUpdate = options.shouldUpdate || null;\r\n }\r\n}\r\n\r\nfunction createComponent(\r\n createElement: CreateElement

,\r\n options: ComponentOptions

= {},\r\n) {\r\n type Props = P & StandardComponentProps;\r\n const computedOptions = { ...defaultOptions, ...options };\r\n const { token, defaultProps, displayName, shouldUpdate } = computedOptions;\r\n\r\n return (props = {} as Props, ref?: MutableRef): ComponentFactory => {\r\n const computedProps = { ...defaultProps, ...props };\r\n const factory = new ComponentFactory({\r\n token,\r\n ref,\r\n displayName,\r\n shouldUpdate,\r\n props: computedProps,\r\n type: createElement,\r\n children: [],\r\n });\r\n\r\n if (computedProps.ref) {\r\n delete computedProps.ref;\r\n\r\n if (process.env.NODE_ENV === 'development') {\r\n error(`[Dark]: To use ref you need to wrap the createComponent with forwardRef!`);\r\n }\r\n }\r\n\r\n return factory;\r\n };\r\n}\r\n\r\nconst detectIsComponentFactory = (factory: unknown): factory is ComponentFactory => factory instanceof ComponentFactory;\r\n\r\nconst getComponentFactoryKey = (factory: ComponentFactory): DarkElementKey =>\r\n !detectIsEmpty(factory.props[ATTR_KEY]) ? factory.props[ATTR_KEY] : null;\r\n\r\nexport { ComponentFactory, createComponent, detectIsComponentFactory, getComponentFactoryKey };\r\n","export * from './component';\r\nexport * from './types';\r\n","import type { ComponentFactory } from './component';\r\nimport type { DarkElementKey, DarkElement } from '../shared';\r\nimport type { MutableRef } from '../ref';\r\n\r\nexport type ComponentOptions

= Readonly<{\r\n displayName?: string;\r\n defaultProps?: Partial

;\r\n token?: Symbol;\r\n shouldUpdate?: (props: P, nextProps: P) => boolean;\r\n}>;\r\n\r\nexport type StandardComponentProps = KeyProps & SlotProps & RefProps;\r\n\r\nexport type KeyProps = {\r\n key?: DarkElementKey;\r\n};\r\n\r\nexport type SlotProps = Readonly<{\r\n slot?: T;\r\n}>;\r\n\r\nexport type RefProps = {\r\n ref?: MutableRef;\r\n};\r\n\r\nexport type Component = any, R = any> = (\r\n props: T,\r\n ref?: MutableRef,\r\n) => ComponentFactory;\r\n\r\nexport type ComponentFactoryReturnType = DarkElement;\r\n\r\nexport type CreateElement

= (\r\n props: P & Pick,\r\n ref?: MutableRef,\r\n) => ComponentFactoryReturnType;\r\n","export const ROOT = 'root';\r\nexport const EMPTY_NODE = 'dark:matter';\r\nexport const ATTR_KEY = 'key';\r\nexport const ATTR_REF = 'ref';\r\nexport const PARTIAL_UPDATE = 'partial-update';\r\n\r\nexport enum TaskPriority {\r\n HIGH = 2,\r\n NORMAL = 1,\r\n LOW = 0,\r\n}\r\n","import { createComponent } from '../component';\r\nimport { useEffect } from '../use-effect';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { useContext } from '../use-context';\r\nimport { detectIsFunction } from '../helpers';\r\nimport type { Context, ContexProviderProps } from './types';\r\n\r\nfunction createContext(defaultValue: T): Context {\r\n let displayName = 'Context';\r\n const context: Context = {\r\n displayName,\r\n defaultValue,\r\n Provider: null,\r\n Consumer: null,\r\n };\r\n\r\n mutateContext(context, defaultValue, displayName);\r\n\r\n Object.defineProperty(context, 'displayName', {\r\n get: () => displayName,\r\n set: (newValue: string) => {\r\n displayName = newValue;\r\n mutateContext(context, defaultValue, displayName);\r\n },\r\n });\r\n\r\n return context;\r\n}\r\n\r\nfunction mutateContext(context: Context, defaultValue: T, displayName: string) {\r\n context.Provider = createProvider(context, defaultValue, displayName);\r\n context.Consumer = createConsumer(context, displayName);\r\n}\r\n\r\nfunction createProvider(context: Context, defaultValue: T, displayName: string) {\r\n return createComponent>(\r\n ({ value = defaultValue, slot }) => {\r\n const fiber = componentFiberHelper.get();\r\n\r\n if (!fiber.provider) {\r\n fiber.provider = new Map();\r\n }\r\n\r\n if (!fiber.provider.get(context)) {\r\n fiber.provider.set(context, {\r\n subscribers: [],\r\n value,\r\n });\r\n }\r\n\r\n const provider = fiber.provider.get(context);\r\n\r\n useEffect(() => {\r\n for (const subscriber of provider.subscribers) {\r\n subscriber(value);\r\n }\r\n }, [value]);\r\n\r\n provider.value = value;\r\n\r\n return slot;\r\n },\r\n { displayName: `${displayName}.Provider` },\r\n );\r\n}\r\n\r\nfunction createConsumer(context: Context, displayName: string) {\r\n return createComponent(\r\n ({ slot }) => {\r\n const value = useContext(context);\r\n\r\n return detectIsFunction(slot) ? slot(value) : null;\r\n },\r\n { displayName: `${displayName}.Consumer` },\r\n );\r\n}\r\n\r\nexport { createContext };\r\n","export * from './context';\r\nexport * from './types';\r\n","import type { Component, SlotProps } from '../component';\r\nimport type { DarkElement } from '../shared';\r\n\r\nexport type ContexProviderProps = {\r\n value: T;\r\n} & SlotProps;\r\n\r\nexport type Context = {\r\n Provider: Component>;\r\n Consumer: Component DarkElement>>;\r\n displayName?: string;\r\n defaultValue: T;\r\n};\r\n\r\nexport type ContextProviderValue = {\r\n value: T;\r\n subscribers: Array<(value: T) => void>;\r\n};\r\n","import { detectIsNumber, detectIsString, detectIsFunction } from '../helpers';\r\nimport { View, Text, type TagVirtualNodeFactory } from '../view';\r\n\r\nfunction getChildren(children: Array) {\r\n children = children.map(x => (detectIsString(x) || detectIsNumber(x) ? Text(x.toString()) : x));\r\n\r\n return children ? (Array.isArray(children) ? [...children] : [children]) : [];\r\n}\r\n\r\nfunction createElement(\r\n tag: string | Function,\r\n props: any,\r\n ...children: Array\r\n): TagVirtualNodeFactory | Function | null {\r\n if (detectIsString(tag)) {\r\n return View({\r\n ...props,\r\n as: tag,\r\n slot: getChildren(children),\r\n });\r\n }\r\n\r\n if (detectIsFunction(tag)) {\r\n let slot = getChildren(children);\r\n\r\n slot = slot.length === 1 ? slot[0] : slot;\r\n\r\n return tag({ ...props, slot });\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport { createElement };\r\n","export * from './element';\r\n","import { flatten, detectIsEmpty, error, keyBy, takeListFromEnd, detectIsUndefined, detectIsArray } from '../helpers';\r\nimport { platform } from '../platform';\r\nimport {\r\n wipRootHelper,\r\n currentRootHelper,\r\n nextUnitOfWorkHelper,\r\n deletionsHelper,\r\n fiberMountHelper,\r\n componentFiberHelper,\r\n fromHookUpdateHelper,\r\n effectStoreHelper,\r\n effectsHelper,\r\n layoutEffectsHelper,\r\n} from '../scope';\r\nimport { type ComponentFactory, detectIsComponentFactory, getComponentFactoryKey } from '../component';\r\nimport {\r\n type TagVirtualNode,\r\n detectIsTagVirtualNode,\r\n createEmptyVirtualNode,\r\n getVirtualNodeKey,\r\n detectIsVirtualNode,\r\n detectIsVirtualNodeFactory,\r\n} from '../view';\r\nimport { detectIsMemo } from '../memo';\r\nimport type { Context, ContextProviderValue } from '../context';\r\nimport type { DarkElementKey, DarkElement, DarkElementInstance } from '../shared';\r\nimport { PARTIAL_UPDATE } from '../constants';\r\nimport { type NativeElement, type Hook, EffectTag, cloneTagMap } from './types';\r\nimport { hasEffects } from '../use-effect';\r\nimport { hasLayoutEffects } from '../use-layout-effect';\r\nimport { walkFiber } from '../walk';\r\nimport { unmountFiber } from '../unmount';\r\n\r\nclass Fiber {\r\n public nativeElement: N;\r\n public parent: Fiber;\r\n public child: Fiber;\r\n public nextSibling: Fiber;\r\n public alternate: Fiber;\r\n public effectTag: EffectTag;\r\n public instance: DarkElementInstance;\r\n public hook: Hook;\r\n public shadow: Fiber;\r\n public provider: Map;\r\n public transposition: boolean;\r\n public mountedToHost: boolean;\r\n public portalHost: boolean;\r\n public effectHost: boolean;\r\n public layoutEffectHost: boolean;\r\n public childrenCount: number;\r\n public marker: string;\r\n public isUsed: boolean;\r\n public catchException: (error: Error) => void;\r\n\r\n constructor(options: Partial>) {\r\n this.nativeElement = options.nativeElement || null;\r\n this.parent = options.parent || null;\r\n this.child = options.child || null;\r\n this.nextSibling = options.nextSibling || null;\r\n this.alternate = options.alternate || null;\r\n this.effectTag = options.effectTag || null;\r\n this.instance = options.instance || null;\r\n this.hook = options.hook || createHook();\r\n this.shadow = options.shadow || null;\r\n this.provider = options.provider || null;\r\n this.transposition = !detectIsUndefined(options.transposition) ? options.transposition : false;\r\n this.mountedToHost = !detectIsUndefined(options.mountedToHost) || false;\r\n this.portalHost = !detectIsUndefined(options.portalHost) ? options.portalHost : false;\r\n this.effectHost = !detectIsUndefined(options.effectHost) ? options.effectHost : false;\r\n this.layoutEffectHost = !detectIsUndefined(options.layoutEffectHost) ? options.layoutEffectHost : false;\r\n this.childrenCount = options.childrenCount || 0;\r\n this.marker = options.marker || '';\r\n this.isUsed = options.isUsed || false;\r\n }\r\n\r\n public markPortalHost() {\r\n this.portalHost = true;\r\n this.parent && !this.parent.portalHost && this.parent.markPortalHost();\r\n }\r\n\r\n public markEffectHost() {\r\n this.effectHost = true;\r\n this.parent && !this.parent.effectHost && this.parent.markEffectHost();\r\n }\r\n\r\n public markLayoutEffectHost() {\r\n this.layoutEffectHost = true;\r\n this.parent && !this.parent.layoutEffectHost && this.parent.markLayoutEffectHost();\r\n }\r\n\r\n public setError(error: Error) {\r\n if (typeof this.catchException === 'function') {\r\n this.catchException(error);\r\n } else if (this.parent) {\r\n this.parent.setError(error);\r\n }\r\n }\r\n}\r\n\r\nfunction workLoop() {\r\n const wipFiber = wipRootHelper.get();\r\n let nextUnitOfWork = nextUnitOfWorkHelper.get();\r\n let shouldYield = false;\r\n let hasMoreWork = Boolean(nextUnitOfWork);\r\n\r\n while (nextUnitOfWork && !shouldYield) {\r\n nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\r\n nextUnitOfWorkHelper.set(nextUnitOfWork);\r\n hasMoreWork = Boolean(nextUnitOfWork);\r\n shouldYield = platform.shouldYeildToHost();\r\n }\r\n\r\n if (!nextUnitOfWork && wipFiber) {\r\n commitChanges();\r\n }\r\n\r\n return hasMoreWork;\r\n}\r\n\r\nfunction performUnitOfWork(fiber: Fiber) {\r\n let isDeepWalking = true;\r\n let nextFiber = fiber;\r\n let shadow: Fiber = fiber.shadow;\r\n let instance = fiber.instance;\r\n\r\n while (true) {\r\n isDeepWalking = fiberMountHelper.deepWalking.get();\r\n nextFiber.hook.idx = 0;\r\n\r\n if (isDeepWalking) {\r\n const hasChildren = hasChildrenProp(instance) && instance.children.length > 0;\r\n\r\n if (hasChildren) {\r\n const { performedFiber, performedNextFiber, performedShadow, performedInstance } = performChild({\r\n nextFiber,\r\n shadow,\r\n instance,\r\n });\r\n\r\n nextFiber = performedNextFiber;\r\n shadow = performedShadow;\r\n instance = performedInstance;\r\n\r\n if (performedFiber) return performedFiber;\r\n } else {\r\n const { performedFiber, performedNextFiber, performedShadow, performedInstance } = performSibling({\r\n nextFiber,\r\n shadow,\r\n instance,\r\n });\r\n\r\n nextFiber = performedNextFiber;\r\n shadow = performedShadow;\r\n instance = performedInstance;\r\n\r\n if (performedFiber) return performedFiber;\r\n }\r\n } else {\r\n const { performedFiber, performedNextFiber, performedShadow, performedInstance } = performSibling({\r\n nextFiber,\r\n shadow,\r\n instance,\r\n });\r\n\r\n nextFiber = performedNextFiber;\r\n shadow = performedShadow;\r\n instance = performedInstance;\r\n\r\n if (performedFiber) return performedFiber;\r\n }\r\n\r\n performPartialUpdateEffects(nextFiber);\r\n\r\n if (nextFiber.parent === null) return null;\r\n }\r\n}\r\n\r\nfunction performPartialUpdateEffects(nextFiber: Fiber) {\r\n if (nextFiber.marker === PARTIAL_UPDATE) {\r\n const alternate = nextFiber.child?.alternate || null;\r\n const fiber = nextFiber.child || null;\r\n\r\n if (alternate && fiber && alternate.nextSibling && !fiber.nextSibling) {\r\n let nextFiber = alternate.nextSibling;\r\n const deletions: Array = [];\r\n\r\n while (nextFiber) {\r\n nextFiber.effectTag = EffectTag.DELETION;\r\n deletions.push(nextFiber);\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n deletionsHelper.get().push(...deletions);\r\n }\r\n }\r\n}\r\n\r\ntype PerformChildOptions = {\r\n nextFiber: Fiber;\r\n shadow: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction performChild(options: PerformChildOptions) {\r\n fiberMountHelper.jumpToChild();\r\n let nextFiber = options.nextFiber;\r\n let shadow = options.shadow;\r\n let instance = options.instance;\r\n\r\n shadow = shadow ? shadow.child : null;\r\n\r\n const alternate = getChildAlternate(nextFiber);\r\n const hook = getHook({ shadow, alternate, instance });\r\n const provider = shadow ? shadow.provider : alternate ? alternate.provider : null;\r\n let fiber = new Fiber({ hook, provider });\r\n\r\n componentFiberHelper.set(fiber);\r\n fiber.parent = nextFiber;\r\n\r\n const { performedInstance, performedShadow } = pertformInstance({\r\n instance,\r\n idx: 0,\r\n fiber,\r\n alternate,\r\n });\r\n instance = performedInstance || instance;\r\n shadow = performedShadow || shadow;\r\n alternate && mutateAlternate({ fiber, alternate, instance });\r\n mutateFiber({ fiber, alternate, instance });\r\n fiber = alternate ? performMemo({ fiber, alternate, instance }) : fiber;\r\n\r\n nextFiber.child = fiber;\r\n fiber.parent = nextFiber;\r\n fiber.shadow = shadow;\r\n nextFiber = fiber;\r\n\r\n cloneTagMap[fiber.parent.effectTag] && (fiber.effectTag = fiber.parent.effectTag);\r\n\r\n return {\r\n performedFiber: nextFiber,\r\n performedNextFiber: nextFiber,\r\n performedShadow: shadow,\r\n performedInstance: instance,\r\n };\r\n}\r\n\r\ntype PerformSiblingOptions = {\r\n nextFiber: Fiber;\r\n shadow: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction performSibling(options: PerformSiblingOptions) {\r\n fiberMountHelper.jumpToSibling();\r\n let nextFiber = options.nextFiber;\r\n let shadow = options.shadow;\r\n let instance = options.instance;\r\n const parent = nextFiber.parent.instance;\r\n const childrenIdx = fiberMountHelper.getIndex();\r\n const hasSibling = hasChildrenProp(parent) && parent.children[childrenIdx];\r\n\r\n if (hasSibling) {\r\n fiberMountHelper.deepWalking.set(true);\r\n\r\n shadow = shadow ? shadow.nextSibling : null;\r\n const alternate = getNextSiblingAlternate(nextFiber);\r\n const hook = getHook({ shadow, alternate, instance });\r\n const provider = shadow ? shadow.provider : alternate ? alternate.provider : null;\r\n let fiber = new Fiber({ hook, provider });\r\n\r\n componentFiberHelper.set(fiber);\r\n fiber.parent = nextFiber.parent;\r\n\r\n const { performedInstance, performedShadow } = pertformInstance({\r\n instance: parent,\r\n idx: childrenIdx,\r\n fiber,\r\n alternate,\r\n });\r\n instance = performedInstance || instance;\r\n shadow = performedShadow || shadow;\r\n alternate && mutateAlternate({ fiber, alternate, instance });\r\n mutateFiber({ fiber, alternate, instance });\r\n fiber = alternate ? performMemo({ fiber, alternate, instance }) : fiber;\r\n\r\n fiber.parent = nextFiber.parent;\r\n nextFiber.nextSibling = fiber;\r\n fiber.shadow = shadow;\r\n nextFiber = fiber;\r\n\r\n cloneTagMap[fiber.parent.effectTag] && (fiber.effectTag = fiber.parent.effectTag);\r\n\r\n return {\r\n performedFiber: nextFiber,\r\n performedNextFiber: nextFiber,\r\n performedShadow: shadow,\r\n performedInstance: instance,\r\n };\r\n } else {\r\n fiberMountHelper.jumpToParent();\r\n fiberMountHelper.deepWalking.set(false);\r\n shadow = shadow ? shadow.parent : null;\r\n nextFiber = nextFiber.parent;\r\n instance = nextFiber.instance;\r\n\r\n if (hasChildrenProp(nextFiber.instance)) {\r\n nextFiber.instance.children = [];\r\n }\r\n }\r\n\r\n return {\r\n performedFiber: null,\r\n performedNextFiber: nextFiber,\r\n performedShadow: shadow,\r\n performedInstance: instance,\r\n };\r\n}\r\n\r\ntype MutateFiberOptions = {\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction mutateFiber(options: MutateFiberOptions) {\r\n const { fiber, alternate, instance } = options;\r\n const key = alternate ? getElementKey(alternate.instance) : null;\r\n const nextKey = alternate ? getElementKey(instance) : null;\r\n const isDifferentKeys = key !== nextKey;\r\n const isSameType = Boolean(alternate) && getInstanceType(alternate.instance) === getInstanceType(instance);\r\n const isUpdate = isSameType && !isDifferentKeys;\r\n\r\n fiber.instance = instance;\r\n fiber.alternate = alternate || null;\r\n fiber.nativeElement = isUpdate ? alternate.nativeElement : null;\r\n fiber.effectTag = isUpdate ? EffectTag.UPDATE : EffectTag.PLACEMENT;\r\n fiber.mountedToHost = fiber.nativeElement ? isUpdate : false;\r\n\r\n if (hasChildrenProp(fiber.instance)) {\r\n fiber.childrenCount = fiber.instance.children.length;\r\n }\r\n\r\n if (fiber.alternate) {\r\n fiber.alternate.shadow = null;\r\n fiber.alternate.alternate = null;\r\n }\r\n\r\n if (!fiber.nativeElement && detectIsVirtualNode(fiber.instance)) {\r\n fiber.nativeElement = platform.createNativeElement(fiber);\r\n }\r\n}\r\n\r\ntype PerformAlternateOptions = {\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction mutateAlternate(options: PerformAlternateOptions) {\r\n const { fiber, alternate, instance } = options;\r\n const alternateType = getInstanceType(alternate.instance);\r\n const elementType = getInstanceType(instance);\r\n const isSameType = elementType === alternateType;\r\n const prevKey = getElementKey(alternate.instance);\r\n const nextKey = getElementKey(instance);\r\n const isSameKeys = prevKey === nextKey;\r\n\r\n alternate.isUsed = true;\r\n\r\n if (!isSameType || !isSameKeys) {\r\n alternate.effectTag = EffectTag.DELETION;\r\n deletionsHelper.get().push(alternate);\r\n } else if (hasChildrenProp(alternate.instance) && hasChildrenProp(instance)) {\r\n const prevElementsCount = alternate.childrenCount;\r\n const nextElementsCount = instance.children.length;\r\n const isRequestedKeys = prevElementsCount !== nextElementsCount;\r\n\r\n if (isRequestedKeys) {\r\n const isRemovingCase = nextElementsCount < prevElementsCount;\r\n const isInsertingCase = nextElementsCount > prevElementsCount;\r\n const children = hasChildrenProp(instance) ? instance.children : [];\r\n const { keys, nextKeys } = extractKeys(alternate.child, children);\r\n const hasKeys = keys.length > 0;\r\n const hasAnyKeys = hasKeys || nextKeys.length > 0;\r\n\r\n if (process.env.NODE_ENV === 'development') {\r\n if (!hasAnyKeys && prevElementsCount !== 0 && nextElementsCount !== 0) {\r\n error(`\r\n [Dark]: Operation of inserting, adding, replacing elements into list requires to have a unique key for every node (string or number, but not array index)!\r\n `);\r\n }\r\n }\r\n\r\n const performRemovingNodes = () => {\r\n const diffKeys = getDiffKeys(keys, nextKeys);\r\n\r\n if (diffKeys.length > 0) {\r\n const fibersMap = createFibersByKeyMap(alternate.child);\r\n\r\n for (const key of diffKeys) {\r\n const fiber = fibersMap[key] || null;\r\n\r\n if (fiber) {\r\n fiber.effectTag = EffectTag.DELETION;\r\n deletionsHelper.get().push(fiber);\r\n }\r\n }\r\n } else if (!hasKeys) {\r\n const diffCount = prevElementsCount - nextElementsCount;\r\n const fibers: Array = takeListFromEnd(getSiblingFibers(alternate.child), diffCount);\r\n\r\n for (const fiber of fibers) {\r\n fiber.effectTag = EffectTag.DELETION;\r\n }\r\n\r\n deletionsHelper.get().push(...fibers);\r\n }\r\n };\r\n\r\n const performInsertingNodes = () => {\r\n const diffKeys = getDiffKeys(nextKeys, keys);\r\n\r\n if (diffKeys.length > 0) {\r\n const diffKeyMap = keyBy(diffKeys, x => x);\r\n const fibersByPositionsMap = createFibersByPositionMap(alternate.child);\r\n const usedKeyMap = {};\r\n let keyIdx = 0;\r\n\r\n for (const nextKey of nextKeys) {\r\n if (process.env.NODE_ENV === 'development') {\r\n if (usedKeyMap[nextKey]) {\r\n error(`Some key of node already has been used!`);\r\n }\r\n }\r\n\r\n usedKeyMap[nextKey] = true;\r\n\r\n if (nextKey !== keys[keyIdx] && diffKeyMap[nextKey]) {\r\n const insertionFiber = new Fiber({\r\n instance: createEmptyVirtualNode(),\r\n parent: alternate,\r\n effectTag: EffectTag.PLACEMENT,\r\n });\r\n\r\n if (keyIdx === 0) {\r\n insertionFiber.nextSibling = alternate.child;\r\n alternate.child = insertionFiber;\r\n } else {\r\n const fiber = fibersByPositionsMap[keyIdx] || null;\r\n\r\n if (fiber) {\r\n insertionFiber.nextSibling = fiber;\r\n }\r\n }\r\n }\r\n\r\n keyIdx++;\r\n }\r\n }\r\n };\r\n\r\n isRemovingCase && performRemovingNodes();\r\n isInsertingCase && performInsertingNodes();\r\n }\r\n }\r\n}\r\n\r\ntype PerformMemoOptions = {\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction performMemo(options: PerformMemoOptions) {\r\n const { fiber, alternate, instance } = options;\r\n\r\n if (detectIsMemo(fiber.instance)) {\r\n let memoFiber: Fiber = null;\r\n const factory = instance as ComponentFactory;\r\n const alternateFactory = alternate.instance as ComponentFactory;\r\n\r\n if (factory.type !== alternateFactory.type) return fiber;\r\n\r\n const props = alternateFactory.props;\r\n const nextProps = factory.props;\r\n const skip = !factory.shouldUpdate(props, nextProps);\r\n\r\n if (skip) {\r\n let nextFiber: Fiber = null;\r\n fiberMountHelper.deepWalking.set(false);\r\n\r\n memoFiber = new Fiber({\r\n ...alternate,\r\n alternate,\r\n effectTag: EffectTag.SKIP,\r\n nextSibling: alternate.nextSibling\r\n ? alternate.nextSibling.effectTag === EffectTag.DELETION\r\n ? null\r\n : alternate.nextSibling\r\n : null,\r\n });\r\n\r\n alternate.alternate = null;\r\n nextFiber = memoFiber.child;\r\n\r\n while (nextFiber) {\r\n nextFiber.parent = memoFiber;\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n if (memoFiber.effectHost) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (memoFiber.layoutEffectHost) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (memoFiber.portalHost) {\r\n fiber.markPortalHost();\r\n }\r\n\r\n return memoFiber;\r\n }\r\n }\r\n\r\n return fiber;\r\n}\r\n\r\ntype PerformInstanceOptions = {\r\n instance: DarkElementInstance;\r\n idx: number;\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n};\r\n\r\nfunction pertformInstance(options: PerformInstanceOptions) {\r\n const { instance, idx, fiber, alternate } = options;\r\n let performedInstance: DarkElementInstance = null;\r\n let performedShadow: Fiber = null;\r\n\r\n if (hasChildrenProp(instance)) {\r\n const elements = detectIsArray(instance.children[idx])\r\n ? flatten([instance.children[idx]])\r\n : [instance.children[idx]];\r\n\r\n instance.children.splice(idx, 1, ...elements);\r\n performedInstance = instance.children[idx];\r\n performedShadow = alternate\r\n ? getRootShadow({\r\n instance: performedInstance,\r\n fiber,\r\n alternate,\r\n })\r\n : performedShadow;\r\n performedInstance = mountInstance(fiber, performedInstance);\r\n }\r\n\r\n if (detectIsComponentFactory(performedInstance)) {\r\n if (hasEffects(fiber)) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (hasLayoutEffects(fiber)) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (platform.detectIsPortal(performedInstance)) {\r\n fiber.markPortalHost();\r\n }\r\n }\r\n\r\n return {\r\n performedInstance,\r\n performedShadow,\r\n };\r\n}\r\n\r\ntype GetRootShadowOptions = {\r\n instance: DarkElementInstance;\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n};\r\n\r\nfunction getRootShadow(options: GetRootShadowOptions) {\r\n const { instance, fiber, alternate } = options;\r\n const key = getElementKey(alternate.instance);\r\n const nextKey = getElementKey(instance);\r\n let shadow: Fiber = null;\r\n\r\n if (key !== nextKey) {\r\n shadow = getAlternateByKey(nextKey, alternate.parent.child);\r\n\r\n if (shadow) {\r\n fiber.hook = shadow.hook;\r\n fiber.provider = shadow.provider;\r\n alternate.transposition = true;\r\n }\r\n }\r\n\r\n return shadow;\r\n}\r\n\r\nfunction mountInstance(fiber: Fiber, instance: DarkElementInstance) {\r\n const isComponentFactory = detectIsComponentFactory(instance);\r\n const factory = instance as ComponentFactory;\r\n\r\n if (isComponentFactory) {\r\n try {\r\n const result = factory.type(factory.props, factory.ref);\r\n\r\n factory.children = detectIsArray(result)\r\n ? (flatten([result]) as Array)\r\n : ([result] as Array);\r\n } catch (err) {\r\n factory.children = [];\r\n fiber.setError(err);\r\n error(err);\r\n }\r\n } else if (detectIsVirtualNodeFactory(instance)) {\r\n instance = instance();\r\n }\r\n\r\n if (hasChildrenProp(instance)) {\r\n for (let i = 0; i < instance.children.length; i++) {\r\n if (!instance.children[i]) {\r\n instance.children[i] = transformElementInstance(instance.children[i]) as DarkElementInstance;\r\n }\r\n }\r\n\r\n instance.children = isComponentFactory\r\n ? instance.children\r\n : detectIsArray(instance.children)\r\n ? flatten([instance.children])\r\n : [instance.children];\r\n\r\n if (isComponentFactory && factory.children.length === 0) {\r\n factory.children.push(createEmptyVirtualNode());\r\n }\r\n }\r\n\r\n return instance;\r\n}\r\n\r\nfunction createFibersByPositionMap(fiber: Fiber) {\r\n let nextFiber = fiber;\r\n let position = 0;\r\n const map: Record = {};\r\n\r\n while (nextFiber) {\r\n map[position] = nextFiber;\r\n\r\n position++;\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return map;\r\n}\r\n\r\nfunction createFibersByKeyMap(fiber: Fiber) {\r\n let nextFiber = fiber;\r\n const map: Record = {};\r\n\r\n while (nextFiber) {\r\n const key = getElementKey(nextFiber.instance);\r\n\r\n if (!detectIsEmpty(key)) {\r\n map[key] = nextFiber;\r\n }\r\n\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return map;\r\n}\r\n\r\nfunction extractKeys(alternate: Fiber, children: Array) {\r\n let nextFiber = alternate;\r\n let idx = 0;\r\n const keys: Array = [];\r\n const nextKeys: Array = [];\r\n\r\n while (nextFiber || idx < children.length) {\r\n const key = nextFiber && getElementKey(nextFiber.instance);\r\n const nextKey = children[idx] && getElementKey(children[idx]);\r\n\r\n if (!detectIsEmpty(key)) {\r\n keys.push(key);\r\n }\r\n\r\n if (!detectIsEmpty(nextKey)) {\r\n nextKeys.push(nextKey);\r\n }\r\n\r\n nextFiber = nextFiber ? nextFiber.nextSibling : null;\r\n idx++;\r\n }\r\n\r\n return {\r\n keys,\r\n nextKeys,\r\n };\r\n}\r\n\r\nfunction getAlternateByKey(key: DarkElementKey, fiber: Fiber) {\r\n if (detectIsEmpty(key)) return null;\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (key === getElementKey(nextFiber.instance)) {\r\n return nextFiber;\r\n }\r\n\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction getElementKey(instance: DarkElementInstance): DarkElementKey | null {\r\n const key = detectIsComponentFactory(instance)\r\n ? getComponentFactoryKey(instance)\r\n : detectIsTagVirtualNode(instance)\r\n ? getVirtualNodeKey(instance)\r\n : null;\r\n\r\n return key;\r\n}\r\n\r\nfunction getDiffKeys(keys: Array, nextKeys: Array): Array {\r\n const nextKeysMap = nextKeys.reduce((acc, key) => ((acc[key] = true), acc), {});\r\n const diff = [];\r\n\r\n for (const key of keys) {\r\n if (!nextKeysMap[key]) {\r\n diff.push(key);\r\n }\r\n }\r\n\r\n return diff;\r\n}\r\n\r\nfunction getChildAlternate(fiber: Fiber): Fiber | null {\r\n let alternate = fiber.alternate && fiber.alternate.effectTag !== EffectTag.DELETION ? fiber.alternate.child : null;\r\n\r\n while (alternate && alternate.effectTag === EffectTag.DELETION) {\r\n alternate = alternate.nextSibling;\r\n }\r\n\r\n return alternate;\r\n}\r\n\r\nfunction getNextSiblingAlternate(fiber: Fiber): Fiber | null {\r\n let alternate = fiber.alternate?.nextSibling || null;\r\n\r\n while (alternate && alternate.effectTag === EffectTag.DELETION) {\r\n alternate = alternate.nextSibling;\r\n }\r\n\r\n return alternate;\r\n}\r\n\r\nfunction transformElementInstance(instance: DarkElement) {\r\n return detectIsEmpty(instance) || instance === false ? createEmptyVirtualNode() : instance;\r\n}\r\n\r\nfunction getInstanceType(instance: DarkElementInstance): string | Function {\r\n return detectIsTagVirtualNode(instance)\r\n ? instance.name\r\n : detectIsVirtualNode(instance)\r\n ? instance.type\r\n : detectIsComponentFactory(instance)\r\n ? instance.type\r\n : null;\r\n}\r\n\r\nfunction getSiblingFibers(fiber: Fiber): Array {\r\n const list = [];\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n list.push(nextFiber);\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return list;\r\n}\r\n\r\nfunction hasChildrenProp(element: DarkElementInstance): element is TagVirtualNode | ComponentFactory {\r\n return detectIsTagVirtualNode(element) || detectIsComponentFactory(element);\r\n}\r\n\r\nfunction commitChanges() {\r\n const wipFiber = wipRootHelper.get();\r\n const fromHook = fromHookUpdateHelper.get();\r\n const deletions = deletionsHelper.get();\r\n const hasEffects = Boolean(wipFiber.alternate?.effectHost);\r\n const hasLayoutEffects = Boolean(wipFiber.alternate?.layoutEffectHost);\r\n const hasPortals = Boolean(wipFiber.alternate?.portalHost);\r\n\r\n if (hasEffects || hasLayoutEffects || hasPortals) {\r\n for (const fiber of deletions) {\r\n unmountFiber(fiber);\r\n }\r\n }\r\n\r\n commitWork(wipFiber.child, () => {\r\n const layoutEffects = layoutEffectsHelper.get();\r\n const effects = effectsHelper.get();\r\n\r\n for (const fiber of deletions) {\r\n platform.applyCommits(fiber);\r\n }\r\n\r\n deletionsHelper.set([]);\r\n wipRootHelper.set(null);\r\n\r\n for (const layoutEffect of layoutEffects) {\r\n layoutEffect();\r\n }\r\n\r\n setTimeout(() => {\r\n for (const effect of effects) {\r\n effect();\r\n }\r\n });\r\n\r\n layoutEffectsHelper.reset();\r\n effectsHelper.reset();\r\n\r\n if (fromHook) {\r\n fromHookUpdateHelper.set(false);\r\n } else {\r\n currentRootHelper.set(wipFiber);\r\n }\r\n });\r\n}\r\n\r\nfunction commitWork(fiber: Fiber, onComplete: Function) {\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, isReturn, resetIsDeepWalking }) => {\r\n const skip = nextFiber.effectTag === EffectTag.SKIP;\r\n\r\n if (skip) {\r\n resetIsDeepWalking();\r\n } else if (!isReturn) {\r\n platform.applyCommits(nextFiber);\r\n }\r\n\r\n if (nextFiber && nextFiber.shadow) {\r\n nextFiber.shadow = null;\r\n }\r\n },\r\n });\r\n\r\n onComplete();\r\n}\r\n\r\nfunction createHook(): Hook {\r\n return {\r\n idx: 0,\r\n values: [],\r\n };\r\n}\r\n\r\ntype GetHookOptions = {\r\n shadow: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction getHook(options: GetHookOptions) {\r\n const { shadow, alternate, instance } = options;\r\n\r\n if (shadow) return shadow.hook;\r\n\r\n if (alternate && getElementKey(alternate.instance) === getElementKey(instance)) {\r\n return alternate.hook;\r\n }\r\n\r\n return createHook();\r\n}\r\n\r\ntype CreateUpdateCallbackOptions = {\r\n rootId: number;\r\n fiber: Fiber;\r\n forceStart?: boolean;\r\n onStart: () => void;\r\n};\r\n\r\nfunction createUpdateCallback(options: CreateUpdateCallbackOptions) {\r\n const { rootId, fiber, forceStart = false, onStart } = options;\r\n const callback = () => {\r\n forceStart && onStart();\r\n if (fiber.isUsed) return;\r\n !forceStart && onStart();\r\n effectStoreHelper.set(rootId); // important order!\r\n fromHookUpdateHelper.set(true);\r\n fiberMountHelper.reset();\r\n\r\n fiber.alternate = new Fiber({\r\n ...fiber,\r\n alternate: null,\r\n });\r\n fiber.marker = PARTIAL_UPDATE;\r\n fiber.effectTag = EffectTag.UPDATE;\r\n fiber.child = null;\r\n\r\n wipRootHelper.set(fiber);\r\n componentFiberHelper.set(fiber);\r\n fiber.instance = mountInstance(fiber, fiber.instance);\r\n nextUnitOfWorkHelper.set(fiber);\r\n };\r\n\r\n return callback;\r\n}\r\n\r\nexport { Fiber, workLoop, createHook, hasChildrenProp, createUpdateCallback };\r\n","export * from './fiber';\r\nexport * from './types';\r\n","export enum EffectTag {\r\n PLACEMENT = 'PLACEMENT',\r\n UPDATE = 'UPDATE',\r\n DELETION = 'DELETION',\r\n SKIP = 'SKIP',\r\n}\r\n\r\nexport type NativeElement = unknown;\r\n\r\nexport type HookValue = {\r\n token?: Symbol;\r\n deps: Array;\r\n value: T;\r\n};\r\n\r\nexport type Hook = {\r\n idx: number;\r\n values: Array;\r\n};\r\n\r\nexport const cloneTagMap = {\r\n [EffectTag.PLACEMENT]: true,\r\n [EffectTag.SKIP]: true,\r\n};\r\n","import { type KeyProps, createComponent, detectIsComponentFactory } from '../component';\r\n\r\nconst $$fragment = Symbol('fragment');\r\n\r\nconst Fragment = createComponent(({ slot }) => slot || null, {\r\n token: $$fragment,\r\n});\r\n\r\nconst detectIsFragment = (factory: unknown) => detectIsComponentFactory(factory) && factory.token === $$fragment;\r\n\r\nexport { Fragment, detectIsFragment };\r\n","export * from './fragment';\r\n","import type { NestedArray } from '../shared';\r\n\r\nconst detectIsFunction = (o: any): o is Function => typeof o === 'function';\r\nconst detectIsUndefined = (o: any) => typeof o === 'undefined';\r\nconst detectIsNumber = (o: any) => typeof o === 'number';\r\nconst detectIsString = (o: any) => typeof o === 'string';\r\nconst detectIsObject = (o: any) => typeof o === 'object';\r\nconst detectIsBoolean = (o: any) => typeof o === 'boolean';\r\nconst detectIsArray = (o: any): o is Array => Array.isArray(o);\r\nconst detectIsNull = (o: any) => o === null;\r\nconst detectIsEmpty = (o: any) => detectIsNull(o) || detectIsUndefined(o);\r\n\r\nfunction error(str: string) {\r\n !detectIsUndefined(console) && console.error(str);\r\n}\r\n\r\nfunction flatten(source: Array>): Array {\r\n const list = [];\r\n const levelMap = { 0: { idx: 0, source } };\r\n let level = 0;\r\n\r\n do {\r\n const { source, idx } = levelMap[level];\r\n const item = source[idx];\r\n\r\n if (idx >= source.length) {\r\n level--;\r\n levelMap[level].idx++;\r\n continue;\r\n }\r\n\r\n if (detectIsArray(item)) {\r\n level++;\r\n levelMap[level] = {\r\n idx: 0,\r\n source: item,\r\n };\r\n } else {\r\n list.push(item);\r\n levelMap[level].idx++;\r\n }\r\n } while (level > 0 || levelMap[level].idx < levelMap[level].source.length);\r\n\r\n return list;\r\n}\r\n\r\nfunction getTime() {\r\n return Date.now();\r\n}\r\n\r\nfunction keyBy(\r\n list: Array,\r\n fn: (o: T) => string | number,\r\n value = false,\r\n): Record {\r\n return list.reduce((acc, x) => ((acc[fn(x)] = value ? x : true), acc), {});\r\n}\r\n\r\nfunction takeListFromEnd(source: Array, count: number) {\r\n return source.slice(source.length - count, source.length);\r\n}\r\n\r\nconst dummyFn = () => {};\r\n\r\nfunction detectIsDepsDifferent(deps: Array, prevDeps: Array): boolean {\r\n if (!detectIsUndefined(deps) && !detectIsUndefined(prevDeps) && deps.length > 0 && prevDeps.length > 0) {\r\n for (let i = 0; i < prevDeps.length; i++) {\r\n if (prevDeps[i] !== deps[i]) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport {\r\n detectIsFunction,\r\n detectIsUndefined,\r\n detectIsNumber,\r\n detectIsString,\r\n detectIsObject,\r\n detectIsBoolean,\r\n detectIsArray,\r\n detectIsNull,\r\n detectIsEmpty,\r\n error,\r\n flatten,\r\n getTime,\r\n keyBy,\r\n takeListFromEnd,\r\n dummyFn,\r\n detectIsDepsDifferent,\r\n};\r\n","export * from './lazy';\r\n","import { type Component, createComponent, detectIsComponentFactory } from '../component';\r\nimport { useState } from '../use-state';\r\nimport { useEffect } from '../use-effect';\r\nimport { forwardRef } from '../ref';\r\nimport { SuspenseContext } from '../suspense';\r\nimport { useContext } from '../use-context';\r\n\r\nconst $$lazy = Symbol('lazy');\r\n\r\ntype LazyScope = {\r\n component: Component;\r\n};\r\n\r\nfunction lazy(dynamic: () => Promise<{ default: Component

}>) {\r\n return forwardRef(\r\n createComponent(\r\n (props, ref) => {\r\n const { fallback, trigger } = useContext(SuspenseContext);\r\n const [scope, setScope] = useState>({\r\n component: null,\r\n });\r\n\r\n useEffect(() => {\r\n fetchModule(dynamic).then(component => {\r\n setScope({ component });\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!scope.component) return;\r\n trigger();\r\n }, [scope.component]);\r\n\r\n return scope.component ? scope.component(props, ref) : fallback;\r\n },\r\n { token: $$lazy },\r\n ),\r\n );\r\n}\r\n\r\nconst detectIsLazy = (factory: unknown) => detectIsComponentFactory(factory) && factory.token === $$lazy;\r\n\r\nfunction fetchModule(dynamic: () => Promise<{ default: Component }>) {\r\n return new Promise(resolve => {\r\n dynamic().then(module => {\r\n if (!module.default) {\r\n throw new Error('lazy loaded component should be exported as default!');\r\n }\r\n\r\n resolve(module.default);\r\n });\r\n });\r\n}\r\n\r\nexport { lazy, detectIsLazy };\r\n","export * from './memo';\r\n","import {\r\n type Component,\r\n type ComponentFactory,\r\n type StandardComponentProps,\r\n type RefProps,\r\n type SlotProps,\r\n createComponent,\r\n detectIsComponentFactory,\r\n} from '../component';\r\nimport { type MutableRef, forwardRef } from '../ref';\r\n\r\ntype ShouldUpdate = (props: T, nextProps: T) => boolean;\r\n\r\nconst $$memo = Symbol('memo');\r\n\r\nconst defaultShouldUpdate = (props: {}, nextProps: {}): boolean => {\r\n const keys = Object.keys(nextProps);\r\n\r\n for (const key of keys) {\r\n if (key !== 'slot' && nextProps[key] !== props[key]) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst detectIsMemo = (factory: unknown) => detectIsComponentFactory(factory) && factory.token === $$memo;\r\n\r\nfunction memo(\r\n component: (props: T, ref?: MutableRef) => ComponentFactory,\r\n shouldUpdate: ShouldUpdate = defaultShouldUpdate,\r\n): Component {\r\n return forwardRef(\r\n createComponent(\r\n (props: T & RefProps, ref) => {\r\n ref && (props.ref = ref);\r\n\r\n return component(props);\r\n },\r\n { token: $$memo, shouldUpdate },\r\n ),\r\n );\r\n}\r\n\r\nexport { $$memo, memo, detectIsMemo };\r\n","export * from './platform';\r\nexport * from './types';\r\n","import type { Platform } from './types';\r\n\r\nexport const platform: Platform = {\r\n scheduleCallback: () => {\r\n throw new Error('scheduleCallback not installed by renderer');\r\n },\r\n shouldYeildToHost: () => {\r\n throw new Error('shouldYeildToHost not installed by renderer');\r\n },\r\n createNativeElement: () => {\r\n throw new Error('createNativeElement not installed by renderer');\r\n },\r\n applyCommits: () => {\r\n throw new Error('applyCommits not installed by renderer');\r\n },\r\n detectIsPortal: () => {\r\n throw new Error('detectIsPortal not installed by renderer');\r\n },\r\n unmountPortal: () => {\r\n throw new Error('unmountPortal not installed by renderer');\r\n },\r\n};\r\n","import { type Fiber } from '../fiber';\r\nimport { type TaskPriority } from '../constants';\r\nimport { type ComponentFactory } from '../component';\r\n\r\nexport type Platform = {\r\n scheduleCallback: (callback: () => void, options?: ScheduleCallbackOptions) => void;\r\n shouldYeildToHost: () => boolean;\r\n createNativeElement: (fiber: Fiber) => N;\r\n applyCommits: (fiber: Fiber) => void;\r\n detectIsPortal: (factory: ComponentFactory) => boolean;\r\n unmountPortal: (fiber: Fiber) => void;\r\n};\r\n\r\nexport type ScheduleCallbackOptions = {\r\n priority?: TaskPriority;\r\n timeoutMs?: number;\r\n};\r\n","export * from './ref';\r\nexport type { MutableRef } from './types';\r\n","import { detectIsObject, detectIsNull } from '../helpers';\r\nimport type { Component, RefProps, ComponentFactory } from '../component';\r\nimport type { MutableRef } from './types';\r\n\r\nfunction forwardRef(component: Component) {\r\n type Props = P & RefProps;\r\n\r\n return ({ ref, ...rest }: Props) => {\r\n return component(rest as P, ref) as ComponentFactory;\r\n };\r\n}\r\n\r\nconst detectIsRef = (ref: unknown) => {\r\n if (!detectIsObject(ref) || detectIsNull(ref)) return false;\r\n const mutableRef = ref as MutableRef;\r\n\r\n for (const key in mutableRef) {\r\n if (key === 'current' && mutableRef.hasOwnProperty(key)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport { forwardRef, detectIsRef };\r\n","export * from './scope';\r\n","import type { Fiber } from '../fiber';\r\n\r\nclass Store {\r\n public wipRoot: Fiber = null;\r\n public currentRoot: Fiber = null;\r\n public nextUnitOfWork: Fiber = null;\r\n public fromHookUpdate = false;\r\n public events: Map> = new Map();\r\n public unsubscribers: Array<() => void> = [];\r\n public deletions: Array = [];\r\n public fiberMount = {\r\n level: 0,\r\n navigation: {},\r\n isDeepWalking: true,\r\n };\r\n public componentFiber: Fiber = null;\r\n public effects: Array<() => void> = [];\r\n public layoutEffects: Array<() => void> = [];\r\n}\r\n\r\nlet rootId = null;\r\nconst stores = new Map();\r\n\r\nconst effectStoreHelper = {\r\n set: (id: number) => effectStore(id),\r\n remove: (id: number) => stores.delete(id),\r\n};\r\n\r\nconst getRootId = (): number => rootId;\r\n\r\nconst effectStore = (id: number) => {\r\n rootId = id;\r\n !stores.get(rootId) && stores.set(rootId, new Store());\r\n};\r\n\r\nconst storeHelper = {\r\n get: (id: number = rootId) => stores.get(id),\r\n};\r\n\r\nconst wipRootHelper = {\r\n get: () => storeHelper.get()?.wipRoot || null,\r\n set: (fiber: Fiber) => (storeHelper.get().wipRoot = fiber),\r\n};\r\n\r\nconst currentRootHelper = {\r\n get: (id?: number) => storeHelper.get(id)?.currentRoot || null,\r\n set: (fiber: Fiber) => (storeHelper.get().currentRoot = fiber),\r\n};\r\n\r\nconst nextUnitOfWorkHelper = {\r\n get: () => storeHelper.get()?.nextUnitOfWork || null,\r\n set: (fiber: Fiber) => (storeHelper.get().nextUnitOfWork = fiber),\r\n};\r\n\r\nconst componentFiberHelper = {\r\n get: () => storeHelper.get()?.componentFiber,\r\n set: (fiber: Fiber) => (storeHelper.get().componentFiber = fiber),\r\n};\r\n\r\nconst fromHookUpdateHelper = {\r\n get: () => storeHelper.get()?.fromHookUpdate || false,\r\n set: (value: boolean) => (storeHelper.get().fromHookUpdate = value),\r\n};\r\n\r\nconst eventsHelper = {\r\n get: () => storeHelper.get().events,\r\n addUnsubscriber: (fn: () => void) => storeHelper.get().unsubscribers.push(fn),\r\n mapUnsubscribers: (id: number) => storeHelper.get(id).unsubscribers.forEach(fn => fn()),\r\n};\r\n\r\nconst deletionsHelper = {\r\n get: () => storeHelper.get().deletions,\r\n set: (deletions: Array) => (storeHelper.get().deletions = deletions),\r\n};\r\n\r\nconst fiberMountHelper = {\r\n reset: () => {\r\n storeHelper.get().fiberMount = {\r\n level: 0,\r\n navigation: {},\r\n isDeepWalking: true,\r\n };\r\n },\r\n getIndex: () => storeHelper.get().fiberMount.navigation[storeHelper.get().fiberMount.level],\r\n jumpToChild: () => {\r\n const { fiberMount } = storeHelper.get();\r\n const level = fiberMount.level;\r\n const nextLevel = level + 1;\r\n\r\n fiberMount.level = nextLevel;\r\n fiberMount.navigation[nextLevel] = 0;\r\n },\r\n jumpToParent: () => {\r\n const { fiberMount } = storeHelper.get();\r\n const level = fiberMount.level;\r\n const nextLevel = level - 1;\r\n\r\n fiberMount.navigation[level] = 0;\r\n fiberMount.level = nextLevel;\r\n },\r\n jumpToSibling: () => {\r\n const { fiberMount } = storeHelper.get();\r\n const level = fiberMount.level;\r\n const idx = fiberMount.navigation[level] + 1;\r\n\r\n fiberMount.navigation[level] = idx;\r\n },\r\n deepWalking: {\r\n get: () => storeHelper.get().fiberMount.isDeepWalking,\r\n set: (value: boolean) => (storeHelper.get().fiberMount.isDeepWalking = value),\r\n },\r\n};\r\n\r\nconst effectsHelper = {\r\n get: () => storeHelper.get().effects,\r\n reset: () => (storeHelper.get().effects = []),\r\n add: (effect: () => void) => storeHelper.get().effects.push(effect),\r\n};\r\n\r\nconst layoutEffectsHelper = {\r\n get: () => storeHelper.get().layoutEffects,\r\n reset: () => (storeHelper.get().layoutEffects = []),\r\n add: (effect: () => void) => storeHelper.get().layoutEffects.push(effect),\r\n};\r\n\r\nexport {\r\n getRootId,\r\n effectStoreHelper,\r\n wipRootHelper,\r\n currentRootHelper,\r\n nextUnitOfWorkHelper,\r\n componentFiberHelper,\r\n fromHookUpdateHelper,\r\n eventsHelper,\r\n deletionsHelper,\r\n fiberMountHelper,\r\n effectsHelper,\r\n layoutEffectsHelper,\r\n};\r\n","export * from './types';\r\n","import type { ComponentFactory } from '../component';\r\nimport type { VirtualNode, VirtualNodeFactory } from '../view';\r\n\r\nexport type DarkElement = NestedArray;\r\n\r\nexport type Nullable = null | false | undefined;\r\n\r\nexport type NestedArray = T | Array>;\r\n\r\nexport type RenderProps = (...args: Array) => DarkElement;\r\n\r\nexport type DarkElementKey = string | number;\r\n\r\nexport type DarkElementInstance = VirtualNode | VirtualNodeFactory | ComponentFactory;\r\n","export * from './suspense';\r\n","import { createComponent } from '../component';\r\nimport { useState } from '../use-state';\r\nimport { createContext } from '../context';\r\nimport { useContext } from '../use-context';\r\nimport { useMemo } from '../use-memo';\r\nimport { useCallback } from '../use-callback';\r\nimport type { DarkElement } from '../shared';\r\n\r\ntype SuspenseProps = {\r\n fallback: DarkElement;\r\n};\r\n\r\ntype SuspenseContextValue = {\r\n fallback: DarkElement;\r\n isLoaded: boolean;\r\n trigger: () => void;\r\n};\r\n\r\nconst SuspenseContext = createContext({\r\n fallback: null,\r\n isLoaded: true,\r\n trigger: () => {},\r\n});\r\n\r\nconst Suspense = createComponent(({ fallback, slot }) => {\r\n if (!fallback) {\r\n throw new Error(`Suspense fallback not found`);\r\n }\r\n const { isLoaded: isSuspenseLoaded } = useContext(SuspenseContext);\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n const trigger = useCallback(() => setIsLoaded(true), []);\r\n const value = useMemo(() => ({ fallback, isLoaded, trigger }), [fallback, isLoaded]);\r\n\r\n return SuspenseContext.Provider({\r\n value,\r\n slot: isSuspenseLoaded ? slot : null,\r\n });\r\n});\r\n\r\nexport { SuspenseContext, Suspense };\r\n","export * from './unmount';\r\n","import { type Fiber } from '../fiber';\r\nimport { platform } from '../platform';\r\nimport { detectIsComponentFactory } from '../component';\r\nimport { cleanupEffects } from '../use-effect';\r\nimport { cleanupLayoutEffects } from '../use-layout-effect';\r\nimport { walkFiber } from '../walk';\r\nimport { detectIsUndefined } from '../helpers';\r\nimport { currentRootHelper, eventsHelper, effectStoreHelper } from '../scope';\r\n\r\nfunction unmountFiber(fiber: Fiber) {\r\n if (fiber.effectHost || fiber.layoutEffectHost) {\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, isReturn, stop }) => {\r\n if (nextFiber === fiber.nextSibling || fiber.transposition) return stop();\r\n\r\n if (!isReturn && detectIsComponentFactory(nextFiber.instance)) {\r\n cleanupLayoutEffects(nextFiber.hook);\r\n cleanupEffects(nextFiber.hook);\r\n }\r\n },\r\n });\r\n }\r\n\r\n fiber.portalHost && platform.unmountPortal(fiber);\r\n}\r\n\r\nfunction unmountRoot(rootId: number, onComplete: () => void) {\r\n if (detectIsUndefined(rootId)) return;\r\n\r\n unmountFiber(currentRootHelper.get(rootId));\r\n eventsHelper.mapUnsubscribers(rootId);\r\n effectStoreHelper.remove(rootId);\r\n onComplete();\r\n}\r\n\r\nexport { unmountFiber, unmountRoot };\r\n","export * from './use-callback';\r\n","import { useMemo } from '../use-memo';\r\n\r\nfunction useCallback(callback: T, deps: Array): T {\r\n const value = useMemo(() => callback, deps);\r\n\r\n return value;\r\n}\r\n\r\nexport { useCallback };\r\n","export * from './use-context';\r\n","import { useEffect } from '../use-effect';\r\nimport { useMemo } from '../use-memo';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { useUpdate } from '../use-update';\r\nimport type { Fiber } from '../fiber';\r\nimport type { Context, ContextProviderValue } from '../context';\r\n\r\nfunction useContext(context: Context): T {\r\n const { defaultValue } = context;\r\n const fiber = componentFiberHelper.get();\r\n const provider = getProvider(context, fiber);\r\n const value = provider ? provider.value : defaultValue;\r\n const update = useUpdate();\r\n const scope = useMemo(() => ({ prevValue: value }), []);\r\n const hasProvider = Boolean(provider);\r\n\r\n useEffect(() => {\r\n if (!hasProvider) return;\r\n\r\n const subscriber = (newValue: T) => {\r\n if (!Object.is(scope.prevValue, newValue)) {\r\n update();\r\n }\r\n };\r\n\r\n provider.subscribers.push(subscriber);\r\n\r\n return () => {\r\n const idx = provider.subscribers.findIndex(x => x === subscriber);\r\n\r\n if (idx !== -1) {\r\n provider.subscribers.splice(idx, 1);\r\n }\r\n };\r\n }, [hasProvider]);\r\n\r\n scope.prevValue = value;\r\n\r\n return value;\r\n}\r\n\r\nfunction getProvider(context: Context, fiber: Fiber): ContextProviderValue {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (nextFiber.provider && nextFiber.provider.get(context)) {\r\n return nextFiber.provider.get(context) as ContextProviderValue;\r\n }\r\n\r\n nextFiber = nextFiber.parent;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport { useContext };\r\n","export * from './use-deferred-value';\r\n","import { useState } from '../use-state';\r\nimport { useEffect } from '../use-effect';\r\nimport { TaskPriority } from '../constants';\r\n\r\ntype UseDeferredValueOprions = {\r\n timeoutMs: number;\r\n};\r\n\r\nfunction useDeferredValue(value: T, options?: UseDeferredValueOprions): T {\r\n const { timeoutMs } = options || {};\r\n const [deferredValue, setDeferredValue] = useState(value, {\r\n priority: TaskPriority.LOW,\r\n timeoutMs,\r\n });\r\n\r\n useEffect(() => {\r\n setDeferredValue(value);\r\n }, [value]);\r\n\r\n return deferredValue;\r\n}\r\n\r\nexport { useDeferredValue };\r\n","export * from './use-effect';\r\n","import { detectIsUndefined, detectIsFunction, detectIsDepsDifferent } from '../helpers';\r\nimport { componentFiberHelper, effectsHelper } from '../scope';\r\nimport type { Fiber, Hook, HookValue } from '../fiber';\r\nimport type { Effect, EffectCleanup } from './types';\r\n\r\nconst $$useEffect = Symbol('use-effect');\r\n\r\nconst { useEffect, hasEffects, cleanupEffects } = createEffectFunctions($$useEffect, effectsHelper);\r\n\r\nfunction createEffectFunctions(token: Symbol, store: typeof effectsHelper) {\r\n function useEffect(effect: Effect, deps?: Array) {\r\n const fiber = componentFiberHelper.get();\r\n const hook = fiber.hook as Hook>;\r\n const { idx, values } = hook;\r\n const runEffect = () => {\r\n values[idx] = {\r\n deps,\r\n token,\r\n value: undefined,\r\n };\r\n\r\n store.add(() => {\r\n values[idx].value = effect();\r\n });\r\n };\r\n\r\n if (detectIsUndefined(values[idx])) {\r\n runEffect();\r\n } else {\r\n const { deps: prevDeps, value: cleanup } = values[idx];\r\n const isDepsDifferent = deps ? detectIsDepsDifferent(deps, prevDeps) : true;\r\n\r\n if (isDepsDifferent) {\r\n detectIsFunction(cleanup) && cleanup();\r\n runEffect();\r\n }\r\n }\r\n\r\n hook.idx++;\r\n }\r\n\r\n function hasEffects(fiber: Fiber) {\r\n const { values } = fiber.hook as Hook;\r\n const hasEffect = values.some(x => x.token === token);\r\n\r\n return hasEffect;\r\n }\r\n\r\n function cleanupEffects(hook: Hook>) {\r\n const { values } = hook;\r\n\r\n for (const value of values) {\r\n if (value.token === token) {\r\n const cleanup = value.value;\r\n\r\n detectIsFunction(cleanup) && cleanup();\r\n }\r\n }\r\n }\r\n\r\n return {\r\n useEffect,\r\n hasEffects,\r\n cleanupEffects,\r\n };\r\n}\r\n\r\nexport { useEffect, hasEffects, cleanupEffects, createEffectFunctions };\r\n","export * from './use-error';\r\n","import { componentFiberHelper } from '../scope';\r\nimport { useEffect } from '../use-effect';\r\nimport { useUpdate } from '../use-update';\r\nimport { useMemo } from '../use-memo';\r\n\r\ntype ErrorScope = {\r\n error: Error;\r\n};\r\n\r\nfunction useError(): Error | null {\r\n const fiber = componentFiberHelper.get();\r\n const update = useUpdate();\r\n const scope: ErrorScope = useMemo(() => ({ error: null }), []);\r\n\r\n fiber.catchException = (error: Error) => {\r\n scope.error = error;\r\n update();\r\n };\r\n\r\n useEffect(() => {\r\n scope.error = null;\r\n }, [scope.error]);\r\n\r\n return scope.error;\r\n}\r\n\r\nexport { useError };\r\n","export * from './use-event';\r\n","import { useMemo } from '../use-memo';\r\nimport { useCallback } from '../use-callback';\r\n\r\nfunction useEvent any>(fn: T) {\r\n const scope = useMemo(() => ({ fn }), []);\r\n\r\n scope.fn = fn;\r\n\r\n const callback = useCallback((...args) => {\r\n return scope.fn(...args);\r\n }, []);\r\n\r\n return callback as unknown as T;\r\n}\r\n\r\nexport { useEvent };\r\n","export * from './use-imperative-handle';\r\n","import { useMemo } from '../use-memo';\r\nimport type { MutableRef } from '../ref';\r\n\r\nfunction useImperativeHandle(ref: MutableRef, createHandle: () => T, deps: Array) {\r\n const current = useMemo(() => createHandle(), deps);\r\n\r\n ref.current = current;\r\n}\r\n\r\nexport { useImperativeHandle };\r\n","export * from './use-layout-effect';\r\n","import { layoutEffectsHelper } from '../scope';\r\nimport { createEffectFunctions } from '../use-effect';\r\n\r\nconst $$useLayoutEffect = Symbol('use-layout-effect');\r\n\r\nconst {\r\n useEffect: useLayoutEffect,\r\n hasEffects: hasLayoutEffects,\r\n cleanupEffects: cleanupLayoutEffects,\r\n} = createEffectFunctions($$useLayoutEffect, layoutEffectsHelper);\r\n\r\nexport { useLayoutEffect, hasLayoutEffects, cleanupLayoutEffects };\r\n","export * from './use-memo';\r\n","import { type DarkElement } from '../shared';\r\nimport { detectIsUndefined, detectIsArray, detectIsDepsDifferent } from '../helpers';\r\nimport { detectIsComponentFactory, createComponent } from '../component';\r\nimport { detectIsVirtualNodeFactory } from '../view';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { Fragment } from '../fragment';\r\nimport { $$memo } from '../memo';\r\n\r\nconst Memo = createComponent(({ slot }) => slot, { token: $$memo });\r\n\r\nfunction wrap(value: T, isDepsDifferent: boolean) {\r\n const check = (value: T) => detectIsVirtualNodeFactory(value) || detectIsComponentFactory(value);\r\n\r\n if (detectIsArray(value) ? check(value[0]) : check(value)) {\r\n const slot = value as unknown as DarkElement;\r\n const factory = Memo({\r\n slot: Fragment({ slot }),\r\n });\r\n\r\n factory.shouldUpdate = () => isDepsDifferent;\r\n\r\n return factory;\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction processValue(getValue: () => T, isDepsDifferent = false) {\r\n return wrap(getValue(), isDepsDifferent);\r\n}\r\n\r\nfunction useMemo(getValue: () => T, deps: Array): T {\r\n const fiber = componentFiberHelper.get();\r\n const { hook } = fiber;\r\n const { idx, values } = hook;\r\n\r\n if (detectIsUndefined(values[idx])) {\r\n const value = processValue(getValue);\r\n\r\n values[idx] = {\r\n deps,\r\n value,\r\n };\r\n\r\n hook.idx++;\r\n\r\n return value as T;\r\n }\r\n\r\n const hookValue = values[idx];\r\n const prevDeps = hookValue.deps as Array;\r\n const isDepsDifferent = detectIsDepsDifferent(deps, prevDeps);\r\n const computedGetValue = isDepsDifferent ? getValue : () => hookValue.value;\r\n\r\n hookValue.deps = deps;\r\n hookValue.value = processValue(computedGetValue, isDepsDifferent);\r\n\r\n hook.idx++;\r\n\r\n return hookValue.value;\r\n}\r\n\r\nexport { useMemo };\r\n","export * from './use-reducer';\r\nexport type { Reducer } from './types';\r\n","import { useState } from '../use-state';\r\nimport { useCallback } from '../use-callback';\r\nimport { useMemo } from '../use-memo';\r\nimport { detectIsFunction } from '../helpers';\r\nimport type { Reducer, Dispatch, ReducerAction, ReducerState } from './types';\r\n\r\nfunction useReducer(\r\n reducer: R,\r\n initialState: ReducerState,\r\n initializer?: (state: ReducerState) => ReducerState,\r\n): [ReducerState, Dispatch>] {\r\n const initialValue = useMemo(() => {\r\n return detectIsFunction(initializer) ? initializer(initialState) : initialState;\r\n }, []);\r\n const [state, setState] = useState>(initialValue);\r\n const dispatch = useCallback((action: ReducerAction) => setState(state => reducer(state, action)), []) as Dispatch<\r\n ReducerAction\r\n >;\r\n\r\n return [state, dispatch];\r\n}\r\n\r\nexport { useReducer };\r\n","export * from './use-ref';\r\n","import { useMemo } from '../use-memo';\r\nimport type { MutableRef } from '../ref';\r\n\r\nfunction useRef(initialValue: T = null): MutableRef {\r\n const ref = useMemo(() => ({ current: initialValue }), []) as MutableRef;\r\n\r\n return ref;\r\n}\r\n\r\nexport { useRef };\r\n","export * from './use-state';\r\n","import { type ScheduleCallbackOptions } from '../platform';\r\nimport { detectIsUndefined, detectIsFunction } from '../helpers';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { useUpdate } from '../use-update';\r\nimport { useMemo } from '../use-memo';\r\nimport { useCallback } from '../use-callback';\r\nimport { TaskPriority } from '../constants';\r\n\r\ntype Value = T | ((prevValue: T) => T);\r\ntype Scope = {\r\n idx: number;\r\n values: Array;\r\n};\r\n\r\nfunction useState(initialValue: T, options?: ScheduleCallbackOptions): [T, (value: Value) => void] {\r\n const fiber = componentFiberHelper.get();\r\n const update = useUpdate(options);\r\n const scope: Scope = useMemo(\r\n () => ({\r\n idx: fiber.hook.idx,\r\n values: fiber.hook.values,\r\n }),\r\n [],\r\n );\r\n const setState = useCallback((sourceValue: Value) => {\r\n const value = scope.values[scope.idx];\r\n const newValue = detectIsFunction(sourceValue) ? sourceValue(value) : sourceValue;\r\n\r\n if (!Object.is(value, newValue)) {\r\n const setValue = () => {\r\n scope.values[scope.idx] = newValue;\r\n };\r\n\r\n if (options?.priority === TaskPriority.LOW) {\r\n update(() => setValue());\r\n } else {\r\n setValue();\r\n update();\r\n }\r\n }\r\n }, []);\r\n const { hook } = fiber;\r\n const { idx, values } = hook;\r\n const value: T = !detectIsUndefined(values[idx]) ? values[idx] : initialValue;\r\n\r\n values[idx] = value;\r\n scope.idx = idx;\r\n scope.values = values;\r\n hook.idx++;\r\n\r\n return [value, setState];\r\n}\r\n\r\nexport { useState };\r\n","export * from './use-update';\r\n","import { platform, type ScheduleCallbackOptions } from '../platform';\r\nimport { getRootId, componentFiberHelper } from '../scope';\r\nimport { createUpdateCallback } from '../fiber';\r\nimport { useMemo } from '../use-memo';\r\nimport { dummyFn } from '../helpers';\r\n\r\nfunction useUpdate(options?: ScheduleCallbackOptions) {\r\n const rootId = getRootId();\r\n const fiber = componentFiberHelper.get();\r\n const scope = useMemo(() => ({ fiber }), []);\r\n\r\n scope.fiber = fiber;\r\n\r\n const update = (onStart?: () => void) => {\r\n const callback = createUpdateCallback({\r\n rootId,\r\n fiber: scope.fiber,\r\n forceStart: Boolean(options?.timeoutMs),\r\n onStart: onStart || dummyFn,\r\n });\r\n\r\n platform.scheduleCallback(callback, options);\r\n };\r\n\r\n return update;\r\n}\r\n\r\nexport { useUpdate };\r\n","export * from './view';\r\nexport * from './types';\r\n","export type ViewDef = {\r\n as: string;\r\n slot?: any;\r\n isVoid?: boolean;\r\n [prop: string]: any;\r\n};\r\n\r\nexport enum NodeType {\r\n TAG = 'TAG',\r\n TEXT = 'TEXT',\r\n COMMENT = 'COMMENT',\r\n}\r\n","import { EMPTY_NODE, ATTR_KEY } from '../constants';\r\nimport { detectIsArray, detectIsEmpty, detectIsFunction } from '../helpers';\r\nimport type { DarkElementKey } from '../shared';\r\nimport type { ComponentFactory, StandardComponentProps } from '../component';\r\nimport { NodeType, type ViewDef } from './types';\r\n\r\nexport type VirtualNodeFactory = () => VirtualNode;\r\nexport type TagVirtualNodeFactory = () => TagVirtualNode;\r\nexport type TextVirtualNodeFactory = () => TextVirtualNode;\r\nexport type CommentVirtualNodeFactory = () => CommentVirtualNode;\r\n\r\nconst $$virtualNode = Symbol('virtual-node');\r\n\r\nclass VirtualNode {\r\n public type: NodeType = null;\r\n\r\n constructor(options: Partial) {\r\n this.type = options.type;\r\n }\r\n}\r\n\r\nclass TagVirtualNode extends VirtualNode {\r\n public type = NodeType.TAG;\r\n public name: string = null;\r\n public isVoid = false;\r\n public attrs: Record = {};\r\n public children: Array = [];\r\n\r\n constructor(options: Partial) {\r\n super(options);\r\n this.name = options.name || this.name;\r\n this.isVoid = options.isVoid || this.isVoid;\r\n this.attrs = options.attrs || this.attrs;\r\n this.children = options.children || this.children;\r\n }\r\n}\r\n\r\nclass TextVirtualNode extends VirtualNode {\r\n public type = NodeType.TEXT;\r\n public value = '';\r\n\r\n constructor(text: string) {\r\n super({});\r\n this.value = text;\r\n }\r\n}\r\n\r\nclass CommentVirtualNode extends VirtualNode {\r\n public type = NodeType.COMMENT;\r\n public value = '';\r\n\r\n constructor(text: string) {\r\n super({});\r\n this.value = text;\r\n }\r\n}\r\n\r\nconst detectIsVirtualNode = (vNode: unknown): vNode is VirtualNode => vNode instanceof VirtualNode;\r\nconst detectIsTagVirtualNode = (vNode: unknown): vNode is TagVirtualNode => vNode instanceof TagVirtualNode;\r\nconst detectIsCommentVirtualNode = (vNode: unknown): vNode is CommentVirtualNode => vNode instanceof CommentVirtualNode;\r\nconst detectIsTextVirtualNode = (vNode: unknown): vNode is TextVirtualNode => vNode instanceof TextVirtualNode;\r\nconst detectIsEmptyVirtualNode = (vNode: unknown): boolean =>\r\n detectIsCommentVirtualNode(vNode) && vNode.value === EMPTY_NODE;\r\n\r\nfunction getVirtualNodeKey(vNode: TagVirtualNode): DarkElementKey | null {\r\n const key = vNode && vNode.attrs[ATTR_KEY];\r\n\r\n return !detectIsEmpty(key) ? key : null;\r\n}\r\n\r\nfunction Text(source: string | StandardComponentProps['slot']): string | TextVirtualNode {\r\n const text =\r\n typeof source === 'string' ? new TextVirtualNode(source) : detectIsTextVirtualNode(source) ? source.value : '';\r\n\r\n return text;\r\n}\r\n\r\nfunction Comment(text: string): CommentVirtualNodeFactory {\r\n const factory = () => new CommentVirtualNode(text);\r\n\r\n factory[$$virtualNode] = true;\r\n\r\n return factory;\r\n}\r\n\r\nfunction View(def: ViewDef): TagVirtualNodeFactory {\r\n const factory = () => {\r\n const { as, slot, isVoid = false, ...rest } = def;\r\n const children = isVoid ? [] : detectIsArray(slot) ? slot : slot ? [slot] : [];\r\n\r\n return new TagVirtualNode({\r\n name: as,\r\n isVoid,\r\n attrs: { ...rest },\r\n children: children as Array,\r\n });\r\n };\r\n\r\n factory[$$virtualNode] = true;\r\n\r\n return factory;\r\n}\r\n\r\nconst createEmptyVirtualNode = () => new CommentVirtualNode(EMPTY_NODE);\r\n\r\nconst detectIsVirtualNodeFactory = (factory: unknown): factory is VirtualNodeFactory =>\r\n detectIsFunction(factory) && factory[$$virtualNode] === true;\r\n\r\nexport {\r\n VirtualNode,\r\n TagVirtualNode,\r\n TextVirtualNode,\r\n CommentVirtualNode,\r\n detectIsVirtualNode,\r\n detectIsTagVirtualNode,\r\n detectIsCommentVirtualNode,\r\n detectIsTextVirtualNode,\r\n detectIsEmptyVirtualNode,\r\n getVirtualNodeKey,\r\n Text,\r\n Comment,\r\n View,\r\n createEmptyVirtualNode,\r\n detectIsVirtualNodeFactory,\r\n};\r\n","export * from './walk';\r\n","import { type Fiber } from '../fiber';\r\n\r\ntype WalkFiberOptions = {\r\n fiber: Fiber;\r\n onLoop: (options: OnLoopOptions) => void;\r\n};\r\n\r\ntype OnLoopOptions = {\r\n nextFiber: Fiber;\r\n isReturn: boolean;\r\n resetIsDeepWalking: () => void;\r\n stop: () => void;\r\n};\r\n\r\nfunction walkFiber(options: WalkFiberOptions) {\r\n const { fiber, onLoop } = options;\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n let isReturn = false;\r\n let isStopped = false;\r\n const visitedMap = new Map();\r\n const detectCanVisit = (fiber: Fiber) => !visitedMap.get(fiber);\r\n\r\n while (nextFiber) {\r\n onLoop({\r\n nextFiber: nextFiber as Fiber,\r\n isReturn,\r\n resetIsDeepWalking: () => (isDeepWalking = false),\r\n stop: () => (isStopped = true),\r\n });\r\n\r\n if (isStopped) {\r\n break;\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking && detectCanVisit(nextFiber.child)) {\r\n const newFiber = nextFiber.child;\r\n\r\n isReturn = false;\r\n nextFiber = newFiber;\r\n visitedMap.set(newFiber, true);\r\n } else if (nextFiber.nextSibling && detectCanVisit(nextFiber.nextSibling)) {\r\n const newFiber = nextFiber.nextSibling;\r\n\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = newFiber;\r\n visitedMap.set(newFiber, true);\r\n } else if (\r\n nextFiber.parent &&\r\n nextFiber.parent === fiber &&\r\n nextFiber.parent.nextSibling &&\r\n detectCanVisit(nextFiber.parent.nextSibling)\r\n ) {\r\n const newFiber = nextFiber.parent.nextSibling;\r\n\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = newFiber;\r\n visitedMap.set(newFiber, true);\r\n } else if (nextFiber.parent && nextFiber.parent !== fiber) {\r\n isDeepWalking = false;\r\n isReturn = true;\r\n nextFiber = nextFiber.parent;\r\n } else {\r\n nextFiber = null;\r\n }\r\n }\r\n}\r\n\r\nexport { walkFiber };\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export * from './component';\r\nexport * from './context';\r\nexport { createElement as h } from './element';\r\nexport * from './fiber';\r\nexport * from './fragment';\r\nexport * from './platform';\r\nexport * from './helpers';\r\nexport * from './lazy';\r\nexport * from './memo';\r\nexport * from './ref';\r\nexport * from './scope';\r\nexport * from './shared';\r\nexport * from './suspense';\r\nexport * from './use-callback';\r\nexport * from './use-context';\r\nexport * from './use-deferred-value';\r\nexport { useEffect } from './use-effect';\r\nexport * from './use-error';\r\nexport * from './use-event';\r\nexport * from './use-imperative-handle';\r\nexport { useLayoutEffect } from './use-layout-effect';\r\nexport * from './use-memo';\r\nexport * from './use-reducer';\r\nexport * from './use-ref';\r\nexport * from './use-state';\r\nexport * from './use-update';\r\nexport * from './view';\r\nexport * from './constants';\r\nexport { walkFiber } from './walk';\r\nexport { unmountRoot } from './unmount';\r\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"dark-core.development.js","mappings":"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","sources":["webpack://DarkCore/webpack/universalModuleDefinition","webpack://DarkCore/./src/component/component.ts","webpack://DarkCore/./src/component/index.ts","webpack://DarkCore/./src/component/types.ts","webpack://DarkCore/./src/constants.ts","webpack://DarkCore/./src/context/context.ts","webpack://DarkCore/./src/context/index.ts","webpack://DarkCore/./src/context/types.ts","webpack://DarkCore/./src/element/element.ts","webpack://DarkCore/./src/element/index.ts","webpack://DarkCore/./src/fiber/fiber.ts","webpack://DarkCore/./src/fiber/index.ts","webpack://DarkCore/./src/fiber/types.ts","webpack://DarkCore/./src/fragment/fragment.ts","webpack://DarkCore/./src/fragment/index.ts","webpack://DarkCore/./src/helpers/index.ts","webpack://DarkCore/./src/lazy/index.ts","webpack://DarkCore/./src/lazy/lazy.ts","webpack://DarkCore/./src/memo/index.ts","webpack://DarkCore/./src/memo/memo.ts","webpack://DarkCore/./src/platform/index.ts","webpack://DarkCore/./src/platform/platform.ts","webpack://DarkCore/./src/platform/types.ts","webpack://DarkCore/./src/ref/index.ts","webpack://DarkCore/./src/ref/ref.ts","webpack://DarkCore/./src/scope/index.ts","webpack://DarkCore/./src/scope/scope.ts","webpack://DarkCore/./src/shared/index.ts","webpack://DarkCore/./src/shared/types.ts","webpack://DarkCore/./src/suspense/index.ts","webpack://DarkCore/./src/suspense/suspense.ts","webpack://DarkCore/./src/unmount/index.ts","webpack://DarkCore/./src/unmount/unmount.ts","webpack://DarkCore/./src/use-callback/index.ts","webpack://DarkCore/./src/use-callback/use-callback.ts","webpack://DarkCore/./src/use-context/index.ts","webpack://DarkCore/./src/use-context/use-context.ts","webpack://DarkCore/./src/use-deferred-value/index.ts","webpack://DarkCore/./src/use-deferred-value/use-deferred-value.ts","webpack://DarkCore/./src/use-effect/index.ts","webpack://DarkCore/./src/use-effect/use-effect.ts","webpack://DarkCore/./src/use-error/index.ts","webpack://DarkCore/./src/use-error/use-error.ts","webpack://DarkCore/./src/use-event/index.ts","webpack://DarkCore/./src/use-event/use-event.ts","webpack://DarkCore/./src/use-imperative-handle/index.ts","webpack://DarkCore/./src/use-imperative-handle/use-imperative-handle.ts","webpack://DarkCore/./src/use-layout-effect/index.ts","webpack://DarkCore/./src/use-layout-effect/use-layout-effect.ts","webpack://DarkCore/./src/use-memo/index.ts","webpack://DarkCore/./src/use-memo/use-memo.ts","webpack://DarkCore/./src/use-reducer/index.ts","webpack://DarkCore/./src/use-reducer/use-reducer.ts","webpack://DarkCore/./src/use-ref/index.ts","webpack://DarkCore/./src/use-ref/use-ref.ts","webpack://DarkCore/./src/use-state/index.ts","webpack://DarkCore/./src/use-state/use-state.ts","webpack://DarkCore/./src/use-update/index.ts","webpack://DarkCore/./src/use-update/use-update.ts","webpack://DarkCore/./src/view/index.ts","webpack://DarkCore/./src/view/types.ts","webpack://DarkCore/./src/view/view.ts","webpack://DarkCore/./src/walk/index.ts","webpack://DarkCore/./src/walk/walk.ts","webpack://DarkCore/webpack/bootstrap","webpack://DarkCore/webpack/runtime/define property getters","webpack://DarkCore/webpack/runtime/hasOwnProperty shorthand","webpack://DarkCore/webpack/runtime/make namespace object","webpack://DarkCore/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DarkCore\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DarkCore\"] = factory();\n\telse\n\t\troot[\"DarkCore\"] = factory();\n})(self, () => {\nreturn ","import { ATTR_KEY } from '../constants';\r\nimport { error, detectIsEmpty } from '../helpers';\r\nimport type { DarkElementKey, DarkElementInstance } from '../shared';\r\nimport type { MutableRef } from '../ref';\r\nimport type { CreateElement, ComponentOptions, StandardComponentProps, SlotProps } from './types';\r\n\r\nconst $$component = Symbol('component');\r\nconst defaultOptions: ComponentOptions = {\r\n displayName: '',\r\n defaultProps: {},\r\n token: $$component,\r\n};\r\nclass ComponentFactory

{\r\n public type: CreateElement

;\r\n public token: Symbol;\r\n public props: P;\r\n public ref: MutableRef;\r\n public displayName: string;\r\n public children: Array = [];\r\n public shouldUpdate?: (props: P, nextProps: P) => boolean;\r\n\r\n constructor(options: ComponentFactory

) {\r\n this.type = options.type || null;\r\n this.token = options.token || null;\r\n this.props = options.props || null;\r\n this.ref = options.ref || null;\r\n this.displayName = options.displayName || '';\r\n this.shouldUpdate = options.shouldUpdate || null;\r\n }\r\n}\r\n\r\nfunction createComponent(\r\n createElement: CreateElement

,\r\n options: ComponentOptions

= {},\r\n) {\r\n type Props = P & StandardComponentProps;\r\n const computedOptions = { ...defaultOptions, ...options };\r\n const { token, defaultProps, displayName, shouldUpdate } = computedOptions;\r\n\r\n return (props = {} as Props, ref?: MutableRef): ComponentFactory => {\r\n const computedProps = { ...defaultProps, ...props };\r\n const factory = new ComponentFactory({\r\n token,\r\n ref,\r\n displayName,\r\n shouldUpdate,\r\n props: computedProps,\r\n type: createElement,\r\n children: [],\r\n });\r\n\r\n if (computedProps.ref) {\r\n delete computedProps.ref;\r\n\r\n if (process.env.NODE_ENV === 'development') {\r\n error(`[Dark]: To use ref you need to wrap the createComponent with forwardRef!`);\r\n }\r\n }\r\n\r\n return factory;\r\n };\r\n}\r\n\r\nconst detectIsComponentFactory = (factory: unknown): factory is ComponentFactory => factory instanceof ComponentFactory;\r\n\r\nconst getComponentFactoryKey = (factory: ComponentFactory): DarkElementKey =>\r\n !detectIsEmpty(factory.props[ATTR_KEY]) ? factory.props[ATTR_KEY] : null;\r\n\r\nexport { ComponentFactory, createComponent, detectIsComponentFactory, getComponentFactoryKey };\r\n","export * from './component';\r\nexport * from './types';\r\n","import type { ComponentFactory } from './component';\r\nimport type { DarkElementKey, DarkElement } from '../shared';\r\nimport type { MutableRef } from '../ref';\r\n\r\nexport type ComponentOptions

= Readonly<{\r\n displayName?: string;\r\n defaultProps?: Partial

;\r\n token?: Symbol;\r\n shouldUpdate?: (props: P, nextProps: P) => boolean;\r\n}>;\r\n\r\nexport type StandardComponentProps = KeyProps & SlotProps & RefProps;\r\n\r\nexport type KeyProps = {\r\n key?: DarkElementKey;\r\n};\r\n\r\nexport type SlotProps = Readonly<{\r\n slot?: T;\r\n}>;\r\n\r\nexport type RefProps = {\r\n ref?: MutableRef;\r\n};\r\n\r\nexport type Component = any, R = any> = (\r\n props: T,\r\n ref?: MutableRef,\r\n) => ComponentFactory;\r\n\r\nexport type ComponentFactoryReturnType = DarkElement;\r\n\r\nexport type CreateElement

= (\r\n props: P & Pick,\r\n ref?: MutableRef,\r\n) => ComponentFactoryReturnType;\r\n","export const ROOT = 'root';\r\nexport const EMPTY_NODE = 'dark:matter';\r\nexport const ATTR_KEY = 'key';\r\nexport const ATTR_REF = 'ref';\r\nexport const PARTIAL_UPDATE = 'partial-update';\r\n\r\nexport enum TaskPriority {\r\n HIGH = 2,\r\n NORMAL = 1,\r\n LOW = 0,\r\n}\r\n","import { createComponent } from '../component';\r\nimport { useEffect } from '../use-effect';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { useContext } from '../use-context';\r\nimport { detectIsFunction } from '../helpers';\r\nimport type { Context, ContexProviderProps } from './types';\r\n\r\nfunction createContext(defaultValue: T): Context {\r\n let displayName = 'Context';\r\n const context: Context = {\r\n displayName,\r\n defaultValue,\r\n Provider: null,\r\n Consumer: null,\r\n };\r\n\r\n mutateContext(context, defaultValue, displayName);\r\n\r\n Object.defineProperty(context, 'displayName', {\r\n get: () => displayName,\r\n set: (newValue: string) => {\r\n displayName = newValue;\r\n mutateContext(context, defaultValue, displayName);\r\n },\r\n });\r\n\r\n return context;\r\n}\r\n\r\nfunction mutateContext(context: Context, defaultValue: T, displayName: string) {\r\n context.Provider = createProvider(context, defaultValue, displayName);\r\n context.Consumer = createConsumer(context, displayName);\r\n}\r\n\r\nfunction createProvider(context: Context, defaultValue: T, displayName: string) {\r\n return createComponent>(\r\n ({ value = defaultValue, slot }) => {\r\n const fiber = componentFiberHelper.get();\r\n\r\n if (!fiber.provider) {\r\n fiber.provider = new Map();\r\n }\r\n\r\n if (!fiber.provider.get(context)) {\r\n fiber.provider.set(context, {\r\n subscribers: [],\r\n value,\r\n });\r\n }\r\n\r\n const provider = fiber.provider.get(context);\r\n\r\n useEffect(() => {\r\n for (const subscriber of provider.subscribers) {\r\n subscriber(value);\r\n }\r\n }, [value]);\r\n\r\n provider.value = value;\r\n\r\n return slot;\r\n },\r\n { displayName: `${displayName}.Provider` },\r\n );\r\n}\r\n\r\nfunction createConsumer(context: Context, displayName: string) {\r\n return createComponent(\r\n ({ slot }) => {\r\n const value = useContext(context);\r\n\r\n return detectIsFunction(slot) ? slot(value) : null;\r\n },\r\n { displayName: `${displayName}.Consumer` },\r\n );\r\n}\r\n\r\nexport { createContext };\r\n","export * from './context';\r\nexport * from './types';\r\n","import type { Component, SlotProps } from '../component';\r\nimport type { DarkElement } from '../shared';\r\n\r\nexport type ContexProviderProps = {\r\n value: T;\r\n} & SlotProps;\r\n\r\nexport type Context = {\r\n Provider: Component>;\r\n Consumer: Component DarkElement>>;\r\n displayName?: string;\r\n defaultValue: T;\r\n};\r\n\r\nexport type ContextProviderValue = {\r\n value: T;\r\n subscribers: Array<(value: T) => void>;\r\n};\r\n","import { detectIsNumber, detectIsString, detectIsFunction } from '../helpers';\r\nimport { View, Text, type TagVirtualNodeFactory } from '../view';\r\n\r\nfunction getChildren(children: Array) {\r\n children = children.map(x => (detectIsString(x) || detectIsNumber(x) ? Text(x.toString()) : x));\r\n\r\n return children ? (Array.isArray(children) ? [...children] : [children]) : [];\r\n}\r\n\r\nfunction createElement(\r\n tag: string | Function,\r\n props: any,\r\n ...children: Array\r\n): TagVirtualNodeFactory | Function | null {\r\n if (detectIsString(tag)) {\r\n return View({\r\n ...props,\r\n as: tag,\r\n slot: getChildren(children),\r\n });\r\n }\r\n\r\n if (detectIsFunction(tag)) {\r\n let slot = getChildren(children);\r\n\r\n slot = slot.length === 1 ? slot[0] : slot;\r\n\r\n return tag({ ...props, slot });\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport { createElement };\r\n","export * from './element';\r\n","import { flatten, detectIsEmpty, error, keyBy, takeListFromEnd, detectIsUndefined, detectIsArray } from '../helpers';\r\nimport { platform } from '../platform';\r\nimport {\r\n wipRootHelper,\r\n currentRootHelper,\r\n nextUnitOfWorkHelper,\r\n deletionsHelper,\r\n fiberMountHelper,\r\n componentFiberHelper,\r\n fromHookUpdateHelper,\r\n effectStoreHelper,\r\n effectsHelper,\r\n layoutEffectsHelper,\r\n} from '../scope';\r\nimport { type ComponentFactory, detectIsComponentFactory, getComponentFactoryKey } from '../component';\r\nimport {\r\n type TagVirtualNode,\r\n detectIsTagVirtualNode,\r\n createEmptyVirtualNode,\r\n getVirtualNodeKey,\r\n detectIsVirtualNode,\r\n detectIsVirtualNodeFactory,\r\n} from '../view';\r\nimport { detectIsMemo } from '../memo';\r\nimport type { Context, ContextProviderValue } from '../context';\r\nimport type { DarkElementKey, DarkElement, DarkElementInstance } from '../shared';\r\nimport { PARTIAL_UPDATE } from '../constants';\r\nimport { type NativeElement, type Hook, EffectTag, cloneTagMap } from './types';\r\nimport { hasEffects } from '../use-effect';\r\nimport { hasLayoutEffects } from '../use-layout-effect';\r\nimport { walkFiber } from '../walk';\r\nimport { unmountFiber } from '../unmount';\r\n\r\nclass Fiber {\r\n public nativeElement: N;\r\n public parent: Fiber;\r\n public child: Fiber;\r\n public nextSibling: Fiber;\r\n public alternate: Fiber;\r\n public effectTag: EffectTag;\r\n public instance: DarkElementInstance;\r\n public hook: Hook;\r\n public shadow: Fiber;\r\n public provider: Map;\r\n public transposition: boolean;\r\n public mountedToHost: boolean;\r\n public portalHost: boolean;\r\n public effectHost: boolean;\r\n public layoutEffectHost: boolean;\r\n public childrenCount: number;\r\n public marker: string;\r\n public isUsed: boolean;\r\n public catchException: (error: Error) => void;\r\n\r\n constructor(options: Partial>) {\r\n this.nativeElement = options.nativeElement || null;\r\n this.parent = options.parent || null;\r\n this.child = options.child || null;\r\n this.nextSibling = options.nextSibling || null;\r\n this.alternate = options.alternate || null;\r\n this.effectTag = options.effectTag || null;\r\n this.instance = options.instance || null;\r\n this.hook = options.hook || createHook();\r\n this.shadow = options.shadow || null;\r\n this.provider = options.provider || null;\r\n this.transposition = !detectIsUndefined(options.transposition) ? options.transposition : false;\r\n this.mountedToHost = !detectIsUndefined(options.mountedToHost) || false;\r\n this.portalHost = !detectIsUndefined(options.portalHost) ? options.portalHost : false;\r\n this.effectHost = !detectIsUndefined(options.effectHost) ? options.effectHost : false;\r\n this.layoutEffectHost = !detectIsUndefined(options.layoutEffectHost) ? options.layoutEffectHost : false;\r\n this.childrenCount = options.childrenCount || 0;\r\n this.marker = options.marker || '';\r\n this.isUsed = options.isUsed || false;\r\n }\r\n\r\n public markPortalHost() {\r\n this.portalHost = true;\r\n this.parent && !this.parent.portalHost && this.parent.markPortalHost();\r\n }\r\n\r\n public markEffectHost() {\r\n this.effectHost = true;\r\n this.parent && !this.parent.effectHost && this.parent.markEffectHost();\r\n }\r\n\r\n public markLayoutEffectHost() {\r\n this.layoutEffectHost = true;\r\n this.parent && !this.parent.layoutEffectHost && this.parent.markLayoutEffectHost();\r\n }\r\n\r\n public setError(error: Error) {\r\n if (typeof this.catchException === 'function') {\r\n this.catchException(error);\r\n } else if (this.parent) {\r\n this.parent.setError(error);\r\n }\r\n }\r\n}\r\n\r\nfunction workLoop() {\r\n const wipFiber = wipRootHelper.get();\r\n let nextUnitOfWork = nextUnitOfWorkHelper.get();\r\n let shouldYield = false;\r\n let hasMoreWork = Boolean(nextUnitOfWork);\r\n\r\n while (nextUnitOfWork && !shouldYield) {\r\n nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\r\n nextUnitOfWorkHelper.set(nextUnitOfWork);\r\n hasMoreWork = Boolean(nextUnitOfWork);\r\n shouldYield = platform.shouldYeildToHost();\r\n }\r\n\r\n if (!nextUnitOfWork && wipFiber) {\r\n commitChanges();\r\n }\r\n\r\n return hasMoreWork;\r\n}\r\n\r\nfunction performUnitOfWork(fiber: Fiber) {\r\n let isDeepWalking = true;\r\n let nextFiber = fiber;\r\n let shadow: Fiber = fiber.shadow;\r\n let instance = fiber.instance;\r\n\r\n while (true) {\r\n isDeepWalking = fiberMountHelper.deepWalking.get();\r\n nextFiber.hook.idx = 0;\r\n\r\n if (isDeepWalking) {\r\n const hasChildren = hasChildrenProp(instance) && instance.children.length > 0;\r\n\r\n if (hasChildren) {\r\n const { performedFiber, performedNextFiber, performedShadow, performedInstance } = performChild({\r\n nextFiber,\r\n shadow,\r\n instance,\r\n });\r\n\r\n nextFiber = performedNextFiber;\r\n shadow = performedShadow;\r\n instance = performedInstance;\r\n\r\n if (performedFiber) return performedFiber;\r\n } else {\r\n const { performedFiber, performedNextFiber, performedShadow, performedInstance } = performSibling({\r\n nextFiber,\r\n shadow,\r\n instance,\r\n });\r\n\r\n nextFiber = performedNextFiber;\r\n shadow = performedShadow;\r\n instance = performedInstance;\r\n\r\n if (performedFiber) return performedFiber;\r\n }\r\n } else {\r\n const { performedFiber, performedNextFiber, performedShadow, performedInstance } = performSibling({\r\n nextFiber,\r\n shadow,\r\n instance,\r\n });\r\n\r\n nextFiber = performedNextFiber;\r\n shadow = performedShadow;\r\n instance = performedInstance;\r\n\r\n if (performedFiber) return performedFiber;\r\n }\r\n\r\n performPartialUpdateEffects(nextFiber);\r\n\r\n if (nextFiber.parent === null) return null;\r\n }\r\n}\r\n\r\nfunction performPartialUpdateEffects(nextFiber: Fiber) {\r\n if (nextFiber.marker === PARTIAL_UPDATE) {\r\n const alternate = nextFiber.child?.alternate || null;\r\n const fiber = nextFiber.child || null;\r\n\r\n if (alternate && fiber && alternate.nextSibling && !fiber.nextSibling) {\r\n let nextFiber = alternate.nextSibling;\r\n const deletions: Array = [];\r\n\r\n while (nextFiber) {\r\n nextFiber.effectTag = EffectTag.DELETION;\r\n deletions.push(nextFiber);\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n deletionsHelper.get().push(...deletions);\r\n }\r\n }\r\n}\r\n\r\ntype PerformChildOptions = {\r\n nextFiber: Fiber;\r\n shadow: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction performChild(options: PerformChildOptions) {\r\n fiberMountHelper.jumpToChild();\r\n let nextFiber = options.nextFiber;\r\n let shadow = options.shadow;\r\n let instance = options.instance;\r\n\r\n shadow = shadow ? shadow.child : null;\r\n\r\n const alternate = getChildAlternate(nextFiber);\r\n const hook = getHook({ shadow, alternate, instance });\r\n const provider = shadow ? shadow.provider : alternate ? alternate.provider : null;\r\n let fiber = new Fiber({ hook, provider });\r\n\r\n componentFiberHelper.set(fiber);\r\n fiber.parent = nextFiber;\r\n\r\n const { performedInstance, performedShadow } = pertformInstance({\r\n instance,\r\n idx: 0,\r\n fiber,\r\n alternate,\r\n });\r\n instance = performedInstance || instance;\r\n shadow = performedShadow || shadow;\r\n alternate && mutateAlternate({ alternate, instance });\r\n mutateFiber({ fiber, alternate, instance });\r\n fiber = alternate ? performMemo({ fiber, alternate, instance }) : fiber;\r\n\r\n nextFiber.child = fiber;\r\n fiber.parent = nextFiber;\r\n fiber.shadow = shadow;\r\n nextFiber = fiber;\r\n\r\n cloneTagMap[fiber.parent.effectTag] && (fiber.effectTag = fiber.parent.effectTag);\r\n\r\n return {\r\n performedFiber: nextFiber,\r\n performedNextFiber: nextFiber,\r\n performedShadow: shadow,\r\n performedInstance: instance,\r\n };\r\n}\r\n\r\ntype PerformSiblingOptions = {\r\n nextFiber: Fiber;\r\n shadow: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction performSibling(options: PerformSiblingOptions) {\r\n fiberMountHelper.jumpToSibling();\r\n let nextFiber = options.nextFiber;\r\n let shadow = options.shadow;\r\n let instance = options.instance;\r\n const parent = nextFiber.parent.instance;\r\n const childrenIdx = fiberMountHelper.getIndex();\r\n const hasSibling = hasChildrenProp(parent) && parent.children[childrenIdx];\r\n\r\n if (hasSibling) {\r\n fiberMountHelper.deepWalking.set(true);\r\n\r\n shadow = shadow ? shadow.nextSibling : null;\r\n const alternate = getNextSiblingAlternate(nextFiber);\r\n const hook = getHook({ shadow, alternate, instance });\r\n const provider = shadow ? shadow.provider : alternate ? alternate.provider : null;\r\n let fiber = new Fiber({ hook, provider });\r\n\r\n componentFiberHelper.set(fiber);\r\n fiber.parent = nextFiber.parent;\r\n\r\n const { performedInstance, performedShadow } = pertformInstance({\r\n instance: parent,\r\n idx: childrenIdx,\r\n fiber,\r\n alternate,\r\n });\r\n instance = performedInstance || instance;\r\n shadow = performedShadow || shadow;\r\n alternate && mutateAlternate({ alternate, instance });\r\n mutateFiber({ fiber, alternate, instance });\r\n fiber = alternate ? performMemo({ fiber, alternate, instance }) : fiber;\r\n\r\n fiber.parent = nextFiber.parent;\r\n nextFiber.nextSibling = fiber;\r\n fiber.shadow = shadow;\r\n nextFiber = fiber;\r\n\r\n cloneTagMap[fiber.parent.effectTag] && (fiber.effectTag = fiber.parent.effectTag);\r\n\r\n return {\r\n performedFiber: nextFiber,\r\n performedNextFiber: nextFiber,\r\n performedShadow: shadow,\r\n performedInstance: instance,\r\n };\r\n } else {\r\n fiberMountHelper.jumpToParent();\r\n fiberMountHelper.deepWalking.set(false);\r\n shadow = shadow ? shadow.parent : null;\r\n nextFiber = nextFiber.parent;\r\n instance = nextFiber.instance;\r\n\r\n if (hasChildrenProp(nextFiber.instance)) {\r\n nextFiber.instance.children = [];\r\n }\r\n }\r\n\r\n return {\r\n performedFiber: null,\r\n performedNextFiber: nextFiber,\r\n performedShadow: shadow,\r\n performedInstance: instance,\r\n };\r\n}\r\n\r\ntype MutateFiberOptions = {\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction mutateFiber(options: MutateFiberOptions) {\r\n const { fiber, alternate, instance } = options;\r\n const key = alternate ? getElementKey(alternate.instance) : null;\r\n const nextKey = alternate ? getElementKey(instance) : null;\r\n const isDifferentKeys = key !== nextKey;\r\n const isSameType = Boolean(alternate) && getInstanceType(alternate.instance) === getInstanceType(instance);\r\n const isUpdate = isSameType && !isDifferentKeys;\r\n\r\n fiber.instance = instance;\r\n fiber.alternate = alternate || null;\r\n fiber.nativeElement = isUpdate ? alternate.nativeElement : null;\r\n fiber.effectTag = isUpdate ? EffectTag.UPDATE : EffectTag.PLACEMENT;\r\n fiber.mountedToHost = fiber.nativeElement ? isUpdate : false;\r\n\r\n if (hasChildrenProp(fiber.instance)) {\r\n fiber.childrenCount = fiber.instance.children.length;\r\n }\r\n\r\n if (fiber.alternate) {\r\n fiber.alternate.shadow = null;\r\n fiber.alternate.alternate = null;\r\n }\r\n\r\n if (!fiber.nativeElement && detectIsVirtualNode(fiber.instance)) {\r\n fiber.nativeElement = platform.createNativeElement(fiber);\r\n }\r\n}\r\n\r\ntype PerformAlternateOptions = {\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction mutateAlternate(options: PerformAlternateOptions) {\r\n const { alternate, instance } = options;\r\n const alternateType = getInstanceType(alternate.instance);\r\n const elementType = getInstanceType(instance);\r\n const isSameType = elementType === alternateType;\r\n const prevKey = getElementKey(alternate.instance);\r\n const nextKey = getElementKey(instance);\r\n const isSameKeys = prevKey === nextKey;\r\n\r\n alternate.isUsed = true;\r\n\r\n if (!isSameType || !isSameKeys) {\r\n alternate.effectTag = EffectTag.DELETION;\r\n deletionsHelper.get().push(alternate);\r\n } else if (hasChildrenProp(alternate.instance) && hasChildrenProp(instance)) {\r\n const prevElementsCount = alternate.childrenCount;\r\n const nextElementsCount = instance.children.length;\r\n const isRequestedKeys = prevElementsCount !== nextElementsCount;\r\n\r\n if (isRequestedKeys) {\r\n const isRemovingCase = nextElementsCount < prevElementsCount;\r\n const isInsertingCase = nextElementsCount > prevElementsCount;\r\n const children = hasChildrenProp(instance) ? instance.children : [];\r\n const { keys, nextKeys } = extractKeys(alternate.child, children);\r\n const hasKeys = keys.length > 0;\r\n const hasAnyKeys = hasKeys || nextKeys.length > 0;\r\n\r\n if (process.env.NODE_ENV === 'development') {\r\n if (!hasAnyKeys && prevElementsCount !== 0 && nextElementsCount !== 0) {\r\n error(`\r\n [Dark]: Operation of inserting, adding, replacing elements into list requires to have a unique key for every node (string or number, but not array index)!\r\n `);\r\n }\r\n }\r\n\r\n const performRemovingNodes = () => {\r\n const diffKeys = getDiffKeys(keys, nextKeys);\r\n\r\n if (diffKeys.length > 0) {\r\n const fibersMap = createFibersByKeyMap(alternate.child);\r\n\r\n for (const key of diffKeys) {\r\n const fiber = fibersMap[key] || null;\r\n\r\n if (fiber) {\r\n fiber.effectTag = EffectTag.DELETION;\r\n deletionsHelper.get().push(fiber);\r\n }\r\n }\r\n } else if (!hasKeys) {\r\n const diffCount = prevElementsCount - nextElementsCount;\r\n const fibers = takeListFromEnd(getSiblingFibers(alternate.child), diffCount);\r\n\r\n for (const fiber of fibers) {\r\n fiber.effectTag = EffectTag.DELETION;\r\n }\r\n\r\n deletionsHelper.get().push(...fibers);\r\n }\r\n };\r\n\r\n const performInsertingNodes = () => {\r\n const diffKeys = getDiffKeys(nextKeys, keys);\r\n\r\n if (diffKeys.length > 0) {\r\n const diffKeyMap = keyBy(diffKeys, x => x);\r\n const fibersByPositionsMap = createFibersByPositionMap(alternate.child);\r\n const usedKeyMap = {};\r\n let keyIdx = 0;\r\n\r\n for (const nextKey of nextKeys) {\r\n if (process.env.NODE_ENV === 'development') {\r\n if (usedKeyMap[nextKey]) {\r\n error(`Some key of node already has been used!`);\r\n }\r\n }\r\n\r\n usedKeyMap[nextKey] = true;\r\n\r\n if (nextKey !== keys[keyIdx] && diffKeyMap[nextKey]) {\r\n const insertionFiber = new Fiber({\r\n instance: createEmptyVirtualNode(),\r\n parent: alternate,\r\n effectTag: EffectTag.PLACEMENT,\r\n });\r\n\r\n if (keyIdx === 0) {\r\n insertionFiber.nextSibling = alternate.child;\r\n alternate.child = insertionFiber;\r\n } else {\r\n const fiber = fibersByPositionsMap[keyIdx] || null;\r\n\r\n if (fiber) {\r\n insertionFiber.nextSibling = fiber;\r\n }\r\n }\r\n }\r\n\r\n keyIdx++;\r\n }\r\n }\r\n };\r\n\r\n isRemovingCase && performRemovingNodes();\r\n isInsertingCase && performInsertingNodes();\r\n }\r\n }\r\n}\r\n\r\ntype PerformMemoOptions = {\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction performMemo(options: PerformMemoOptions) {\r\n const { fiber, alternate, instance } = options;\r\n\r\n if (detectIsMemo(fiber.instance)) {\r\n let memoFiber: Fiber = null;\r\n const factory = instance as ComponentFactory;\r\n const alternateFactory = alternate.instance as ComponentFactory;\r\n\r\n if (factory.type !== alternateFactory.type) return fiber;\r\n\r\n const props = alternateFactory.props;\r\n const nextProps = factory.props;\r\n const skip = !factory.shouldUpdate(props, nextProps);\r\n\r\n if (skip) {\r\n let nextFiber: Fiber = null;\r\n fiberMountHelper.deepWalking.set(false);\r\n\r\n memoFiber = new Fiber({\r\n ...alternate,\r\n alternate,\r\n effectTag: EffectTag.SKIP,\r\n nextSibling: alternate.nextSibling\r\n ? alternate.nextSibling.effectTag === EffectTag.DELETION\r\n ? null\r\n : alternate.nextSibling\r\n : null,\r\n });\r\n\r\n alternate.alternate = null;\r\n nextFiber = memoFiber.child;\r\n\r\n while (nextFiber) {\r\n nextFiber.parent = memoFiber;\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n if (memoFiber.effectHost) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (memoFiber.layoutEffectHost) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (memoFiber.portalHost) {\r\n fiber.markPortalHost();\r\n }\r\n\r\n return memoFiber;\r\n }\r\n }\r\n\r\n return fiber;\r\n}\r\n\r\ntype PerformInstanceOptions = {\r\n instance: DarkElementInstance;\r\n idx: number;\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n};\r\n\r\nfunction pertformInstance(options: PerformInstanceOptions) {\r\n const { instance, idx, fiber, alternate } = options;\r\n let performedInstance: DarkElementInstance = null;\r\n let performedShadow: Fiber = null;\r\n\r\n if (hasChildrenProp(instance)) {\r\n const elements = detectIsArray(instance.children[idx])\r\n ? flatten([instance.children[idx]])\r\n : [instance.children[idx]];\r\n\r\n instance.children.splice(idx, 1, ...elements);\r\n performedInstance = instance.children[idx];\r\n performedShadow = alternate\r\n ? getRootShadow({\r\n instance: performedInstance,\r\n fiber,\r\n alternate,\r\n })\r\n : performedShadow;\r\n performedInstance = mountInstance(fiber, performedInstance);\r\n }\r\n\r\n if (detectIsComponentFactory(performedInstance)) {\r\n if (hasEffects(fiber)) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (hasLayoutEffects(fiber)) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (platform.detectIsPortal(performedInstance)) {\r\n fiber.markPortalHost();\r\n }\r\n }\r\n\r\n return {\r\n performedInstance,\r\n performedShadow,\r\n };\r\n}\r\n\r\ntype GetRootShadowOptions = {\r\n instance: DarkElementInstance;\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n};\r\n\r\nfunction getRootShadow(options: GetRootShadowOptions) {\r\n const { instance, fiber, alternate } = options;\r\n const key = getElementKey(alternate.instance);\r\n const nextKey = getElementKey(instance);\r\n let shadow: Fiber = null;\r\n\r\n if (key !== nextKey) {\r\n shadow = getAlternateByKey(nextKey, alternate.parent.child);\r\n\r\n if (shadow) {\r\n fiber.hook = shadow.hook;\r\n fiber.provider = shadow.provider;\r\n alternate.transposition = true;\r\n }\r\n }\r\n\r\n return shadow;\r\n}\r\n\r\nfunction mountInstance(fiber: Fiber, instance: DarkElementInstance) {\r\n const isComponentFactory = detectIsComponentFactory(instance);\r\n const factory = instance as ComponentFactory;\r\n\r\n if (isComponentFactory) {\r\n try {\r\n const result = factory.type(factory.props, factory.ref);\r\n\r\n factory.children = detectIsArray(result)\r\n ? (flatten([result]) as Array)\r\n : ([result] as Array);\r\n } catch (err) {\r\n factory.children = [];\r\n fiber.setError(err);\r\n error(err);\r\n }\r\n } else if (detectIsVirtualNodeFactory(instance)) {\r\n instance = instance();\r\n }\r\n\r\n if (hasChildrenProp(instance)) {\r\n for (let i = 0; i < instance.children.length; i++) {\r\n if (!instance.children[i]) {\r\n instance.children[i] = transformElementInstance(instance.children[i]) as DarkElementInstance;\r\n }\r\n }\r\n\r\n instance.children = isComponentFactory\r\n ? instance.children\r\n : detectIsArray(instance.children)\r\n ? flatten([instance.children])\r\n : [instance.children];\r\n\r\n if (isComponentFactory && factory.children.length === 0) {\r\n factory.children.push(createEmptyVirtualNode());\r\n }\r\n }\r\n\r\n return instance;\r\n}\r\n\r\nfunction createFibersByPositionMap(fiber: Fiber) {\r\n let nextFiber = fiber;\r\n let position = 0;\r\n const map: Record = {};\r\n\r\n while (nextFiber) {\r\n map[position] = nextFiber;\r\n\r\n position++;\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return map;\r\n}\r\n\r\nfunction createFibersByKeyMap(fiber: Fiber) {\r\n let nextFiber = fiber;\r\n const map: Record = {};\r\n\r\n while (nextFiber) {\r\n const key = getElementKey(nextFiber.instance);\r\n\r\n if (!detectIsEmpty(key)) {\r\n map[key] = nextFiber;\r\n }\r\n\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return map;\r\n}\r\n\r\nfunction extractKeys(alternate: Fiber, children: Array) {\r\n let nextFiber = alternate;\r\n let idx = 0;\r\n const keys: Array = [];\r\n const nextKeys: Array = [];\r\n\r\n while (nextFiber || idx < children.length) {\r\n const key = nextFiber && getElementKey(nextFiber.instance);\r\n const nextKey = children[idx] && getElementKey(children[idx]);\r\n\r\n if (!detectIsEmpty(key)) {\r\n keys.push(key);\r\n }\r\n\r\n if (!detectIsEmpty(nextKey)) {\r\n nextKeys.push(nextKey);\r\n }\r\n\r\n nextFiber = nextFiber ? nextFiber.nextSibling : null;\r\n idx++;\r\n }\r\n\r\n return {\r\n keys,\r\n nextKeys,\r\n };\r\n}\r\n\r\nfunction getAlternateByKey(key: DarkElementKey, fiber: Fiber) {\r\n if (detectIsEmpty(key)) return null;\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (key === getElementKey(nextFiber.instance)) {\r\n return nextFiber;\r\n }\r\n\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction getElementKey(instance: DarkElementInstance): DarkElementKey | null {\r\n const key = detectIsComponentFactory(instance)\r\n ? getComponentFactoryKey(instance)\r\n : detectIsTagVirtualNode(instance)\r\n ? getVirtualNodeKey(instance)\r\n : null;\r\n\r\n return key;\r\n}\r\n\r\nfunction getDiffKeys(keys: Array, nextKeys: Array): Array {\r\n const nextKeysMap = nextKeys.reduce((acc, key) => ((acc[key] = true), acc), {});\r\n const diff = [];\r\n\r\n for (const key of keys) {\r\n if (!nextKeysMap[key]) {\r\n diff.push(key);\r\n }\r\n }\r\n\r\n return diff;\r\n}\r\n\r\nfunction getChildAlternate(fiber: Fiber): Fiber | null {\r\n let alternate = fiber.alternate && fiber.alternate.effectTag !== EffectTag.DELETION ? fiber.alternate.child : null;\r\n\r\n while (alternate && alternate.effectTag === EffectTag.DELETION) {\r\n alternate = alternate.nextSibling;\r\n }\r\n\r\n return alternate;\r\n}\r\n\r\nfunction getNextSiblingAlternate(fiber: Fiber): Fiber | null {\r\n let alternate = fiber.alternate?.nextSibling || null;\r\n\r\n while (alternate && alternate.effectTag === EffectTag.DELETION) {\r\n alternate = alternate.nextSibling;\r\n }\r\n\r\n return alternate;\r\n}\r\n\r\nfunction transformElementInstance(instance: DarkElement) {\r\n return detectIsEmpty(instance) || instance === false ? createEmptyVirtualNode() : instance;\r\n}\r\n\r\nfunction getInstanceType(instance: DarkElementInstance): string | Function {\r\n return detectIsTagVirtualNode(instance)\r\n ? instance.name\r\n : detectIsVirtualNode(instance)\r\n ? instance.type\r\n : detectIsComponentFactory(instance)\r\n ? instance.type\r\n : null;\r\n}\r\n\r\nfunction getSiblingFibers(fiber: Fiber): Array {\r\n const list = [];\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n list.push(nextFiber);\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return list;\r\n}\r\n\r\nfunction hasChildrenProp(element: DarkElementInstance): element is TagVirtualNode | ComponentFactory {\r\n return detectIsTagVirtualNode(element) || detectIsComponentFactory(element);\r\n}\r\n\r\nfunction commitChanges() {\r\n const wipFiber = wipRootHelper.get();\r\n const fromHook = fromHookUpdateHelper.get();\r\n const deletions = deletionsHelper.get();\r\n const hasEffects = Boolean(wipFiber.alternate?.effectHost);\r\n const hasLayoutEffects = Boolean(wipFiber.alternate?.layoutEffectHost);\r\n const hasPortals = Boolean(wipFiber.alternate?.portalHost);\r\n\r\n if (hasEffects || hasLayoutEffects || hasPortals) {\r\n for (const fiber of deletions) {\r\n unmountFiber(fiber);\r\n }\r\n }\r\n\r\n commitWork(wipFiber.child, () => {\r\n const layoutEffects = layoutEffectsHelper.get();\r\n const effects = effectsHelper.get();\r\n\r\n for (const fiber of deletions) {\r\n platform.applyCommits(fiber);\r\n }\r\n\r\n deletionsHelper.set([]);\r\n wipRootHelper.set(null);\r\n\r\n for (const layoutEffect of layoutEffects) {\r\n layoutEffect();\r\n }\r\n\r\n setTimeout(() => {\r\n for (const effect of effects) {\r\n effect();\r\n }\r\n });\r\n\r\n layoutEffectsHelper.reset();\r\n effectsHelper.reset();\r\n\r\n if (fromHook) {\r\n fromHookUpdateHelper.set(false);\r\n } else {\r\n currentRootHelper.set(wipFiber);\r\n }\r\n });\r\n}\r\n\r\nfunction commitWork(fiber: Fiber, onComplete: Function) {\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, isReturn, resetIsDeepWalking }) => {\r\n const skip = nextFiber.effectTag === EffectTag.SKIP;\r\n\r\n if (skip) {\r\n resetIsDeepWalking();\r\n } else if (!isReturn) {\r\n platform.applyCommits(nextFiber);\r\n }\r\n\r\n if (nextFiber && nextFiber.shadow) {\r\n nextFiber.shadow = null;\r\n }\r\n },\r\n });\r\n\r\n onComplete();\r\n}\r\n\r\nfunction createHook(): Hook {\r\n return {\r\n idx: 0,\r\n values: [],\r\n };\r\n}\r\n\r\ntype GetHookOptions = {\r\n shadow: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction getHook(options: GetHookOptions) {\r\n const { shadow, alternate, instance } = options;\r\n\r\n if (shadow) return shadow.hook;\r\n\r\n if (alternate && getElementKey(alternate.instance) === getElementKey(instance)) {\r\n return alternate.hook;\r\n }\r\n\r\n return createHook();\r\n}\r\n\r\ntype CreateUpdateCallbackOptions = {\r\n rootId: number;\r\n fiber: Fiber;\r\n forceStart?: boolean;\r\n onStart: () => void;\r\n};\r\n\r\nfunction createUpdateCallback(options: CreateUpdateCallbackOptions) {\r\n const { rootId, fiber, forceStart = false, onStart } = options;\r\n const callback = () => {\r\n forceStart && onStart();\r\n if (fiber.isUsed) return;\r\n !forceStart && onStart();\r\n effectStoreHelper.set(rootId); // important order!\r\n fromHookUpdateHelper.set(true);\r\n fiberMountHelper.reset();\r\n\r\n fiber.alternate = new Fiber({\r\n ...fiber,\r\n alternate: null,\r\n });\r\n fiber.marker = PARTIAL_UPDATE;\r\n fiber.effectTag = EffectTag.UPDATE;\r\n fiber.child = null;\r\n\r\n wipRootHelper.set(fiber);\r\n componentFiberHelper.set(fiber);\r\n fiber.instance = mountInstance(fiber, fiber.instance);\r\n nextUnitOfWorkHelper.set(fiber);\r\n };\r\n\r\n return callback;\r\n}\r\n\r\nexport { Fiber, workLoop, createHook, hasChildrenProp, createUpdateCallback };\r\n","export * from './fiber';\r\nexport * from './types';\r\n","export enum EffectTag {\r\n PLACEMENT = 'PLACEMENT',\r\n UPDATE = 'UPDATE',\r\n DELETION = 'DELETION',\r\n SKIP = 'SKIP',\r\n}\r\n\r\nexport type NativeElement = unknown;\r\n\r\nexport type HookValue = {\r\n token?: Symbol;\r\n deps: Array;\r\n value: T;\r\n};\r\n\r\nexport type Hook = {\r\n idx: number;\r\n values: Array;\r\n};\r\n\r\nexport const cloneTagMap = {\r\n [EffectTag.PLACEMENT]: true,\r\n [EffectTag.SKIP]: true,\r\n};\r\n","import { type KeyProps, createComponent, detectIsComponentFactory } from '../component';\r\n\r\nconst $$fragment = Symbol('fragment');\r\n\r\nconst Fragment = createComponent(({ slot }) => slot || null, {\r\n token: $$fragment,\r\n});\r\n\r\nconst detectIsFragment = (factory: unknown) => detectIsComponentFactory(factory) && factory.token === $$fragment;\r\n\r\nexport { Fragment, detectIsFragment };\r\n","export * from './fragment';\r\n","import type { NestedArray } from '../shared';\r\n\r\nconst detectIsFunction = (o: any): o is Function => typeof o === 'function';\r\nconst detectIsUndefined = (o: any) => typeof o === 'undefined';\r\nconst detectIsNumber = (o: any) => typeof o === 'number';\r\nconst detectIsString = (o: any) => typeof o === 'string';\r\nconst detectIsObject = (o: any) => typeof o === 'object';\r\nconst detectIsBoolean = (o: any) => typeof o === 'boolean';\r\nconst detectIsArray = (o: any): o is Array => Array.isArray(o);\r\nconst detectIsNull = (o: any) => o === null;\r\nconst detectIsEmpty = (o: any) => detectIsNull(o) || detectIsUndefined(o);\r\n\r\nfunction error(str: string) {\r\n !detectIsUndefined(console) && console.error(str);\r\n}\r\n\r\nfunction flatten(source: Array>): Array {\r\n const list = [];\r\n const levelMap = { 0: { idx: 0, source } };\r\n let level = 0;\r\n\r\n do {\r\n const { source, idx } = levelMap[level];\r\n const item = source[idx];\r\n\r\n if (idx >= source.length) {\r\n level--;\r\n levelMap[level].idx++;\r\n continue;\r\n }\r\n\r\n if (detectIsArray(item)) {\r\n level++;\r\n levelMap[level] = {\r\n idx: 0,\r\n source: item,\r\n };\r\n } else {\r\n list.push(item);\r\n levelMap[level].idx++;\r\n }\r\n } while (level > 0 || levelMap[level].idx < levelMap[level].source.length);\r\n\r\n return list;\r\n}\r\n\r\nfunction getTime() {\r\n return Date.now();\r\n}\r\n\r\nfunction keyBy(\r\n list: Array,\r\n fn: (o: T) => string | number,\r\n value = false,\r\n): Record {\r\n return list.reduce((acc, x) => ((acc[fn(x)] = value ? x : true), acc), {});\r\n}\r\n\r\nfunction takeListFromEnd(source: Array, count: number) {\r\n return source.slice(source.length - count, source.length);\r\n}\r\n\r\nconst dummyFn = () => {};\r\n\r\nfunction detectIsDepsDifferent(deps: Array, prevDeps: Array): boolean {\r\n if (!detectIsUndefined(deps) && !detectIsUndefined(prevDeps) && deps.length > 0 && prevDeps.length > 0) {\r\n for (let i = 0; i < prevDeps.length; i++) {\r\n if (prevDeps[i] !== deps[i]) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport {\r\n detectIsFunction,\r\n detectIsUndefined,\r\n detectIsNumber,\r\n detectIsString,\r\n detectIsObject,\r\n detectIsBoolean,\r\n detectIsArray,\r\n detectIsNull,\r\n detectIsEmpty,\r\n error,\r\n flatten,\r\n getTime,\r\n keyBy,\r\n takeListFromEnd,\r\n dummyFn,\r\n detectIsDepsDifferent,\r\n};\r\n","export * from './lazy';\r\n","import { type Component, createComponent, detectIsComponentFactory } from '../component';\r\nimport { useState } from '../use-state';\r\nimport { useEffect } from '../use-effect';\r\nimport { forwardRef } from '../ref';\r\nimport { SuspenseContext } from '../suspense';\r\nimport { useContext } from '../use-context';\r\n\r\nconst $$lazy = Symbol('lazy');\r\n\r\ntype LazyScope = {\r\n component: Component;\r\n};\r\n\r\nfunction lazy(dynamic: () => Promise<{ default: Component

}>) {\r\n return forwardRef(\r\n createComponent(\r\n (props, ref) => {\r\n const { fallback, trigger } = useContext(SuspenseContext);\r\n const [scope, setScope] = useState>({\r\n component: null,\r\n });\r\n\r\n useEffect(() => {\r\n fetchModule(dynamic).then(component => {\r\n setScope({ component });\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!scope.component) return;\r\n trigger();\r\n }, [scope.component]);\r\n\r\n return scope.component ? scope.component(props, ref) : fallback;\r\n },\r\n { token: $$lazy },\r\n ),\r\n );\r\n}\r\n\r\nconst detectIsLazy = (factory: unknown) => detectIsComponentFactory(factory) && factory.token === $$lazy;\r\n\r\nfunction fetchModule(dynamic: () => Promise<{ default: Component }>) {\r\n return new Promise(resolve => {\r\n dynamic().then(module => {\r\n if (!module.default) {\r\n throw new Error('lazy loaded component should be exported as default!');\r\n }\r\n\r\n resolve(module.default);\r\n });\r\n });\r\n}\r\n\r\nexport { lazy, detectIsLazy };\r\n","export * from './memo';\r\n","import {\r\n type Component,\r\n type ComponentFactory,\r\n type StandardComponentProps,\r\n type RefProps,\r\n type SlotProps,\r\n createComponent,\r\n detectIsComponentFactory,\r\n} from '../component';\r\nimport { type MutableRef, forwardRef } from '../ref';\r\n\r\ntype ShouldUpdate = (props: T, nextProps: T) => boolean;\r\n\r\nconst $$memo = Symbol('memo');\r\n\r\nconst defaultShouldUpdate = (props: {}, nextProps: {}): boolean => {\r\n const keys = Object.keys(nextProps);\r\n\r\n for (const key of keys) {\r\n if (key !== 'slot' && nextProps[key] !== props[key]) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst detectIsMemo = (factory: unknown) => detectIsComponentFactory(factory) && factory.token === $$memo;\r\n\r\nfunction memo(\r\n component: (props: T, ref?: MutableRef) => ComponentFactory,\r\n shouldUpdate: ShouldUpdate = defaultShouldUpdate,\r\n): Component {\r\n return forwardRef(\r\n createComponent(\r\n (props: T & RefProps, ref) => {\r\n ref && (props.ref = ref);\r\n\r\n return component(props);\r\n },\r\n { token: $$memo, shouldUpdate },\r\n ),\r\n );\r\n}\r\n\r\nexport { $$memo, memo, detectIsMemo };\r\n","export * from './platform';\r\nexport * from './types';\r\n","import type { Platform } from './types';\r\n\r\nexport const platform: Platform = {\r\n scheduleCallback: () => {\r\n throw new Error('scheduleCallback not installed by renderer');\r\n },\r\n shouldYeildToHost: () => {\r\n throw new Error('shouldYeildToHost not installed by renderer');\r\n },\r\n createNativeElement: () => {\r\n throw new Error('createNativeElement not installed by renderer');\r\n },\r\n applyCommits: () => {\r\n throw new Error('applyCommits not installed by renderer');\r\n },\r\n detectIsPortal: () => {\r\n throw new Error('detectIsPortal not installed by renderer');\r\n },\r\n unmountPortal: () => {\r\n throw new Error('unmountPortal not installed by renderer');\r\n },\r\n};\r\n","import { type Fiber } from '../fiber';\r\nimport { type TaskPriority } from '../constants';\r\nimport { type ComponentFactory } from '../component';\r\n\r\nexport type Platform = {\r\n scheduleCallback: (callback: () => void, options?: ScheduleCallbackOptions) => void;\r\n shouldYeildToHost: () => boolean;\r\n createNativeElement: (fiber: Fiber) => N;\r\n applyCommits: (fiber: Fiber) => void;\r\n detectIsPortal: (factory: ComponentFactory) => boolean;\r\n unmountPortal: (fiber: Fiber) => void;\r\n};\r\n\r\nexport type ScheduleCallbackOptions = {\r\n priority?: TaskPriority;\r\n timeoutMs?: number;\r\n};\r\n","export * from './ref';\r\nexport type { MutableRef } from './types';\r\n","import { detectIsObject, detectIsNull } from '../helpers';\r\nimport type { Component, RefProps, ComponentFactory } from '../component';\r\nimport type { MutableRef } from './types';\r\n\r\nfunction forwardRef(component: Component) {\r\n type Props = P & RefProps;\r\n\r\n return ({ ref, ...rest }: Props) => {\r\n return component(rest as P, ref) as ComponentFactory;\r\n };\r\n}\r\n\r\nconst detectIsRef = (ref: unknown) => {\r\n if (!detectIsObject(ref) || detectIsNull(ref)) return false;\r\n const mutableRef = ref as MutableRef;\r\n\r\n for (const key in mutableRef) {\r\n if (key === 'current' && mutableRef.hasOwnProperty(key)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport { forwardRef, detectIsRef };\r\n","export * from './scope';\r\n","import type { Fiber } from '../fiber';\r\n\r\nclass Store {\r\n public wipRoot: Fiber = null;\r\n public currentRoot: Fiber = null;\r\n public nextUnitOfWork: Fiber = null;\r\n public fromHookUpdate = false;\r\n public events: Map> = new Map();\r\n public unsubscribers: Array<() => void> = [];\r\n public deletions: Array = [];\r\n public fiberMount = {\r\n level: 0,\r\n navigation: {},\r\n isDeepWalking: true,\r\n };\r\n public componentFiber: Fiber = null;\r\n public effects: Array<() => void> = [];\r\n public layoutEffects: Array<() => void> = [];\r\n}\r\n\r\nlet rootId = null;\r\nconst stores = new Map();\r\n\r\nconst effectStoreHelper = {\r\n set: (id: number) => effectStore(id),\r\n remove: (id: number) => stores.delete(id),\r\n};\r\n\r\nconst getRootId = (): number => rootId;\r\n\r\nconst effectStore = (id: number) => {\r\n rootId = id;\r\n !stores.get(rootId) && stores.set(rootId, new Store());\r\n};\r\n\r\nconst storeHelper = {\r\n get: (id: number = rootId) => stores.get(id),\r\n};\r\n\r\nconst wipRootHelper = {\r\n get: () => storeHelper.get()?.wipRoot || null,\r\n set: (fiber: Fiber) => (storeHelper.get().wipRoot = fiber),\r\n};\r\n\r\nconst currentRootHelper = {\r\n get: (id?: number) => storeHelper.get(id)?.currentRoot || null,\r\n set: (fiber: Fiber) => (storeHelper.get().currentRoot = fiber),\r\n};\r\n\r\nconst nextUnitOfWorkHelper = {\r\n get: () => storeHelper.get()?.nextUnitOfWork || null,\r\n set: (fiber: Fiber) => (storeHelper.get().nextUnitOfWork = fiber),\r\n};\r\n\r\nconst componentFiberHelper = {\r\n get: () => storeHelper.get()?.componentFiber,\r\n set: (fiber: Fiber) => (storeHelper.get().componentFiber = fiber),\r\n};\r\n\r\nconst fromHookUpdateHelper = {\r\n get: () => storeHelper.get()?.fromHookUpdate || false,\r\n set: (value: boolean) => (storeHelper.get().fromHookUpdate = value),\r\n};\r\n\r\nconst eventsHelper = {\r\n get: () => storeHelper.get().events,\r\n addUnsubscriber: (fn: () => void) => storeHelper.get().unsubscribers.push(fn),\r\n mapUnsubscribers: (id: number) => storeHelper.get(id).unsubscribers.forEach(fn => fn()),\r\n};\r\n\r\nconst deletionsHelper = {\r\n get: () => storeHelper.get().deletions,\r\n set: (deletions: Array) => (storeHelper.get().deletions = deletions),\r\n};\r\n\r\nconst fiberMountHelper = {\r\n reset: () => {\r\n storeHelper.get().fiberMount = {\r\n level: 0,\r\n navigation: {},\r\n isDeepWalking: true,\r\n };\r\n },\r\n getIndex: () => storeHelper.get().fiberMount.navigation[storeHelper.get().fiberMount.level],\r\n jumpToChild: () => {\r\n const { fiberMount } = storeHelper.get();\r\n const level = fiberMount.level;\r\n const nextLevel = level + 1;\r\n\r\n fiberMount.level = nextLevel;\r\n fiberMount.navigation[nextLevel] = 0;\r\n },\r\n jumpToParent: () => {\r\n const { fiberMount } = storeHelper.get();\r\n const level = fiberMount.level;\r\n const nextLevel = level - 1;\r\n\r\n fiberMount.navigation[level] = 0;\r\n fiberMount.level = nextLevel;\r\n },\r\n jumpToSibling: () => {\r\n const { fiberMount } = storeHelper.get();\r\n const level = fiberMount.level;\r\n const idx = fiberMount.navigation[level] + 1;\r\n\r\n fiberMount.navigation[level] = idx;\r\n },\r\n deepWalking: {\r\n get: () => storeHelper.get().fiberMount.isDeepWalking,\r\n set: (value: boolean) => (storeHelper.get().fiberMount.isDeepWalking = value),\r\n },\r\n};\r\n\r\nconst effectsHelper = {\r\n get: () => storeHelper.get().effects,\r\n reset: () => (storeHelper.get().effects = []),\r\n add: (effect: () => void) => storeHelper.get().effects.push(effect),\r\n};\r\n\r\nconst layoutEffectsHelper = {\r\n get: () => storeHelper.get().layoutEffects,\r\n reset: () => (storeHelper.get().layoutEffects = []),\r\n add: (effect: () => void) => storeHelper.get().layoutEffects.push(effect),\r\n};\r\n\r\nexport {\r\n getRootId,\r\n effectStoreHelper,\r\n wipRootHelper,\r\n currentRootHelper,\r\n nextUnitOfWorkHelper,\r\n componentFiberHelper,\r\n fromHookUpdateHelper,\r\n eventsHelper,\r\n deletionsHelper,\r\n fiberMountHelper,\r\n effectsHelper,\r\n layoutEffectsHelper,\r\n};\r\n","export * from './types';\r\n","import type { ComponentFactory } from '../component';\r\nimport type { VirtualNode, VirtualNodeFactory } from '../view';\r\n\r\nexport type DarkElement = NestedArray;\r\n\r\nexport type Nullable = null | false | undefined;\r\n\r\nexport type NestedArray = T | Array>;\r\n\r\nexport type RenderProps = (...args: Array) => DarkElement;\r\n\r\nexport type DarkElementKey = string | number;\r\n\r\nexport type DarkElementInstance = VirtualNode | VirtualNodeFactory | ComponentFactory;\r\n","export * from './suspense';\r\n","import { createComponent } from '../component';\r\nimport { useState } from '../use-state';\r\nimport { createContext } from '../context';\r\nimport { useContext } from '../use-context';\r\nimport { useMemo } from '../use-memo';\r\nimport { useCallback } from '../use-callback';\r\nimport type { DarkElement } from '../shared';\r\n\r\ntype SuspenseProps = {\r\n fallback: DarkElement;\r\n};\r\n\r\ntype SuspenseContextValue = {\r\n fallback: DarkElement;\r\n isLoaded: boolean;\r\n trigger: () => void;\r\n};\r\n\r\nconst SuspenseContext = createContext({\r\n fallback: null,\r\n isLoaded: true,\r\n trigger: () => {},\r\n});\r\n\r\nconst Suspense = createComponent(({ fallback, slot }) => {\r\n if (!fallback) {\r\n throw new Error(`Suspense fallback not found`);\r\n }\r\n const { isLoaded: isSuspenseLoaded } = useContext(SuspenseContext);\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n const trigger = useCallback(() => setIsLoaded(true), []);\r\n const value = useMemo(() => ({ fallback, isLoaded, trigger }), [fallback, isLoaded]);\r\n\r\n return SuspenseContext.Provider({\r\n value,\r\n slot: isSuspenseLoaded ? slot : null,\r\n });\r\n});\r\n\r\nexport { SuspenseContext, Suspense };\r\n","export * from './unmount';\r\n","import { type Fiber } from '../fiber';\r\nimport { platform } from '../platform';\r\nimport { detectIsComponentFactory } from '../component';\r\nimport { cleanupEffects } from '../use-effect';\r\nimport { cleanupLayoutEffects } from '../use-layout-effect';\r\nimport { walkFiber } from '../walk';\r\nimport { detectIsUndefined } from '../helpers';\r\nimport { currentRootHelper, eventsHelper, effectStoreHelper } from '../scope';\r\n\r\nfunction unmountFiber(fiber: Fiber) {\r\n if (fiber.effectHost || fiber.layoutEffectHost) {\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, isReturn, stop }) => {\r\n if (nextFiber === fiber.nextSibling || fiber.transposition) return stop();\r\n\r\n if (!isReturn && detectIsComponentFactory(nextFiber.instance)) {\r\n cleanupLayoutEffects(nextFiber.hook);\r\n cleanupEffects(nextFiber.hook);\r\n }\r\n },\r\n });\r\n }\r\n\r\n fiber.portalHost && platform.unmountPortal(fiber);\r\n}\r\n\r\nfunction unmountRoot(rootId: number, onComplete: () => void) {\r\n if (detectIsUndefined(rootId)) return;\r\n\r\n unmountFiber(currentRootHelper.get(rootId));\r\n eventsHelper.mapUnsubscribers(rootId);\r\n effectStoreHelper.remove(rootId);\r\n onComplete();\r\n}\r\n\r\nexport { unmountFiber, unmountRoot };\r\n","export * from './use-callback';\r\n","import { useMemo } from '../use-memo';\r\n\r\nfunction useCallback(callback: T, deps: Array): T {\r\n const value = useMemo(() => callback, deps);\r\n\r\n return value;\r\n}\r\n\r\nexport { useCallback };\r\n","export * from './use-context';\r\n","import { useEffect } from '../use-effect';\r\nimport { useMemo } from '../use-memo';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { useUpdate } from '../use-update';\r\nimport type { Fiber } from '../fiber';\r\nimport type { Context, ContextProviderValue } from '../context';\r\n\r\nfunction useContext(context: Context): T {\r\n const { defaultValue } = context;\r\n const fiber = componentFiberHelper.get();\r\n const provider = getProvider(context, fiber);\r\n const value = provider ? provider.value : defaultValue;\r\n const update = useUpdate();\r\n const scope = useMemo(() => ({ prevValue: value }), []);\r\n const hasProvider = Boolean(provider);\r\n\r\n useEffect(() => {\r\n if (!hasProvider) return;\r\n\r\n const subscriber = (newValue: T) => {\r\n if (!Object.is(scope.prevValue, newValue)) {\r\n update();\r\n }\r\n };\r\n\r\n provider.subscribers.push(subscriber);\r\n\r\n return () => {\r\n const idx = provider.subscribers.findIndex(x => x === subscriber);\r\n\r\n if (idx !== -1) {\r\n provider.subscribers.splice(idx, 1);\r\n }\r\n };\r\n }, [hasProvider]);\r\n\r\n scope.prevValue = value;\r\n\r\n return value;\r\n}\r\n\r\nfunction getProvider(context: Context, fiber: Fiber): ContextProviderValue {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (nextFiber.provider && nextFiber.provider.get(context)) {\r\n return nextFiber.provider.get(context) as ContextProviderValue;\r\n }\r\n\r\n nextFiber = nextFiber.parent;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport { useContext };\r\n","export * from './use-deferred-value';\r\n","import { useState } from '../use-state';\r\nimport { useEffect } from '../use-effect';\r\nimport { TaskPriority } from '../constants';\r\n\r\ntype UseDeferredValueOprions = {\r\n timeoutMs: number;\r\n};\r\n\r\nfunction useDeferredValue(value: T, options?: UseDeferredValueOprions): T {\r\n const { timeoutMs } = options || {};\r\n const [deferredValue, setDeferredValue] = useState(value, {\r\n priority: TaskPriority.LOW,\r\n timeoutMs,\r\n });\r\n\r\n useEffect(() => {\r\n setDeferredValue(value);\r\n }, [value]);\r\n\r\n return deferredValue;\r\n}\r\n\r\nexport { useDeferredValue };\r\n","export * from './use-effect';\r\n","import { detectIsUndefined, detectIsFunction, detectIsDepsDifferent } from '../helpers';\r\nimport { componentFiberHelper, effectsHelper } from '../scope';\r\nimport type { Fiber, Hook, HookValue } from '../fiber';\r\nimport type { Effect, EffectCleanup } from './types';\r\n\r\nconst $$useEffect = Symbol('use-effect');\r\n\r\nconst { useEffect, hasEffects, cleanupEffects } = createEffectFunctions($$useEffect, effectsHelper);\r\n\r\nfunction createEffectFunctions(token: Symbol, store: typeof effectsHelper) {\r\n function useEffect(effect: Effect, deps?: Array) {\r\n const fiber = componentFiberHelper.get();\r\n const hook = fiber.hook as Hook>;\r\n const { idx, values } = hook;\r\n const runEffect = () => {\r\n values[idx] = {\r\n deps,\r\n token,\r\n value: undefined,\r\n };\r\n\r\n store.add(() => {\r\n values[idx].value = effect();\r\n });\r\n };\r\n\r\n if (detectIsUndefined(values[idx])) {\r\n runEffect();\r\n } else {\r\n const { deps: prevDeps, value: cleanup } = values[idx];\r\n const isDepsDifferent = deps ? detectIsDepsDifferent(deps, prevDeps) : true;\r\n\r\n if (isDepsDifferent) {\r\n detectIsFunction(cleanup) && cleanup();\r\n runEffect();\r\n }\r\n }\r\n\r\n hook.idx++;\r\n }\r\n\r\n function hasEffects(fiber: Fiber) {\r\n const { values } = fiber.hook as Hook;\r\n const hasEffect = values.some(x => x.token === token);\r\n\r\n return hasEffect;\r\n }\r\n\r\n function cleanupEffects(hook: Hook>) {\r\n const { values } = hook;\r\n\r\n for (const value of values) {\r\n if (value.token === token) {\r\n const cleanup = value.value;\r\n\r\n detectIsFunction(cleanup) && cleanup();\r\n }\r\n }\r\n }\r\n\r\n return {\r\n useEffect,\r\n hasEffects,\r\n cleanupEffects,\r\n };\r\n}\r\n\r\nexport { useEffect, hasEffects, cleanupEffects, createEffectFunctions };\r\n","export * from './use-error';\r\n","import { componentFiberHelper } from '../scope';\r\nimport { useEffect } from '../use-effect';\r\nimport { useUpdate } from '../use-update';\r\nimport { useMemo } from '../use-memo';\r\n\r\ntype ErrorScope = {\r\n error: Error;\r\n};\r\n\r\nfunction useError(): Error | null {\r\n const fiber = componentFiberHelper.get();\r\n const update = useUpdate();\r\n const scope: ErrorScope = useMemo(() => ({ error: null }), []);\r\n\r\n fiber.catchException = (error: Error) => {\r\n scope.error = error;\r\n update();\r\n };\r\n\r\n useEffect(() => {\r\n scope.error = null;\r\n }, [scope.error]);\r\n\r\n return scope.error;\r\n}\r\n\r\nexport { useError };\r\n","export * from './use-event';\r\n","import { useMemo } from '../use-memo';\r\nimport { useCallback } from '../use-callback';\r\n\r\nfunction useEvent any>(fn: T) {\r\n const scope = useMemo(() => ({ fn }), []);\r\n\r\n scope.fn = fn;\r\n\r\n const callback = useCallback((...args) => {\r\n return scope.fn(...args);\r\n }, []);\r\n\r\n return callback as unknown as T;\r\n}\r\n\r\nexport { useEvent };\r\n","export * from './use-imperative-handle';\r\n","import { useMemo } from '../use-memo';\r\nimport type { MutableRef } from '../ref';\r\n\r\nfunction useImperativeHandle(ref: MutableRef, createHandle: () => T, deps: Array) {\r\n const current = useMemo(() => createHandle(), deps);\r\n\r\n ref.current = current;\r\n}\r\n\r\nexport { useImperativeHandle };\r\n","export * from './use-layout-effect';\r\n","import { layoutEffectsHelper } from '../scope';\r\nimport { createEffectFunctions } from '../use-effect';\r\n\r\nconst $$useLayoutEffect = Symbol('use-layout-effect');\r\n\r\nconst {\r\n useEffect: useLayoutEffect,\r\n hasEffects: hasLayoutEffects,\r\n cleanupEffects: cleanupLayoutEffects,\r\n} = createEffectFunctions($$useLayoutEffect, layoutEffectsHelper);\r\n\r\nexport { useLayoutEffect, hasLayoutEffects, cleanupLayoutEffects };\r\n","export * from './use-memo';\r\n","import { type DarkElement } from '../shared';\r\nimport { detectIsUndefined, detectIsArray, detectIsDepsDifferent } from '../helpers';\r\nimport { detectIsComponentFactory, createComponent } from '../component';\r\nimport { detectIsVirtualNodeFactory } from '../view';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { Fragment } from '../fragment';\r\nimport { $$memo } from '../memo';\r\n\r\nconst Memo = createComponent(({ slot }) => slot, { token: $$memo });\r\n\r\nfunction wrap(value: T, isDepsDifferent: boolean) {\r\n const check = (value: T) => detectIsVirtualNodeFactory(value) || detectIsComponentFactory(value);\r\n\r\n if (detectIsArray(value) ? check(value[0]) : check(value)) {\r\n const slot = value as unknown as DarkElement;\r\n const factory = Memo({\r\n slot: Fragment({ slot }),\r\n });\r\n\r\n factory.shouldUpdate = () => isDepsDifferent;\r\n\r\n return factory;\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction processValue(getValue: () => T, isDepsDifferent = false) {\r\n return wrap(getValue(), isDepsDifferent);\r\n}\r\n\r\nfunction useMemo(getValue: () => T, deps: Array): T {\r\n const fiber = componentFiberHelper.get();\r\n const { hook } = fiber;\r\n const { idx, values } = hook;\r\n\r\n if (detectIsUndefined(values[idx])) {\r\n const value = processValue(getValue);\r\n\r\n values[idx] = {\r\n deps,\r\n value,\r\n };\r\n\r\n hook.idx++;\r\n\r\n return value as T;\r\n }\r\n\r\n const hookValue = values[idx];\r\n const prevDeps = hookValue.deps as Array;\r\n const isDepsDifferent = detectIsDepsDifferent(deps, prevDeps);\r\n const computedGetValue = isDepsDifferent ? getValue : () => hookValue.value;\r\n\r\n hookValue.deps = deps;\r\n hookValue.value = processValue(computedGetValue, isDepsDifferent);\r\n\r\n hook.idx++;\r\n\r\n return hookValue.value;\r\n}\r\n\r\nexport { useMemo };\r\n","export * from './use-reducer';\r\nexport type { Reducer } from './types';\r\n","import { useState } from '../use-state';\r\nimport { useCallback } from '../use-callback';\r\nimport { useMemo } from '../use-memo';\r\nimport { detectIsFunction } from '../helpers';\r\nimport type { Reducer, Dispatch, ReducerAction, ReducerState } from './types';\r\n\r\nfunction useReducer(\r\n reducer: R,\r\n initialState: ReducerState,\r\n initializer?: (state: ReducerState) => ReducerState,\r\n): [ReducerState, Dispatch>] {\r\n const initialValue = useMemo(() => {\r\n return detectIsFunction(initializer) ? initializer(initialState) : initialState;\r\n }, []);\r\n const [state, setState] = useState>(initialValue);\r\n const dispatch = useCallback((action: ReducerAction) => setState(state => reducer(state, action)), []) as Dispatch<\r\n ReducerAction\r\n >;\r\n\r\n return [state, dispatch];\r\n}\r\n\r\nexport { useReducer };\r\n","export * from './use-ref';\r\n","import { useMemo } from '../use-memo';\r\nimport type { MutableRef } from '../ref';\r\n\r\nfunction useRef(initialValue: T = null): MutableRef {\r\n const ref = useMemo(() => ({ current: initialValue }), []) as MutableRef;\r\n\r\n return ref;\r\n}\r\n\r\nexport { useRef };\r\n","export * from './use-state';\r\n","import { type ScheduleCallbackOptions } from '../platform';\r\nimport { detectIsUndefined, detectIsFunction } from '../helpers';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { useUpdate } from '../use-update';\r\nimport { useMemo } from '../use-memo';\r\nimport { useCallback } from '../use-callback';\r\nimport { TaskPriority } from '../constants';\r\n\r\ntype Value = T | ((prevValue: T) => T);\r\ntype Scope = {\r\n idx: number;\r\n values: Array;\r\n};\r\n\r\nfunction useState(initialValue: T, options?: ScheduleCallbackOptions): [T, (value: Value) => void] {\r\n const fiber = componentFiberHelper.get();\r\n const update = useUpdate(options);\r\n const scope: Scope = useMemo(\r\n () => ({\r\n idx: fiber.hook.idx,\r\n values: fiber.hook.values,\r\n }),\r\n [],\r\n );\r\n const setState = useCallback((sourceValue: Value) => {\r\n const value = scope.values[scope.idx];\r\n const newValue = detectIsFunction(sourceValue) ? sourceValue(value) : sourceValue;\r\n\r\n if (!Object.is(value, newValue)) {\r\n const setValue = () => {\r\n scope.values[scope.idx] = newValue;\r\n };\r\n\r\n if (options?.priority === TaskPriority.LOW) {\r\n update(() => setValue());\r\n } else {\r\n setValue();\r\n update();\r\n }\r\n }\r\n }, []);\r\n const { hook } = fiber;\r\n const { idx, values } = hook;\r\n const value: T = !detectIsUndefined(values[idx]) ? values[idx] : initialValue;\r\n\r\n values[idx] = value;\r\n scope.idx = idx;\r\n scope.values = values;\r\n hook.idx++;\r\n\r\n return [value, setState];\r\n}\r\n\r\nexport { useState };\r\n","export * from './use-update';\r\n","import { platform, type ScheduleCallbackOptions } from '../platform';\r\nimport { getRootId, componentFiberHelper } from '../scope';\r\nimport { createUpdateCallback } from '../fiber';\r\nimport { useMemo } from '../use-memo';\r\nimport { dummyFn } from '../helpers';\r\n\r\nfunction useUpdate(options?: ScheduleCallbackOptions) {\r\n const rootId = getRootId();\r\n const fiber = componentFiberHelper.get();\r\n const scope = useMemo(() => ({ fiber }), []);\r\n\r\n scope.fiber = fiber;\r\n\r\n const update = (onStart?: () => void) => {\r\n const callback = createUpdateCallback({\r\n rootId,\r\n fiber: scope.fiber,\r\n forceStart: Boolean(options?.timeoutMs),\r\n onStart: onStart || dummyFn,\r\n });\r\n\r\n platform.scheduleCallback(callback, options);\r\n };\r\n\r\n return update;\r\n}\r\n\r\nexport { useUpdate };\r\n","export * from './view';\r\nexport * from './types';\r\n","export type ViewDef = {\r\n as: string;\r\n slot?: any;\r\n isVoid?: boolean;\r\n [prop: string]: any;\r\n};\r\n\r\nexport enum NodeType {\r\n TAG = 'TAG',\r\n TEXT = 'TEXT',\r\n COMMENT = 'COMMENT',\r\n}\r\n","import { EMPTY_NODE, ATTR_KEY } from '../constants';\r\nimport { detectIsArray, detectIsEmpty, detectIsFunction } from '../helpers';\r\nimport type { DarkElementKey } from '../shared';\r\nimport type { ComponentFactory, StandardComponentProps } from '../component';\r\nimport { NodeType, type ViewDef } from './types';\r\n\r\nexport type VirtualNodeFactory = () => VirtualNode;\r\nexport type TagVirtualNodeFactory = () => TagVirtualNode;\r\nexport type TextVirtualNodeFactory = () => TextVirtualNode;\r\nexport type CommentVirtualNodeFactory = () => CommentVirtualNode;\r\n\r\nconst $$virtualNode = Symbol('virtual-node');\r\n\r\nclass VirtualNode {\r\n public type: NodeType = null;\r\n\r\n constructor(options: Partial) {\r\n this.type = options.type;\r\n }\r\n}\r\n\r\nclass TagVirtualNode extends VirtualNode {\r\n public type = NodeType.TAG;\r\n public name: string = null;\r\n public isVoid = false;\r\n public attrs: Record = {};\r\n public children: Array = [];\r\n\r\n constructor(options: Partial) {\r\n super(options);\r\n this.name = options.name || this.name;\r\n this.isVoid = options.isVoid || this.isVoid;\r\n this.attrs = options.attrs || this.attrs;\r\n this.children = options.children || this.children;\r\n }\r\n}\r\n\r\nclass TextVirtualNode extends VirtualNode {\r\n public type = NodeType.TEXT;\r\n public value = '';\r\n\r\n constructor(text: string) {\r\n super({});\r\n this.value = text;\r\n }\r\n}\r\n\r\nclass CommentVirtualNode extends VirtualNode {\r\n public type = NodeType.COMMENT;\r\n public value = '';\r\n\r\n constructor(text: string) {\r\n super({});\r\n this.value = text;\r\n }\r\n}\r\n\r\nconst detectIsVirtualNode = (vNode: unknown): vNode is VirtualNode => vNode instanceof VirtualNode;\r\nconst detectIsTagVirtualNode = (vNode: unknown): vNode is TagVirtualNode => vNode instanceof TagVirtualNode;\r\nconst detectIsCommentVirtualNode = (vNode: unknown): vNode is CommentVirtualNode => vNode instanceof CommentVirtualNode;\r\nconst detectIsTextVirtualNode = (vNode: unknown): vNode is TextVirtualNode => vNode instanceof TextVirtualNode;\r\nconst detectIsEmptyVirtualNode = (vNode: unknown): boolean =>\r\n detectIsCommentVirtualNode(vNode) && vNode.value === EMPTY_NODE;\r\n\r\nfunction getVirtualNodeKey(vNode: TagVirtualNode): DarkElementKey | null {\r\n const key = vNode && vNode.attrs[ATTR_KEY];\r\n\r\n return !detectIsEmpty(key) ? key : null;\r\n}\r\n\r\nfunction Text(source: string | StandardComponentProps['slot']): string | TextVirtualNode {\r\n const text =\r\n typeof source === 'string' ? new TextVirtualNode(source) : detectIsTextVirtualNode(source) ? source.value : '';\r\n\r\n return text;\r\n}\r\n\r\nfunction Comment(text: string): CommentVirtualNodeFactory {\r\n const factory = () => new CommentVirtualNode(text);\r\n\r\n factory[$$virtualNode] = true;\r\n\r\n return factory;\r\n}\r\n\r\nfunction View(def: ViewDef): TagVirtualNodeFactory {\r\n const factory = () => {\r\n const { as, slot, isVoid = false, ...rest } = def;\r\n const children = isVoid ? [] : detectIsArray(slot) ? slot : slot ? [slot] : [];\r\n\r\n return new TagVirtualNode({\r\n name: as,\r\n isVoid,\r\n attrs: { ...rest },\r\n children: children as Array,\r\n });\r\n };\r\n\r\n factory[$$virtualNode] = true;\r\n\r\n return factory;\r\n}\r\n\r\nconst createEmptyVirtualNode = () => new CommentVirtualNode(EMPTY_NODE);\r\n\r\nconst detectIsVirtualNodeFactory = (factory: unknown): factory is VirtualNodeFactory =>\r\n detectIsFunction(factory) && factory[$$virtualNode] === true;\r\n\r\nexport {\r\n VirtualNode,\r\n TagVirtualNode,\r\n TextVirtualNode,\r\n CommentVirtualNode,\r\n detectIsVirtualNode,\r\n detectIsTagVirtualNode,\r\n detectIsCommentVirtualNode,\r\n detectIsTextVirtualNode,\r\n detectIsEmptyVirtualNode,\r\n getVirtualNodeKey,\r\n Text,\r\n Comment,\r\n View,\r\n createEmptyVirtualNode,\r\n detectIsVirtualNodeFactory,\r\n};\r\n","export * from './walk';\r\n","import { type Fiber } from '../fiber';\r\n\r\ntype WalkFiberOptions = {\r\n fiber: Fiber;\r\n onLoop: (options: OnLoopOptions) => void;\r\n};\r\n\r\ntype OnLoopOptions = {\r\n nextFiber: Fiber;\r\n isReturn: boolean;\r\n resetIsDeepWalking: () => void;\r\n stop: () => void;\r\n};\r\n\r\nfunction walkFiber(options: WalkFiberOptions) {\r\n const { fiber, onLoop } = options;\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n let isReturn = false;\r\n let isStopped = false;\r\n const visitedMap = new Map();\r\n const detectCanVisit = (fiber: Fiber) => !visitedMap.get(fiber);\r\n\r\n while (nextFiber) {\r\n onLoop({\r\n nextFiber: nextFiber as Fiber,\r\n isReturn,\r\n resetIsDeepWalking: () => (isDeepWalking = false),\r\n stop: () => (isStopped = true),\r\n });\r\n\r\n if (isStopped) {\r\n break;\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking && detectCanVisit(nextFiber.child)) {\r\n const newFiber = nextFiber.child;\r\n\r\n isReturn = false;\r\n nextFiber = newFiber;\r\n visitedMap.set(newFiber, true);\r\n } else if (nextFiber.nextSibling && detectCanVisit(nextFiber.nextSibling)) {\r\n const newFiber = nextFiber.nextSibling;\r\n\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = newFiber;\r\n visitedMap.set(newFiber, true);\r\n } else if (\r\n nextFiber.parent &&\r\n nextFiber.parent === fiber &&\r\n nextFiber.parent.nextSibling &&\r\n detectCanVisit(nextFiber.parent.nextSibling)\r\n ) {\r\n const newFiber = nextFiber.parent.nextSibling;\r\n\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = newFiber;\r\n visitedMap.set(newFiber, true);\r\n } else if (nextFiber.parent && nextFiber.parent !== fiber) {\r\n isDeepWalking = false;\r\n isReturn = true;\r\n nextFiber = nextFiber.parent;\r\n } else {\r\n nextFiber = null;\r\n }\r\n }\r\n}\r\n\r\nexport { walkFiber };\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export * from './component';\r\nexport * from './context';\r\nexport { createElement as h } from './element';\r\nexport * from './fiber';\r\nexport * from './fragment';\r\nexport * from './platform';\r\nexport * from './helpers';\r\nexport * from './lazy';\r\nexport * from './memo';\r\nexport * from './ref';\r\nexport * from './scope';\r\nexport * from './shared';\r\nexport * from './suspense';\r\nexport * from './use-callback';\r\nexport * from './use-context';\r\nexport * from './use-deferred-value';\r\nexport { useEffect } from './use-effect';\r\nexport * from './use-error';\r\nexport * from './use-event';\r\nexport * from './use-imperative-handle';\r\nexport { useLayoutEffect } from './use-layout-effect';\r\nexport * from './use-memo';\r\nexport * from './use-reducer';\r\nexport * from './use-ref';\r\nexport * from './use-state';\r\nexport * from './use-update';\r\nexport * from './view';\r\nexport * from './constants';\r\nexport { walkFiber } from './walk';\r\nexport { unmountRoot } from './unmount';\r\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/packages/core/umd/dark-core.production.min.js b/packages/core/umd/dark-core.production.min.js index 306dcd22..44e1e8cd 100644 --- a/packages/core/umd/dark-core.production.min.js +++ b/packages/core/umd/dark-core.production.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("DarkCore",[],t):"object"==typeof exports?exports.DarkCore=t():e.DarkCore=t()}(self,(()=>(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{$$memo:()=>Se,ATTR_KEY:()=>i,ATTR_REF:()=>a,Comment:()=>ve,CommentVirtualNode:()=>ae,ComponentFactory:()=>O,EMPTY_NODE:()=>o,EffectTag:()=>je,Fiber:()=>Ge,Fragment:()=>ge,NodeType:()=>I,PARTIAL_UPDATE:()=>l,ROOT:()=>r,Suspense:()=>xt,SuspenseContext:()=>gt,TagVirtualNode:()=>oe,TaskPriority:()=>n,Text:()=>pe,TextVirtualNode:()=>ie,View:()=>he,VirtualNode:()=>re,cloneTagMap:()=>Fe,componentFiberHelper:()=>W,createComponent:()=>H,createContext:()=>dt,createEmptyVirtualNode:()=>ye,createHook:()=>lt,createUpdateCallback:()=>ft,currentRootHelper:()=>V,deletionsHelper:()=>K,detectIsArray:()=>v,detectIsBoolean:()=>p,detectIsCommentVirtualNode:()=>fe,detectIsComponentFactory:()=>P,detectIsDepsDifferent:()=>S,detectIsEmpty:()=>y,detectIsEmptyVirtualNode:()=>se,detectIsFragment:()=>xe,detectIsFunction:()=>u,detectIsLazy:()=>St,detectIsMemo:()=>Te,detectIsNull:()=>h,detectIsNumber:()=>c,detectIsObject:()=>d,detectIsRef:()=>we,detectIsString:()=>s,detectIsTagVirtualNode:()=>ue,detectIsTextVirtualNode:()=>ce,detectIsUndefined:()=>f,detectIsVirtualNode:()=>le,detectIsVirtualNodeFactory:()=>be,dummyFn:()=>w,effectStoreHelper:()=>L,effectsHelper:()=>Y,error:()=>b,eventsHelper:()=>B,fiberMountHelper:()=>G,flatten:()=>m,forwardRef:()=>Ee,fromHookUpdateHelper:()=>_,getComponentFactoryKey:()=>N,getRootId:()=>M,getTime:()=>g,getVirtualNodeKey:()=>de,h:()=>yt,hasChildrenProp:()=>at,keyBy:()=>x,layoutEffectsHelper:()=>z,lazy:()=>wt,memo:()=>Oe,nextUnitOfWorkHelper:()=>R,platform:()=>Ce,takeListFromEnd:()=>E,unmountRoot:()=>Re,useCallback:()=>bt,useContext:()=>st,useDeferredValue:()=>kt,useEffect:()=>$,useError:()=>Tt,useEvent:()=>It,useImperativeHandle:()=>Pt,useLayoutEffect:()=>Me,useMemo:()=>Pe,useReducer:()=>Nt,useRef:()=>jt,useState:()=>mt,useUpdate:()=>ct,walkFiber:()=>De,wipRootHelper:()=>D,workLoop:()=>Ye});var n,r="root",o="dark:matter",i="key",a="ref",l="partial-update";!function(e){e[e.HIGH=2]="HIGH",e[e.NORMAL=1]="NORMAL",e[e.LOW=0]="LOW"}(n||(n={}));var u=function(e){return"function"==typeof e},f=function(e){return void 0===e},c=function(e){return"number"==typeof e},s=function(e){return"string"==typeof e},d=function(e){return"object"==typeof e},p=function(e){return"boolean"==typeof e},v=function(e){return Array.isArray(e)},h=function(e){return null===e},y=function(e){return h(e)||f(e)};function b(e){!f(console)&&console.error(e)}function m(e){var t=[],n={0:{idx:0,source:e}},r=0;do{var o=n[r],i=o.source,a=o.idx,l=i[a];a>=i.length?n[--r].idx++:v(l)?n[++r]={idx:0,source:l}:(t.push(l),n[r].idx++)}while(r>0||n[r].idx0&&t.length>0)for(var n=0;n=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(o),a=i.next();!a.done;a=i.next()){var l=a.value;if(l.token===e){var f=l.value;u(f)&&f()}}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}}}!function(e){e.TAG="TAG",e.TEXT="TEXT",e.COMMENT="COMMENT"}(I||(I={}));var Z,ee=(Z=function(e,t){return Z=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Z(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Z(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),te=function(){return te=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(o),a=i.next();!a.done;a=i.next()){var l=a.value;if("slot"!==l&&t[l]!==e[l])return!0}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return!1},Te=function(e){return P(e)&&e.token===Se};function Oe(e,t){return void 0===t&&(t=ke),Ee(H((function(t,n){return n&&(t.ref=n),e(t)}),{token:Se,shouldUpdate:t}))}var He=H((function(e){return e.slot}),{token:Se});function Ie(e,t){return void 0===t&&(t=!1),function(e,t){var n=function(e){return be(e)||P(e)};if(v(e)?n(e[0]):n(e)){var r=He({slot:ge({slot:e})});return r.shouldUpdate=function(){return t},r}return e}(e(),t)}function Pe(e,t){var n=W.get().hook,r=n.idx,o=n.values;if(f(o[r])){var i=Ie(e);return o[r]={deps:t,value:i},n.idx++,i}var a=o[r],l=S(t,a.deps),u=l?e:function(){return a.value};return a.deps=t,a.value=Ie(u,l),n.idx++,a.value}var Ne,je,Ce={scheduleCallback:function(){throw new Error("scheduleCallback not installed by renderer")},shouldYeildToHost:function(){throw new Error("shouldYeildToHost not installed by renderer")},createNativeElement:function(){throw new Error("createNativeElement not installed by renderer")},applyCommits:function(){throw new Error("applyCommits not installed by renderer")},detectIsPortal:function(){throw new Error("detectIsPortal not installed by renderer")},unmountPortal:function(){throw new Error("unmountPortal not installed by renderer")}};!function(e){e.PLACEMENT="PLACEMENT",e.UPDATE="UPDATE",e.DELETION="DELETION",e.SKIP="SKIP"}(je||(je={}));var Fe=((Ne={})[je.PLACEMENT]=!0,Ne[je.SKIP]=!0,Ne),Le=Q(Symbol("use-layout-effect"),z),Me=Le.useEffect,Ae=Le.hasEffects,Ue=Le.cleanupEffects;function De(e){for(var t=e.fiber,n=e.onLoop,r=t,o=!0,i=!1,a=!1,l=new Map,u=function(e){return!l.get(e)};r&&(n({nextFiber:r,isReturn:i,resetIsDeepWalking:function(){return o=!1},stop:function(){return a=!0}}),!a);)if(r.child&&o&&u(r.child))i=!1,r=f=r.child,l.set(f,!0);else if(r.nextSibling&&u(r.nextSibling)){var f=r.nextSibling;o=!0,i=!1,r=f,l.set(f,!0)}else r.parent&&r.parent===t&&r.parent.nextSibling&&u(r.parent.nextSibling)?(f=r.parent.nextSibling,o=!0,i=!1,r=f,l.set(f,!0)):r.parent&&r.parent!==t?(o=!1,i=!0,r=r.parent):r=null}function Ve(e){(e.effectHost||e.layoutEffectHost)&&De({fiber:e,onLoop:function(t){var n=t.nextFiber,r=t.isReturn,o=t.stop;if(n===e.nextSibling||e.transposition)return o();!r&&P(n.instance)&&(Ue(n.hook),J(n.hook))}}),e.portalHost&&Ce.unmountPortal(e)}function Re(e,t){f(e)||(Ve(V.get(e)),B.mapUnsubscribers(e),L.remove(e),t())}var We=function(){return We=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},Be=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Ge=function(){function e(e){this.nativeElement=e.nativeElement||null,this.parent=e.parent||null,this.child=e.child||null,this.nextSibling=e.nextSibling||null,this.alternate=e.alternate||null,this.effectTag=e.effectTag||null,this.instance=e.instance||null,this.hook=e.hook||{idx:0,values:[]},this.shadow=e.shadow||null,this.provider=e.provider||null,this.transposition=!f(e.transposition)&&e.transposition,this.mountedToHost=!f(e.mountedToHost)||!1,this.portalHost=!f(e.portalHost)&&e.portalHost,this.effectHost=!f(e.effectHost)&&e.effectHost,this.layoutEffectHost=!f(e.layoutEffectHost)&&e.layoutEffectHost,this.childrenCount=e.childrenCount||0,this.marker=e.marker||"",this.isUsed=e.isUsed||!1}return e.prototype.markPortalHost=function(){this.portalHost=!0,this.parent&&!this.parent.portalHost&&this.parent.markPortalHost()},e.prototype.markEffectHost=function(){this.effectHost=!0,this.parent&&!this.parent.effectHost&&this.parent.markEffectHost()},e.prototype.markLayoutEffectHost=function(){this.layoutEffectHost=!0,this.parent&&!this.parent.layoutEffectHost&&this.parent.markLayoutEffectHost()},e.prototype.setError=function(e){"function"==typeof this.catchException?this.catchException(e):this.parent&&this.parent.setError(e)},e}();function Ye(){for(var e=D.get(),t=R.get(),n=!1,r=Boolean(t);t&&!n;)t=ze(t),R.set(t),r=Boolean(t),n=Ce.shouldYeildToHost();return!t&&e&&function(){var e,t,n,r,o,i=D.get(),a=_.get(),l=K.get(),u=Boolean(null===(n=i.alternate)||void 0===n?void 0:n.effectHost),f=Boolean(null===(r=i.alternate)||void 0===r?void 0:r.layoutEffectHost),c=Boolean(null===(o=i.alternate)||void 0===o?void 0:o.portalHost);if(u||f||c)try{for(var s=Ke(l),d=s.next();!d.done;d=s.next())Ve(d.value)}catch(t){e={error:t}}finally{try{d&&!d.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}De({fiber:i.child,onLoop:function(e){var t=e.nextFiber,n=e.isReturn,r=e.resetIsDeepWalking;t.effectTag===je.SKIP?r():n||Ce.applyCommits(t),t&&t.shadow&&(t.shadow=null)}}),function(){var e,t,n,r,o=z.get(),u=Y.get();try{for(var f=Ke(l),c=f.next();!c.done;c=f.next()){var s=c.value;Ce.applyCommits(s)}}catch(t){e={error:t}}finally{try{c&&!c.done&&(t=f.return)&&t.call(f)}finally{if(e)throw e.error}}K.set([]),D.set(null);try{for(var d=Ke(o),p=d.next();!p.done;p=d.next())(0,p.value)()}catch(e){n={error:e}}finally{try{p&&!p.done&&(r=d.return)&&r.call(d)}finally{if(n)throw n.error}}setTimeout((function(){var e,t;try{for(var n=Ke(u),r=n.next();!r.done;r=n.next())(0,r.value)()}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}})),z.reset(),Y.reset(),a?_.set(!1):V.set(i)}()}(),r}function ze(e){for(var t=!0,n=e,r=e.shadow,o=e.instance;;){if(t=G.deepWalking.get(),n.hook.idx=0,t)if(at(o)&&o.children.length>0){var i=$e({nextFiber:n,shadow:r,instance:o}),a=i.performedFiber;if(n=i.performedNextFiber,r=i.performedShadow,o=i.performedInstance,a)return a}else{var l=qe({nextFiber:n,shadow:r,instance:o});if(a=l.performedFiber,n=l.performedNextFiber,r=l.performedShadow,o=l.performedInstance,a)return a}else{var u=qe({nextFiber:n,shadow:r,instance:o});if(a=u.performedFiber,n=u.performedNextFiber,r=u.performedShadow,o=u.performedInstance,a)return a}if(Xe(n),null===n.parent)return null}}function Xe(e){var t,n;if(e.marker===l){var r=(null===(n=e.child)||void 0===n?void 0:n.alternate)||null,o=e.child||null;if(r&&o&&r.nextSibling&&!o.nextSibling){for(var i=r.nextSibling,a=[];i;)i.effectTag=je.DELETION,a.push(i),i=i.nextSibling;(t=K.get()).push.apply(t,Be([],_e(a),!1))}}}function $e(e){G.jumpToChild();var t=e.nextFiber,n=e.shadow,r=e.instance;n=n?n.child:null;var o=function(e){for(var t=e.alternate&&e.alternate.effectTag!==je.DELETION?e.alternate.child:null;t&&t.effectTag===je.DELETION;)t=t.nextSibling;return t}(t),i=ut({shadow:n,alternate:o,instance:r}),a=n?n.provider:o?o.provider:null,l=new Ge({hook:i,provider:a});W.set(l),l.parent=t;var u=et({instance:r,idx:0,fiber:l,alternate:o});return r=u.performedInstance||r,n=u.performedShadow||n,o&&Qe({fiber:l,alternate:o,instance:r}),Je({fiber:l,alternate:o,instance:r}),l=o?Ze({fiber:l,alternate:o,instance:r}):l,t.child=l,l.parent=t,l.shadow=n,t=l,Fe[l.parent.effectTag]&&(l.effectTag=l.parent.effectTag),{performedFiber:t,performedNextFiber:t,performedShadow:n,performedInstance:r}}function qe(e){G.jumpToSibling();var t=e.nextFiber,n=e.shadow,r=e.instance,o=t.parent.instance,i=G.getIndex();if(at(o)&&o.children[i]){G.deepWalking.set(!0),n=n?n.nextSibling:null;var a=function(e){for(var t,n=(null===(t=e.alternate)||void 0===t?void 0:t.nextSibling)||null;n&&n.effectTag===je.DELETION;)n=n.nextSibling;return n}(t),l=ut({shadow:n,alternate:a,instance:r}),u=n?n.provider:a?a.provider:null,f=new Ge({hook:l,provider:u});W.set(f),f.parent=t.parent;var c=et({instance:o,idx:i,fiber:f,alternate:a});return r=c.performedInstance||r,n=c.performedShadow||n,a&&Qe({fiber:f,alternate:a,instance:r}),Je({fiber:f,alternate:a,instance:r}),(f=a?Ze({fiber:f,alternate:a,instance:r}):f).parent=t.parent,t.nextSibling=f,f.shadow=n,t=f,Fe[f.parent.effectTag]&&(f.effectTag=f.parent.effectTag),{performedFiber:t,performedNextFiber:t,performedShadow:n,performedInstance:r}}return G.jumpToParent(),G.deepWalking.set(!1),n=n?n.parent:null,r=(t=t.parent).instance,at(t.instance)&&(t.instance.children=[]),{performedFiber:null,performedNextFiber:t,performedShadow:n,performedInstance:r}}function Je(e){var t=e.fiber,n=e.alternate,r=e.instance,o=(n?nt(n.instance):null)!==(n?nt(r):null),i=Boolean(n)&&it(n.instance)===it(r)&&!o;t.instance=r,t.alternate=n||null,t.nativeElement=i?n.nativeElement:null,t.effectTag=i?je.UPDATE:je.PLACEMENT,t.mountedToHost=!!t.nativeElement&&i,at(t.instance)&&(t.childrenCount=t.instance.children.length),t.alternate&&(t.alternate.shadow=null,t.alternate.alternate=null),!t.nativeElement&&le(t.instance)&&(t.nativeElement=Ce.createNativeElement(t))}function Qe(e){e.fiber;var t=e.alternate,n=e.instance,r=it(t.instance),o=it(n)===r,i=nt(t.instance)===nt(n);if(t.isUsed=!0,o&&i){if(at(t.instance)&&at(n)){var a=t.childrenCount,l=n.children.length;if(a!==l){var u=la,c=at(n)?n.children:[],s=function(e,t){for(var n=e,r=0,o=[],i=[];n||r0;v||p.length,u&&function(){var e,n,r,o,i,u=rt(d,p);if(u.length>0){var f=function(e){for(var t=e,n={};t;){var r=nt(t.instance);y(r)||(n[r]=t),t=t.nextSibling}return n}(t.child);try{for(var c=Ke(u),s=c.next();!s.done;s=c.next()){var h=f[s.value]||null;h&&(h.effectTag=je.DELETION,K.get().push(h))}}catch(t){e={error:t}}finally{try{s&&!s.done&&(n=c.return)&&n.call(c)}finally{if(e)throw e.error}}}else if(!v){var b=a-l,m=E(function(e){for(var t=[],n=e;n;)t.push(n),n=n.nextSibling;return t}(t.child),b);try{for(var g=Ke(m),x=g.next();!x.done;x=g.next())x.value.effectTag=je.DELETION}catch(e){r={error:e}}finally{try{x&&!x.done&&(o=g.return)&&o.call(g)}finally{if(r)throw r.error}}(i=K.get()).push.apply(i,Be([],_e(m),!1))}}(),f&&function(){var e,n,r=rt(p,d);if(r.length>0){var o=x(r,(function(e){return e})),i=function(e){for(var t=e,n=0,r={};t;)r[n]=t,n++,t=t.nextSibling;return r}(t.child),a={},l=0;try{for(var u=Ke(p),f=u.next();!f.done;f=u.next()){var c=f.value;if(a[c]=!0,c!==d[l]&&o[c]){var s=new Ge({instance:ye(),parent:t,effectTag:je.PLACEMENT});if(0===l)s.nextSibling=t.child,t.child=s;else{var v=i[l]||null;v&&(s.nextSibling=v)}}l++}}catch(t){e={error:t}}finally{try{f&&!f.done&&(n=u.return)&&n.call(u)}finally{if(e)throw e.error}}}}()}}}else t.effectTag=je.DELETION,K.get().push(t)}function Ze(e){var t=e.fiber,n=e.alternate,r=e.instance;if(Te(t.instance)){var o=null,i=r,a=n.instance;if(i.type!==a.type)return t;var l=a.props,u=i.props;if(!i.shouldUpdate(l,u)){var f=null;for(G.deepWalking.set(!1),o=new Ge(We(We({},n),{alternate:n,effectTag:je.SKIP,nextSibling:n.nextSibling?n.nextSibling.effectTag===je.DELETION?null:n.nextSibling:null})),n.alternate=null,f=o.child;f;)f.parent=o,f=f.nextSibling;return o.effectHost&&t.markEffectHost(),o.layoutEffectHost&&t.markLayoutEffectHost(),o.portalHost&&t.markPortalHost(),o}}return t}function et(e){var t,n=e.instance,r=e.idx,o=e.fiber,i=e.alternate,a=null,l=null;if(at(n)){var u=v(n.children[r])?m([n.children[r]]):[n.children[r]];(t=n.children).splice.apply(t,Be([r,1],_e(u),!1)),a=n.children[r],l=i?function(e){var t=e.instance,n=e.fiber,r=e.alternate,o=nt(r.instance),i=nt(t),a=null;return o!==i&&(a=function(e,t){if(y(e))return null;for(var n=t;n;){if(e===nt(n.instance))return n;n=n.nextSibling}return null}(i,r.parent.child),a&&(n.hook=a.hook,n.provider=a.provider,r.transposition=!0)),a}({instance:a,fiber:o,alternate:i}):l,a=tt(o,a)}return P(a)&&(q(o)&&o.markEffectHost(),Ae(o)&&o.markLayoutEffectHost(),Ce.detectIsPortal(a)&&o.markPortalHost()),{performedInstance:a,performedShadow:l}}function tt(e,t){var n=P(t),r=t;if(n)try{var o=r.type(r.props,r.ref);r.children=v(o)?m([o]):[o]}catch(t){r.children=[],e.setError(t),b(t)}else be(t)&&(t=t());if(at(t)){for(var i=0;i=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(l.subscribers),r=n.next();!r.done;r=n.next())(0,r.value)(o)}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}}),[o]),l.value=o,i}),{displayName:"".concat(n,".Provider")})}(e,t,n),e.Consumer=function(e,t){return H((function(t){var n=t.slot,r=st(e);return u(n)?n(r):null}),{displayName:"".concat(t,".Consumer")})}(e,n)}var vt=function(){return vt=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}(e),!1):[e]:[]}function yt(e,t){for(var n=[],r=2;r0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}(mt(!1),2),i=o[0],a=o[1],l=bt((function(){return a(!0)}),[]),u=Pe((function(){return{fallback:t,isLoaded:i,trigger:l}}),[t,i]);return gt.Provider({value:u,slot:r?n:null})})),Et=Symbol("lazy");function wt(e){return Ee(H((function(t,n){var r=st(gt),o=r.fallback,i=r.trigger,a=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}(mt({component:null}),2),l=a[0],u=a[1];return $((function(){(function(e){return new Promise((function(t){e().then((function(e){if(!e.default)throw new Error("lazy loaded component should be exported as default!");t(e.default)}))}))})(e).then((function(e){u({component:e})}))}),[]),$((function(){l.component&&i()}),[l.component]),l.component?l.component(t,n):o}),{token:Et}))}var St=function(e){return P(e)&&e.token===Et};function kt(e,t){var r=(t||{}).timeoutMs,o=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}(mt(e,{priority:n.LOW,timeoutMs:r}),2),i=o[0],a=o[1];return $((function(){a(e)}),[e]),i}function Tt(){var e=W.get(),t=ct(),n=Pe((function(){return{error:null}}),[]);return e.catchException=function(e){n.error=e,t()},$((function(){n.error=null}),[n.error]),n.error}var Ot=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},Ht=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}(mt(Pe((function(){return u(n)?n(t):t}),[])),2),o=r[0],i=r[1],a=bt((function(t){return i((function(n){return e(n,t)}))}),[]);return[o,a]}function jt(e){return void 0===e&&(e=null),Pe((function(){return{current:e}}),[])}return t})())); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("DarkCore",[],t):"object"==typeof exports?exports.DarkCore=t():e.DarkCore=t()}(self,(()=>(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{$$memo:()=>Se,ATTR_KEY:()=>i,ATTR_REF:()=>a,Comment:()=>ve,CommentVirtualNode:()=>ae,ComponentFactory:()=>O,EMPTY_NODE:()=>o,EffectTag:()=>je,Fiber:()=>Ge,Fragment:()=>ge,NodeType:()=>I,PARTIAL_UPDATE:()=>l,ROOT:()=>r,Suspense:()=>xt,SuspenseContext:()=>gt,TagVirtualNode:()=>oe,TaskPriority:()=>n,Text:()=>pe,TextVirtualNode:()=>ie,View:()=>he,VirtualNode:()=>re,cloneTagMap:()=>Fe,componentFiberHelper:()=>W,createComponent:()=>H,createContext:()=>dt,createEmptyVirtualNode:()=>ye,createHook:()=>lt,createUpdateCallback:()=>ft,currentRootHelper:()=>V,deletionsHelper:()=>K,detectIsArray:()=>v,detectIsBoolean:()=>p,detectIsCommentVirtualNode:()=>fe,detectIsComponentFactory:()=>P,detectIsDepsDifferent:()=>S,detectIsEmpty:()=>y,detectIsEmptyVirtualNode:()=>se,detectIsFragment:()=>xe,detectIsFunction:()=>u,detectIsLazy:()=>St,detectIsMemo:()=>Te,detectIsNull:()=>h,detectIsNumber:()=>c,detectIsObject:()=>d,detectIsRef:()=>we,detectIsString:()=>s,detectIsTagVirtualNode:()=>ue,detectIsTextVirtualNode:()=>ce,detectIsUndefined:()=>f,detectIsVirtualNode:()=>le,detectIsVirtualNodeFactory:()=>be,dummyFn:()=>w,effectStoreHelper:()=>L,effectsHelper:()=>Y,error:()=>b,eventsHelper:()=>B,fiberMountHelper:()=>G,flatten:()=>m,forwardRef:()=>Ee,fromHookUpdateHelper:()=>_,getComponentFactoryKey:()=>N,getRootId:()=>M,getTime:()=>g,getVirtualNodeKey:()=>de,h:()=>yt,hasChildrenProp:()=>at,keyBy:()=>x,layoutEffectsHelper:()=>z,lazy:()=>wt,memo:()=>Oe,nextUnitOfWorkHelper:()=>R,platform:()=>Ce,takeListFromEnd:()=>E,unmountRoot:()=>Re,useCallback:()=>bt,useContext:()=>st,useDeferredValue:()=>kt,useEffect:()=>$,useError:()=>Tt,useEvent:()=>It,useImperativeHandle:()=>Pt,useLayoutEffect:()=>Me,useMemo:()=>Pe,useReducer:()=>Nt,useRef:()=>jt,useState:()=>mt,useUpdate:()=>ct,walkFiber:()=>De,wipRootHelper:()=>D,workLoop:()=>Ye});var n,r="root",o="dark:matter",i="key",a="ref",l="partial-update";!function(e){e[e.HIGH=2]="HIGH",e[e.NORMAL=1]="NORMAL",e[e.LOW=0]="LOW"}(n||(n={}));var u=function(e){return"function"==typeof e},f=function(e){return void 0===e},c=function(e){return"number"==typeof e},s=function(e){return"string"==typeof e},d=function(e){return"object"==typeof e},p=function(e){return"boolean"==typeof e},v=function(e){return Array.isArray(e)},h=function(e){return null===e},y=function(e){return h(e)||f(e)};function b(e){!f(console)&&console.error(e)}function m(e){var t=[],n={0:{idx:0,source:e}},r=0;do{var o=n[r],i=o.source,a=o.idx,l=i[a];a>=i.length?n[--r].idx++:v(l)?n[++r]={idx:0,source:l}:(t.push(l),n[r].idx++)}while(r>0||n[r].idx0&&t.length>0)for(var n=0;n=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(o),a=i.next();!a.done;a=i.next()){var l=a.value;if(l.token===e){var f=l.value;u(f)&&f()}}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}}}!function(e){e.TAG="TAG",e.TEXT="TEXT",e.COMMENT="COMMENT"}(I||(I={}));var Z,ee=(Z=function(e,t){return Z=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Z(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Z(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),te=function(){return te=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(o),a=i.next();!a.done;a=i.next()){var l=a.value;if("slot"!==l&&t[l]!==e[l])return!0}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return!1},Te=function(e){return P(e)&&e.token===Se};function Oe(e,t){return void 0===t&&(t=ke),Ee(H((function(t,n){return n&&(t.ref=n),e(t)}),{token:Se,shouldUpdate:t}))}var He=H((function(e){return e.slot}),{token:Se});function Ie(e,t){return void 0===t&&(t=!1),function(e,t){var n=function(e){return be(e)||P(e)};if(v(e)?n(e[0]):n(e)){var r=He({slot:ge({slot:e})});return r.shouldUpdate=function(){return t},r}return e}(e(),t)}function Pe(e,t){var n=W.get().hook,r=n.idx,o=n.values;if(f(o[r])){var i=Ie(e);return o[r]={deps:t,value:i},n.idx++,i}var a=o[r],l=S(t,a.deps),u=l?e:function(){return a.value};return a.deps=t,a.value=Ie(u,l),n.idx++,a.value}var Ne,je,Ce={scheduleCallback:function(){throw new Error("scheduleCallback not installed by renderer")},shouldYeildToHost:function(){throw new Error("shouldYeildToHost not installed by renderer")},createNativeElement:function(){throw new Error("createNativeElement not installed by renderer")},applyCommits:function(){throw new Error("applyCommits not installed by renderer")},detectIsPortal:function(){throw new Error("detectIsPortal not installed by renderer")},unmountPortal:function(){throw new Error("unmountPortal not installed by renderer")}};!function(e){e.PLACEMENT="PLACEMENT",e.UPDATE="UPDATE",e.DELETION="DELETION",e.SKIP="SKIP"}(je||(je={}));var Fe=((Ne={})[je.PLACEMENT]=!0,Ne[je.SKIP]=!0,Ne),Le=Q(Symbol("use-layout-effect"),z),Me=Le.useEffect,Ae=Le.hasEffects,Ue=Le.cleanupEffects;function De(e){for(var t=e.fiber,n=e.onLoop,r=t,o=!0,i=!1,a=!1,l=new Map,u=function(e){return!l.get(e)};r&&(n({nextFiber:r,isReturn:i,resetIsDeepWalking:function(){return o=!1},stop:function(){return a=!0}}),!a);)if(r.child&&o&&u(r.child))i=!1,r=f=r.child,l.set(f,!0);else if(r.nextSibling&&u(r.nextSibling)){var f=r.nextSibling;o=!0,i=!1,r=f,l.set(f,!0)}else r.parent&&r.parent===t&&r.parent.nextSibling&&u(r.parent.nextSibling)?(f=r.parent.nextSibling,o=!0,i=!1,r=f,l.set(f,!0)):r.parent&&r.parent!==t?(o=!1,i=!0,r=r.parent):r=null}function Ve(e){(e.effectHost||e.layoutEffectHost)&&De({fiber:e,onLoop:function(t){var n=t.nextFiber,r=t.isReturn,o=t.stop;if(n===e.nextSibling||e.transposition)return o();!r&&P(n.instance)&&(Ue(n.hook),J(n.hook))}}),e.portalHost&&Ce.unmountPortal(e)}function Re(e,t){f(e)||(Ve(V.get(e)),B.mapUnsubscribers(e),L.remove(e),t())}var We=function(){return We=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},Be=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Ge=function(){function e(e){this.nativeElement=e.nativeElement||null,this.parent=e.parent||null,this.child=e.child||null,this.nextSibling=e.nextSibling||null,this.alternate=e.alternate||null,this.effectTag=e.effectTag||null,this.instance=e.instance||null,this.hook=e.hook||{idx:0,values:[]},this.shadow=e.shadow||null,this.provider=e.provider||null,this.transposition=!f(e.transposition)&&e.transposition,this.mountedToHost=!f(e.mountedToHost)||!1,this.portalHost=!f(e.portalHost)&&e.portalHost,this.effectHost=!f(e.effectHost)&&e.effectHost,this.layoutEffectHost=!f(e.layoutEffectHost)&&e.layoutEffectHost,this.childrenCount=e.childrenCount||0,this.marker=e.marker||"",this.isUsed=e.isUsed||!1}return e.prototype.markPortalHost=function(){this.portalHost=!0,this.parent&&!this.parent.portalHost&&this.parent.markPortalHost()},e.prototype.markEffectHost=function(){this.effectHost=!0,this.parent&&!this.parent.effectHost&&this.parent.markEffectHost()},e.prototype.markLayoutEffectHost=function(){this.layoutEffectHost=!0,this.parent&&!this.parent.layoutEffectHost&&this.parent.markLayoutEffectHost()},e.prototype.setError=function(e){"function"==typeof this.catchException?this.catchException(e):this.parent&&this.parent.setError(e)},e}();function Ye(){for(var e=D.get(),t=R.get(),n=!1,r=Boolean(t);t&&!n;)t=ze(t),R.set(t),r=Boolean(t),n=Ce.shouldYeildToHost();return!t&&e&&function(){var e,t,n,r,o,i=D.get(),a=_.get(),l=K.get(),u=Boolean(null===(n=i.alternate)||void 0===n?void 0:n.effectHost),f=Boolean(null===(r=i.alternate)||void 0===r?void 0:r.layoutEffectHost),c=Boolean(null===(o=i.alternate)||void 0===o?void 0:o.portalHost);if(u||f||c)try{for(var s=Ke(l),d=s.next();!d.done;d=s.next())Ve(d.value)}catch(t){e={error:t}}finally{try{d&&!d.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}De({fiber:i.child,onLoop:function(e){var t=e.nextFiber,n=e.isReturn,r=e.resetIsDeepWalking;t.effectTag===je.SKIP?r():n||Ce.applyCommits(t),t&&t.shadow&&(t.shadow=null)}}),function(){var e,t,n,r,o=z.get(),u=Y.get();try{for(var f=Ke(l),c=f.next();!c.done;c=f.next()){var s=c.value;Ce.applyCommits(s)}}catch(t){e={error:t}}finally{try{c&&!c.done&&(t=f.return)&&t.call(f)}finally{if(e)throw e.error}}K.set([]),D.set(null);try{for(var d=Ke(o),p=d.next();!p.done;p=d.next())(0,p.value)()}catch(e){n={error:e}}finally{try{p&&!p.done&&(r=d.return)&&r.call(d)}finally{if(n)throw n.error}}setTimeout((function(){var e,t;try{for(var n=Ke(u),r=n.next();!r.done;r=n.next())(0,r.value)()}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}})),z.reset(),Y.reset(),a?_.set(!1):V.set(i)}()}(),r}function ze(e){for(var t=!0,n=e,r=e.shadow,o=e.instance;;){if(t=G.deepWalking.get(),n.hook.idx=0,t)if(at(o)&&o.children.length>0){var i=$e({nextFiber:n,shadow:r,instance:o}),a=i.performedFiber;if(n=i.performedNextFiber,r=i.performedShadow,o=i.performedInstance,a)return a}else{var l=qe({nextFiber:n,shadow:r,instance:o});if(a=l.performedFiber,n=l.performedNextFiber,r=l.performedShadow,o=l.performedInstance,a)return a}else{var u=qe({nextFiber:n,shadow:r,instance:o});if(a=u.performedFiber,n=u.performedNextFiber,r=u.performedShadow,o=u.performedInstance,a)return a}if(Xe(n),null===n.parent)return null}}function Xe(e){var t,n;if(e.marker===l){var r=(null===(n=e.child)||void 0===n?void 0:n.alternate)||null,o=e.child||null;if(r&&o&&r.nextSibling&&!o.nextSibling){for(var i=r.nextSibling,a=[];i;)i.effectTag=je.DELETION,a.push(i),i=i.nextSibling;(t=K.get()).push.apply(t,Be([],_e(a),!1))}}}function $e(e){G.jumpToChild();var t=e.nextFiber,n=e.shadow,r=e.instance;n=n?n.child:null;var o=function(e){for(var t=e.alternate&&e.alternate.effectTag!==je.DELETION?e.alternate.child:null;t&&t.effectTag===je.DELETION;)t=t.nextSibling;return t}(t),i=ut({shadow:n,alternate:o,instance:r}),a=n?n.provider:o?o.provider:null,l=new Ge({hook:i,provider:a});W.set(l),l.parent=t;var u=et({instance:r,idx:0,fiber:l,alternate:o});return r=u.performedInstance||r,n=u.performedShadow||n,o&&Qe({alternate:o,instance:r}),Je({fiber:l,alternate:o,instance:r}),l=o?Ze({fiber:l,alternate:o,instance:r}):l,t.child=l,l.parent=t,l.shadow=n,t=l,Fe[l.parent.effectTag]&&(l.effectTag=l.parent.effectTag),{performedFiber:t,performedNextFiber:t,performedShadow:n,performedInstance:r}}function qe(e){G.jumpToSibling();var t=e.nextFiber,n=e.shadow,r=e.instance,o=t.parent.instance,i=G.getIndex();if(at(o)&&o.children[i]){G.deepWalking.set(!0),n=n?n.nextSibling:null;var a=function(e){for(var t,n=(null===(t=e.alternate)||void 0===t?void 0:t.nextSibling)||null;n&&n.effectTag===je.DELETION;)n=n.nextSibling;return n}(t),l=ut({shadow:n,alternate:a,instance:r}),u=n?n.provider:a?a.provider:null,f=new Ge({hook:l,provider:u});W.set(f),f.parent=t.parent;var c=et({instance:o,idx:i,fiber:f,alternate:a});return r=c.performedInstance||r,n=c.performedShadow||n,a&&Qe({alternate:a,instance:r}),Je({fiber:f,alternate:a,instance:r}),(f=a?Ze({fiber:f,alternate:a,instance:r}):f).parent=t.parent,t.nextSibling=f,f.shadow=n,t=f,Fe[f.parent.effectTag]&&(f.effectTag=f.parent.effectTag),{performedFiber:t,performedNextFiber:t,performedShadow:n,performedInstance:r}}return G.jumpToParent(),G.deepWalking.set(!1),n=n?n.parent:null,r=(t=t.parent).instance,at(t.instance)&&(t.instance.children=[]),{performedFiber:null,performedNextFiber:t,performedShadow:n,performedInstance:r}}function Je(e){var t=e.fiber,n=e.alternate,r=e.instance,o=(n?nt(n.instance):null)!==(n?nt(r):null),i=Boolean(n)&&it(n.instance)===it(r)&&!o;t.instance=r,t.alternate=n||null,t.nativeElement=i?n.nativeElement:null,t.effectTag=i?je.UPDATE:je.PLACEMENT,t.mountedToHost=!!t.nativeElement&&i,at(t.instance)&&(t.childrenCount=t.instance.children.length),t.alternate&&(t.alternate.shadow=null,t.alternate.alternate=null),!t.nativeElement&&le(t.instance)&&(t.nativeElement=Ce.createNativeElement(t))}function Qe(e){var t=e.alternate,n=e.instance,r=it(t.instance),o=it(n)===r,i=nt(t.instance)===nt(n);if(t.isUsed=!0,o&&i){if(at(t.instance)&&at(n)){var a=t.childrenCount,l=n.children.length;if(a!==l){var u=la,c=at(n)?n.children:[],s=function(e,t){for(var n=e,r=0,o=[],i=[];n||r0;v||p.length,u&&function(){var e,n,r,o,i,u=rt(d,p);if(u.length>0){var f=function(e){for(var t=e,n={};t;){var r=nt(t.instance);y(r)||(n[r]=t),t=t.nextSibling}return n}(t.child);try{for(var c=Ke(u),s=c.next();!s.done;s=c.next())(x=f[s.value]||null)&&(x.effectTag=je.DELETION,K.get().push(x))}catch(t){e={error:t}}finally{try{s&&!s.done&&(n=c.return)&&n.call(c)}finally{if(e)throw e.error}}}else if(!v){var h=a-l,b=E(function(e){for(var t=[],n=e;n;)t.push(n),n=n.nextSibling;return t}(t.child),h);try{for(var m=Ke(b),g=m.next();!g.done;g=m.next()){var x;(x=g.value).effectTag=je.DELETION}}catch(e){r={error:e}}finally{try{g&&!g.done&&(o=m.return)&&o.call(m)}finally{if(r)throw r.error}}(i=K.get()).push.apply(i,Be([],_e(b),!1))}}(),f&&function(){var e,n,r=rt(p,d);if(r.length>0){var o=x(r,(function(e){return e})),i=function(e){for(var t=e,n=0,r={};t;)r[n]=t,n++,t=t.nextSibling;return r}(t.child),a={},l=0;try{for(var u=Ke(p),f=u.next();!f.done;f=u.next()){var c=f.value;if(a[c]=!0,c!==d[l]&&o[c]){var s=new Ge({instance:ye(),parent:t,effectTag:je.PLACEMENT});if(0===l)s.nextSibling=t.child,t.child=s;else{var v=i[l]||null;v&&(s.nextSibling=v)}}l++}}catch(t){e={error:t}}finally{try{f&&!f.done&&(n=u.return)&&n.call(u)}finally{if(e)throw e.error}}}}()}}}else t.effectTag=je.DELETION,K.get().push(t)}function Ze(e){var t=e.fiber,n=e.alternate,r=e.instance;if(Te(t.instance)){var o=null,i=r,a=n.instance;if(i.type!==a.type)return t;var l=a.props,u=i.props;if(!i.shouldUpdate(l,u)){var f=null;for(G.deepWalking.set(!1),o=new Ge(We(We({},n),{alternate:n,effectTag:je.SKIP,nextSibling:n.nextSibling?n.nextSibling.effectTag===je.DELETION?null:n.nextSibling:null})),n.alternate=null,f=o.child;f;)f.parent=o,f=f.nextSibling;return o.effectHost&&t.markEffectHost(),o.layoutEffectHost&&t.markLayoutEffectHost(),o.portalHost&&t.markPortalHost(),o}}return t}function et(e){var t,n=e.instance,r=e.idx,o=e.fiber,i=e.alternate,a=null,l=null;if(at(n)){var u=v(n.children[r])?m([n.children[r]]):[n.children[r]];(t=n.children).splice.apply(t,Be([r,1],_e(u),!1)),a=n.children[r],l=i?function(e){var t=e.instance,n=e.fiber,r=e.alternate,o=nt(r.instance),i=nt(t),a=null;return o!==i&&(a=function(e,t){if(y(e))return null;for(var n=t;n;){if(e===nt(n.instance))return n;n=n.nextSibling}return null}(i,r.parent.child),a&&(n.hook=a.hook,n.provider=a.provider,r.transposition=!0)),a}({instance:a,fiber:o,alternate:i}):l,a=tt(o,a)}return P(a)&&(q(o)&&o.markEffectHost(),Ae(o)&&o.markLayoutEffectHost(),Ce.detectIsPortal(a)&&o.markPortalHost()),{performedInstance:a,performedShadow:l}}function tt(e,t){var n=P(t),r=t;if(n)try{var o=r.type(r.props,r.ref);r.children=v(o)?m([o]):[o]}catch(t){r.children=[],e.setError(t),b(t)}else be(t)&&(t=t());if(at(t)){for(var i=0;i=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(l.subscribers),r=n.next();!r.done;r=n.next())(0,r.value)(o)}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}}),[o]),l.value=o,i}),{displayName:"".concat(n,".Provider")})}(e,t,n),e.Consumer=function(e,t){return H((function(t){var n=t.slot,r=st(e);return u(n)?n(r):null}),{displayName:"".concat(t,".Consumer")})}(e,n)}var vt=function(){return vt=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}(e),!1):[e]:[]}function yt(e,t){for(var n=[],r=2;r0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}(mt(!1),2),i=o[0],a=o[1],l=bt((function(){return a(!0)}),[]),u=Pe((function(){return{fallback:t,isLoaded:i,trigger:l}}),[t,i]);return gt.Provider({value:u,slot:r?n:null})})),Et=Symbol("lazy");function wt(e){return Ee(H((function(t,n){var r=st(gt),o=r.fallback,i=r.trigger,a=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}(mt({component:null}),2),l=a[0],u=a[1];return $((function(){(function(e){return new Promise((function(t){e().then((function(e){if(!e.default)throw new Error("lazy loaded component should be exported as default!");t(e.default)}))}))})(e).then((function(e){u({component:e})}))}),[]),$((function(){l.component&&i()}),[l.component]),l.component?l.component(t,n):o}),{token:Et}))}var St=function(e){return P(e)&&e.token===Et};function kt(e,t){var r=(t||{}).timeoutMs,o=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}(mt(e,{priority:n.LOW,timeoutMs:r}),2),i=o[0],a=o[1];return $((function(){a(e)}),[e]),i}function Tt(){var e=W.get(),t=ct(),n=Pe((function(){return{error:null}}),[]);return e.catchException=function(e){n.error=e,t()},$((function(){n.error=null}),[n.error]),n.error}var Ot=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},Ht=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}(mt(Pe((function(){return u(n)?n(t):t}),[])),2),o=r[0],i=r[1],a=bt((function(t){return i((function(n){return e(n,t)}))}),[]);return[o,a]}function jt(e){return void 0===e&&(e=null),Pe((function(){return{current:e}}),[])}return t})())); //# sourceMappingURL=dark-core.production.min.js.map \ No newline at end of file diff --git a/packages/core/umd/dark-core.production.min.js.map b/packages/core/umd/dark-core.production.min.js.map index 0a2f7cc4..14135598 100644 --- a/packages/core/umd/dark-core.production.min.js.map +++ b/packages/core/umd/dark-core.production.min.js.map @@ -1 +1 @@ -{"version":3,"file":"dark-core.production.min.js","mappings":"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","sources":["webpack://DarkCore/webpack/universalModuleDefinition","webpack://DarkCore/webpack/bootstrap","webpack://DarkCore/webpack/runtime/define property getters","webpack://DarkCore/webpack/runtime/hasOwnProperty shorthand","webpack://DarkCore/webpack/runtime/make namespace object","webpack://DarkCore/./src/constants.ts","webpack://DarkCore/./src/helpers/index.ts","webpack://DarkCore/./src/component/component.ts","webpack://DarkCore/./src/view/types.ts","webpack://DarkCore/./src/scope/scope.ts","webpack://DarkCore/./src/use-effect/use-effect.ts","webpack://DarkCore/./src/view/view.ts","webpack://DarkCore/./src/fragment/fragment.ts","webpack://DarkCore/./src/ref/ref.ts","webpack://DarkCore/./src/memo/memo.ts","webpack://DarkCore/./src/use-memo/use-memo.ts","webpack://DarkCore/./src/platform/platform.ts","webpack://DarkCore/./src/fiber/types.ts","webpack://DarkCore/./src/use-layout-effect/use-layout-effect.ts","webpack://DarkCore/./src/walk/walk.ts","webpack://DarkCore/./src/unmount/unmount.ts","webpack://DarkCore/./src/fiber/fiber.ts","webpack://DarkCore/./src/use-update/use-update.ts","webpack://DarkCore/./src/use-context/use-context.ts","webpack://DarkCore/./src/context/context.ts","webpack://DarkCore/./src/element/element.ts","webpack://DarkCore/./src/use-callback/use-callback.ts","webpack://DarkCore/./src/use-state/use-state.ts","webpack://DarkCore/./src/suspense/suspense.ts","webpack://DarkCore/./src/lazy/lazy.ts","webpack://DarkCore/./src/use-deferred-value/use-deferred-value.ts","webpack://DarkCore/./src/use-error/use-error.ts","webpack://DarkCore/./src/use-event/use-event.ts","webpack://DarkCore/./src/use-imperative-handle/use-imperative-handle.ts","webpack://DarkCore/./src/use-reducer/use-reducer.ts","webpack://DarkCore/./src/use-ref/use-ref.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DarkCore\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DarkCore\"] = factory();\n\telse\n\t\troot[\"DarkCore\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export const ROOT = 'root';\r\nexport const EMPTY_NODE = 'dark:matter';\r\nexport const ATTR_KEY = 'key';\r\nexport const ATTR_REF = 'ref';\r\nexport const PARTIAL_UPDATE = 'partial-update';\r\n\r\nexport enum TaskPriority {\r\n HIGH = 2,\r\n NORMAL = 1,\r\n LOW = 0,\r\n}\r\n","import type { NestedArray } from '../shared';\r\n\r\nconst detectIsFunction = (o: any): o is Function => typeof o === 'function';\r\nconst detectIsUndefined = (o: any) => typeof o === 'undefined';\r\nconst detectIsNumber = (o: any) => typeof o === 'number';\r\nconst detectIsString = (o: any) => typeof o === 'string';\r\nconst detectIsObject = (o: any) => typeof o === 'object';\r\nconst detectIsBoolean = (o: any) => typeof o === 'boolean';\r\nconst detectIsArray = (o: any): o is Array => Array.isArray(o);\r\nconst detectIsNull = (o: any) => o === null;\r\nconst detectIsEmpty = (o: any) => detectIsNull(o) || detectIsUndefined(o);\r\n\r\nfunction error(str: string) {\r\n !detectIsUndefined(console) && console.error(str);\r\n}\r\n\r\nfunction flatten(source: Array>): Array {\r\n const list = [];\r\n const levelMap = { 0: { idx: 0, source } };\r\n let level = 0;\r\n\r\n do {\r\n const { source, idx } = levelMap[level];\r\n const item = source[idx];\r\n\r\n if (idx >= source.length) {\r\n level--;\r\n levelMap[level].idx++;\r\n continue;\r\n }\r\n\r\n if (detectIsArray(item)) {\r\n level++;\r\n levelMap[level] = {\r\n idx: 0,\r\n source: item,\r\n };\r\n } else {\r\n list.push(item);\r\n levelMap[level].idx++;\r\n }\r\n } while (level > 0 || levelMap[level].idx < levelMap[level].source.length);\r\n\r\n return list;\r\n}\r\n\r\nfunction getTime() {\r\n return Date.now();\r\n}\r\n\r\nfunction keyBy(\r\n list: Array,\r\n fn: (o: T) => string | number,\r\n value = false,\r\n): Record {\r\n return list.reduce((acc, x) => ((acc[fn(x)] = value ? x : true), acc), {});\r\n}\r\n\r\nfunction takeListFromEnd(source: Array, count: number) {\r\n return source.slice(source.length - count, source.length);\r\n}\r\n\r\nconst dummyFn = () => {};\r\n\r\nfunction detectIsDepsDifferent(deps: Array, prevDeps: Array): boolean {\r\n if (!detectIsUndefined(deps) && !detectIsUndefined(prevDeps) && deps.length > 0 && prevDeps.length > 0) {\r\n for (let i = 0; i < prevDeps.length; i++) {\r\n if (prevDeps[i] !== deps[i]) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport {\r\n detectIsFunction,\r\n detectIsUndefined,\r\n detectIsNumber,\r\n detectIsString,\r\n detectIsObject,\r\n detectIsBoolean,\r\n detectIsArray,\r\n detectIsNull,\r\n detectIsEmpty,\r\n error,\r\n flatten,\r\n getTime,\r\n keyBy,\r\n takeListFromEnd,\r\n dummyFn,\r\n detectIsDepsDifferent,\r\n};\r\n","import { ATTR_KEY } from '../constants';\r\nimport { error, detectIsEmpty } from '../helpers';\r\nimport type { DarkElementKey, DarkElementInstance } from '../shared';\r\nimport type { MutableRef } from '../ref';\r\nimport type { CreateElement, ComponentOptions, StandardComponentProps, SlotProps } from './types';\r\n\r\nconst $$component = Symbol('component');\r\nconst defaultOptions: ComponentOptions = {\r\n displayName: '',\r\n defaultProps: {},\r\n token: $$component,\r\n};\r\nclass ComponentFactory

{\r\n public type: CreateElement

;\r\n public token: Symbol;\r\n public props: P;\r\n public ref: MutableRef;\r\n public displayName: string;\r\n public children: Array = [];\r\n public shouldUpdate?: (props: P, nextProps: P) => boolean;\r\n\r\n constructor(options: ComponentFactory

) {\r\n this.type = options.type || null;\r\n this.token = options.token || null;\r\n this.props = options.props || null;\r\n this.ref = options.ref || null;\r\n this.displayName = options.displayName || '';\r\n this.shouldUpdate = options.shouldUpdate || null;\r\n }\r\n}\r\n\r\nfunction createComponent(\r\n createElement: CreateElement

,\r\n options: ComponentOptions

= {},\r\n) {\r\n type Props = P & StandardComponentProps;\r\n const computedOptions = { ...defaultOptions, ...options };\r\n const { token, defaultProps, displayName, shouldUpdate } = computedOptions;\r\n\r\n return (props = {} as Props, ref?: MutableRef): ComponentFactory => {\r\n const computedProps = { ...defaultProps, ...props };\r\n const factory = new ComponentFactory({\r\n token,\r\n ref,\r\n displayName,\r\n shouldUpdate,\r\n props: computedProps,\r\n type: createElement,\r\n children: [],\r\n });\r\n\r\n if (computedProps.ref) {\r\n delete computedProps.ref;\r\n\r\n if (process.env.NODE_ENV === 'development') {\r\n error(`[Dark]: To use ref you need to wrap the createComponent with forwardRef!`);\r\n }\r\n }\r\n\r\n return factory;\r\n };\r\n}\r\n\r\nconst detectIsComponentFactory = (factory: unknown): factory is ComponentFactory => factory instanceof ComponentFactory;\r\n\r\nconst getComponentFactoryKey = (factory: ComponentFactory): DarkElementKey =>\r\n !detectIsEmpty(factory.props[ATTR_KEY]) ? factory.props[ATTR_KEY] : null;\r\n\r\nexport { ComponentFactory, createComponent, detectIsComponentFactory, getComponentFactoryKey };\r\n","export type ViewDef = {\r\n as: string;\r\n slot?: any;\r\n isVoid?: boolean;\r\n [prop: string]: any;\r\n};\r\n\r\nexport enum NodeType {\r\n TAG = 'TAG',\r\n TEXT = 'TEXT',\r\n COMMENT = 'COMMENT',\r\n}\r\n","import type { Fiber } from '../fiber';\r\n\r\nclass Store {\r\n public wipRoot: Fiber = null;\r\n public currentRoot: Fiber = null;\r\n public nextUnitOfWork: Fiber = null;\r\n public fromHookUpdate = false;\r\n public events: Map> = new Map();\r\n public unsubscribers: Array<() => void> = [];\r\n public deletions: Array = [];\r\n public fiberMount = {\r\n level: 0,\r\n navigation: {},\r\n isDeepWalking: true,\r\n };\r\n public componentFiber: Fiber = null;\r\n public effects: Array<() => void> = [];\r\n public layoutEffects: Array<() => void> = [];\r\n}\r\n\r\nlet rootId = null;\r\nconst stores = new Map();\r\n\r\nconst effectStoreHelper = {\r\n set: (id: number) => effectStore(id),\r\n remove: (id: number) => stores.delete(id),\r\n};\r\n\r\nconst getRootId = (): number => rootId;\r\n\r\nconst effectStore = (id: number) => {\r\n rootId = id;\r\n !stores.get(rootId) && stores.set(rootId, new Store());\r\n};\r\n\r\nconst storeHelper = {\r\n get: (id: number = rootId) => stores.get(id),\r\n};\r\n\r\nconst wipRootHelper = {\r\n get: () => storeHelper.get()?.wipRoot || null,\r\n set: (fiber: Fiber) => (storeHelper.get().wipRoot = fiber),\r\n};\r\n\r\nconst currentRootHelper = {\r\n get: (id?: number) => storeHelper.get(id)?.currentRoot || null,\r\n set: (fiber: Fiber) => (storeHelper.get().currentRoot = fiber),\r\n};\r\n\r\nconst nextUnitOfWorkHelper = {\r\n get: () => storeHelper.get()?.nextUnitOfWork || null,\r\n set: (fiber: Fiber) => (storeHelper.get().nextUnitOfWork = fiber),\r\n};\r\n\r\nconst componentFiberHelper = {\r\n get: () => storeHelper.get()?.componentFiber,\r\n set: (fiber: Fiber) => (storeHelper.get().componentFiber = fiber),\r\n};\r\n\r\nconst fromHookUpdateHelper = {\r\n get: () => storeHelper.get()?.fromHookUpdate || false,\r\n set: (value: boolean) => (storeHelper.get().fromHookUpdate = value),\r\n};\r\n\r\nconst eventsHelper = {\r\n get: () => storeHelper.get().events,\r\n addUnsubscriber: (fn: () => void) => storeHelper.get().unsubscribers.push(fn),\r\n mapUnsubscribers: (id: number) => storeHelper.get(id).unsubscribers.forEach(fn => fn()),\r\n};\r\n\r\nconst deletionsHelper = {\r\n get: () => storeHelper.get().deletions,\r\n set: (deletions: Array) => (storeHelper.get().deletions = deletions),\r\n};\r\n\r\nconst fiberMountHelper = {\r\n reset: () => {\r\n storeHelper.get().fiberMount = {\r\n level: 0,\r\n navigation: {},\r\n isDeepWalking: true,\r\n };\r\n },\r\n getIndex: () => storeHelper.get().fiberMount.navigation[storeHelper.get().fiberMount.level],\r\n jumpToChild: () => {\r\n const { fiberMount } = storeHelper.get();\r\n const level = fiberMount.level;\r\n const nextLevel = level + 1;\r\n\r\n fiberMount.level = nextLevel;\r\n fiberMount.navigation[nextLevel] = 0;\r\n },\r\n jumpToParent: () => {\r\n const { fiberMount } = storeHelper.get();\r\n const level = fiberMount.level;\r\n const nextLevel = level - 1;\r\n\r\n fiberMount.navigation[level] = 0;\r\n fiberMount.level = nextLevel;\r\n },\r\n jumpToSibling: () => {\r\n const { fiberMount } = storeHelper.get();\r\n const level = fiberMount.level;\r\n const idx = fiberMount.navigation[level] + 1;\r\n\r\n fiberMount.navigation[level] = idx;\r\n },\r\n deepWalking: {\r\n get: () => storeHelper.get().fiberMount.isDeepWalking,\r\n set: (value: boolean) => (storeHelper.get().fiberMount.isDeepWalking = value),\r\n },\r\n};\r\n\r\nconst effectsHelper = {\r\n get: () => storeHelper.get().effects,\r\n reset: () => (storeHelper.get().effects = []),\r\n add: (effect: () => void) => storeHelper.get().effects.push(effect),\r\n};\r\n\r\nconst layoutEffectsHelper = {\r\n get: () => storeHelper.get().layoutEffects,\r\n reset: () => (storeHelper.get().layoutEffects = []),\r\n add: (effect: () => void) => storeHelper.get().layoutEffects.push(effect),\r\n};\r\n\r\nexport {\r\n getRootId,\r\n effectStoreHelper,\r\n wipRootHelper,\r\n currentRootHelper,\r\n nextUnitOfWorkHelper,\r\n componentFiberHelper,\r\n fromHookUpdateHelper,\r\n eventsHelper,\r\n deletionsHelper,\r\n fiberMountHelper,\r\n effectsHelper,\r\n layoutEffectsHelper,\r\n};\r\n","import { detectIsUndefined, detectIsFunction, detectIsDepsDifferent } from '../helpers';\r\nimport { componentFiberHelper, effectsHelper } from '../scope';\r\nimport type { Fiber, Hook, HookValue } from '../fiber';\r\nimport type { Effect, EffectCleanup } from './types';\r\n\r\nconst $$useEffect = Symbol('use-effect');\r\n\r\nconst { useEffect, hasEffects, cleanupEffects } = createEffectFunctions($$useEffect, effectsHelper);\r\n\r\nfunction createEffectFunctions(token: Symbol, store: typeof effectsHelper) {\r\n function useEffect(effect: Effect, deps?: Array) {\r\n const fiber = componentFiberHelper.get();\r\n const hook = fiber.hook as Hook>;\r\n const { idx, values } = hook;\r\n const runEffect = () => {\r\n values[idx] = {\r\n deps,\r\n token,\r\n value: undefined,\r\n };\r\n\r\n store.add(() => {\r\n values[idx].value = effect();\r\n });\r\n };\r\n\r\n if (detectIsUndefined(values[idx])) {\r\n runEffect();\r\n } else {\r\n const { deps: prevDeps, value: cleanup } = values[idx];\r\n const isDepsDifferent = deps ? detectIsDepsDifferent(deps, prevDeps) : true;\r\n\r\n if (isDepsDifferent) {\r\n detectIsFunction(cleanup) && cleanup();\r\n runEffect();\r\n }\r\n }\r\n\r\n hook.idx++;\r\n }\r\n\r\n function hasEffects(fiber: Fiber) {\r\n const { values } = fiber.hook as Hook;\r\n const hasEffect = values.some(x => x.token === token);\r\n\r\n return hasEffect;\r\n }\r\n\r\n function cleanupEffects(hook: Hook>) {\r\n const { values } = hook;\r\n\r\n for (const value of values) {\r\n if (value.token === token) {\r\n const cleanup = value.value;\r\n\r\n detectIsFunction(cleanup) && cleanup();\r\n }\r\n }\r\n }\r\n\r\n return {\r\n useEffect,\r\n hasEffects,\r\n cleanupEffects,\r\n };\r\n}\r\n\r\nexport { useEffect, hasEffects, cleanupEffects, createEffectFunctions };\r\n","import { EMPTY_NODE, ATTR_KEY } from '../constants';\r\nimport { detectIsArray, detectIsEmpty, detectIsFunction } from '../helpers';\r\nimport type { DarkElementKey } from '../shared';\r\nimport type { ComponentFactory, StandardComponentProps } from '../component';\r\nimport { NodeType, type ViewDef } from './types';\r\n\r\nexport type VirtualNodeFactory = () => VirtualNode;\r\nexport type TagVirtualNodeFactory = () => TagVirtualNode;\r\nexport type TextVirtualNodeFactory = () => TextVirtualNode;\r\nexport type CommentVirtualNodeFactory = () => CommentVirtualNode;\r\n\r\nconst $$virtualNode = Symbol('virtual-node');\r\n\r\nclass VirtualNode {\r\n public type: NodeType = null;\r\n\r\n constructor(options: Partial) {\r\n this.type = options.type;\r\n }\r\n}\r\n\r\nclass TagVirtualNode extends VirtualNode {\r\n public type = NodeType.TAG;\r\n public name: string = null;\r\n public isVoid = false;\r\n public attrs: Record = {};\r\n public children: Array = [];\r\n\r\n constructor(options: Partial) {\r\n super(options);\r\n this.name = options.name || this.name;\r\n this.isVoid = options.isVoid || this.isVoid;\r\n this.attrs = options.attrs || this.attrs;\r\n this.children = options.children || this.children;\r\n }\r\n}\r\n\r\nclass TextVirtualNode extends VirtualNode {\r\n public type = NodeType.TEXT;\r\n public value = '';\r\n\r\n constructor(text: string) {\r\n super({});\r\n this.value = text;\r\n }\r\n}\r\n\r\nclass CommentVirtualNode extends VirtualNode {\r\n public type = NodeType.COMMENT;\r\n public value = '';\r\n\r\n constructor(text: string) {\r\n super({});\r\n this.value = text;\r\n }\r\n}\r\n\r\nconst detectIsVirtualNode = (vNode: unknown): vNode is VirtualNode => vNode instanceof VirtualNode;\r\nconst detectIsTagVirtualNode = (vNode: unknown): vNode is TagVirtualNode => vNode instanceof TagVirtualNode;\r\nconst detectIsCommentVirtualNode = (vNode: unknown): vNode is CommentVirtualNode => vNode instanceof CommentVirtualNode;\r\nconst detectIsTextVirtualNode = (vNode: unknown): vNode is TextVirtualNode => vNode instanceof TextVirtualNode;\r\nconst detectIsEmptyVirtualNode = (vNode: unknown): boolean =>\r\n detectIsCommentVirtualNode(vNode) && vNode.value === EMPTY_NODE;\r\n\r\nfunction getVirtualNodeKey(vNode: TagVirtualNode): DarkElementKey | null {\r\n const key = vNode && vNode.attrs[ATTR_KEY];\r\n\r\n return !detectIsEmpty(key) ? key : null;\r\n}\r\n\r\nfunction Text(source: string | StandardComponentProps['slot']): string | TextVirtualNode {\r\n const text =\r\n typeof source === 'string' ? new TextVirtualNode(source) : detectIsTextVirtualNode(source) ? source.value : '';\r\n\r\n return text;\r\n}\r\n\r\nfunction Comment(text: string): CommentVirtualNodeFactory {\r\n const factory = () => new CommentVirtualNode(text);\r\n\r\n factory[$$virtualNode] = true;\r\n\r\n return factory;\r\n}\r\n\r\nfunction View(def: ViewDef): TagVirtualNodeFactory {\r\n const factory = () => {\r\n const { as, slot, isVoid = false, ...rest } = def;\r\n const children = isVoid ? [] : detectIsArray(slot) ? slot : slot ? [slot] : [];\r\n\r\n return new TagVirtualNode({\r\n name: as,\r\n isVoid,\r\n attrs: { ...rest },\r\n children: children as Array,\r\n });\r\n };\r\n\r\n factory[$$virtualNode] = true;\r\n\r\n return factory;\r\n}\r\n\r\nconst createEmptyVirtualNode = () => new CommentVirtualNode(EMPTY_NODE);\r\n\r\nconst detectIsVirtualNodeFactory = (factory: unknown): factory is VirtualNodeFactory =>\r\n detectIsFunction(factory) && factory[$$virtualNode] === true;\r\n\r\nexport {\r\n VirtualNode,\r\n TagVirtualNode,\r\n TextVirtualNode,\r\n CommentVirtualNode,\r\n detectIsVirtualNode,\r\n detectIsTagVirtualNode,\r\n detectIsCommentVirtualNode,\r\n detectIsTextVirtualNode,\r\n detectIsEmptyVirtualNode,\r\n getVirtualNodeKey,\r\n Text,\r\n Comment,\r\n View,\r\n createEmptyVirtualNode,\r\n detectIsVirtualNodeFactory,\r\n};\r\n","import { type KeyProps, createComponent, detectIsComponentFactory } from '../component';\r\n\r\nconst $$fragment = Symbol('fragment');\r\n\r\nconst Fragment = createComponent(({ slot }) => slot || null, {\r\n token: $$fragment,\r\n});\r\n\r\nconst detectIsFragment = (factory: unknown) => detectIsComponentFactory(factory) && factory.token === $$fragment;\r\n\r\nexport { Fragment, detectIsFragment };\r\n","import { detectIsObject, detectIsNull } from '../helpers';\r\nimport type { Component, RefProps, ComponentFactory } from '../component';\r\nimport type { MutableRef } from './types';\r\n\r\nfunction forwardRef(component: Component) {\r\n type Props = P & RefProps;\r\n\r\n return ({ ref, ...rest }: Props) => {\r\n return component(rest as P, ref) as ComponentFactory;\r\n };\r\n}\r\n\r\nconst detectIsRef = (ref: unknown) => {\r\n if (!detectIsObject(ref) || detectIsNull(ref)) return false;\r\n const mutableRef = ref as MutableRef;\r\n\r\n for (const key in mutableRef) {\r\n if (key === 'current' && mutableRef.hasOwnProperty(key)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport { forwardRef, detectIsRef };\r\n","import {\r\n type Component,\r\n type ComponentFactory,\r\n type StandardComponentProps,\r\n type RefProps,\r\n type SlotProps,\r\n createComponent,\r\n detectIsComponentFactory,\r\n} from '../component';\r\nimport { type MutableRef, forwardRef } from '../ref';\r\n\r\ntype ShouldUpdate = (props: T, nextProps: T) => boolean;\r\n\r\nconst $$memo = Symbol('memo');\r\n\r\nconst defaultShouldUpdate = (props: {}, nextProps: {}): boolean => {\r\n const keys = Object.keys(nextProps);\r\n\r\n for (const key of keys) {\r\n if (key !== 'slot' && nextProps[key] !== props[key]) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst detectIsMemo = (factory: unknown) => detectIsComponentFactory(factory) && factory.token === $$memo;\r\n\r\nfunction memo(\r\n component: (props: T, ref?: MutableRef) => ComponentFactory,\r\n shouldUpdate: ShouldUpdate = defaultShouldUpdate,\r\n): Component {\r\n return forwardRef(\r\n createComponent(\r\n (props: T & RefProps, ref) => {\r\n ref && (props.ref = ref);\r\n\r\n return component(props);\r\n },\r\n { token: $$memo, shouldUpdate },\r\n ),\r\n );\r\n}\r\n\r\nexport { $$memo, memo, detectIsMemo };\r\n","import { type DarkElement } from '../shared';\r\nimport { detectIsUndefined, detectIsArray, detectIsDepsDifferent } from '../helpers';\r\nimport { detectIsComponentFactory, createComponent } from '../component';\r\nimport { detectIsVirtualNodeFactory } from '../view';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { Fragment } from '../fragment';\r\nimport { $$memo } from '../memo';\r\n\r\nconst Memo = createComponent(({ slot }) => slot, { token: $$memo });\r\n\r\nfunction wrap(value: T, isDepsDifferent: boolean) {\r\n const check = (value: T) => detectIsVirtualNodeFactory(value) || detectIsComponentFactory(value);\r\n\r\n if (detectIsArray(value) ? check(value[0]) : check(value)) {\r\n const slot = value as unknown as DarkElement;\r\n const factory = Memo({\r\n slot: Fragment({ slot }),\r\n });\r\n\r\n factory.shouldUpdate = () => isDepsDifferent;\r\n\r\n return factory;\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction processValue(getValue: () => T, isDepsDifferent = false) {\r\n return wrap(getValue(), isDepsDifferent);\r\n}\r\n\r\nfunction useMemo(getValue: () => T, deps: Array): T {\r\n const fiber = componentFiberHelper.get();\r\n const { hook } = fiber;\r\n const { idx, values } = hook;\r\n\r\n if (detectIsUndefined(values[idx])) {\r\n const value = processValue(getValue);\r\n\r\n values[idx] = {\r\n deps,\r\n value,\r\n };\r\n\r\n hook.idx++;\r\n\r\n return value as T;\r\n }\r\n\r\n const hookValue = values[idx];\r\n const prevDeps = hookValue.deps as Array;\r\n const isDepsDifferent = detectIsDepsDifferent(deps, prevDeps);\r\n const computedGetValue = isDepsDifferent ? getValue : () => hookValue.value;\r\n\r\n hookValue.deps = deps;\r\n hookValue.value = processValue(computedGetValue, isDepsDifferent);\r\n\r\n hook.idx++;\r\n\r\n return hookValue.value;\r\n}\r\n\r\nexport { useMemo };\r\n","import type { Platform } from './types';\r\n\r\nexport const platform: Platform = {\r\n scheduleCallback: () => {\r\n throw new Error('scheduleCallback not installed by renderer');\r\n },\r\n shouldYeildToHost: () => {\r\n throw new Error('shouldYeildToHost not installed by renderer');\r\n },\r\n createNativeElement: () => {\r\n throw new Error('createNativeElement not installed by renderer');\r\n },\r\n applyCommits: () => {\r\n throw new Error('applyCommits not installed by renderer');\r\n },\r\n detectIsPortal: () => {\r\n throw new Error('detectIsPortal not installed by renderer');\r\n },\r\n unmountPortal: () => {\r\n throw new Error('unmountPortal not installed by renderer');\r\n },\r\n};\r\n","export enum EffectTag {\r\n PLACEMENT = 'PLACEMENT',\r\n UPDATE = 'UPDATE',\r\n DELETION = 'DELETION',\r\n SKIP = 'SKIP',\r\n}\r\n\r\nexport type NativeElement = unknown;\r\n\r\nexport type HookValue = {\r\n token?: Symbol;\r\n deps: Array;\r\n value: T;\r\n};\r\n\r\nexport type Hook = {\r\n idx: number;\r\n values: Array;\r\n};\r\n\r\nexport const cloneTagMap = {\r\n [EffectTag.PLACEMENT]: true,\r\n [EffectTag.SKIP]: true,\r\n};\r\n","import { layoutEffectsHelper } from '../scope';\r\nimport { createEffectFunctions } from '../use-effect';\r\n\r\nconst $$useLayoutEffect = Symbol('use-layout-effect');\r\n\r\nconst {\r\n useEffect: useLayoutEffect,\r\n hasEffects: hasLayoutEffects,\r\n cleanupEffects: cleanupLayoutEffects,\r\n} = createEffectFunctions($$useLayoutEffect, layoutEffectsHelper);\r\n\r\nexport { useLayoutEffect, hasLayoutEffects, cleanupLayoutEffects };\r\n","import { type Fiber } from '../fiber';\r\n\r\ntype WalkFiberOptions = {\r\n fiber: Fiber;\r\n onLoop: (options: OnLoopOptions) => void;\r\n};\r\n\r\ntype OnLoopOptions = {\r\n nextFiber: Fiber;\r\n isReturn: boolean;\r\n resetIsDeepWalking: () => void;\r\n stop: () => void;\r\n};\r\n\r\nfunction walkFiber(options: WalkFiberOptions) {\r\n const { fiber, onLoop } = options;\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n let isReturn = false;\r\n let isStopped = false;\r\n const visitedMap = new Map();\r\n const detectCanVisit = (fiber: Fiber) => !visitedMap.get(fiber);\r\n\r\n while (nextFiber) {\r\n onLoop({\r\n nextFiber: nextFiber as Fiber,\r\n isReturn,\r\n resetIsDeepWalking: () => (isDeepWalking = false),\r\n stop: () => (isStopped = true),\r\n });\r\n\r\n if (isStopped) {\r\n break;\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking && detectCanVisit(nextFiber.child)) {\r\n const newFiber = nextFiber.child;\r\n\r\n isReturn = false;\r\n nextFiber = newFiber;\r\n visitedMap.set(newFiber, true);\r\n } else if (nextFiber.nextSibling && detectCanVisit(nextFiber.nextSibling)) {\r\n const newFiber = nextFiber.nextSibling;\r\n\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = newFiber;\r\n visitedMap.set(newFiber, true);\r\n } else if (\r\n nextFiber.parent &&\r\n nextFiber.parent === fiber &&\r\n nextFiber.parent.nextSibling &&\r\n detectCanVisit(nextFiber.parent.nextSibling)\r\n ) {\r\n const newFiber = nextFiber.parent.nextSibling;\r\n\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = newFiber;\r\n visitedMap.set(newFiber, true);\r\n } else if (nextFiber.parent && nextFiber.parent !== fiber) {\r\n isDeepWalking = false;\r\n isReturn = true;\r\n nextFiber = nextFiber.parent;\r\n } else {\r\n nextFiber = null;\r\n }\r\n }\r\n}\r\n\r\nexport { walkFiber };\r\n","import { type Fiber } from '../fiber';\r\nimport { platform } from '../platform';\r\nimport { detectIsComponentFactory } from '../component';\r\nimport { cleanupEffects } from '../use-effect';\r\nimport { cleanupLayoutEffects } from '../use-layout-effect';\r\nimport { walkFiber } from '../walk';\r\nimport { detectIsUndefined } from '../helpers';\r\nimport { currentRootHelper, eventsHelper, effectStoreHelper } from '../scope';\r\n\r\nfunction unmountFiber(fiber: Fiber) {\r\n if (fiber.effectHost || fiber.layoutEffectHost) {\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, isReturn, stop }) => {\r\n if (nextFiber === fiber.nextSibling || fiber.transposition) return stop();\r\n\r\n if (!isReturn && detectIsComponentFactory(nextFiber.instance)) {\r\n cleanupLayoutEffects(nextFiber.hook);\r\n cleanupEffects(nextFiber.hook);\r\n }\r\n },\r\n });\r\n }\r\n\r\n fiber.portalHost && platform.unmountPortal(fiber);\r\n}\r\n\r\nfunction unmountRoot(rootId: number, onComplete: () => void) {\r\n if (detectIsUndefined(rootId)) return;\r\n\r\n unmountFiber(currentRootHelper.get(rootId));\r\n eventsHelper.mapUnsubscribers(rootId);\r\n effectStoreHelper.remove(rootId);\r\n onComplete();\r\n}\r\n\r\nexport { unmountFiber, unmountRoot };\r\n","import { flatten, detectIsEmpty, error, keyBy, takeListFromEnd, detectIsUndefined, detectIsArray } from '../helpers';\r\nimport { platform } from '../platform';\r\nimport {\r\n wipRootHelper,\r\n currentRootHelper,\r\n nextUnitOfWorkHelper,\r\n deletionsHelper,\r\n fiberMountHelper,\r\n componentFiberHelper,\r\n fromHookUpdateHelper,\r\n effectStoreHelper,\r\n effectsHelper,\r\n layoutEffectsHelper,\r\n} from '../scope';\r\nimport { type ComponentFactory, detectIsComponentFactory, getComponentFactoryKey } from '../component';\r\nimport {\r\n type TagVirtualNode,\r\n detectIsTagVirtualNode,\r\n createEmptyVirtualNode,\r\n getVirtualNodeKey,\r\n detectIsVirtualNode,\r\n detectIsVirtualNodeFactory,\r\n} from '../view';\r\nimport { detectIsMemo } from '../memo';\r\nimport type { Context, ContextProviderValue } from '../context';\r\nimport type { DarkElementKey, DarkElement, DarkElementInstance } from '../shared';\r\nimport { PARTIAL_UPDATE } from '../constants';\r\nimport { type NativeElement, type Hook, EffectTag, cloneTagMap } from './types';\r\nimport { hasEffects } from '../use-effect';\r\nimport { hasLayoutEffects } from '../use-layout-effect';\r\nimport { walkFiber } from '../walk';\r\nimport { unmountFiber } from '../unmount';\r\n\r\nclass Fiber {\r\n public nativeElement: N;\r\n public parent: Fiber;\r\n public child: Fiber;\r\n public nextSibling: Fiber;\r\n public alternate: Fiber;\r\n public effectTag: EffectTag;\r\n public instance: DarkElementInstance;\r\n public hook: Hook;\r\n public shadow: Fiber;\r\n public provider: Map;\r\n public transposition: boolean;\r\n public mountedToHost: boolean;\r\n public portalHost: boolean;\r\n public effectHost: boolean;\r\n public layoutEffectHost: boolean;\r\n public childrenCount: number;\r\n public marker: string;\r\n public isUsed: boolean;\r\n public catchException: (error: Error) => void;\r\n\r\n constructor(options: Partial>) {\r\n this.nativeElement = options.nativeElement || null;\r\n this.parent = options.parent || null;\r\n this.child = options.child || null;\r\n this.nextSibling = options.nextSibling || null;\r\n this.alternate = options.alternate || null;\r\n this.effectTag = options.effectTag || null;\r\n this.instance = options.instance || null;\r\n this.hook = options.hook || createHook();\r\n this.shadow = options.shadow || null;\r\n this.provider = options.provider || null;\r\n this.transposition = !detectIsUndefined(options.transposition) ? options.transposition : false;\r\n this.mountedToHost = !detectIsUndefined(options.mountedToHost) || false;\r\n this.portalHost = !detectIsUndefined(options.portalHost) ? options.portalHost : false;\r\n this.effectHost = !detectIsUndefined(options.effectHost) ? options.effectHost : false;\r\n this.layoutEffectHost = !detectIsUndefined(options.layoutEffectHost) ? options.layoutEffectHost : false;\r\n this.childrenCount = options.childrenCount || 0;\r\n this.marker = options.marker || '';\r\n this.isUsed = options.isUsed || false;\r\n }\r\n\r\n public markPortalHost() {\r\n this.portalHost = true;\r\n this.parent && !this.parent.portalHost && this.parent.markPortalHost();\r\n }\r\n\r\n public markEffectHost() {\r\n this.effectHost = true;\r\n this.parent && !this.parent.effectHost && this.parent.markEffectHost();\r\n }\r\n\r\n public markLayoutEffectHost() {\r\n this.layoutEffectHost = true;\r\n this.parent && !this.parent.layoutEffectHost && this.parent.markLayoutEffectHost();\r\n }\r\n\r\n public setError(error: Error) {\r\n if (typeof this.catchException === 'function') {\r\n this.catchException(error);\r\n } else if (this.parent) {\r\n this.parent.setError(error);\r\n }\r\n }\r\n}\r\n\r\nfunction workLoop() {\r\n const wipFiber = wipRootHelper.get();\r\n let nextUnitOfWork = nextUnitOfWorkHelper.get();\r\n let shouldYield = false;\r\n let hasMoreWork = Boolean(nextUnitOfWork);\r\n\r\n while (nextUnitOfWork && !shouldYield) {\r\n nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\r\n nextUnitOfWorkHelper.set(nextUnitOfWork);\r\n hasMoreWork = Boolean(nextUnitOfWork);\r\n shouldYield = platform.shouldYeildToHost();\r\n }\r\n\r\n if (!nextUnitOfWork && wipFiber) {\r\n commitChanges();\r\n }\r\n\r\n return hasMoreWork;\r\n}\r\n\r\nfunction performUnitOfWork(fiber: Fiber) {\r\n let isDeepWalking = true;\r\n let nextFiber = fiber;\r\n let shadow: Fiber = fiber.shadow;\r\n let instance = fiber.instance;\r\n\r\n while (true) {\r\n isDeepWalking = fiberMountHelper.deepWalking.get();\r\n nextFiber.hook.idx = 0;\r\n\r\n if (isDeepWalking) {\r\n const hasChildren = hasChildrenProp(instance) && instance.children.length > 0;\r\n\r\n if (hasChildren) {\r\n const { performedFiber, performedNextFiber, performedShadow, performedInstance } = performChild({\r\n nextFiber,\r\n shadow,\r\n instance,\r\n });\r\n\r\n nextFiber = performedNextFiber;\r\n shadow = performedShadow;\r\n instance = performedInstance;\r\n\r\n if (performedFiber) return performedFiber;\r\n } else {\r\n const { performedFiber, performedNextFiber, performedShadow, performedInstance } = performSibling({\r\n nextFiber,\r\n shadow,\r\n instance,\r\n });\r\n\r\n nextFiber = performedNextFiber;\r\n shadow = performedShadow;\r\n instance = performedInstance;\r\n\r\n if (performedFiber) return performedFiber;\r\n }\r\n } else {\r\n const { performedFiber, performedNextFiber, performedShadow, performedInstance } = performSibling({\r\n nextFiber,\r\n shadow,\r\n instance,\r\n });\r\n\r\n nextFiber = performedNextFiber;\r\n shadow = performedShadow;\r\n instance = performedInstance;\r\n\r\n if (performedFiber) return performedFiber;\r\n }\r\n\r\n performPartialUpdateEffects(nextFiber);\r\n\r\n if (nextFiber.parent === null) return null;\r\n }\r\n}\r\n\r\nfunction performPartialUpdateEffects(nextFiber: Fiber) {\r\n if (nextFiber.marker === PARTIAL_UPDATE) {\r\n const alternate = nextFiber.child?.alternate || null;\r\n const fiber = nextFiber.child || null;\r\n\r\n if (alternate && fiber && alternate.nextSibling && !fiber.nextSibling) {\r\n let nextFiber = alternate.nextSibling;\r\n const deletions: Array = [];\r\n\r\n while (nextFiber) {\r\n nextFiber.effectTag = EffectTag.DELETION;\r\n deletions.push(nextFiber);\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n deletionsHelper.get().push(...deletions);\r\n }\r\n }\r\n}\r\n\r\ntype PerformChildOptions = {\r\n nextFiber: Fiber;\r\n shadow: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction performChild(options: PerformChildOptions) {\r\n fiberMountHelper.jumpToChild();\r\n let nextFiber = options.nextFiber;\r\n let shadow = options.shadow;\r\n let instance = options.instance;\r\n\r\n shadow = shadow ? shadow.child : null;\r\n\r\n const alternate = getChildAlternate(nextFiber);\r\n const hook = getHook({ shadow, alternate, instance });\r\n const provider = shadow ? shadow.provider : alternate ? alternate.provider : null;\r\n let fiber = new Fiber({ hook, provider });\r\n\r\n componentFiberHelper.set(fiber);\r\n fiber.parent = nextFiber;\r\n\r\n const { performedInstance, performedShadow } = pertformInstance({\r\n instance,\r\n idx: 0,\r\n fiber,\r\n alternate,\r\n });\r\n instance = performedInstance || instance;\r\n shadow = performedShadow || shadow;\r\n alternate && mutateAlternate({ fiber, alternate, instance });\r\n mutateFiber({ fiber, alternate, instance });\r\n fiber = alternate ? performMemo({ fiber, alternate, instance }) : fiber;\r\n\r\n nextFiber.child = fiber;\r\n fiber.parent = nextFiber;\r\n fiber.shadow = shadow;\r\n nextFiber = fiber;\r\n\r\n cloneTagMap[fiber.parent.effectTag] && (fiber.effectTag = fiber.parent.effectTag);\r\n\r\n return {\r\n performedFiber: nextFiber,\r\n performedNextFiber: nextFiber,\r\n performedShadow: shadow,\r\n performedInstance: instance,\r\n };\r\n}\r\n\r\ntype PerformSiblingOptions = {\r\n nextFiber: Fiber;\r\n shadow: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction performSibling(options: PerformSiblingOptions) {\r\n fiberMountHelper.jumpToSibling();\r\n let nextFiber = options.nextFiber;\r\n let shadow = options.shadow;\r\n let instance = options.instance;\r\n const parent = nextFiber.parent.instance;\r\n const childrenIdx = fiberMountHelper.getIndex();\r\n const hasSibling = hasChildrenProp(parent) && parent.children[childrenIdx];\r\n\r\n if (hasSibling) {\r\n fiberMountHelper.deepWalking.set(true);\r\n\r\n shadow = shadow ? shadow.nextSibling : null;\r\n const alternate = getNextSiblingAlternate(nextFiber);\r\n const hook = getHook({ shadow, alternate, instance });\r\n const provider = shadow ? shadow.provider : alternate ? alternate.provider : null;\r\n let fiber = new Fiber({ hook, provider });\r\n\r\n componentFiberHelper.set(fiber);\r\n fiber.parent = nextFiber.parent;\r\n\r\n const { performedInstance, performedShadow } = pertformInstance({\r\n instance: parent,\r\n idx: childrenIdx,\r\n fiber,\r\n alternate,\r\n });\r\n instance = performedInstance || instance;\r\n shadow = performedShadow || shadow;\r\n alternate && mutateAlternate({ fiber, alternate, instance });\r\n mutateFiber({ fiber, alternate, instance });\r\n fiber = alternate ? performMemo({ fiber, alternate, instance }) : fiber;\r\n\r\n fiber.parent = nextFiber.parent;\r\n nextFiber.nextSibling = fiber;\r\n fiber.shadow = shadow;\r\n nextFiber = fiber;\r\n\r\n cloneTagMap[fiber.parent.effectTag] && (fiber.effectTag = fiber.parent.effectTag);\r\n\r\n return {\r\n performedFiber: nextFiber,\r\n performedNextFiber: nextFiber,\r\n performedShadow: shadow,\r\n performedInstance: instance,\r\n };\r\n } else {\r\n fiberMountHelper.jumpToParent();\r\n fiberMountHelper.deepWalking.set(false);\r\n shadow = shadow ? shadow.parent : null;\r\n nextFiber = nextFiber.parent;\r\n instance = nextFiber.instance;\r\n\r\n if (hasChildrenProp(nextFiber.instance)) {\r\n nextFiber.instance.children = [];\r\n }\r\n }\r\n\r\n return {\r\n performedFiber: null,\r\n performedNextFiber: nextFiber,\r\n performedShadow: shadow,\r\n performedInstance: instance,\r\n };\r\n}\r\n\r\ntype MutateFiberOptions = {\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction mutateFiber(options: MutateFiberOptions) {\r\n const { fiber, alternate, instance } = options;\r\n const key = alternate ? getElementKey(alternate.instance) : null;\r\n const nextKey = alternate ? getElementKey(instance) : null;\r\n const isDifferentKeys = key !== nextKey;\r\n const isSameType = Boolean(alternate) && getInstanceType(alternate.instance) === getInstanceType(instance);\r\n const isUpdate = isSameType && !isDifferentKeys;\r\n\r\n fiber.instance = instance;\r\n fiber.alternate = alternate || null;\r\n fiber.nativeElement = isUpdate ? alternate.nativeElement : null;\r\n fiber.effectTag = isUpdate ? EffectTag.UPDATE : EffectTag.PLACEMENT;\r\n fiber.mountedToHost = fiber.nativeElement ? isUpdate : false;\r\n\r\n if (hasChildrenProp(fiber.instance)) {\r\n fiber.childrenCount = fiber.instance.children.length;\r\n }\r\n\r\n if (fiber.alternate) {\r\n fiber.alternate.shadow = null;\r\n fiber.alternate.alternate = null;\r\n }\r\n\r\n if (!fiber.nativeElement && detectIsVirtualNode(fiber.instance)) {\r\n fiber.nativeElement = platform.createNativeElement(fiber);\r\n }\r\n}\r\n\r\ntype PerformAlternateOptions = {\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction mutateAlternate(options: PerformAlternateOptions) {\r\n const { fiber, alternate, instance } = options;\r\n const alternateType = getInstanceType(alternate.instance);\r\n const elementType = getInstanceType(instance);\r\n const isSameType = elementType === alternateType;\r\n const prevKey = getElementKey(alternate.instance);\r\n const nextKey = getElementKey(instance);\r\n const isSameKeys = prevKey === nextKey;\r\n\r\n alternate.isUsed = true;\r\n\r\n if (!isSameType || !isSameKeys) {\r\n alternate.effectTag = EffectTag.DELETION;\r\n deletionsHelper.get().push(alternate);\r\n } else if (hasChildrenProp(alternate.instance) && hasChildrenProp(instance)) {\r\n const prevElementsCount = alternate.childrenCount;\r\n const nextElementsCount = instance.children.length;\r\n const isRequestedKeys = prevElementsCount !== nextElementsCount;\r\n\r\n if (isRequestedKeys) {\r\n const isRemovingCase = nextElementsCount < prevElementsCount;\r\n const isInsertingCase = nextElementsCount > prevElementsCount;\r\n const children = hasChildrenProp(instance) ? instance.children : [];\r\n const { keys, nextKeys } = extractKeys(alternate.child, children);\r\n const hasKeys = keys.length > 0;\r\n const hasAnyKeys = hasKeys || nextKeys.length > 0;\r\n\r\n if (process.env.NODE_ENV === 'development') {\r\n if (!hasAnyKeys && prevElementsCount !== 0 && nextElementsCount !== 0) {\r\n error(`\r\n [Dark]: Operation of inserting, adding, replacing elements into list requires to have a unique key for every node (string or number, but not array index)!\r\n `);\r\n }\r\n }\r\n\r\n const performRemovingNodes = () => {\r\n const diffKeys = getDiffKeys(keys, nextKeys);\r\n\r\n if (diffKeys.length > 0) {\r\n const fibersMap = createFibersByKeyMap(alternate.child);\r\n\r\n for (const key of diffKeys) {\r\n const fiber = fibersMap[key] || null;\r\n\r\n if (fiber) {\r\n fiber.effectTag = EffectTag.DELETION;\r\n deletionsHelper.get().push(fiber);\r\n }\r\n }\r\n } else if (!hasKeys) {\r\n const diffCount = prevElementsCount - nextElementsCount;\r\n const fibers: Array = takeListFromEnd(getSiblingFibers(alternate.child), diffCount);\r\n\r\n for (const fiber of fibers) {\r\n fiber.effectTag = EffectTag.DELETION;\r\n }\r\n\r\n deletionsHelper.get().push(...fibers);\r\n }\r\n };\r\n\r\n const performInsertingNodes = () => {\r\n const diffKeys = getDiffKeys(nextKeys, keys);\r\n\r\n if (diffKeys.length > 0) {\r\n const diffKeyMap = keyBy(diffKeys, x => x);\r\n const fibersByPositionsMap = createFibersByPositionMap(alternate.child);\r\n const usedKeyMap = {};\r\n let keyIdx = 0;\r\n\r\n for (const nextKey of nextKeys) {\r\n if (process.env.NODE_ENV === 'development') {\r\n if (usedKeyMap[nextKey]) {\r\n error(`Some key of node already has been used!`);\r\n }\r\n }\r\n\r\n usedKeyMap[nextKey] = true;\r\n\r\n if (nextKey !== keys[keyIdx] && diffKeyMap[nextKey]) {\r\n const insertionFiber = new Fiber({\r\n instance: createEmptyVirtualNode(),\r\n parent: alternate,\r\n effectTag: EffectTag.PLACEMENT,\r\n });\r\n\r\n if (keyIdx === 0) {\r\n insertionFiber.nextSibling = alternate.child;\r\n alternate.child = insertionFiber;\r\n } else {\r\n const fiber = fibersByPositionsMap[keyIdx] || null;\r\n\r\n if (fiber) {\r\n insertionFiber.nextSibling = fiber;\r\n }\r\n }\r\n }\r\n\r\n keyIdx++;\r\n }\r\n }\r\n };\r\n\r\n isRemovingCase && performRemovingNodes();\r\n isInsertingCase && performInsertingNodes();\r\n }\r\n }\r\n}\r\n\r\ntype PerformMemoOptions = {\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction performMemo(options: PerformMemoOptions) {\r\n const { fiber, alternate, instance } = options;\r\n\r\n if (detectIsMemo(fiber.instance)) {\r\n let memoFiber: Fiber = null;\r\n const factory = instance as ComponentFactory;\r\n const alternateFactory = alternate.instance as ComponentFactory;\r\n\r\n if (factory.type !== alternateFactory.type) return fiber;\r\n\r\n const props = alternateFactory.props;\r\n const nextProps = factory.props;\r\n const skip = !factory.shouldUpdate(props, nextProps);\r\n\r\n if (skip) {\r\n let nextFiber: Fiber = null;\r\n fiberMountHelper.deepWalking.set(false);\r\n\r\n memoFiber = new Fiber({\r\n ...alternate,\r\n alternate,\r\n effectTag: EffectTag.SKIP,\r\n nextSibling: alternate.nextSibling\r\n ? alternate.nextSibling.effectTag === EffectTag.DELETION\r\n ? null\r\n : alternate.nextSibling\r\n : null,\r\n });\r\n\r\n alternate.alternate = null;\r\n nextFiber = memoFiber.child;\r\n\r\n while (nextFiber) {\r\n nextFiber.parent = memoFiber;\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n if (memoFiber.effectHost) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (memoFiber.layoutEffectHost) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (memoFiber.portalHost) {\r\n fiber.markPortalHost();\r\n }\r\n\r\n return memoFiber;\r\n }\r\n }\r\n\r\n return fiber;\r\n}\r\n\r\ntype PerformInstanceOptions = {\r\n instance: DarkElementInstance;\r\n idx: number;\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n};\r\n\r\nfunction pertformInstance(options: PerformInstanceOptions) {\r\n const { instance, idx, fiber, alternate } = options;\r\n let performedInstance: DarkElementInstance = null;\r\n let performedShadow: Fiber = null;\r\n\r\n if (hasChildrenProp(instance)) {\r\n const elements = detectIsArray(instance.children[idx])\r\n ? flatten([instance.children[idx]])\r\n : [instance.children[idx]];\r\n\r\n instance.children.splice(idx, 1, ...elements);\r\n performedInstance = instance.children[idx];\r\n performedShadow = alternate\r\n ? getRootShadow({\r\n instance: performedInstance,\r\n fiber,\r\n alternate,\r\n })\r\n : performedShadow;\r\n performedInstance = mountInstance(fiber, performedInstance);\r\n }\r\n\r\n if (detectIsComponentFactory(performedInstance)) {\r\n if (hasEffects(fiber)) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (hasLayoutEffects(fiber)) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (platform.detectIsPortal(performedInstance)) {\r\n fiber.markPortalHost();\r\n }\r\n }\r\n\r\n return {\r\n performedInstance,\r\n performedShadow,\r\n };\r\n}\r\n\r\ntype GetRootShadowOptions = {\r\n instance: DarkElementInstance;\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n};\r\n\r\nfunction getRootShadow(options: GetRootShadowOptions) {\r\n const { instance, fiber, alternate } = options;\r\n const key = getElementKey(alternate.instance);\r\n const nextKey = getElementKey(instance);\r\n let shadow: Fiber = null;\r\n\r\n if (key !== nextKey) {\r\n shadow = getAlternateByKey(nextKey, alternate.parent.child);\r\n\r\n if (shadow) {\r\n fiber.hook = shadow.hook;\r\n fiber.provider = shadow.provider;\r\n alternate.transposition = true;\r\n }\r\n }\r\n\r\n return shadow;\r\n}\r\n\r\nfunction mountInstance(fiber: Fiber, instance: DarkElementInstance) {\r\n const isComponentFactory = detectIsComponentFactory(instance);\r\n const factory = instance as ComponentFactory;\r\n\r\n if (isComponentFactory) {\r\n try {\r\n const result = factory.type(factory.props, factory.ref);\r\n\r\n factory.children = detectIsArray(result)\r\n ? (flatten([result]) as Array)\r\n : ([result] as Array);\r\n } catch (err) {\r\n factory.children = [];\r\n fiber.setError(err);\r\n error(err);\r\n }\r\n } else if (detectIsVirtualNodeFactory(instance)) {\r\n instance = instance();\r\n }\r\n\r\n if (hasChildrenProp(instance)) {\r\n for (let i = 0; i < instance.children.length; i++) {\r\n if (!instance.children[i]) {\r\n instance.children[i] = transformElementInstance(instance.children[i]) as DarkElementInstance;\r\n }\r\n }\r\n\r\n instance.children = isComponentFactory\r\n ? instance.children\r\n : detectIsArray(instance.children)\r\n ? flatten([instance.children])\r\n : [instance.children];\r\n\r\n if (isComponentFactory && factory.children.length === 0) {\r\n factory.children.push(createEmptyVirtualNode());\r\n }\r\n }\r\n\r\n return instance;\r\n}\r\n\r\nfunction createFibersByPositionMap(fiber: Fiber) {\r\n let nextFiber = fiber;\r\n let position = 0;\r\n const map: Record = {};\r\n\r\n while (nextFiber) {\r\n map[position] = nextFiber;\r\n\r\n position++;\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return map;\r\n}\r\n\r\nfunction createFibersByKeyMap(fiber: Fiber) {\r\n let nextFiber = fiber;\r\n const map: Record = {};\r\n\r\n while (nextFiber) {\r\n const key = getElementKey(nextFiber.instance);\r\n\r\n if (!detectIsEmpty(key)) {\r\n map[key] = nextFiber;\r\n }\r\n\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return map;\r\n}\r\n\r\nfunction extractKeys(alternate: Fiber, children: Array) {\r\n let nextFiber = alternate;\r\n let idx = 0;\r\n const keys: Array = [];\r\n const nextKeys: Array = [];\r\n\r\n while (nextFiber || idx < children.length) {\r\n const key = nextFiber && getElementKey(nextFiber.instance);\r\n const nextKey = children[idx] && getElementKey(children[idx]);\r\n\r\n if (!detectIsEmpty(key)) {\r\n keys.push(key);\r\n }\r\n\r\n if (!detectIsEmpty(nextKey)) {\r\n nextKeys.push(nextKey);\r\n }\r\n\r\n nextFiber = nextFiber ? nextFiber.nextSibling : null;\r\n idx++;\r\n }\r\n\r\n return {\r\n keys,\r\n nextKeys,\r\n };\r\n}\r\n\r\nfunction getAlternateByKey(key: DarkElementKey, fiber: Fiber) {\r\n if (detectIsEmpty(key)) return null;\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (key === getElementKey(nextFiber.instance)) {\r\n return nextFiber;\r\n }\r\n\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction getElementKey(instance: DarkElementInstance): DarkElementKey | null {\r\n const key = detectIsComponentFactory(instance)\r\n ? getComponentFactoryKey(instance)\r\n : detectIsTagVirtualNode(instance)\r\n ? getVirtualNodeKey(instance)\r\n : null;\r\n\r\n return key;\r\n}\r\n\r\nfunction getDiffKeys(keys: Array, nextKeys: Array): Array {\r\n const nextKeysMap = nextKeys.reduce((acc, key) => ((acc[key] = true), acc), {});\r\n const diff = [];\r\n\r\n for (const key of keys) {\r\n if (!nextKeysMap[key]) {\r\n diff.push(key);\r\n }\r\n }\r\n\r\n return diff;\r\n}\r\n\r\nfunction getChildAlternate(fiber: Fiber): Fiber | null {\r\n let alternate = fiber.alternate && fiber.alternate.effectTag !== EffectTag.DELETION ? fiber.alternate.child : null;\r\n\r\n while (alternate && alternate.effectTag === EffectTag.DELETION) {\r\n alternate = alternate.nextSibling;\r\n }\r\n\r\n return alternate;\r\n}\r\n\r\nfunction getNextSiblingAlternate(fiber: Fiber): Fiber | null {\r\n let alternate = fiber.alternate?.nextSibling || null;\r\n\r\n while (alternate && alternate.effectTag === EffectTag.DELETION) {\r\n alternate = alternate.nextSibling;\r\n }\r\n\r\n return alternate;\r\n}\r\n\r\nfunction transformElementInstance(instance: DarkElement) {\r\n return detectIsEmpty(instance) || instance === false ? createEmptyVirtualNode() : instance;\r\n}\r\n\r\nfunction getInstanceType(instance: DarkElementInstance): string | Function {\r\n return detectIsTagVirtualNode(instance)\r\n ? instance.name\r\n : detectIsVirtualNode(instance)\r\n ? instance.type\r\n : detectIsComponentFactory(instance)\r\n ? instance.type\r\n : null;\r\n}\r\n\r\nfunction getSiblingFibers(fiber: Fiber): Array {\r\n const list = [];\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n list.push(nextFiber);\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return list;\r\n}\r\n\r\nfunction hasChildrenProp(element: DarkElementInstance): element is TagVirtualNode | ComponentFactory {\r\n return detectIsTagVirtualNode(element) || detectIsComponentFactory(element);\r\n}\r\n\r\nfunction commitChanges() {\r\n const wipFiber = wipRootHelper.get();\r\n const fromHook = fromHookUpdateHelper.get();\r\n const deletions = deletionsHelper.get();\r\n const hasEffects = Boolean(wipFiber.alternate?.effectHost);\r\n const hasLayoutEffects = Boolean(wipFiber.alternate?.layoutEffectHost);\r\n const hasPortals = Boolean(wipFiber.alternate?.portalHost);\r\n\r\n if (hasEffects || hasLayoutEffects || hasPortals) {\r\n for (const fiber of deletions) {\r\n unmountFiber(fiber);\r\n }\r\n }\r\n\r\n commitWork(wipFiber.child, () => {\r\n const layoutEffects = layoutEffectsHelper.get();\r\n const effects = effectsHelper.get();\r\n\r\n for (const fiber of deletions) {\r\n platform.applyCommits(fiber);\r\n }\r\n\r\n deletionsHelper.set([]);\r\n wipRootHelper.set(null);\r\n\r\n for (const layoutEffect of layoutEffects) {\r\n layoutEffect();\r\n }\r\n\r\n setTimeout(() => {\r\n for (const effect of effects) {\r\n effect();\r\n }\r\n });\r\n\r\n layoutEffectsHelper.reset();\r\n effectsHelper.reset();\r\n\r\n if (fromHook) {\r\n fromHookUpdateHelper.set(false);\r\n } else {\r\n currentRootHelper.set(wipFiber);\r\n }\r\n });\r\n}\r\n\r\nfunction commitWork(fiber: Fiber, onComplete: Function) {\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, isReturn, resetIsDeepWalking }) => {\r\n const skip = nextFiber.effectTag === EffectTag.SKIP;\r\n\r\n if (skip) {\r\n resetIsDeepWalking();\r\n } else if (!isReturn) {\r\n platform.applyCommits(nextFiber);\r\n }\r\n\r\n if (nextFiber && nextFiber.shadow) {\r\n nextFiber.shadow = null;\r\n }\r\n },\r\n });\r\n\r\n onComplete();\r\n}\r\n\r\nfunction createHook(): Hook {\r\n return {\r\n idx: 0,\r\n values: [],\r\n };\r\n}\r\n\r\ntype GetHookOptions = {\r\n shadow: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction getHook(options: GetHookOptions) {\r\n const { shadow, alternate, instance } = options;\r\n\r\n if (shadow) return shadow.hook;\r\n\r\n if (alternate && getElementKey(alternate.instance) === getElementKey(instance)) {\r\n return alternate.hook;\r\n }\r\n\r\n return createHook();\r\n}\r\n\r\ntype CreateUpdateCallbackOptions = {\r\n rootId: number;\r\n fiber: Fiber;\r\n forceStart?: boolean;\r\n onStart: () => void;\r\n};\r\n\r\nfunction createUpdateCallback(options: CreateUpdateCallbackOptions) {\r\n const { rootId, fiber, forceStart = false, onStart } = options;\r\n const callback = () => {\r\n forceStart && onStart();\r\n if (fiber.isUsed) return;\r\n !forceStart && onStart();\r\n effectStoreHelper.set(rootId); // important order!\r\n fromHookUpdateHelper.set(true);\r\n fiberMountHelper.reset();\r\n\r\n fiber.alternate = new Fiber({\r\n ...fiber,\r\n alternate: null,\r\n });\r\n fiber.marker = PARTIAL_UPDATE;\r\n fiber.effectTag = EffectTag.UPDATE;\r\n fiber.child = null;\r\n\r\n wipRootHelper.set(fiber);\r\n componentFiberHelper.set(fiber);\r\n fiber.instance = mountInstance(fiber, fiber.instance);\r\n nextUnitOfWorkHelper.set(fiber);\r\n };\r\n\r\n return callback;\r\n}\r\n\r\nexport { Fiber, workLoop, createHook, hasChildrenProp, createUpdateCallback };\r\n","import { platform, type ScheduleCallbackOptions } from '../platform';\r\nimport { getRootId, componentFiberHelper } from '../scope';\r\nimport { createUpdateCallback } from '../fiber';\r\nimport { useMemo } from '../use-memo';\r\nimport { dummyFn } from '../helpers';\r\n\r\nfunction useUpdate(options?: ScheduleCallbackOptions) {\r\n const rootId = getRootId();\r\n const fiber = componentFiberHelper.get();\r\n const scope = useMemo(() => ({ fiber }), []);\r\n\r\n scope.fiber = fiber;\r\n\r\n const update = (onStart?: () => void) => {\r\n const callback = createUpdateCallback({\r\n rootId,\r\n fiber: scope.fiber,\r\n forceStart: Boolean(options?.timeoutMs),\r\n onStart: onStart || dummyFn,\r\n });\r\n\r\n platform.scheduleCallback(callback, options);\r\n };\r\n\r\n return update;\r\n}\r\n\r\nexport { useUpdate };\r\n","import { useEffect } from '../use-effect';\r\nimport { useMemo } from '../use-memo';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { useUpdate } from '../use-update';\r\nimport type { Fiber } from '../fiber';\r\nimport type { Context, ContextProviderValue } from '../context';\r\n\r\nfunction useContext(context: Context): T {\r\n const { defaultValue } = context;\r\n const fiber = componentFiberHelper.get();\r\n const provider = getProvider(context, fiber);\r\n const value = provider ? provider.value : defaultValue;\r\n const update = useUpdate();\r\n const scope = useMemo(() => ({ prevValue: value }), []);\r\n const hasProvider = Boolean(provider);\r\n\r\n useEffect(() => {\r\n if (!hasProvider) return;\r\n\r\n const subscriber = (newValue: T) => {\r\n if (!Object.is(scope.prevValue, newValue)) {\r\n update();\r\n }\r\n };\r\n\r\n provider.subscribers.push(subscriber);\r\n\r\n return () => {\r\n const idx = provider.subscribers.findIndex(x => x === subscriber);\r\n\r\n if (idx !== -1) {\r\n provider.subscribers.splice(idx, 1);\r\n }\r\n };\r\n }, [hasProvider]);\r\n\r\n scope.prevValue = value;\r\n\r\n return value;\r\n}\r\n\r\nfunction getProvider(context: Context, fiber: Fiber): ContextProviderValue {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (nextFiber.provider && nextFiber.provider.get(context)) {\r\n return nextFiber.provider.get(context) as ContextProviderValue;\r\n }\r\n\r\n nextFiber = nextFiber.parent;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport { useContext };\r\n","import { createComponent } from '../component';\r\nimport { useEffect } from '../use-effect';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { useContext } from '../use-context';\r\nimport { detectIsFunction } from '../helpers';\r\nimport type { Context, ContexProviderProps } from './types';\r\n\r\nfunction createContext(defaultValue: T): Context {\r\n let displayName = 'Context';\r\n const context: Context = {\r\n displayName,\r\n defaultValue,\r\n Provider: null,\r\n Consumer: null,\r\n };\r\n\r\n mutateContext(context, defaultValue, displayName);\r\n\r\n Object.defineProperty(context, 'displayName', {\r\n get: () => displayName,\r\n set: (newValue: string) => {\r\n displayName = newValue;\r\n mutateContext(context, defaultValue, displayName);\r\n },\r\n });\r\n\r\n return context;\r\n}\r\n\r\nfunction mutateContext(context: Context, defaultValue: T, displayName: string) {\r\n context.Provider = createProvider(context, defaultValue, displayName);\r\n context.Consumer = createConsumer(context, displayName);\r\n}\r\n\r\nfunction createProvider(context: Context, defaultValue: T, displayName: string) {\r\n return createComponent>(\r\n ({ value = defaultValue, slot }) => {\r\n const fiber = componentFiberHelper.get();\r\n\r\n if (!fiber.provider) {\r\n fiber.provider = new Map();\r\n }\r\n\r\n if (!fiber.provider.get(context)) {\r\n fiber.provider.set(context, {\r\n subscribers: [],\r\n value,\r\n });\r\n }\r\n\r\n const provider = fiber.provider.get(context);\r\n\r\n useEffect(() => {\r\n for (const subscriber of provider.subscribers) {\r\n subscriber(value);\r\n }\r\n }, [value]);\r\n\r\n provider.value = value;\r\n\r\n return slot;\r\n },\r\n { displayName: `${displayName}.Provider` },\r\n );\r\n}\r\n\r\nfunction createConsumer(context: Context, displayName: string) {\r\n return createComponent(\r\n ({ slot }) => {\r\n const value = useContext(context);\r\n\r\n return detectIsFunction(slot) ? slot(value) : null;\r\n },\r\n { displayName: `${displayName}.Consumer` },\r\n );\r\n}\r\n\r\nexport { createContext };\r\n","import { detectIsNumber, detectIsString, detectIsFunction } from '../helpers';\r\nimport { View, Text, type TagVirtualNodeFactory } from '../view';\r\n\r\nfunction getChildren(children: Array) {\r\n children = children.map(x => (detectIsString(x) || detectIsNumber(x) ? Text(x.toString()) : x));\r\n\r\n return children ? (Array.isArray(children) ? [...children] : [children]) : [];\r\n}\r\n\r\nfunction createElement(\r\n tag: string | Function,\r\n props: any,\r\n ...children: Array\r\n): TagVirtualNodeFactory | Function | null {\r\n if (detectIsString(tag)) {\r\n return View({\r\n ...props,\r\n as: tag,\r\n slot: getChildren(children),\r\n });\r\n }\r\n\r\n if (detectIsFunction(tag)) {\r\n let slot = getChildren(children);\r\n\r\n slot = slot.length === 1 ? slot[0] : slot;\r\n\r\n return tag({ ...props, slot });\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport { createElement };\r\n","import { useMemo } from '../use-memo';\r\n\r\nfunction useCallback(callback: T, deps: Array): T {\r\n const value = useMemo(() => callback, deps);\r\n\r\n return value;\r\n}\r\n\r\nexport { useCallback };\r\n","import { type ScheduleCallbackOptions } from '../platform';\r\nimport { detectIsUndefined, detectIsFunction } from '../helpers';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { useUpdate } from '../use-update';\r\nimport { useMemo } from '../use-memo';\r\nimport { useCallback } from '../use-callback';\r\nimport { TaskPriority } from '../constants';\r\n\r\ntype Value = T | ((prevValue: T) => T);\r\ntype Scope = {\r\n idx: number;\r\n values: Array;\r\n};\r\n\r\nfunction useState(initialValue: T, options?: ScheduleCallbackOptions): [T, (value: Value) => void] {\r\n const fiber = componentFiberHelper.get();\r\n const update = useUpdate(options);\r\n const scope: Scope = useMemo(\r\n () => ({\r\n idx: fiber.hook.idx,\r\n values: fiber.hook.values,\r\n }),\r\n [],\r\n );\r\n const setState = useCallback((sourceValue: Value) => {\r\n const value = scope.values[scope.idx];\r\n const newValue = detectIsFunction(sourceValue) ? sourceValue(value) : sourceValue;\r\n\r\n if (!Object.is(value, newValue)) {\r\n const setValue = () => {\r\n scope.values[scope.idx] = newValue;\r\n };\r\n\r\n if (options?.priority === TaskPriority.LOW) {\r\n update(() => setValue());\r\n } else {\r\n setValue();\r\n update();\r\n }\r\n }\r\n }, []);\r\n const { hook } = fiber;\r\n const { idx, values } = hook;\r\n const value: T = !detectIsUndefined(values[idx]) ? values[idx] : initialValue;\r\n\r\n values[idx] = value;\r\n scope.idx = idx;\r\n scope.values = values;\r\n hook.idx++;\r\n\r\n return [value, setState];\r\n}\r\n\r\nexport { useState };\r\n","import { createComponent } from '../component';\r\nimport { useState } from '../use-state';\r\nimport { createContext } from '../context';\r\nimport { useContext } from '../use-context';\r\nimport { useMemo } from '../use-memo';\r\nimport { useCallback } from '../use-callback';\r\nimport type { DarkElement } from '../shared';\r\n\r\ntype SuspenseProps = {\r\n fallback: DarkElement;\r\n};\r\n\r\ntype SuspenseContextValue = {\r\n fallback: DarkElement;\r\n isLoaded: boolean;\r\n trigger: () => void;\r\n};\r\n\r\nconst SuspenseContext = createContext({\r\n fallback: null,\r\n isLoaded: true,\r\n trigger: () => {},\r\n});\r\n\r\nconst Suspense = createComponent(({ fallback, slot }) => {\r\n if (!fallback) {\r\n throw new Error(`Suspense fallback not found`);\r\n }\r\n const { isLoaded: isSuspenseLoaded } = useContext(SuspenseContext);\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n const trigger = useCallback(() => setIsLoaded(true), []);\r\n const value = useMemo(() => ({ fallback, isLoaded, trigger }), [fallback, isLoaded]);\r\n\r\n return SuspenseContext.Provider({\r\n value,\r\n slot: isSuspenseLoaded ? slot : null,\r\n });\r\n});\r\n\r\nexport { SuspenseContext, Suspense };\r\n","import { type Component, createComponent, detectIsComponentFactory } from '../component';\r\nimport { useState } from '../use-state';\r\nimport { useEffect } from '../use-effect';\r\nimport { forwardRef } from '../ref';\r\nimport { SuspenseContext } from '../suspense';\r\nimport { useContext } from '../use-context';\r\n\r\nconst $$lazy = Symbol('lazy');\r\n\r\ntype LazyScope = {\r\n component: Component;\r\n};\r\n\r\nfunction lazy(dynamic: () => Promise<{ default: Component

}>) {\r\n return forwardRef(\r\n createComponent(\r\n (props, ref) => {\r\n const { fallback, trigger } = useContext(SuspenseContext);\r\n const [scope, setScope] = useState>({\r\n component: null,\r\n });\r\n\r\n useEffect(() => {\r\n fetchModule(dynamic).then(component => {\r\n setScope({ component });\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!scope.component) return;\r\n trigger();\r\n }, [scope.component]);\r\n\r\n return scope.component ? scope.component(props, ref) : fallback;\r\n },\r\n { token: $$lazy },\r\n ),\r\n );\r\n}\r\n\r\nconst detectIsLazy = (factory: unknown) => detectIsComponentFactory(factory) && factory.token === $$lazy;\r\n\r\nfunction fetchModule(dynamic: () => Promise<{ default: Component }>) {\r\n return new Promise(resolve => {\r\n dynamic().then(module => {\r\n if (!module.default) {\r\n throw new Error('lazy loaded component should be exported as default!');\r\n }\r\n\r\n resolve(module.default);\r\n });\r\n });\r\n}\r\n\r\nexport { lazy, detectIsLazy };\r\n","import { useState } from '../use-state';\r\nimport { useEffect } from '../use-effect';\r\nimport { TaskPriority } from '../constants';\r\n\r\ntype UseDeferredValueOprions = {\r\n timeoutMs: number;\r\n};\r\n\r\nfunction useDeferredValue(value: T, options?: UseDeferredValueOprions): T {\r\n const { timeoutMs } = options || {};\r\n const [deferredValue, setDeferredValue] = useState(value, {\r\n priority: TaskPriority.LOW,\r\n timeoutMs,\r\n });\r\n\r\n useEffect(() => {\r\n setDeferredValue(value);\r\n }, [value]);\r\n\r\n return deferredValue;\r\n}\r\n\r\nexport { useDeferredValue };\r\n","import { componentFiberHelper } from '../scope';\r\nimport { useEffect } from '../use-effect';\r\nimport { useUpdate } from '../use-update';\r\nimport { useMemo } from '../use-memo';\r\n\r\ntype ErrorScope = {\r\n error: Error;\r\n};\r\n\r\nfunction useError(): Error | null {\r\n const fiber = componentFiberHelper.get();\r\n const update = useUpdate();\r\n const scope: ErrorScope = useMemo(() => ({ error: null }), []);\r\n\r\n fiber.catchException = (error: Error) => {\r\n scope.error = error;\r\n update();\r\n };\r\n\r\n useEffect(() => {\r\n scope.error = null;\r\n }, [scope.error]);\r\n\r\n return scope.error;\r\n}\r\n\r\nexport { useError };\r\n","import { useMemo } from '../use-memo';\r\nimport { useCallback } from '../use-callback';\r\n\r\nfunction useEvent any>(fn: T) {\r\n const scope = useMemo(() => ({ fn }), []);\r\n\r\n scope.fn = fn;\r\n\r\n const callback = useCallback((...args) => {\r\n return scope.fn(...args);\r\n }, []);\r\n\r\n return callback as unknown as T;\r\n}\r\n\r\nexport { useEvent };\r\n","import { useMemo } from '../use-memo';\r\nimport type { MutableRef } from '../ref';\r\n\r\nfunction useImperativeHandle(ref: MutableRef, createHandle: () => T, deps: Array) {\r\n const current = useMemo(() => createHandle(), deps);\r\n\r\n ref.current = current;\r\n}\r\n\r\nexport { useImperativeHandle };\r\n","import { useState } from '../use-state';\r\nimport { useCallback } from '../use-callback';\r\nimport { useMemo } from '../use-memo';\r\nimport { detectIsFunction } from '../helpers';\r\nimport type { Reducer, Dispatch, ReducerAction, ReducerState } from './types';\r\n\r\nfunction useReducer(\r\n reducer: R,\r\n initialState: ReducerState,\r\n initializer?: (state: ReducerState) => ReducerState,\r\n): [ReducerState, Dispatch>] {\r\n const initialValue = useMemo(() => {\r\n return detectIsFunction(initializer) ? initializer(initialState) : initialState;\r\n }, []);\r\n const [state, setState] = useState>(initialValue);\r\n const dispatch = useCallback((action: ReducerAction) => setState(state => reducer(state, action)), []) as Dispatch<\r\n ReducerAction\r\n >;\r\n\r\n return [state, dispatch];\r\n}\r\n\r\nexport { useReducer };\r\n","import { useMemo } from '../use-memo';\r\nimport type { MutableRef } from '../ref';\r\n\r\nfunction useRef(initialValue: T = null): MutableRef {\r\n const ref = useMemo(() => ({ current: initialValue }), []) as MutableRef;\r\n\r\n return ref;\r\n}\r\n\r\nexport { useRef };\r\n"],"names":["root","factory","exports","module","define","amd","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","TaskPriority","ROOT","EMPTY_NODE","ATTR_KEY","ATTR_REF","PARTIAL_UPDATE","detectIsFunction","detectIsUndefined","detectIsNumber","detectIsString","detectIsObject","detectIsBoolean","detectIsArray","Array","isArray","detectIsNull","detectIsEmpty","error","str","console","flatten","source","list","levelMap","idx","level","item","length","push","getTime","Date","now","keyBy","fn","reduce","acc","x","takeListFromEnd","count","slice","dummyFn","detectIsDepsDifferent","deps","prevDeps","i","defaultOptions","displayName","defaultProps","token","options","children","this","type","props","ref","shouldUpdate","createComponent","createElement","computedOptions","computedProps","ComponentFactory","NodeType","detectIsComponentFactory","getComponentFactoryKey","wipRoot","currentRoot","nextUnitOfWork","fromHookUpdate","events","Map","unsubscribers","deletions","fiberMount","navigation","isDeepWalking","componentFiber","effects","layoutEffects","rootId","stores","effectStoreHelper","set","id","effectStore","remove","delete","getRootId","Store","storeHelper","wipRootHelper","fiber","currentRootHelper","nextUnitOfWorkHelper","componentFiberHelper","fromHookUpdateHelper","eventsHelper","addUnsubscriber","mapUnsubscribers","forEach","deletionsHelper","fiberMountHelper","reset","getIndex","jumpToChild","nextLevel","jumpToParent","jumpToSibling","deepWalking","effectsHelper","add","effect","layoutEffectsHelper","createEffectFunctions","useEffect","hasEffects","cleanupEffects","store","hook","values","runEffect","undefined","cleanup","some","$$virtualNode","TAG","name","isVoid","attrs","VirtualNode","text","TEXT","COMMENT","detectIsVirtualNode","vNode","detectIsTagVirtualNode","TagVirtualNode","detectIsCommentVirtualNode","CommentVirtualNode","detectIsTextVirtualNode","TextVirtualNode","detectIsEmptyVirtualNode","getVirtualNodeKey","Text","Comment","View","def","as","slot","rest","createEmptyVirtualNode","detectIsVirtualNodeFactory","$$fragment","Fragment","detectIsFragment","forwardRef","component","detectIsRef","mutableRef","$$memo","defaultShouldUpdate","nextProps","keys","detectIsMemo","memo","Memo","processValue","getValue","isDepsDifferent","check","wrap","useMemo","hookValue","computedGetValue","EffectTag","platform","scheduleCallback","Error","shouldYeildToHost","createNativeElement","applyCommits","detectIsPortal","unmountPortal","cloneTagMap","PLACEMENT","SKIP","useLayoutEffect","hasLayoutEffects","cleanupLayoutEffects","walkFiber","onLoop","nextFiber","isReturn","isStopped","visitedMap","detectCanVisit","resetIsDeepWalking","stop","child","newFiber","nextSibling","parent","unmountFiber","effectHost","layoutEffectHost","transposition","instance","portalHost","unmountRoot","onComplete","nativeElement","alternate","effectTag","shadow","provider","mountedToHost","childrenCount","marker","isUsed","markPortalHost","markEffectHost","markLayoutEffectHost","setError","catchException","workLoop","wipFiber","shouldYield","hasMoreWork","Boolean","performUnitOfWork","fromHook","hasPortals","layoutEffect","setTimeout","commitChanges","hasChildrenProp","performChild","performedFiber","performSibling","performPartialUpdateEffects","DELETION","getChildAlternate","getHook","Fiber","pertformInstance","mutateAlternate","mutateFiber","performMemo","performedNextFiber","performedShadow","performedInstance","childrenIdx","getNextSiblingAlternate","isDifferentKeys","getElementKey","isUpdate","getInstanceType","UPDATE","alternateType","isSameType","isSameKeys","isRemovingCase","isInsertingCase","nextKeys","nextKey","extractKeys","diffKeys","getDiffKeys","fibersMap","map","createFibersByKeyMap","diffCount","fibers","getSiblingFibers","performRemovingNodes","diffKeyMap","fibersByPositionsMap","position","createFibersByPositionMap","usedKeyMap","keyIdx","insertionFiber","performInsertingNodes","memoFiber","alternateFactory","elements","splice","getAlternateByKey","getRootShadow","mountInstance","isComponentFactory","result","err","transformElementInstance","nextKeysMap","diff","element","createHook","createUpdateCallback","forceStart","onStart","useUpdate","scope","callback","timeoutMs","useContext","context","defaultValue","getProvider","update","prevValue","hasProvider","subscriber","newValue","is","subscribers","findIndex","createContext","Provider","Consumer","mutateContext","createProvider","createConsumer","getChildren","toString","tag","useCallback","useState","initialValue","setState","sourceValue","priority","LOW","SuspenseContext","fallback","isLoaded","trigger","Suspense","isSuspenseLoaded","setIsLoaded","$$lazy","lazy","dynamic","setScope","Promise","resolve","then","default","fetchModule","detectIsLazy","useDeferredValue","deferredValue","setDeferredValue","useError","useEvent","args","useImperativeHandle","createHandle","current","useReducer","reducer","initialState","initializer","state","dispatch","action","useRef"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"dark-core.production.min.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,WAAY,GAAIH,GACG,iBAAZC,QACdA,QAAkB,SAAID,IAEtBD,EAAe,SAAIC,IARrB,CASGK,MAAM,I,mBCRT,IAAIC,EAAsB,CCA1BA,EAAwB,CAACL,EAASM,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAER,EAASO,IAC5EE,OAAOC,eAAeV,EAASO,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFT,EAAyBL,IACH,oBAAXkB,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeV,EAASkB,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeV,EAAS,aAAc,CAAEoB,OAAO,M,kzDCLhD,IAMKC,EANCC,EAAO,OACPC,EAAa,cACbC,EAAW,MACXC,EAAW,MACXC,EAAiB,kBAE9B,SAAYL,GACV,mBACA,uBACA,iBAHF,CAAYA,IAAAA,EAAY,KCJxB,IAAMM,EAAmB,SAACnB,GAA0B,MAAa,mBAANA,GACrDoB,EAAoB,SAACpB,GAAW,YAAa,IAANA,GACvCqB,EAAiB,SAACrB,GAAW,MAAa,iBAANA,GACpCsB,EAAiB,SAACtB,GAAW,MAAa,iBAANA,GACpCuB,EAAiB,SAACvB,GAAW,MAAa,iBAANA,GACpCwB,EAAkB,SAACxB,GAAW,MAAa,kBAANA,GACrCyB,EAAgB,SAACzB,GAA4B,OAAA0B,MAAMC,QAAQ3B,IAC3D4B,EAAe,SAAC5B,GAAW,OAAM,OAANA,GAC3B6B,EAAgB,SAAC7B,GAAW,OAAA4B,EAAa5B,IAAMoB,EAAkBpB,IAEvE,SAAS8B,EAAMC,IACZX,EAAkBY,UAAYA,QAAQF,MAAMC,GAG/C,SAASE,EAAiBC,GACxB,IAAMC,EAAO,GACPC,EAAW,CAAE,EAAG,CAAEC,IAAK,EAAGH,OAAM,IAClCI,EAAQ,EAEZ,EAAG,CACK,MAAkBF,EAASE,GAAzB,EAAM,SAAED,EAAG,MACbE,EAAO,EAAOF,GAEhBA,GAAO,EAAOG,OAEhBJ,IADAE,GACgBD,MAIdZ,EAAcc,GAEhBH,IADAE,GACkB,CAChBD,IAAK,EACLH,OAAQK,IAGVJ,EAAKM,KAAKF,GACVH,EAASE,GAAOD,aAEXC,EAAQ,GAAKF,EAASE,GAAOD,IAAMD,EAASE,GAAOJ,OAAOM,QAEnE,OAAOL,EAGT,SAASO,IACP,OAAOC,KAAKC,MAGd,SAASC,EACPV,EACAW,EACAlC,GAEA,YAFA,IAAAA,IAAAA,GAAA,GAEOuB,EAAKY,QAAO,SAACC,EAAKC,GAAM,OAAED,EAAIF,EAAGG,KAAMrC,GAAQqC,EAAWD,IAAM,IAGzE,SAASE,EAAmBhB,EAAkBiB,GAC5C,OAAOjB,EAAOkB,MAAMlB,EAAOM,OAASW,EAAOjB,EAAOM,QAGpD,IAAMa,EAAU,aAEhB,SAASC,EAAsBC,EAAsBC,GACnD,IAAKpC,EAAkBmC,KAAUnC,EAAkBoC,IAAaD,EAAKf,OAAS,GAAKgB,EAAShB,OAAS,EACnG,IAAK,IAAIiB,EAAI,EAAGA,EAAID,EAAShB,OAAQiB,IACnC,GAAID,EAASC,KAAOF,EAAKE,GACvB,OAAO,EAKb,OAAO,E,oNClEHC,EAAwC,CAC5CC,YAAa,GACbC,aAAc,GACdC,MAJkBnD,OAAO,cAM3B,EASE,SAAYoD,GAHL,KAAAC,SAAuC,GAI5CC,KAAKC,KAAOH,EAAQG,MAAQ,KAC5BD,KAAKH,MAAQC,EAAQD,OAAS,KAC9BG,KAAKE,MAAQJ,EAAQI,OAAS,KAC9BF,KAAKG,IAAML,EAAQK,KAAO,KAC1BH,KAAKL,YAAcG,EAAQH,aAAe,GAC1CK,KAAKI,aAAeN,EAAQM,cAAgB,MAIhD,SAASC,EACPC,EACAR,QAAA,IAAAA,IAAAA,EAAA,IAGA,IAAMS,EAAkB,EAAH,KAAQb,GAAmBI,GACxCD,EAAmDU,EAAe,MAA3DX,EAA4CW,EAAe,aAA7CZ,EAA8BY,EAAe,YAAhCH,EAAiBG,EAAe,aAE1E,OAAO,SAACL,EAAqBC,QAArB,IAAAD,IAAAA,EAAQ,IACd,IAAMM,EAAgB,EAAH,KAAQZ,GAAiBM,GACtC3E,EAAU,IAAIkF,EAAiB,CACnCZ,MAAK,EACLM,IAAG,EACHR,YAAW,EACXS,aAAY,EACZF,MAAOM,EACPP,KAAMK,EACNP,SAAU,KAWZ,OARIS,EAAcL,YACTK,EAAcL,IAOhB5E,GAIX,ICxDYmF,EDwDNC,EAA2B,SAACpF,GAAkD,OAAAA,aAAmBkF,GAEjGG,EAAyB,SAACrF,GAC9B,OAACsC,EAActC,EAAQ2E,MAAMlD,IAAuC,KAA1BzB,EAAQ2E,MAAMlD,IEhE1D,aACS,KAAA6D,QAAiB,KACjB,KAAAC,YAAqB,KACrB,KAAAC,eAAwB,KACxB,KAAAC,gBAAiB,EACjB,KAAAC,OAAiD,IAAIC,IACrD,KAAAC,cAAmC,GACnC,KAAAC,UAA0B,GAC1B,KAAAC,WAAa,CAClB/C,MAAO,EACPgD,WAAY,GACZC,eAAe,GAEV,KAAAC,eAAwB,KACxB,KAAAC,QAA6B,GAC7B,KAAAC,cAAmC,IAGxCC,EAAS,KACPC,EAAS,IAAIV,IAEbW,EAAoB,CACxBC,IAAK,SAACC,GAAe,OAAAC,EAAYD,IACjCE,OAAQ,SAACF,GAAe,OAAAH,EAAOM,OAAOH,KAGlCI,EAAY,WAAc,OAAAR,GAE1BK,EAAc,SAACD,GACnBJ,EAASI,GACRH,EAAOxF,IAAIuF,IAAWC,EAAOE,IAAIH,EAAQ,IAAIS,IAG1CC,EACC,SAACN,GAAwB,YAAxB,IAAAA,IAAAA,EAAA,GAAwBH,EAAOxF,IAAI2F,IAGrCO,EAAgB,CACpBlG,IAAK,iBAAM,OAAiB,QAAjB,EAAAiG,WAAiB,eAAExB,UAAW,MACzCiB,IAAK,SAACS,GAAiB,OAACF,IAAkBxB,QAAU0B,IAGhDC,EAAoB,CACxBpG,IAAK,SAAC2F,GAAW,MAAK,OAAmB,QAAnB,EAAAM,EAAgBN,UAAG,eAAEjB,cAAe,MAC1DgB,IAAK,SAACS,GAAiB,OAACF,IAAkBvB,YAAcyB,IAGpDE,EAAuB,CAC3BrG,IAAK,iBAAM,OAAiB,QAAjB,EAAAiG,WAAiB,eAAEtB,iBAAkB,MAChDe,IAAK,SAACS,GAAiB,OAACF,IAAkBtB,eAAiBwB,IAGvDG,EAAuB,CAC3BtG,IAAK,iBAAM,OAAiB,QAAjB,EAAAiG,WAAiB,eAAEb,gBAC9BM,IAAK,SAACS,GAAiB,OAACF,IAAkBb,eAAiBe,IAGvDI,EAAuB,CAC3BvG,IAAK,iBAAM,OAAiB,QAAjB,EAAAiG,WAAiB,eAAErB,kBAAkB,GAChDc,IAAK,SAAClF,GAAmB,OAACyF,IAAkBrB,eAAiBpE,IAGzDgG,EAAe,CACnBxG,IAAK,WAAM,OAAAiG,IAAkBpB,QAC7B4B,gBAAiB,SAAC/D,GAAmB,OAAAuD,IAAkBlB,cAAc1C,KAAKK,IAC1EgE,iBAAkB,SAACf,GAAe,OAAAM,EAAgBN,GAAIZ,cAAc4B,SAAQ,SAAAjE,GAAM,OAAAA,SAG9EkE,EAAkB,CACtB5G,IAAK,WAAM,OAAAiG,IAAkBjB,WAC7BU,IAAK,SAACV,GAA4B,OAACiB,IAAkBjB,UAAYA,IAG7D6B,EAAmB,CACvBC,MAAO,WACLb,IAAkBhB,WAAa,CAC7B/C,MAAO,EACPgD,WAAY,GACZC,eAAe,IAGnB4B,SAAU,WAAM,OAAAd,IAAkBhB,WAAWC,WAAWe,IAAkBhB,WAAW/C,QACrF8E,YAAa,WACH,IAAA/B,EAAegB,IAAiB,WAElCgB,EADQhC,EAAW/C,MACC,EAE1B+C,EAAW/C,MAAQ+E,EACnBhC,EAAWC,WAAW+B,GAAa,GAErCC,aAAc,WACJ,IAAAjC,EAAegB,IAAiB,WAClC/D,EAAQ+C,EAAW/C,MACnB+E,EAAY/E,EAAQ,EAE1B+C,EAAWC,WAAWhD,GAAS,EAC/B+C,EAAW/C,MAAQ+E,GAErBE,cAAe,WACL,IAAAlC,EAAegB,IAAiB,WAClC/D,EAAQ+C,EAAW/C,MACnBD,EAAMgD,EAAWC,WAAWhD,GAAS,EAE3C+C,EAAWC,WAAWhD,GAASD,GAEjCmF,YAAa,CACXpH,IAAK,WAAM,OAAAiG,IAAkBhB,WAAWE,eACxCO,IAAK,SAAClF,GAAmB,OAACyF,IAAkBhB,WAAWE,cAAgB3E,KAIrE6G,EAAgB,CACpBrH,IAAK,WAAM,OAAAiG,IAAkBZ,SAC7ByB,MAAO,WAAM,OAACb,IAAkBZ,QAAU,IAC1CiC,IAAK,SAACC,GAAuB,OAAAtB,IAAkBZ,QAAQhD,KAAKkF,KAGxDC,EAAsB,CAC1BxH,IAAK,WAAM,OAAAiG,IAAkBX,eAC7BwB,MAAO,WAAM,OAACb,IAAkBX,cAAgB,IAChDgC,IAAK,SAACC,GAAuB,OAAAtB,IAAkBX,cAAcjD,KAAKkF,KCnH9D,EAA4CE,EAF9BnH,OAAO,cAE0D+G,GAA7EK,EAAS,YAAEC,EAAU,aAAEC,EAAc,iBAE7C,SAASH,EAAsBhE,EAAeoE,GAmD5C,MAAO,CACLH,UAnDF,SAAmBH,EAAgBpE,GACjC,IACM2E,EADQxB,EAAqBtG,MAChB8H,KACX7F,EAAgB6F,EAAI,IAAfC,EAAWD,EAAI,OACtBE,EAAY,WAChBD,EAAO9F,GAAO,CACZkB,KAAI,EACJM,MAAK,EACLjD,WAAOyH,GAGTJ,EAAMP,KAAI,WACRS,EAAO9F,GAAKzB,MAAQ+G,QAIxB,GAAIvG,EAAkB+G,EAAO9F,IAC3B+F,QACK,CACC,MAAqCD,EAAO9F,GAApCmB,EAAQ,OAAS8E,EAAO,UACd/E,GAAOD,EAAsBC,EAAMC,MAGzDrC,EAAiBmH,IAAYA,IAC7BF,KAIJF,EAAK7F,OAwBL0F,WArBF,SAAoBxB,GAIlB,OAHmBA,EAAM2B,KAAuB,OACvBK,MAAK,SAAAtF,GAAK,OAAAA,EAAEY,QAAUA,MAoB/CmE,eAfF,SAAwBE,G,QACdC,EAAWD,EAAI,O,IAEvB,IAAoB,M,ySAAA,CAAAC,GAAM,8BAAE,CAAvB,IAAMvH,EAAK,QACd,GAAIA,EAAMiD,QAAUA,EAAO,CACzB,IAAMyE,EAAU1H,EAAMA,MAEtBO,EAAiBmH,IAAYA,M,qGFhDrC,SAAY5D,GACV,YACA,cACA,oBAHF,CAAYA,IAAAA,EAAQ,K,6pBGId8D,GAAgB9H,OAAO,gBAE7B,GAGE,SAAYoD,GAFL,KAAAG,KAAiB,KAGtBD,KAAKC,KAAOH,EAAQG,MAIxB,eAOE,WAAYH,GAAZ,MACE,YAAMA,IAAQ,K,OAPT,EAAAG,KAAOS,EAAS+D,IAChB,EAAAC,KAAe,KACf,EAAAC,QAAS,EACT,EAAAC,MAA6B,GAC7B,EAAA7E,SAAyD,GAI9D,EAAK2E,KAAO5E,EAAQ4E,MAAQ,EAAKA,KACjC,EAAKC,OAAS7E,EAAQ6E,QAAU,EAAKA,OACrC,EAAKC,MAAQ9E,EAAQ8E,OAAS,EAAKA,MACnC,EAAK7E,SAAWD,EAAQC,UAAY,EAAKA,S,EAE7C,OAd6B,QAc7B,EAdA,CAA6B8E,IAgB7B,eAIE,WAAYC,GAAZ,MACE,YAAM,KAAG,K,OAJJ,EAAA7E,KAAOS,EAASqE,KAChB,EAAAnI,MAAQ,GAIb,EAAKA,MAAQkI,E,EAEjB,OAR8B,QAQ9B,EARA,CAA8BD,IAU9B,eAIE,WAAYC,GAAZ,MACE,YAAM,KAAG,K,OAJJ,EAAA7E,KAAOS,EAASsE,QAChB,EAAApI,MAAQ,GAIb,EAAKA,MAAQkI,E,EAEjB,OARiC,QAQjC,EARA,CAAiCD,IAU3BI,GAAsB,SAACC,GAAyC,OAAAA,aAAiBL,IACjFM,GAAyB,SAACD,GAA4C,OAAAA,aAAiBE,IACvFC,GAA6B,SAACH,GAAgD,OAAAA,aAAiBI,IAC/FC,GAA0B,SAACL,GAA6C,OAAAA,aAAiBM,IACzFC,GAA2B,SAACP,GAChC,OAAAG,GAA2BH,IAAUA,EAAMtI,QAAUG,GAEvD,SAAS2I,GAAkBR,GACzB,IAAMnJ,EAAMmJ,GAASA,EAAMN,MAAM5H,GAEjC,OAAQa,EAAc9B,GAAa,KAANA,EAG/B,SAAS4J,GAAKzH,GAIZ,MAFoB,iBAAXA,EAAsB,IAAIsH,GAAgBtH,GAAUqH,GAAwBrH,GAAUA,EAAOtB,MAAQ,GAKhH,SAASgJ,GAAQd,GACf,IAAMvJ,EAAU,WAAM,WAAI+J,GAAmBR,IAI7C,OAFAvJ,EAAQiJ,KAAiB,EAElBjJ,EAGT,SAASsK,GAAKC,GACZ,IAAMvK,EAAU,WACN,IAAAwK,EAAsCD,EAAG,GAArCE,EAAkCF,EAAG,KAA/B,EAA4BA,EAAG,OAA/BnB,OAAM,IAAG,GAAK,EAAKsB,E,yUAAI,CAAKH,EAAxC,wBACA/F,EAAW4E,EAAS,GAAKlH,EAAcuI,GAAQA,EAAOA,EAAO,CAACA,GAAQ,GAE5E,OAAO,IAAIZ,GAAe,CACxBV,KAAMqB,EACNpB,OAAM,EACNC,MAAO,MAAKqB,GACZlG,SAAUA,KAMd,OAFAxE,EAAQiJ,KAAiB,EAElBjJ,EAGT,IAAM2K,GAAyB,WAAM,WAAIZ,GAAmBvI,IAEtDoJ,GAA6B,SAAC5K,GAClC,OAAA4B,EAAiB5B,KAAuC,IAA3BA,EAAQiJ,KCxGjC4B,GAAa1J,OAAO,YAEpB2J,GAAWhG,GAA0B,SAAC,GAAa,OAAP,QAAe,OAAM,CACrER,MAAOuG,KAGHE,GAAmB,SAAC/K,GAAqB,OAAAoF,EAAyBpF,IAAYA,EAAQsE,QAAUuG,ICJtG,SAASG,GAAiBC,GAGxB,OAAO,SAAC,GAAE,IAAArG,EAAG,MAAK8F,E,yUAAI,GAAd,SACN,OAAOO,EAAUP,EAAW9F,IAIhC,IAAMsG,GAAc,SAACtG,GACnB,IAAK5C,EAAe4C,IAAQvC,EAAauC,GAAM,OAAO,EACtD,IAAMuG,EAAavG,EAEnB,IAAK,IAAMpE,KAAO2K,EAChB,GAAY,YAAR3K,GAAqB2K,EAAWlK,eAAeT,GACjD,OAAO,EAIX,OAAO,GCTH4K,GAASjK,OAAO,QAEhBkK,GAAsB,SAAC1G,EAAW2G,G,QAChCC,EAAO7K,OAAO6K,KAAKD,G,IAEzB,IAAkB,M,ySAAA,CAAAC,GAAI,8BAAE,CAAnB,IAAM/K,EAAG,QACZ,GAAY,SAARA,GAAkB8K,EAAU9K,KAASmE,EAAMnE,GAC7C,OAAO,G,iGAIX,OAAO,GAGHgL,GAAe,SAACxL,GAAqB,OAAAoF,EAAyBpF,IAAYA,EAAQsE,QAAU8G,IAElG,SAASK,GACPR,EACApG,GAEA,YAFA,IAAAA,IAAAA,EAAA,IAEOmG,GACLlG,GACE,SAACH,EAAqBC,GAGpB,OAFAA,IAAQD,EAAMC,IAAMA,GAEbqG,EAAUtG,KAEnB,CAAEL,MAAO8G,GAAQvG,aAAY,KChCnC,IAAM6G,GAAO5G,GAAgB,SAAC,GAAa,OAAP,SAAa,CAAER,MAAO8G,KAmB1D,SAASO,GAAgBC,EAAmBC,GAC1C,YAD0C,IAAAA,IAAAA,GAAA,GAjB5C,SAAiBxK,EAAUwK,GACzB,IAAMC,EAAQ,SAACzK,GAAa,OAAAuJ,GAA2BvJ,IAAU+D,EAAyB/D,IAE1F,GAAIa,EAAcb,GAASyK,EAAMzK,EAAM,IAAMyK,EAAMzK,GAAQ,CACzD,IACMrB,EAAU0L,GAAK,CACnBjB,KAAMK,GAAS,CAAEL,KAFNpJ,MAOb,OAFArB,EAAQ6E,aAAe,WAAM,OAAAgH,GAEtB7L,EAGT,OAAOqB,EAIA0K,CAAKH,IAAYC,GAG1B,SAASG,GAAWJ,EAAmB5H,GACrC,IACQ2E,EADMxB,EAAqBtG,MACb,KACdiC,EAAgB6F,EAAI,IAAfC,EAAWD,EAAI,OAE5B,GAAI9G,EAAkB+G,EAAO9F,IAAO,CAClC,IAAMzB,EAAQsK,GAAaC,GAS3B,OAPAhD,EAAO9F,GAAO,CACZkB,KAAI,EACJ3C,MAAK,GAGPsH,EAAK7F,MAEEzB,EAGT,IAAM4K,EAAYrD,EAAO9F,GAEnB+I,EAAkB9H,EAAsBC,EAD7BiI,EAAUjI,MAErBkI,EAAmBL,EAAkBD,EAAW,WAAM,OAAAK,EAAU5K,OAOtE,OALA4K,EAAUjI,KAAOA,EACjBiI,EAAU5K,MAAQsK,GAAaO,EAAkBL,GAEjDlD,EAAK7F,MAEEmJ,EAAU5K,MCzDZ,I,GCFK8K,GDECC,GAAqB,CAChCC,iBAAkB,WAChB,MAAM,IAAIC,MAAM,+CAElBC,kBAAmB,WACjB,MAAM,IAAID,MAAM,gDAElBE,oBAAqB,WACnB,MAAM,IAAIF,MAAM,kDAElBG,aAAc,WACZ,MAAM,IAAIH,MAAM,2CAElBI,eAAgB,WACd,MAAM,IAAIJ,MAAM,6CAElBK,cAAe,WACb,MAAM,IAAIL,MAAM,8CCnBpB,SAAYH,GACV,wBACA,kBACA,sBACA,cAJF,CAAYA,KAAAA,GAAS,KAoBd,IAAMS,KAAW,OACrBT,GAAUU,YAAY,EACvB,GAACV,GAAUW,OAAO,E,ICjBd,GAIFxE,EANsBnH,OAAO,qBAMYkH,GAHhC0E,GAAe,aACdC,GAAgB,cACZC,GAAoB,kBCMtC,SAASC,GAAuB3I,GAS9B,IARQ,IAAAyC,EAAkBzC,EAAO,MAAlB4I,EAAW5I,EAAO,OAC7B6I,EAAYpG,EACZhB,GAAgB,EAChBqH,GAAW,EACXC,GAAY,EACVC,EAAa,IAAI5H,IACjB6H,EAAiB,SAACxG,GAAiB,OAACuG,EAAW1M,IAAImG,IAElDoG,IACLD,EAAO,CACLC,UAAWA,EACXC,SAAQ,EACRI,mBAAoB,WAAM,OAACzH,GAAgB,GAC3C0H,KAAM,WAAM,OAACJ,GAAY,MAGvBA,IAIJ,GAAIF,EAAUO,OAAS3H,GAAiBwH,EAAeJ,EAAUO,OAG/DN,GAAW,EACXD,EAHMQ,EAAWR,EAAUO,MAI3BJ,EAAWhH,IAAIqH,GAAU,QACpB,GAAIR,EAAUS,aAAeL,EAAeJ,EAAUS,aAAc,CACzE,IAAMD,EAAWR,EAAUS,YAE3B7H,GAAgB,EAChBqH,GAAW,EACXD,EAAYQ,EACZL,EAAWhH,IAAIqH,GAAU,QAEzBR,EAAUU,QACVV,EAAUU,SAAW9G,GACrBoG,EAAUU,OAAOD,aACjBL,EAAeJ,EAAUU,OAAOD,cAE1BD,EAAWR,EAAUU,OAAOD,YAElC7H,GAAgB,EAChBqH,GAAW,EACXD,EAAYQ,EACZL,EAAWhH,IAAIqH,GAAU,IAChBR,EAAUU,QAAUV,EAAUU,SAAW9G,GAClDhB,GAAgB,EAChBqH,GAAW,EACXD,EAAYA,EAAUU,QAEtBV,EAAY,KCxDlB,SAASW,GAAa/G,IAChBA,EAAMgH,YAAchH,EAAMiH,mBAC5Bf,GAAU,CACRlG,MAAK,EACLmG,OAAQ,SAAC,G,IAAEC,EAAS,YAAEC,EAAQ,WAAEK,EAAI,OAClC,GAAIN,IAAcpG,EAAM6G,aAAe7G,EAAMkH,cAAe,OAAOR,KAE9DL,GAAYjI,EAAyBgI,EAAUe,YAClDlB,GAAqBG,EAAUzE,MAC/BF,EAAe2E,EAAUzE,UAMjC3B,EAAMoH,YAAchC,GAASO,cAAc3F,GAG7C,SAASqH,GAAYjI,EAAgBkI,GAC/BzM,EAAkBuE,KAEtB2H,GAAa9G,EAAkBpG,IAAIuF,IACnCiB,EAAaE,iBAAiBnB,GAC9BE,EAAkBI,OAAON,GACzBkI,K,k+BCAF,cAqBE,WAAY/J,GACVE,KAAK8J,cAAgBhK,EAAQgK,eAAiB,KAC9C9J,KAAKqJ,OAASvJ,EAAQuJ,QAAU,KAChCrJ,KAAKkJ,MAAQpJ,EAAQoJ,OAAS,KAC9BlJ,KAAKoJ,YAActJ,EAAQsJ,aAAe,KAC1CpJ,KAAK+J,UAAYjK,EAAQiK,WAAa,KACtC/J,KAAKgK,UAAYlK,EAAQkK,WAAa,KACtChK,KAAK0J,SAAW5J,EAAQ4J,UAAY,KACpC1J,KAAKkE,KAAOpE,EAAQoE,MA6xBf,CACL7F,IAAK,EACL8F,OAAQ,IA9xBRnE,KAAKiK,OAASnK,EAAQmK,QAAU,KAChCjK,KAAKkK,SAAWpK,EAAQoK,UAAY,KACpClK,KAAKyJ,eAAiBrM,EAAkB0C,EAAQ2J,gBAAiB3J,EAAQ2J,cACzEzJ,KAAKmK,eAAiB/M,EAAkB0C,EAAQqK,iBAAkB,EAClEnK,KAAK2J,YAAcvM,EAAkB0C,EAAQ6J,aAAc7J,EAAQ6J,WACnE3J,KAAKuJ,YAAcnM,EAAkB0C,EAAQyJ,aAAczJ,EAAQyJ,WACnEvJ,KAAKwJ,kBAAoBpM,EAAkB0C,EAAQ0J,mBAAoB1J,EAAQ0J,iBAC/ExJ,KAAKoK,cAAgBtK,EAAQsK,eAAiB,EAC9CpK,KAAKqK,OAASvK,EAAQuK,QAAU,GAChCrK,KAAKsK,OAASxK,EAAQwK,SAAU,EAyBpC,OAtBS,YAAAC,eAAP,WACEvK,KAAK2J,YAAa,EAClB3J,KAAKqJ,SAAWrJ,KAAKqJ,OAAOM,YAAc3J,KAAKqJ,OAAOkB,kBAGjD,YAAAC,eAAP,WACExK,KAAKuJ,YAAa,EAClBvJ,KAAKqJ,SAAWrJ,KAAKqJ,OAAOE,YAAcvJ,KAAKqJ,OAAOmB,kBAGjD,YAAAC,qBAAP,WACEzK,KAAKwJ,kBAAmB,EACxBxJ,KAAKqJ,SAAWrJ,KAAKqJ,OAAOG,kBAAoBxJ,KAAKqJ,OAAOoB,wBAGvD,YAAAC,SAAP,SAAgB5M,GACqB,mBAAxBkC,KAAK2K,eACd3K,KAAK2K,eAAe7M,GACXkC,KAAKqJ,QACdrJ,KAAKqJ,OAAOqB,SAAS5M,IAG3B,EAhEA,GAkEA,SAAS8M,KAMP,IALA,IAAMC,EAAWvI,EAAclG,MAC3B2E,EAAiB0B,EAAqBrG,MACtC0O,GAAc,EACdC,EAAcC,QAAQjK,GAEnBA,IAAmB+J,GACxB/J,EAAiBkK,GAAkBlK,GACnC0B,EAAqBX,IAAIf,GACzBgK,EAAcC,QAAQjK,GACtB+J,EAAcnD,GAASG,oBAOzB,OAJK/G,GAAkB8J,GAuqBzB,W,cACQA,EAAWvI,EAAclG,MACzB8O,EAAWvI,EAAqBvG,MAChCgF,EAAY4B,EAAgB5G,MAC5B2H,EAAaiH,QAA0B,QAAlB,EAAAH,EAASd,iBAAS,eAAER,YACzChB,EAAmByC,QAA0B,QAAlB,EAAAH,EAASd,iBAAS,eAAEP,kBAC/C2B,EAAaH,QAA0B,QAAlB,EAAAH,EAASd,iBAAS,eAAEJ,YAE/C,GAAI5F,GAAcwE,GAAoB4C,E,IACpC,IAAoB,SAAA/J,GAAS,8BAC3BkI,GADc,S,iGAsClBb,GAAU,CACRlG,MAlCSsI,EAAS3B,MAmClBR,OAAQ,SAAC,G,IAAEC,EAAS,YAAEC,EAAQ,WAAEI,EAAkB,qBACnCL,EAAUqB,YAActC,GAAUW,KAG7CW,IACUJ,GACVjB,GAASK,aAAaW,GAGpBA,GAAaA,EAAUsB,SACzBtB,EAAUsB,OAAS,SA7CE,W,YACnBvI,EAAgBkC,EAAoBxH,MACpCqF,EAAUgC,EAAcrH,M,IAE9B,IAAoB,SAAAgF,GAAS,8BAAE,CAA1B,IAAMmB,EAAK,QACdoF,GAASK,aAAazF,I,iGAGxBS,EAAgBlB,IAAI,IACpBQ,EAAcR,IAAI,M,IAElB,IAA2B,SAAAJ,GAAa,+BACtC0J,EADqB,W,iGAIvBC,YAAW,W,YACT,IAAqB,SAAA5J,GAAO,+BAC1BkC,EADe,W,qGAKnBC,EAAoBV,QACpBO,EAAcP,QAEVgI,EACFvI,EAAqBb,KAAI,GAEzBU,EAAkBV,IAAI+I,GAuB1BhB,GAtuBEyB,GAGKP,EAGT,SAASE,GAAkB1I,GAMzB,IALA,IAAIhB,GAAgB,EAChBoH,EAAYpG,EACZ0H,EAAgB1H,EAAM0H,OACtBP,EAAWnH,EAAMmH,WAER,CAIX,GAHAnI,EAAgB0B,EAAiBO,YAAYpH,MAC7CuM,EAAUzE,KAAK7F,IAAM,EAEjBkD,EAGF,GAFoBgK,GAAgB7B,IAAaA,EAAS3J,SAASvB,OAAS,EAE3D,CACT,MAA6EgN,GAAa,CAC9F7C,UAAS,EACTsB,OAAM,EACNP,SAAQ,IAHF+B,EAAc,iBAUtB,GAJA9C,EAN0C,qBAO1CsB,EAP2D,kBAQ3DP,EAR8E,oBAU1E+B,EAAgB,OAAOA,MACtB,CACC,MAA6EC,GAAe,CAChG/C,UAAS,EACTsB,OAAM,EACNP,SAAQ,IAOV,GAVQ+B,EAAc,iBAMtB9C,EAN0C,qBAO1CsB,EAP2D,kBAQ3DP,EAR8E,oBAU1E+B,EAAgB,OAAOA,MAExB,CACC,MAA6EC,GAAe,CAChG/C,UAAS,EACTsB,OAAM,EACNP,SAAQ,IAOV,GAVQ+B,EAAc,iBAMtB9C,EAN0C,qBAO1CsB,EAP2D,kBAQ3DP,EAR8E,oBAU1E+B,EAAgB,OAAOA,EAK7B,GAFAE,GAA4BhD,GAEH,OAArBA,EAAUU,OAAiB,OAAO,MAI1C,SAASsC,GAA4BhD,G,QACnC,GAAIA,EAAU0B,SAAWnN,EAAgB,CACvC,IAAM6M,GAA2B,QAAf,EAAApB,EAAUO,aAAK,eAAEa,YAAa,KAC1CxH,EAAQoG,EAAUO,OAAS,KAEjC,GAAIa,GAAaxH,GAASwH,EAAUX,cAAgB7G,EAAM6G,YAAa,CAIrE,IAHA,IAAI,EAAYW,EAAUX,YACpBhI,EAA0B,GAEzB,GACL,EAAU4I,UAAYtC,GAAUkE,SAChCxK,EAAU3C,KAAK,GACf,EAAY,EAAU2K,aAGxB,EAAApG,EAAA,OAAsBvE,KAAI,iBAAI2C,IAAS,MAW7C,SAASoK,GAAa1L,GACpBmD,EAAiBG,cACjB,IAAIuF,EAAY7I,EAAQ6I,UACpBsB,EAASnK,EAAQmK,OACjBP,EAAW5J,EAAQ4J,SAEvBO,EAASA,EAASA,EAAOf,MAAQ,KAEjC,IAAMa,EAkhBR,SAA2BxH,GAGzB,IAFA,IAAIwH,EAAYxH,EAAMwH,WAAaxH,EAAMwH,UAAUC,YAActC,GAAUkE,SAAWrJ,EAAMwH,UAAUb,MAAQ,KAEvGa,GAAaA,EAAUC,YAActC,GAAUkE,UACpD7B,EAAYA,EAAUX,YAGxB,OAAOW,EAzhBW8B,CAAkBlD,GAC9BzE,EAAO4H,GAAQ,CAAE7B,OAAM,EAAEF,UAAS,EAAEL,SAAQ,IAC5CQ,EAAWD,EAASA,EAAOC,SAAWH,EAAYA,EAAUG,SAAW,KACzE3H,EAAQ,IAAIwJ,GAAM,CAAE7H,KAAI,EAAEgG,SAAQ,IAEtCxH,EAAqBZ,IAAIS,GACzBA,EAAM8G,OAASV,EAET,MAAyCqD,GAAiB,CAC9DtC,SAAQ,EACRrL,IAAK,EACLkE,MAAK,EACLwH,UAAS,IAeX,OAbAL,EANyB,qBAMOA,EAChCO,EAP0C,mBAOdA,EAC5BF,GAAakC,GAAgB,CAAElC,UAAS,EAAEL,SAAQ,IAClDwC,GAAY,CAAE3J,MAAK,EAAEwH,UAAS,EAAEL,SAAQ,IACxCnH,EAAQwH,EAAYoC,GAAY,CAAE5J,MAAK,EAAEwH,UAAS,EAAEL,SAAQ,IAAMnH,EAElEoG,EAAUO,MAAQ3G,EAClBA,EAAM8G,OAASV,EACfpG,EAAM0H,OAASA,EACftB,EAAYpG,EAEZ4F,GAAY5F,EAAM8G,OAAOW,aAAezH,EAAMyH,UAAYzH,EAAM8G,OAAOW,WAEhE,CACLyB,eAAgB9C,EAChByD,mBAAoBzD,EACpB0D,gBAAiBpC,EACjBqC,kBAAmB5C,GAUvB,SAASgC,GAAe5L,GACtBmD,EAAiBM,gBACjB,IAAIoF,EAAY7I,EAAQ6I,UACpBsB,EAASnK,EAAQmK,OACjBP,EAAW5J,EAAQ4J,SACjBL,EAASV,EAAUU,OAAOK,SAC1B6C,EAActJ,EAAiBE,WAGrC,GAFmBoI,GAAgBlC,IAAWA,EAAOtJ,SAASwM,GAE9C,CACdtJ,EAAiBO,YAAY1B,KAAI,GAEjCmI,EAASA,EAASA,EAAOb,YAAc,KACvC,IAAMW,EAseV,SAAiCxH,GAG/B,I,MAFIwH,GAA2B,QAAf,EAAAxH,EAAMwH,iBAAS,eAAEX,cAAe,KAEzCW,GAAaA,EAAUC,YAActC,GAAUkE,UACpD7B,EAAYA,EAAUX,YAGxB,OAAOW,EA7eayC,CAAwB7D,GACpCzE,EAAO4H,GAAQ,CAAE7B,OAAM,EAAEF,UAAS,EAAEL,SAAQ,IAC5CQ,EAAWD,EAASA,EAAOC,SAAWH,EAAYA,EAAUG,SAAW,KACzE3H,EAAQ,IAAIwJ,GAAM,CAAE7H,KAAI,EAAEgG,SAAQ,IAEtCxH,EAAqBZ,IAAIS,GACzBA,EAAM8G,OAASV,EAAUU,OAEnB,MAAyC2C,GAAiB,CAC9DtC,SAAUL,EACVhL,IAAKkO,EACLhK,MAAK,EACLwH,UAAS,IAeX,OAbAL,EANyB,qBAMOA,EAChCO,EAP0C,mBAOdA,EAC5BF,GAAakC,GAAgB,CAAElC,UAAS,EAAEL,SAAQ,IAClDwC,GAAY,CAAE3J,MAAK,EAAEwH,UAAS,EAAEL,SAAQ,KACxCnH,EAAQwH,EAAYoC,GAAY,CAAE5J,MAAK,EAAEwH,UAAS,EAAEL,SAAQ,IAAMnH,GAE5D8G,OAASV,EAAUU,OACzBV,EAAUS,YAAc7G,EACxBA,EAAM0H,OAASA,EACftB,EAAYpG,EAEZ4F,GAAY5F,EAAM8G,OAAOW,aAAezH,EAAMyH,UAAYzH,EAAM8G,OAAOW,WAEhE,CACLyB,eAAgB9C,EAChByD,mBAAoBzD,EACpB0D,gBAAiBpC,EACjBqC,kBAAmB5C,GAcvB,OAXEzG,EAAiBK,eACjBL,EAAiBO,YAAY1B,KAAI,GACjCmI,EAASA,EAASA,EAAOZ,OAAS,KAElCK,GADAf,EAAYA,EAAUU,QACDK,SAEjB6B,GAAgB5C,EAAUe,YAC5Bf,EAAUe,SAAS3J,SAAW,IAI3B,CACL0L,eAAgB,KAChBW,mBAAoBzD,EACpB0D,gBAAiBpC,EACjBqC,kBAAmB5C,GAUvB,SAASwC,GAAYpM,GACX,IAAAyC,EAA+BzC,EAAO,MAA/BiK,EAAwBjK,EAAO,UAApB4J,EAAa5J,EAAO,SAGxC2M,GAFM1C,EAAY2C,GAAc3C,EAAUL,UAAY,SAC5CK,EAAY2C,GAAchD,GAAY,MAGhDiD,EADa3B,QAAQjB,IAAc6C,GAAgB7C,EAAUL,YAAckD,GAAgBlD,KACjE+C,EAEhClK,EAAMmH,SAAWA,EACjBnH,EAAMwH,UAAYA,GAAa,KAC/BxH,EAAMuH,cAAgB6C,EAAW5C,EAAUD,cAAgB,KAC3DvH,EAAMyH,UAAY2C,EAAWjF,GAAUmF,OAASnF,GAAUU,UAC1D7F,EAAM4H,gBAAgB5H,EAAMuH,eAAgB6C,EAExCpB,GAAgBhJ,EAAMmH,YACxBnH,EAAM6H,cAAgB7H,EAAMmH,SAAS3J,SAASvB,QAG5C+D,EAAMwH,YACRxH,EAAMwH,UAAUE,OAAS,KACzB1H,EAAMwH,UAAUA,UAAY,OAGzBxH,EAAMuH,eAAiB7E,GAAoB1C,EAAMmH,YACpDnH,EAAMuH,cAAgBnC,GAASI,oBAAoBxF,IASvD,SAAS0J,GAAgBnM,GACf,IAAAiK,EAAwBjK,EAAO,UAApB4J,EAAa5J,EAAO,SACjCgN,EAAgBF,GAAgB7C,EAAUL,UAE1CqD,EADcH,GAAgBlD,KACDoD,EAG7BE,EAFUN,GAAc3C,EAAUL,YACxBgD,GAAchD,GAK9B,GAFAK,EAAUO,QAAS,EAEdyC,GAAeC,GAGb,GAAIzB,GAAgBxB,EAAUL,WAAa6B,GAAgB7B,GAAW,CAC3E,IAAM,EAAoBK,EAAUK,cAC9B,EAAoBV,EAAS3J,SAASvB,OAG5C,GAFwB,IAAsB,EAEzB,CACnB,IAAMyO,EAAiB,EAAoB,EACrCC,EAAkB,EAAoB,EACtCnN,EAAWwL,GAAgB7B,GAAYA,EAAS3J,SAAW,GAC3D,EAuSZ,SAAqBgK,EAAkBhK,GAMrC,IALA,IAAI4I,EAAYoB,EACZ1L,EAAM,EACJyI,EAA8B,GAC9BqG,EAAkC,GAEjCxE,GAAatK,EAAM0B,EAASvB,QAAQ,CACzC,IAAMzC,EAAM4M,GAAa+D,GAAc/D,EAAUe,UAC3C0D,EAAUrN,EAAS1B,IAAQqO,GAAc3M,EAAS1B,IAEnDR,EAAc9B,IACjB+K,EAAKrI,KAAK1C,GAGP8B,EAAcuP,IACjBD,EAAS1O,KAAK2O,GAGhBzE,EAAYA,EAAYA,EAAUS,YAAc,KAChD/K,IAGF,MAAO,CACLyI,KAAI,EACJqG,SAAQ,GA/TqBE,CAAYtD,EAAUb,MAAOnJ,GAAhD,EAAI,OAAE,EAAQ,WAChB,EAAU,EAAKvB,OAAS,EACX,GAAW,EAASA,OA8EvCyO,GApE6B,W,cACrBK,EAAWC,GAAY,EAAM,GAEnC,GAAID,EAAS9O,OAAS,EAAG,CACvB,IAAMgP,EAsQhB,SAA8BjL,GAI5B,IAHA,IAAIoG,EAAYpG,EACVkL,EAA6B,GAE5B9E,GAAW,CAChB,IAAM5M,EAAM2Q,GAAc/D,EAAUe,UAE/B7L,EAAc9B,KACjB0R,EAAI1R,GAAO4M,GAGbA,EAAYA,EAAUS,YAGxB,OAAOqE,EApRmBC,CAAqB3D,EAAUb,O,IAEjD,IAAkB,SAAAoE,GAAQ,+BAClB/K,EAAQiL,EADF,UACoB,QAG9BjL,EAAMyH,UAAYtC,GAAUkE,SAC5B5I,EAAgB5G,MAAMqC,KAAK8D,I,uGAG1B,IAAK,EAAS,CACnB,IAAMoL,EAAY,EAAoB,EAChCC,EAAS1O,EA+WzB,SAA0BqD,GAIxB,IAHA,IAAMpE,EAAO,GACTwK,EAAYpG,EAEToG,GACLxK,EAAKM,KAAKkK,GACVA,EAAYA,EAAUS,YAGxB,OAAOjL,EAxXgC0P,CAAiB9D,EAAUb,OAAQyE,G,IAElE,IAAoB,SAAAC,GAAM,8BAAE,CAAvB,IAAMrL,KAAK,SACRyH,UAAYtC,GAAUkE,U,kGAG9B,EAAA5I,EAAA,OAAsBvE,KAAI,iBAAImP,IAAM,KA8CtBE,GAClBZ,GA3C8B,W,QACtBI,EAAWC,GAAY,EAAU,GAEvC,GAAID,EAAS9O,OAAS,EAAG,CACvB,IAAMuP,EAAalP,EAAMyO,GAAU,SAAArO,GAAK,OAAAA,KAClC+O,EA4NhB,SAAmCzL,GAKjC,IAJA,IAAIoG,EAAYpG,EACZ0L,EAAW,EACTR,EAA6B,GAE5B9E,GACL8E,EAAIQ,GAAYtF,EAEhBsF,IACAtF,EAAYA,EAAUS,YAGxB,OAAOqE,EAxO8BS,CAA0BnE,EAAUb,OAC3DiF,EAAa,GACfC,EAAS,E,IAEb,IAAsB,YAAQ,8BAAE,CAA3B,IAAM,EAAO,QAShB,GAFAD,EAAW,IAAW,EAElB,IAAY,EAAKC,IAAWL,EAAW,GAAU,CACnD,IAAMM,EAAiB,IAAItC,GAAM,CAC/BrC,SAAUxD,KACVmD,OAAQU,EACRC,UAAWtC,GAAUU,YAGvB,GAAe,IAAXgG,EACFC,EAAejF,YAAcW,EAAUb,MACvCa,EAAUb,MAAQmF,MACb,CACL,IAAM9L,EAAQyL,EAAqBI,IAAW,KAE1C7L,IACF8L,EAAejF,YAAc7G,IAKnC6L,K,mGAMaE,UA5FrBvE,EAAUC,UAAYtC,GAAUkE,SAChC5I,EAAgB5G,MAAMqC,KAAKsL,GAsG/B,SAASoC,GAAYrM,GACX,IAAAyC,EAA+BzC,EAAO,MAA/BiK,EAAwBjK,EAAO,UAApB4J,EAAa5J,EAAO,SAE9C,GAAIiH,GAAaxE,EAAMmH,UAAW,CAChC,IAAI6E,EAAmB,KACjBhT,EAAUmO,EACV8E,EAAmBzE,EAAUL,SAEnC,GAAInO,EAAQ0E,OAASuO,EAAiBvO,KAAM,OAAOsC,EAEnD,IAAMrC,EAAQsO,EAAiBtO,MACzB2G,EAAYtL,EAAQ2E,MAG1B,IAFc3E,EAAQ6E,aAAaF,EAAO2G,GAEhC,CACR,IAAI8B,EAAmB,KAiBvB,IAhBA1F,EAAiBO,YAAY1B,KAAI,GAEjCyM,EAAY,IAAIxC,GAAM,SACjBhC,GAAS,CACZA,UAAS,EACTC,UAAWtC,GAAUW,KACrBe,YAAaW,EAAUX,YACnBW,EAAUX,YAAYY,YAActC,GAAUkE,SAC5C,KACA7B,EAAUX,YACZ,QAGNW,EAAUA,UAAY,KACtBpB,EAAY4F,EAAUrF,MAEfP,GACLA,EAAUU,OAASkF,EACnB5F,EAAYA,EAAUS,YAexB,OAZImF,EAAUhF,YACZhH,EAAMiI,iBAGJ+D,EAAU/E,kBACZjH,EAAMkI,uBAGJ8D,EAAU5E,YACZpH,EAAMgI,iBAGDgE,GAIX,OAAOhM,EAUT,SAASyJ,GAAiBlM,G,MAChB4J,EAAoC5J,EAAO,SAAjCzB,EAA0ByB,EAAO,IAA5ByC,EAAqBzC,EAAO,MAArBiK,EAAcjK,EAAO,UAC/CwM,EAAyC,KACzCD,EAAyB,KAE7B,GAAId,GAAgB7B,GAAW,CAC7B,IAAM+E,EAAWhR,EAAciM,EAAS3J,SAAS1B,IAC7CJ,EAAQ,CAACyL,EAAS3J,SAAS1B,KAC3B,CAACqL,EAAS3J,SAAS1B,KAEvB,EAAAqL,EAAS3J,UAAS2O,OAAM,YAACrQ,EAAK,GAAC,GAAKoQ,IAAQ,IAC5CnC,EAAoB5C,EAAS3J,SAAS1B,GACtCgO,EAAkBtC,EAoCtB,SAAuBjK,GACb,IAAA4J,EAA+B5J,EAAO,SAA5ByC,EAAqBzC,EAAO,MAArBiK,EAAcjK,EAAO,UACxC/D,EAAM2Q,GAAc3C,EAAUL,UAC9B0D,EAAUV,GAAchD,GAC1BO,EAAgB,KAYpB,OAVIlO,IAAQqR,IACVnD,EAiHJ,SAA2BlO,EAAqBwG,GAC9C,GAAI1E,EAAc9B,GAAM,OAAO,KAG/B,IAFA,IAAI4M,EAAYpG,EAEToG,GAAW,CAChB,GAAI5M,IAAQ2Q,GAAc/D,EAAUe,UAClC,OAAOf,EAGTA,EAAYA,EAAUS,YAGxB,OAAO,KA7HIuF,CAAkBvB,EAASrD,EAAUV,OAAOH,OAEjDe,IACF1H,EAAM2B,KAAO+F,EAAO/F,KACpB3B,EAAM2H,SAAWD,EAAOC,SACxBH,EAAUN,eAAgB,IAIvBQ,EAnDD2E,CAAc,CACZlF,SAAU4C,EACV/J,MAAK,EACLwH,UAAS,IAEXsC,EACJC,EAAoBuC,GAActM,EAAO+J,GAiB3C,OAdI3L,EAAyB2L,KACvBvI,EAAWxB,IACbA,EAAMiI,iBAGJjC,GAAiBhG,IACnBA,EAAMkI,uBAGJ9C,GAASM,eAAeqE,IAC1B/J,EAAMgI,kBAIH,CACL+B,kBAAiB,EACjBD,gBAAe,GA6BnB,SAASwC,GAActM,EAAcmH,GACnC,IAAMoF,EAAqBnO,EAAyB+I,GAC9CnO,EAAUmO,EAEhB,GAAIoF,EACF,IACE,IAAMC,EAASxT,EAAQ0E,KAAK1E,EAAQ2E,MAAO3E,EAAQ4E,KAEnD5E,EAAQwE,SAAWtC,EAAcsR,GAC5B9Q,EAAQ,CAAC8Q,IACT,CAACA,GACN,MAAOC,GACPzT,EAAQwE,SAAW,GACnBwC,EAAMmI,SAASsE,GACflR,EAAMkR,QAEC7I,GAA2BuD,KACpCA,EAAWA,KAGb,GAAI6B,GAAgB7B,GAAW,CAC7B,IAAK,IAAIjK,EAAI,EAAGA,EAAIiK,EAAS3J,SAASvB,OAAQiB,IACvCiK,EAAS3J,SAASN,KACrBiK,EAAS3J,SAASN,GAAKwP,GAAyBvF,EAAS3J,SAASN,KAItEiK,EAAS3J,SAAW+O,EAChBpF,EAAS3J,SACTtC,EAAciM,EAAS3J,UACvB9B,EAAQ,CAACyL,EAAS3J,WAClB,CAAC2J,EAAS3J,UAEV+O,GAAkD,IAA5BvT,EAAQwE,SAASvB,QACzCjD,EAAQwE,SAAStB,KAAKyH,MAI1B,OAAOwD,EA8ET,SAASgD,GAAchD,GAOrB,OANY/I,EAAyB+I,GACjC9I,EAAuB8I,GACvBvE,GAAuBuE,GACvBhE,GAAkBgE,GAClB,KAKN,SAAS6D,GAAYzG,EAA6BqG,G,QAC1C+B,EAAc/B,EAASpO,QAAO,SAACC,EAAKjD,GAAQ,OAAEiD,EAAIjD,IAAO,EAAOiD,IAAM,IACtEmQ,EAAO,G,IAEb,IAAkB,SAAArI,GAAI,8BAAE,CAAnB,IAAM/K,EAAG,QACPmT,EAAYnT,IACfoT,EAAK1Q,KAAK1C,I,iGAId,OAAOoT,EAuBT,SAASF,GAAyBvF,GAChC,OAAO7L,EAAc6L,KAA0B,IAAbA,EAAqBxD,KAA2BwD,EAGpF,SAASkD,GAAgBlD,GACvB,OAAOvE,GAAuBuE,GAC1BA,EAAShF,KACTO,GAAoByE,IAEpB/I,EAAyB+I,GADzBA,EAASzJ,KAGT,KAeN,SAASsL,GAAgB6D,GACvB,OAAOjK,GAAuBiK,IAAYzO,EAAyByO,GAsErE,SAASC,KACP,MAAO,CACLhR,IAAK,EACL8F,OAAQ,IAUZ,SAAS2H,GAAQhM,GACP,IAAAmK,EAAgCnK,EAAO,OAA/BiK,EAAwBjK,EAAO,UAApB4J,EAAa5J,EAAO,SAE/C,OAAImK,EAAeA,EAAO/F,KAEtB6F,GAAa2C,GAAc3C,EAAUL,YAAcgD,GAAchD,GAC5DK,EAAU7F,KAlBZ,CACL7F,IAAK,EACL8F,OAAQ,IA6BZ,SAASmL,GAAqBxP,GACpB,IAAA6B,EAA+C7B,EAAO,OAA9CyC,EAAuCzC,EAAO,MAAvC,EAAgCA,EAAO,WAAvCyP,OAAU,IAAG,GAAK,EAAEC,EAAY1P,EAAO,QAuB9D,OAtBiB,WACfyP,GAAcC,IACVjN,EAAM+H,UACTiF,GAAcC,IACf3N,EAAkBC,IAAIH,GACtBgB,EAAqBb,KAAI,GACzBmB,EAAiBC,QAEjBX,EAAMwH,UAAY,IAAIgC,GAAM,SACvBxJ,GAAK,CACRwH,UAAW,QAEbxH,EAAM8H,OAASnN,EACfqF,EAAMyH,UAAYtC,GAAUmF,OAC5BtK,EAAM2G,MAAQ,KAEd5G,EAAcR,IAAIS,GAClBG,EAAqBZ,IAAIS,GACzBA,EAAMmH,SAAWmF,GAActM,EAAOA,EAAMmH,UAC5CjH,EAAqBX,IAAIS,KCz4B7B,SAASkN,GAAU3P,GACjB,IAAM6B,EAASQ,IACTI,EAAQG,EAAqBtG,MAC7BsT,EAAQnI,IAAQ,WAAM,OAAGhF,MAAK,KAAK,IAezC,OAbAmN,EAAMnN,MAAQA,EAEC,SAACiN,GACd,IAAMG,EAAWL,GAAqB,CACpC3N,OAAM,EACNY,MAAOmN,EAAMnN,MACbgN,WAAYvE,QAAQlL,aAAO,EAAPA,EAAS8P,WAC7BJ,QAASA,GAAWnQ,IAGtBsI,GAASC,iBAAiB+H,EAAU7P,ICdxC,SAAS+P,GAAcC,GACb,IAAAC,EAAiBD,EAAO,aAE1B5F,EA+BR,SAAwB4F,EAAqBvN,GAG3C,IAFA,IAAIoG,EAAYpG,EAEToG,GAAW,CAChB,GAAIA,EAAUuB,UAAYvB,EAAUuB,SAAS9N,IAAI0T,GAC/C,OAAOnH,EAAUuB,SAAS9N,IAAI0T,GAGhCnH,EAAYA,EAAUU,OAGxB,OAAO,KA1CU2G,CAAeF,EADlBpN,EAAqBtG,OAE7BQ,EAAQsN,EAAWA,EAAStN,MAAQmT,EACpCE,EAASR,KACTC,EAAQnI,IAAQ,WAAM,OAAG2I,UAAWtT,KAAU,IAC9CuT,EAAcnF,QAAQd,GAwB5B,OAtBApG,GAAU,WACR,GAAKqM,EAAL,CAEA,IAAMC,EAAa,SAACC,GACbpU,OAAOqU,GAAGZ,EAAMQ,UAAWG,IAC9BJ,KAMJ,OAFA/F,EAASqG,YAAY9R,KAAK2R,GAEnB,WACL,IAAM/R,EAAM6L,EAASqG,YAAYC,WAAU,SAAAvR,GAAK,OAAAA,IAAMmR,MAEzC,IAAT/R,GACF6L,EAASqG,YAAY7B,OAAOrQ,EAAK,OAGpC,CAAC8R,IAEJT,EAAMQ,UAAYtT,EAEXA,EC/BT,SAAS6T,GAAiBV,GACxB,IAAIpQ,EAAc,UACZmQ,EAAsB,CAC1BnQ,YAAW,EACXoQ,aAAY,EACZW,SAAU,KACVC,SAAU,MAaZ,OAVAC,GAAcd,EAASC,EAAcpQ,GAErC1D,OAAOC,eAAe4T,EAAS,cAAe,CAC5C1T,IAAK,WAAM,OAAAuD,GACXmC,IAAK,SAACuO,GAEJO,GAAcd,EAASC,EADvBpQ,EAAc0Q,MAKXP,EAGT,SAASc,GAAiBd,EAAqBC,EAAiBpQ,GAC9DmQ,EAAQY,SAIV,SAA2BZ,EAAqBC,EAAiBpQ,GAC/D,OAAOU,GACL,SAAC,G,IAAE,IAAAzD,MAAAA,OAAK,IAAG,EAAAmT,EAAY,EAAE/J,EAAI,OACrBzD,EAAQG,EAAqBtG,MAE9BmG,EAAM2H,WACT3H,EAAM2H,SAAW,IAAIhJ,KAGlBqB,EAAM2H,SAAS9N,IAAI0T,IACtBvN,EAAM2H,SAASpI,IAAIgO,EAAS,CAC1BS,YAAa,GACb3T,MAAK,IAIT,IAAMsN,EAAW3H,EAAM2H,SAAS9N,IAAI0T,GAUpC,OARAhM,GAAU,W,YACR,IAAyB,M,ySAAA,CAAAoG,EAASqG,aAAW,+BAC3CH,EADmB,SACRxT,G,oGAEZ,CAACA,IAEJsN,EAAStN,MAAQA,EAEVoJ,IAET,CAAErG,YAAa,UAAGA,EAAW,eAhCZkR,CAAef,EAASC,EAAcpQ,GACzDmQ,EAAQa,SAmCV,SAA2Bb,EAAqBnQ,GAC9C,OAAOU,GACL,SAAC,G,IAAE2F,EAAI,OACCpJ,EAAQiT,GAAWC,GAEzB,OAAO3S,EAAiB6I,GAAQA,EAAKpJ,GAAS,OAEhD,CAAE+C,YAAa,UAAGA,EAAW,eA1CZmR,CAAehB,EAASnQ,G,uNC5B7C,SAASoR,GAAYhR,GAGnB,OAFAA,EAAWA,EAAS0N,KAAI,SAAAxO,GAAK,OAAC3B,EAAe2B,IAAM5B,EAAe4B,GAAK0G,GAAK1G,EAAE+R,YAAc/R,MAEzEvB,MAAMC,QAAQoC,G,+LAAY,I,uRAAA,CAAIA,IAAQ,GAAI,CAACA,GAAa,GAG7E,SAASO,GACP2Q,EACA/Q,G,IACA,wDAEA,GAAI5C,EAAe2T,GACjB,OAAOpL,GAAK,SACP3F,GAAK,CACR6F,GAAIkL,EACJjL,KAAM+K,GAAYhR,MAItB,GAAI5C,EAAiB8T,GAAM,CACzB,IAAIjL,EAAO+K,GAAYhR,GAIvB,OAFAiG,EAAuB,IAAhBA,EAAKxH,OAAewH,EAAK,GAAKA,EAE9BiL,EAAI,SAAK/Q,GAAK,CAAE8F,KAAI,KAG7B,OAAO,KC5BT,SAASkL,GAA0BvB,EAAapQ,GAG9C,OAFcgI,IAAQ,WAAM,OAAAoI,IAAUpQ,GCWxC,SAAS4R,GAAsBC,EAAiBtR,GAC9C,IAAMyC,EAAQG,EAAqBtG,MAC7B6T,EAASR,GAAU3P,GACnB4P,EAAenI,IACnB,WAAM,OACJlJ,IAAKkE,EAAM2B,KAAK7F,IAChB8F,OAAQ5B,EAAM2B,KAAKC,UAErB,IAEIkN,EAAWH,IAAY,SAACI,GAC5B,IAAM1U,EAAQ8S,EAAMvL,OAAOuL,EAAMrR,KAC3BgS,EAAWlT,EAAiBmU,GAAeA,EAAY1U,GAAS0U,EAEtE,IAAKrV,OAAOqU,GAAG1T,EAAOyT,GAAW,CAC/B,IAAM,EAAW,WACfX,EAAMvL,OAAOuL,EAAMrR,KAAOgS,IAGxBvQ,aAAO,EAAPA,EAASyR,YAAa1U,EAAa2U,IACrCvB,GAAO,WAAM,eAEb,IACAA,QAGH,IACK/L,EAAS3B,EAAK,KACdlE,EAAgB6F,EAAI,IAAfC,EAAWD,EAAI,OACtBtH,EAAYQ,EAAkB+G,EAAO9F,IAAsB+S,EAAdjN,EAAO9F,GAO1D,OALA8F,EAAO9F,GAAOzB,EACd8S,EAAMrR,IAAMA,EACZqR,EAAMvL,OAASA,EACfD,EAAK7F,MAEE,CAACzB,EAAOyU,G,IChCXI,GAAkBhB,GAAoC,CAC1DiB,SAAU,KACVC,UAAU,EACVC,QAAS,eAGLC,GAAWxR,GAA+B,SAAC,G,IAAEqR,EAAQ,WAAE1L,EAAI,OAC/D,IAAK0L,EACH,MAAM,IAAI7J,MAAM,+BAEV,IAAUiK,EAAqBjC,GAAW4B,IAAgB,SAC5D,E,uRAAA,CAA0BN,IAAS,GAAM,GAAxCQ,EAAQ,KAAEI,EAAW,KACtBH,EAAUV,IAAY,WAAM,OAAAa,GAAY,KAAO,IAC/CnV,EAAQ2K,IAAQ,WAAM,OAAGmK,SAAQ,EAAEC,SAAQ,EAAEC,QAAO,KAAK,CAACF,EAAUC,IAE1E,OAAOF,GAAgBf,SAAS,CAC9B9T,MAAK,EACLoJ,KAAM8L,EAAmB9L,EAAO,UC5B9BgM,GAAStV,OAAO,QAMtB,SAASuV,GAAqBC,GAC5B,OAAO3L,GACLlG,GACE,SAACH,EAAOC,GACA,MAAwB0P,GAAW4B,IAAjCC,EAAQ,WAAEE,EAAO,UACnB,E,uRAAA,CAAoBT,GAA0B,CAClD3K,UAAW,OACX,GAFKkJ,EAAK,KAAEyC,EAAQ,KAetB,OAXArO,GAAU,YAoBlB,SAAqBoO,GACnB,OAAO,IAAIE,SAAmB,SAAAC,GAC5BH,IAAUI,MAAK,SAAA7W,GACb,IAAKA,EAAO8W,QACV,MAAM,IAAI1K,MAAM,wDAGlBwK,EAAQ5W,EAAO8W,gBA1BXC,CAAYN,GAASI,MAAK,SAAA9L,GACxB2L,EAAS,CAAE3L,UAAS,SAErB,IAEH1C,GAAU,WACH4L,EAAMlJ,WACXoL,MACC,CAAClC,EAAMlJ,YAEHkJ,EAAMlJ,UAAYkJ,EAAMlJ,UAAUtG,EAAOC,GAAOuR,IAEzD,CAAE7R,MAAOmS,MAKf,IAAMS,GAAe,SAAClX,GAAqB,OAAAoF,EAAyBpF,IAAYA,EAAQsE,QAAUmS,IChClG,SAASU,GAAoB9V,EAAUkD,GAC7B,IAAA8P,GAAc9P,GAAW,IAAE,UAC7B,E,uRAAA,CAAoCqR,GAASvU,EAAO,CACxD2U,SAAU1U,EAAa2U,IACvB5B,UAAS,IACT,GAHK+C,EAAa,KAAEC,EAAgB,KAStC,OAJA9O,GAAU,WACR8O,EAAiBhW,KAChB,CAACA,IAEG+V,ECVT,SAASE,KACP,IAAMtQ,EAAQG,EAAqBtG,MAC7B6T,EAASR,KACTC,EAAoBnI,IAAQ,WAAM,OAAGzJ,MAAO,QAAS,IAW3D,OATAyE,EAAMoI,eAAiB,SAAC7M,GACtB4R,EAAM5R,MAAQA,EACdmS,KAGFnM,GAAU,WACR4L,EAAM5R,MAAQ,OACb,CAAC4R,EAAM5R,QAEH4R,EAAM5R,M,keCpBf,SAASgV,GAAqChU,GAC5C,IAAM4Q,EAAQnI,IAAQ,WAAM,OAAGzI,GAAE,KAAK,IAEtC4Q,EAAM5Q,GAAKA,EAEX,IAAM6Q,EAAWuB,IAAY,W,IAAC,sDAC5B,OAAOxB,EAAM5Q,GAAE,MAAR4Q,EAAK,SAAOqD,IAAI,MACtB,IAEH,OAAOpD,ECTT,SAASqD,GAAuB7S,EAAoB8S,EAAuB1T,GACzE,IAAM2T,EAAU3L,IAAQ,WAAM,OAAA0L,MAAgB1T,GAE9CY,EAAI+S,QAAUA,ECAhB,SAASC,GACPC,EACAC,EACAC,GAEA,IAGM,E,uRAAA,CAAoBnC,GAHL5J,IAAQ,WAC3B,OAAOpK,EAAiBmW,GAAeA,EAAYD,GAAgBA,IAClE,KAC8D,GAA1DE,EAAK,KAAElC,EAAQ,KAChBmC,EAAWtC,IAAY,SAACuC,GAA6B,OAAApC,GAAS,SAAAkC,GAAS,OAAAH,EAAQG,EAAOE,QAAU,IAItG,MAAO,CAACF,EAAOC,GChBjB,SAASE,GAAUtC,GAGjB,YAHiB,IAAAA,IAAAA,EAAA,MACL7J,IAAQ,WAAM,OAAG2L,QAAS9B,KAAiB,I","sources":["webpack://DarkCore/webpack/universalModuleDefinition","webpack://DarkCore/webpack/bootstrap","webpack://DarkCore/webpack/runtime/define property getters","webpack://DarkCore/webpack/runtime/hasOwnProperty shorthand","webpack://DarkCore/webpack/runtime/make namespace object","webpack://DarkCore/./src/constants.ts","webpack://DarkCore/./src/helpers/index.ts","webpack://DarkCore/./src/component/component.ts","webpack://DarkCore/./src/view/types.ts","webpack://DarkCore/./src/scope/scope.ts","webpack://DarkCore/./src/use-effect/use-effect.ts","webpack://DarkCore/./src/view/view.ts","webpack://DarkCore/./src/fragment/fragment.ts","webpack://DarkCore/./src/ref/ref.ts","webpack://DarkCore/./src/memo/memo.ts","webpack://DarkCore/./src/use-memo/use-memo.ts","webpack://DarkCore/./src/platform/platform.ts","webpack://DarkCore/./src/fiber/types.ts","webpack://DarkCore/./src/use-layout-effect/use-layout-effect.ts","webpack://DarkCore/./src/walk/walk.ts","webpack://DarkCore/./src/unmount/unmount.ts","webpack://DarkCore/./src/fiber/fiber.ts","webpack://DarkCore/./src/use-update/use-update.ts","webpack://DarkCore/./src/use-context/use-context.ts","webpack://DarkCore/./src/context/context.ts","webpack://DarkCore/./src/element/element.ts","webpack://DarkCore/./src/use-callback/use-callback.ts","webpack://DarkCore/./src/use-state/use-state.ts","webpack://DarkCore/./src/suspense/suspense.ts","webpack://DarkCore/./src/lazy/lazy.ts","webpack://DarkCore/./src/use-deferred-value/use-deferred-value.ts","webpack://DarkCore/./src/use-error/use-error.ts","webpack://DarkCore/./src/use-event/use-event.ts","webpack://DarkCore/./src/use-imperative-handle/use-imperative-handle.ts","webpack://DarkCore/./src/use-reducer/use-reducer.ts","webpack://DarkCore/./src/use-ref/use-ref.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DarkCore\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DarkCore\"] = factory();\n\telse\n\t\troot[\"DarkCore\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export const ROOT = 'root';\r\nexport const EMPTY_NODE = 'dark:matter';\r\nexport const ATTR_KEY = 'key';\r\nexport const ATTR_REF = 'ref';\r\nexport const PARTIAL_UPDATE = 'partial-update';\r\n\r\nexport enum TaskPriority {\r\n HIGH = 2,\r\n NORMAL = 1,\r\n LOW = 0,\r\n}\r\n","import type { NestedArray } from '../shared';\r\n\r\nconst detectIsFunction = (o: any): o is Function => typeof o === 'function';\r\nconst detectIsUndefined = (o: any) => typeof o === 'undefined';\r\nconst detectIsNumber = (o: any) => typeof o === 'number';\r\nconst detectIsString = (o: any) => typeof o === 'string';\r\nconst detectIsObject = (o: any) => typeof o === 'object';\r\nconst detectIsBoolean = (o: any) => typeof o === 'boolean';\r\nconst detectIsArray = (o: any): o is Array => Array.isArray(o);\r\nconst detectIsNull = (o: any) => o === null;\r\nconst detectIsEmpty = (o: any) => detectIsNull(o) || detectIsUndefined(o);\r\n\r\nfunction error(str: string) {\r\n !detectIsUndefined(console) && console.error(str);\r\n}\r\n\r\nfunction flatten(source: Array>): Array {\r\n const list = [];\r\n const levelMap = { 0: { idx: 0, source } };\r\n let level = 0;\r\n\r\n do {\r\n const { source, idx } = levelMap[level];\r\n const item = source[idx];\r\n\r\n if (idx >= source.length) {\r\n level--;\r\n levelMap[level].idx++;\r\n continue;\r\n }\r\n\r\n if (detectIsArray(item)) {\r\n level++;\r\n levelMap[level] = {\r\n idx: 0,\r\n source: item,\r\n };\r\n } else {\r\n list.push(item);\r\n levelMap[level].idx++;\r\n }\r\n } while (level > 0 || levelMap[level].idx < levelMap[level].source.length);\r\n\r\n return list;\r\n}\r\n\r\nfunction getTime() {\r\n return Date.now();\r\n}\r\n\r\nfunction keyBy(\r\n list: Array,\r\n fn: (o: T) => string | number,\r\n value = false,\r\n): Record {\r\n return list.reduce((acc, x) => ((acc[fn(x)] = value ? x : true), acc), {});\r\n}\r\n\r\nfunction takeListFromEnd(source: Array, count: number) {\r\n return source.slice(source.length - count, source.length);\r\n}\r\n\r\nconst dummyFn = () => {};\r\n\r\nfunction detectIsDepsDifferent(deps: Array, prevDeps: Array): boolean {\r\n if (!detectIsUndefined(deps) && !detectIsUndefined(prevDeps) && deps.length > 0 && prevDeps.length > 0) {\r\n for (let i = 0; i < prevDeps.length; i++) {\r\n if (prevDeps[i] !== deps[i]) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport {\r\n detectIsFunction,\r\n detectIsUndefined,\r\n detectIsNumber,\r\n detectIsString,\r\n detectIsObject,\r\n detectIsBoolean,\r\n detectIsArray,\r\n detectIsNull,\r\n detectIsEmpty,\r\n error,\r\n flatten,\r\n getTime,\r\n keyBy,\r\n takeListFromEnd,\r\n dummyFn,\r\n detectIsDepsDifferent,\r\n};\r\n","import { ATTR_KEY } from '../constants';\r\nimport { error, detectIsEmpty } from '../helpers';\r\nimport type { DarkElementKey, DarkElementInstance } from '../shared';\r\nimport type { MutableRef } from '../ref';\r\nimport type { CreateElement, ComponentOptions, StandardComponentProps, SlotProps } from './types';\r\n\r\nconst $$component = Symbol('component');\r\nconst defaultOptions: ComponentOptions = {\r\n displayName: '',\r\n defaultProps: {},\r\n token: $$component,\r\n};\r\nclass ComponentFactory

{\r\n public type: CreateElement

;\r\n public token: Symbol;\r\n public props: P;\r\n public ref: MutableRef;\r\n public displayName: string;\r\n public children: Array = [];\r\n public shouldUpdate?: (props: P, nextProps: P) => boolean;\r\n\r\n constructor(options: ComponentFactory

) {\r\n this.type = options.type || null;\r\n this.token = options.token || null;\r\n this.props = options.props || null;\r\n this.ref = options.ref || null;\r\n this.displayName = options.displayName || '';\r\n this.shouldUpdate = options.shouldUpdate || null;\r\n }\r\n}\r\n\r\nfunction createComponent(\r\n createElement: CreateElement

,\r\n options: ComponentOptions

= {},\r\n) {\r\n type Props = P & StandardComponentProps;\r\n const computedOptions = { ...defaultOptions, ...options };\r\n const { token, defaultProps, displayName, shouldUpdate } = computedOptions;\r\n\r\n return (props = {} as Props, ref?: MutableRef): ComponentFactory => {\r\n const computedProps = { ...defaultProps, ...props };\r\n const factory = new ComponentFactory({\r\n token,\r\n ref,\r\n displayName,\r\n shouldUpdate,\r\n props: computedProps,\r\n type: createElement,\r\n children: [],\r\n });\r\n\r\n if (computedProps.ref) {\r\n delete computedProps.ref;\r\n\r\n if (process.env.NODE_ENV === 'development') {\r\n error(`[Dark]: To use ref you need to wrap the createComponent with forwardRef!`);\r\n }\r\n }\r\n\r\n return factory;\r\n };\r\n}\r\n\r\nconst detectIsComponentFactory = (factory: unknown): factory is ComponentFactory => factory instanceof ComponentFactory;\r\n\r\nconst getComponentFactoryKey = (factory: ComponentFactory): DarkElementKey =>\r\n !detectIsEmpty(factory.props[ATTR_KEY]) ? factory.props[ATTR_KEY] : null;\r\n\r\nexport { ComponentFactory, createComponent, detectIsComponentFactory, getComponentFactoryKey };\r\n","export type ViewDef = {\r\n as: string;\r\n slot?: any;\r\n isVoid?: boolean;\r\n [prop: string]: any;\r\n};\r\n\r\nexport enum NodeType {\r\n TAG = 'TAG',\r\n TEXT = 'TEXT',\r\n COMMENT = 'COMMENT',\r\n}\r\n","import type { Fiber } from '../fiber';\r\n\r\nclass Store {\r\n public wipRoot: Fiber = null;\r\n public currentRoot: Fiber = null;\r\n public nextUnitOfWork: Fiber = null;\r\n public fromHookUpdate = false;\r\n public events: Map> = new Map();\r\n public unsubscribers: Array<() => void> = [];\r\n public deletions: Array = [];\r\n public fiberMount = {\r\n level: 0,\r\n navigation: {},\r\n isDeepWalking: true,\r\n };\r\n public componentFiber: Fiber = null;\r\n public effects: Array<() => void> = [];\r\n public layoutEffects: Array<() => void> = [];\r\n}\r\n\r\nlet rootId = null;\r\nconst stores = new Map();\r\n\r\nconst effectStoreHelper = {\r\n set: (id: number) => effectStore(id),\r\n remove: (id: number) => stores.delete(id),\r\n};\r\n\r\nconst getRootId = (): number => rootId;\r\n\r\nconst effectStore = (id: number) => {\r\n rootId = id;\r\n !stores.get(rootId) && stores.set(rootId, new Store());\r\n};\r\n\r\nconst storeHelper = {\r\n get: (id: number = rootId) => stores.get(id),\r\n};\r\n\r\nconst wipRootHelper = {\r\n get: () => storeHelper.get()?.wipRoot || null,\r\n set: (fiber: Fiber) => (storeHelper.get().wipRoot = fiber),\r\n};\r\n\r\nconst currentRootHelper = {\r\n get: (id?: number) => storeHelper.get(id)?.currentRoot || null,\r\n set: (fiber: Fiber) => (storeHelper.get().currentRoot = fiber),\r\n};\r\n\r\nconst nextUnitOfWorkHelper = {\r\n get: () => storeHelper.get()?.nextUnitOfWork || null,\r\n set: (fiber: Fiber) => (storeHelper.get().nextUnitOfWork = fiber),\r\n};\r\n\r\nconst componentFiberHelper = {\r\n get: () => storeHelper.get()?.componentFiber,\r\n set: (fiber: Fiber) => (storeHelper.get().componentFiber = fiber),\r\n};\r\n\r\nconst fromHookUpdateHelper = {\r\n get: () => storeHelper.get()?.fromHookUpdate || false,\r\n set: (value: boolean) => (storeHelper.get().fromHookUpdate = value),\r\n};\r\n\r\nconst eventsHelper = {\r\n get: () => storeHelper.get().events,\r\n addUnsubscriber: (fn: () => void) => storeHelper.get().unsubscribers.push(fn),\r\n mapUnsubscribers: (id: number) => storeHelper.get(id).unsubscribers.forEach(fn => fn()),\r\n};\r\n\r\nconst deletionsHelper = {\r\n get: () => storeHelper.get().deletions,\r\n set: (deletions: Array) => (storeHelper.get().deletions = deletions),\r\n};\r\n\r\nconst fiberMountHelper = {\r\n reset: () => {\r\n storeHelper.get().fiberMount = {\r\n level: 0,\r\n navigation: {},\r\n isDeepWalking: true,\r\n };\r\n },\r\n getIndex: () => storeHelper.get().fiberMount.navigation[storeHelper.get().fiberMount.level],\r\n jumpToChild: () => {\r\n const { fiberMount } = storeHelper.get();\r\n const level = fiberMount.level;\r\n const nextLevel = level + 1;\r\n\r\n fiberMount.level = nextLevel;\r\n fiberMount.navigation[nextLevel] = 0;\r\n },\r\n jumpToParent: () => {\r\n const { fiberMount } = storeHelper.get();\r\n const level = fiberMount.level;\r\n const nextLevel = level - 1;\r\n\r\n fiberMount.navigation[level] = 0;\r\n fiberMount.level = nextLevel;\r\n },\r\n jumpToSibling: () => {\r\n const { fiberMount } = storeHelper.get();\r\n const level = fiberMount.level;\r\n const idx = fiberMount.navigation[level] + 1;\r\n\r\n fiberMount.navigation[level] = idx;\r\n },\r\n deepWalking: {\r\n get: () => storeHelper.get().fiberMount.isDeepWalking,\r\n set: (value: boolean) => (storeHelper.get().fiberMount.isDeepWalking = value),\r\n },\r\n};\r\n\r\nconst effectsHelper = {\r\n get: () => storeHelper.get().effects,\r\n reset: () => (storeHelper.get().effects = []),\r\n add: (effect: () => void) => storeHelper.get().effects.push(effect),\r\n};\r\n\r\nconst layoutEffectsHelper = {\r\n get: () => storeHelper.get().layoutEffects,\r\n reset: () => (storeHelper.get().layoutEffects = []),\r\n add: (effect: () => void) => storeHelper.get().layoutEffects.push(effect),\r\n};\r\n\r\nexport {\r\n getRootId,\r\n effectStoreHelper,\r\n wipRootHelper,\r\n currentRootHelper,\r\n nextUnitOfWorkHelper,\r\n componentFiberHelper,\r\n fromHookUpdateHelper,\r\n eventsHelper,\r\n deletionsHelper,\r\n fiberMountHelper,\r\n effectsHelper,\r\n layoutEffectsHelper,\r\n};\r\n","import { detectIsUndefined, detectIsFunction, detectIsDepsDifferent } from '../helpers';\r\nimport { componentFiberHelper, effectsHelper } from '../scope';\r\nimport type { Fiber, Hook, HookValue } from '../fiber';\r\nimport type { Effect, EffectCleanup } from './types';\r\n\r\nconst $$useEffect = Symbol('use-effect');\r\n\r\nconst { useEffect, hasEffects, cleanupEffects } = createEffectFunctions($$useEffect, effectsHelper);\r\n\r\nfunction createEffectFunctions(token: Symbol, store: typeof effectsHelper) {\r\n function useEffect(effect: Effect, deps?: Array) {\r\n const fiber = componentFiberHelper.get();\r\n const hook = fiber.hook as Hook>;\r\n const { idx, values } = hook;\r\n const runEffect = () => {\r\n values[idx] = {\r\n deps,\r\n token,\r\n value: undefined,\r\n };\r\n\r\n store.add(() => {\r\n values[idx].value = effect();\r\n });\r\n };\r\n\r\n if (detectIsUndefined(values[idx])) {\r\n runEffect();\r\n } else {\r\n const { deps: prevDeps, value: cleanup } = values[idx];\r\n const isDepsDifferent = deps ? detectIsDepsDifferent(deps, prevDeps) : true;\r\n\r\n if (isDepsDifferent) {\r\n detectIsFunction(cleanup) && cleanup();\r\n runEffect();\r\n }\r\n }\r\n\r\n hook.idx++;\r\n }\r\n\r\n function hasEffects(fiber: Fiber) {\r\n const { values } = fiber.hook as Hook;\r\n const hasEffect = values.some(x => x.token === token);\r\n\r\n return hasEffect;\r\n }\r\n\r\n function cleanupEffects(hook: Hook>) {\r\n const { values } = hook;\r\n\r\n for (const value of values) {\r\n if (value.token === token) {\r\n const cleanup = value.value;\r\n\r\n detectIsFunction(cleanup) && cleanup();\r\n }\r\n }\r\n }\r\n\r\n return {\r\n useEffect,\r\n hasEffects,\r\n cleanupEffects,\r\n };\r\n}\r\n\r\nexport { useEffect, hasEffects, cleanupEffects, createEffectFunctions };\r\n","import { EMPTY_NODE, ATTR_KEY } from '../constants';\r\nimport { detectIsArray, detectIsEmpty, detectIsFunction } from '../helpers';\r\nimport type { DarkElementKey } from '../shared';\r\nimport type { ComponentFactory, StandardComponentProps } from '../component';\r\nimport { NodeType, type ViewDef } from './types';\r\n\r\nexport type VirtualNodeFactory = () => VirtualNode;\r\nexport type TagVirtualNodeFactory = () => TagVirtualNode;\r\nexport type TextVirtualNodeFactory = () => TextVirtualNode;\r\nexport type CommentVirtualNodeFactory = () => CommentVirtualNode;\r\n\r\nconst $$virtualNode = Symbol('virtual-node');\r\n\r\nclass VirtualNode {\r\n public type: NodeType = null;\r\n\r\n constructor(options: Partial) {\r\n this.type = options.type;\r\n }\r\n}\r\n\r\nclass TagVirtualNode extends VirtualNode {\r\n public type = NodeType.TAG;\r\n public name: string = null;\r\n public isVoid = false;\r\n public attrs: Record = {};\r\n public children: Array = [];\r\n\r\n constructor(options: Partial) {\r\n super(options);\r\n this.name = options.name || this.name;\r\n this.isVoid = options.isVoid || this.isVoid;\r\n this.attrs = options.attrs || this.attrs;\r\n this.children = options.children || this.children;\r\n }\r\n}\r\n\r\nclass TextVirtualNode extends VirtualNode {\r\n public type = NodeType.TEXT;\r\n public value = '';\r\n\r\n constructor(text: string) {\r\n super({});\r\n this.value = text;\r\n }\r\n}\r\n\r\nclass CommentVirtualNode extends VirtualNode {\r\n public type = NodeType.COMMENT;\r\n public value = '';\r\n\r\n constructor(text: string) {\r\n super({});\r\n this.value = text;\r\n }\r\n}\r\n\r\nconst detectIsVirtualNode = (vNode: unknown): vNode is VirtualNode => vNode instanceof VirtualNode;\r\nconst detectIsTagVirtualNode = (vNode: unknown): vNode is TagVirtualNode => vNode instanceof TagVirtualNode;\r\nconst detectIsCommentVirtualNode = (vNode: unknown): vNode is CommentVirtualNode => vNode instanceof CommentVirtualNode;\r\nconst detectIsTextVirtualNode = (vNode: unknown): vNode is TextVirtualNode => vNode instanceof TextVirtualNode;\r\nconst detectIsEmptyVirtualNode = (vNode: unknown): boolean =>\r\n detectIsCommentVirtualNode(vNode) && vNode.value === EMPTY_NODE;\r\n\r\nfunction getVirtualNodeKey(vNode: TagVirtualNode): DarkElementKey | null {\r\n const key = vNode && vNode.attrs[ATTR_KEY];\r\n\r\n return !detectIsEmpty(key) ? key : null;\r\n}\r\n\r\nfunction Text(source: string | StandardComponentProps['slot']): string | TextVirtualNode {\r\n const text =\r\n typeof source === 'string' ? new TextVirtualNode(source) : detectIsTextVirtualNode(source) ? source.value : '';\r\n\r\n return text;\r\n}\r\n\r\nfunction Comment(text: string): CommentVirtualNodeFactory {\r\n const factory = () => new CommentVirtualNode(text);\r\n\r\n factory[$$virtualNode] = true;\r\n\r\n return factory;\r\n}\r\n\r\nfunction View(def: ViewDef): TagVirtualNodeFactory {\r\n const factory = () => {\r\n const { as, slot, isVoid = false, ...rest } = def;\r\n const children = isVoid ? [] : detectIsArray(slot) ? slot : slot ? [slot] : [];\r\n\r\n return new TagVirtualNode({\r\n name: as,\r\n isVoid,\r\n attrs: { ...rest },\r\n children: children as Array,\r\n });\r\n };\r\n\r\n factory[$$virtualNode] = true;\r\n\r\n return factory;\r\n}\r\n\r\nconst createEmptyVirtualNode = () => new CommentVirtualNode(EMPTY_NODE);\r\n\r\nconst detectIsVirtualNodeFactory = (factory: unknown): factory is VirtualNodeFactory =>\r\n detectIsFunction(factory) && factory[$$virtualNode] === true;\r\n\r\nexport {\r\n VirtualNode,\r\n TagVirtualNode,\r\n TextVirtualNode,\r\n CommentVirtualNode,\r\n detectIsVirtualNode,\r\n detectIsTagVirtualNode,\r\n detectIsCommentVirtualNode,\r\n detectIsTextVirtualNode,\r\n detectIsEmptyVirtualNode,\r\n getVirtualNodeKey,\r\n Text,\r\n Comment,\r\n View,\r\n createEmptyVirtualNode,\r\n detectIsVirtualNodeFactory,\r\n};\r\n","import { type KeyProps, createComponent, detectIsComponentFactory } from '../component';\r\n\r\nconst $$fragment = Symbol('fragment');\r\n\r\nconst Fragment = createComponent(({ slot }) => slot || null, {\r\n token: $$fragment,\r\n});\r\n\r\nconst detectIsFragment = (factory: unknown) => detectIsComponentFactory(factory) && factory.token === $$fragment;\r\n\r\nexport { Fragment, detectIsFragment };\r\n","import { detectIsObject, detectIsNull } from '../helpers';\r\nimport type { Component, RefProps, ComponentFactory } from '../component';\r\nimport type { MutableRef } from './types';\r\n\r\nfunction forwardRef(component: Component) {\r\n type Props = P & RefProps;\r\n\r\n return ({ ref, ...rest }: Props) => {\r\n return component(rest as P, ref) as ComponentFactory;\r\n };\r\n}\r\n\r\nconst detectIsRef = (ref: unknown) => {\r\n if (!detectIsObject(ref) || detectIsNull(ref)) return false;\r\n const mutableRef = ref as MutableRef;\r\n\r\n for (const key in mutableRef) {\r\n if (key === 'current' && mutableRef.hasOwnProperty(key)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport { forwardRef, detectIsRef };\r\n","import {\r\n type Component,\r\n type ComponentFactory,\r\n type StandardComponentProps,\r\n type RefProps,\r\n type SlotProps,\r\n createComponent,\r\n detectIsComponentFactory,\r\n} from '../component';\r\nimport { type MutableRef, forwardRef } from '../ref';\r\n\r\ntype ShouldUpdate = (props: T, nextProps: T) => boolean;\r\n\r\nconst $$memo = Symbol('memo');\r\n\r\nconst defaultShouldUpdate = (props: {}, nextProps: {}): boolean => {\r\n const keys = Object.keys(nextProps);\r\n\r\n for (const key of keys) {\r\n if (key !== 'slot' && nextProps[key] !== props[key]) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst detectIsMemo = (factory: unknown) => detectIsComponentFactory(factory) && factory.token === $$memo;\r\n\r\nfunction memo(\r\n component: (props: T, ref?: MutableRef) => ComponentFactory,\r\n shouldUpdate: ShouldUpdate = defaultShouldUpdate,\r\n): Component {\r\n return forwardRef(\r\n createComponent(\r\n (props: T & RefProps, ref) => {\r\n ref && (props.ref = ref);\r\n\r\n return component(props);\r\n },\r\n { token: $$memo, shouldUpdate },\r\n ),\r\n );\r\n}\r\n\r\nexport { $$memo, memo, detectIsMemo };\r\n","import { type DarkElement } from '../shared';\r\nimport { detectIsUndefined, detectIsArray, detectIsDepsDifferent } from '../helpers';\r\nimport { detectIsComponentFactory, createComponent } from '../component';\r\nimport { detectIsVirtualNodeFactory } from '../view';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { Fragment } from '../fragment';\r\nimport { $$memo } from '../memo';\r\n\r\nconst Memo = createComponent(({ slot }) => slot, { token: $$memo });\r\n\r\nfunction wrap(value: T, isDepsDifferent: boolean) {\r\n const check = (value: T) => detectIsVirtualNodeFactory(value) || detectIsComponentFactory(value);\r\n\r\n if (detectIsArray(value) ? check(value[0]) : check(value)) {\r\n const slot = value as unknown as DarkElement;\r\n const factory = Memo({\r\n slot: Fragment({ slot }),\r\n });\r\n\r\n factory.shouldUpdate = () => isDepsDifferent;\r\n\r\n return factory;\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction processValue(getValue: () => T, isDepsDifferent = false) {\r\n return wrap(getValue(), isDepsDifferent);\r\n}\r\n\r\nfunction useMemo(getValue: () => T, deps: Array): T {\r\n const fiber = componentFiberHelper.get();\r\n const { hook } = fiber;\r\n const { idx, values } = hook;\r\n\r\n if (detectIsUndefined(values[idx])) {\r\n const value = processValue(getValue);\r\n\r\n values[idx] = {\r\n deps,\r\n value,\r\n };\r\n\r\n hook.idx++;\r\n\r\n return value as T;\r\n }\r\n\r\n const hookValue = values[idx];\r\n const prevDeps = hookValue.deps as Array;\r\n const isDepsDifferent = detectIsDepsDifferent(deps, prevDeps);\r\n const computedGetValue = isDepsDifferent ? getValue : () => hookValue.value;\r\n\r\n hookValue.deps = deps;\r\n hookValue.value = processValue(computedGetValue, isDepsDifferent);\r\n\r\n hook.idx++;\r\n\r\n return hookValue.value;\r\n}\r\n\r\nexport { useMemo };\r\n","import type { Platform } from './types';\r\n\r\nexport const platform: Platform = {\r\n scheduleCallback: () => {\r\n throw new Error('scheduleCallback not installed by renderer');\r\n },\r\n shouldYeildToHost: () => {\r\n throw new Error('shouldYeildToHost not installed by renderer');\r\n },\r\n createNativeElement: () => {\r\n throw new Error('createNativeElement not installed by renderer');\r\n },\r\n applyCommits: () => {\r\n throw new Error('applyCommits not installed by renderer');\r\n },\r\n detectIsPortal: () => {\r\n throw new Error('detectIsPortal not installed by renderer');\r\n },\r\n unmountPortal: () => {\r\n throw new Error('unmountPortal not installed by renderer');\r\n },\r\n};\r\n","export enum EffectTag {\r\n PLACEMENT = 'PLACEMENT',\r\n UPDATE = 'UPDATE',\r\n DELETION = 'DELETION',\r\n SKIP = 'SKIP',\r\n}\r\n\r\nexport type NativeElement = unknown;\r\n\r\nexport type HookValue = {\r\n token?: Symbol;\r\n deps: Array;\r\n value: T;\r\n};\r\n\r\nexport type Hook = {\r\n idx: number;\r\n values: Array;\r\n};\r\n\r\nexport const cloneTagMap = {\r\n [EffectTag.PLACEMENT]: true,\r\n [EffectTag.SKIP]: true,\r\n};\r\n","import { layoutEffectsHelper } from '../scope';\r\nimport { createEffectFunctions } from '../use-effect';\r\n\r\nconst $$useLayoutEffect = Symbol('use-layout-effect');\r\n\r\nconst {\r\n useEffect: useLayoutEffect,\r\n hasEffects: hasLayoutEffects,\r\n cleanupEffects: cleanupLayoutEffects,\r\n} = createEffectFunctions($$useLayoutEffect, layoutEffectsHelper);\r\n\r\nexport { useLayoutEffect, hasLayoutEffects, cleanupLayoutEffects };\r\n","import { type Fiber } from '../fiber';\r\n\r\ntype WalkFiberOptions = {\r\n fiber: Fiber;\r\n onLoop: (options: OnLoopOptions) => void;\r\n};\r\n\r\ntype OnLoopOptions = {\r\n nextFiber: Fiber;\r\n isReturn: boolean;\r\n resetIsDeepWalking: () => void;\r\n stop: () => void;\r\n};\r\n\r\nfunction walkFiber(options: WalkFiberOptions) {\r\n const { fiber, onLoop } = options;\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n let isReturn = false;\r\n let isStopped = false;\r\n const visitedMap = new Map();\r\n const detectCanVisit = (fiber: Fiber) => !visitedMap.get(fiber);\r\n\r\n while (nextFiber) {\r\n onLoop({\r\n nextFiber: nextFiber as Fiber,\r\n isReturn,\r\n resetIsDeepWalking: () => (isDeepWalking = false),\r\n stop: () => (isStopped = true),\r\n });\r\n\r\n if (isStopped) {\r\n break;\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking && detectCanVisit(nextFiber.child)) {\r\n const newFiber = nextFiber.child;\r\n\r\n isReturn = false;\r\n nextFiber = newFiber;\r\n visitedMap.set(newFiber, true);\r\n } else if (nextFiber.nextSibling && detectCanVisit(nextFiber.nextSibling)) {\r\n const newFiber = nextFiber.nextSibling;\r\n\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = newFiber;\r\n visitedMap.set(newFiber, true);\r\n } else if (\r\n nextFiber.parent &&\r\n nextFiber.parent === fiber &&\r\n nextFiber.parent.nextSibling &&\r\n detectCanVisit(nextFiber.parent.nextSibling)\r\n ) {\r\n const newFiber = nextFiber.parent.nextSibling;\r\n\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = newFiber;\r\n visitedMap.set(newFiber, true);\r\n } else if (nextFiber.parent && nextFiber.parent !== fiber) {\r\n isDeepWalking = false;\r\n isReturn = true;\r\n nextFiber = nextFiber.parent;\r\n } else {\r\n nextFiber = null;\r\n }\r\n }\r\n}\r\n\r\nexport { walkFiber };\r\n","import { type Fiber } from '../fiber';\r\nimport { platform } from '../platform';\r\nimport { detectIsComponentFactory } from '../component';\r\nimport { cleanupEffects } from '../use-effect';\r\nimport { cleanupLayoutEffects } from '../use-layout-effect';\r\nimport { walkFiber } from '../walk';\r\nimport { detectIsUndefined } from '../helpers';\r\nimport { currentRootHelper, eventsHelper, effectStoreHelper } from '../scope';\r\n\r\nfunction unmountFiber(fiber: Fiber) {\r\n if (fiber.effectHost || fiber.layoutEffectHost) {\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, isReturn, stop }) => {\r\n if (nextFiber === fiber.nextSibling || fiber.transposition) return stop();\r\n\r\n if (!isReturn && detectIsComponentFactory(nextFiber.instance)) {\r\n cleanupLayoutEffects(nextFiber.hook);\r\n cleanupEffects(nextFiber.hook);\r\n }\r\n },\r\n });\r\n }\r\n\r\n fiber.portalHost && platform.unmountPortal(fiber);\r\n}\r\n\r\nfunction unmountRoot(rootId: number, onComplete: () => void) {\r\n if (detectIsUndefined(rootId)) return;\r\n\r\n unmountFiber(currentRootHelper.get(rootId));\r\n eventsHelper.mapUnsubscribers(rootId);\r\n effectStoreHelper.remove(rootId);\r\n onComplete();\r\n}\r\n\r\nexport { unmountFiber, unmountRoot };\r\n","import { flatten, detectIsEmpty, error, keyBy, takeListFromEnd, detectIsUndefined, detectIsArray } from '../helpers';\r\nimport { platform } from '../platform';\r\nimport {\r\n wipRootHelper,\r\n currentRootHelper,\r\n nextUnitOfWorkHelper,\r\n deletionsHelper,\r\n fiberMountHelper,\r\n componentFiberHelper,\r\n fromHookUpdateHelper,\r\n effectStoreHelper,\r\n effectsHelper,\r\n layoutEffectsHelper,\r\n} from '../scope';\r\nimport { type ComponentFactory, detectIsComponentFactory, getComponentFactoryKey } from '../component';\r\nimport {\r\n type TagVirtualNode,\r\n detectIsTagVirtualNode,\r\n createEmptyVirtualNode,\r\n getVirtualNodeKey,\r\n detectIsVirtualNode,\r\n detectIsVirtualNodeFactory,\r\n} from '../view';\r\nimport { detectIsMemo } from '../memo';\r\nimport type { Context, ContextProviderValue } from '../context';\r\nimport type { DarkElementKey, DarkElement, DarkElementInstance } from '../shared';\r\nimport { PARTIAL_UPDATE } from '../constants';\r\nimport { type NativeElement, type Hook, EffectTag, cloneTagMap } from './types';\r\nimport { hasEffects } from '../use-effect';\r\nimport { hasLayoutEffects } from '../use-layout-effect';\r\nimport { walkFiber } from '../walk';\r\nimport { unmountFiber } from '../unmount';\r\n\r\nclass Fiber {\r\n public nativeElement: N;\r\n public parent: Fiber;\r\n public child: Fiber;\r\n public nextSibling: Fiber;\r\n public alternate: Fiber;\r\n public effectTag: EffectTag;\r\n public instance: DarkElementInstance;\r\n public hook: Hook;\r\n public shadow: Fiber;\r\n public provider: Map;\r\n public transposition: boolean;\r\n public mountedToHost: boolean;\r\n public portalHost: boolean;\r\n public effectHost: boolean;\r\n public layoutEffectHost: boolean;\r\n public childrenCount: number;\r\n public marker: string;\r\n public isUsed: boolean;\r\n public catchException: (error: Error) => void;\r\n\r\n constructor(options: Partial>) {\r\n this.nativeElement = options.nativeElement || null;\r\n this.parent = options.parent || null;\r\n this.child = options.child || null;\r\n this.nextSibling = options.nextSibling || null;\r\n this.alternate = options.alternate || null;\r\n this.effectTag = options.effectTag || null;\r\n this.instance = options.instance || null;\r\n this.hook = options.hook || createHook();\r\n this.shadow = options.shadow || null;\r\n this.provider = options.provider || null;\r\n this.transposition = !detectIsUndefined(options.transposition) ? options.transposition : false;\r\n this.mountedToHost = !detectIsUndefined(options.mountedToHost) || false;\r\n this.portalHost = !detectIsUndefined(options.portalHost) ? options.portalHost : false;\r\n this.effectHost = !detectIsUndefined(options.effectHost) ? options.effectHost : false;\r\n this.layoutEffectHost = !detectIsUndefined(options.layoutEffectHost) ? options.layoutEffectHost : false;\r\n this.childrenCount = options.childrenCount || 0;\r\n this.marker = options.marker || '';\r\n this.isUsed = options.isUsed || false;\r\n }\r\n\r\n public markPortalHost() {\r\n this.portalHost = true;\r\n this.parent && !this.parent.portalHost && this.parent.markPortalHost();\r\n }\r\n\r\n public markEffectHost() {\r\n this.effectHost = true;\r\n this.parent && !this.parent.effectHost && this.parent.markEffectHost();\r\n }\r\n\r\n public markLayoutEffectHost() {\r\n this.layoutEffectHost = true;\r\n this.parent && !this.parent.layoutEffectHost && this.parent.markLayoutEffectHost();\r\n }\r\n\r\n public setError(error: Error) {\r\n if (typeof this.catchException === 'function') {\r\n this.catchException(error);\r\n } else if (this.parent) {\r\n this.parent.setError(error);\r\n }\r\n }\r\n}\r\n\r\nfunction workLoop() {\r\n const wipFiber = wipRootHelper.get();\r\n let nextUnitOfWork = nextUnitOfWorkHelper.get();\r\n let shouldYield = false;\r\n let hasMoreWork = Boolean(nextUnitOfWork);\r\n\r\n while (nextUnitOfWork && !shouldYield) {\r\n nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\r\n nextUnitOfWorkHelper.set(nextUnitOfWork);\r\n hasMoreWork = Boolean(nextUnitOfWork);\r\n shouldYield = platform.shouldYeildToHost();\r\n }\r\n\r\n if (!nextUnitOfWork && wipFiber) {\r\n commitChanges();\r\n }\r\n\r\n return hasMoreWork;\r\n}\r\n\r\nfunction performUnitOfWork(fiber: Fiber) {\r\n let isDeepWalking = true;\r\n let nextFiber = fiber;\r\n let shadow: Fiber = fiber.shadow;\r\n let instance = fiber.instance;\r\n\r\n while (true) {\r\n isDeepWalking = fiberMountHelper.deepWalking.get();\r\n nextFiber.hook.idx = 0;\r\n\r\n if (isDeepWalking) {\r\n const hasChildren = hasChildrenProp(instance) && instance.children.length > 0;\r\n\r\n if (hasChildren) {\r\n const { performedFiber, performedNextFiber, performedShadow, performedInstance } = performChild({\r\n nextFiber,\r\n shadow,\r\n instance,\r\n });\r\n\r\n nextFiber = performedNextFiber;\r\n shadow = performedShadow;\r\n instance = performedInstance;\r\n\r\n if (performedFiber) return performedFiber;\r\n } else {\r\n const { performedFiber, performedNextFiber, performedShadow, performedInstance } = performSibling({\r\n nextFiber,\r\n shadow,\r\n instance,\r\n });\r\n\r\n nextFiber = performedNextFiber;\r\n shadow = performedShadow;\r\n instance = performedInstance;\r\n\r\n if (performedFiber) return performedFiber;\r\n }\r\n } else {\r\n const { performedFiber, performedNextFiber, performedShadow, performedInstance } = performSibling({\r\n nextFiber,\r\n shadow,\r\n instance,\r\n });\r\n\r\n nextFiber = performedNextFiber;\r\n shadow = performedShadow;\r\n instance = performedInstance;\r\n\r\n if (performedFiber) return performedFiber;\r\n }\r\n\r\n performPartialUpdateEffects(nextFiber);\r\n\r\n if (nextFiber.parent === null) return null;\r\n }\r\n}\r\n\r\nfunction performPartialUpdateEffects(nextFiber: Fiber) {\r\n if (nextFiber.marker === PARTIAL_UPDATE) {\r\n const alternate = nextFiber.child?.alternate || null;\r\n const fiber = nextFiber.child || null;\r\n\r\n if (alternate && fiber && alternate.nextSibling && !fiber.nextSibling) {\r\n let nextFiber = alternate.nextSibling;\r\n const deletions: Array = [];\r\n\r\n while (nextFiber) {\r\n nextFiber.effectTag = EffectTag.DELETION;\r\n deletions.push(nextFiber);\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n deletionsHelper.get().push(...deletions);\r\n }\r\n }\r\n}\r\n\r\ntype PerformChildOptions = {\r\n nextFiber: Fiber;\r\n shadow: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction performChild(options: PerformChildOptions) {\r\n fiberMountHelper.jumpToChild();\r\n let nextFiber = options.nextFiber;\r\n let shadow = options.shadow;\r\n let instance = options.instance;\r\n\r\n shadow = shadow ? shadow.child : null;\r\n\r\n const alternate = getChildAlternate(nextFiber);\r\n const hook = getHook({ shadow, alternate, instance });\r\n const provider = shadow ? shadow.provider : alternate ? alternate.provider : null;\r\n let fiber = new Fiber({ hook, provider });\r\n\r\n componentFiberHelper.set(fiber);\r\n fiber.parent = nextFiber;\r\n\r\n const { performedInstance, performedShadow } = pertformInstance({\r\n instance,\r\n idx: 0,\r\n fiber,\r\n alternate,\r\n });\r\n instance = performedInstance || instance;\r\n shadow = performedShadow || shadow;\r\n alternate && mutateAlternate({ alternate, instance });\r\n mutateFiber({ fiber, alternate, instance });\r\n fiber = alternate ? performMemo({ fiber, alternate, instance }) : fiber;\r\n\r\n nextFiber.child = fiber;\r\n fiber.parent = nextFiber;\r\n fiber.shadow = shadow;\r\n nextFiber = fiber;\r\n\r\n cloneTagMap[fiber.parent.effectTag] && (fiber.effectTag = fiber.parent.effectTag);\r\n\r\n return {\r\n performedFiber: nextFiber,\r\n performedNextFiber: nextFiber,\r\n performedShadow: shadow,\r\n performedInstance: instance,\r\n };\r\n}\r\n\r\ntype PerformSiblingOptions = {\r\n nextFiber: Fiber;\r\n shadow: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction performSibling(options: PerformSiblingOptions) {\r\n fiberMountHelper.jumpToSibling();\r\n let nextFiber = options.nextFiber;\r\n let shadow = options.shadow;\r\n let instance = options.instance;\r\n const parent = nextFiber.parent.instance;\r\n const childrenIdx = fiberMountHelper.getIndex();\r\n const hasSibling = hasChildrenProp(parent) && parent.children[childrenIdx];\r\n\r\n if (hasSibling) {\r\n fiberMountHelper.deepWalking.set(true);\r\n\r\n shadow = shadow ? shadow.nextSibling : null;\r\n const alternate = getNextSiblingAlternate(nextFiber);\r\n const hook = getHook({ shadow, alternate, instance });\r\n const provider = shadow ? shadow.provider : alternate ? alternate.provider : null;\r\n let fiber = new Fiber({ hook, provider });\r\n\r\n componentFiberHelper.set(fiber);\r\n fiber.parent = nextFiber.parent;\r\n\r\n const { performedInstance, performedShadow } = pertformInstance({\r\n instance: parent,\r\n idx: childrenIdx,\r\n fiber,\r\n alternate,\r\n });\r\n instance = performedInstance || instance;\r\n shadow = performedShadow || shadow;\r\n alternate && mutateAlternate({ alternate, instance });\r\n mutateFiber({ fiber, alternate, instance });\r\n fiber = alternate ? performMemo({ fiber, alternate, instance }) : fiber;\r\n\r\n fiber.parent = nextFiber.parent;\r\n nextFiber.nextSibling = fiber;\r\n fiber.shadow = shadow;\r\n nextFiber = fiber;\r\n\r\n cloneTagMap[fiber.parent.effectTag] && (fiber.effectTag = fiber.parent.effectTag);\r\n\r\n return {\r\n performedFiber: nextFiber,\r\n performedNextFiber: nextFiber,\r\n performedShadow: shadow,\r\n performedInstance: instance,\r\n };\r\n } else {\r\n fiberMountHelper.jumpToParent();\r\n fiberMountHelper.deepWalking.set(false);\r\n shadow = shadow ? shadow.parent : null;\r\n nextFiber = nextFiber.parent;\r\n instance = nextFiber.instance;\r\n\r\n if (hasChildrenProp(nextFiber.instance)) {\r\n nextFiber.instance.children = [];\r\n }\r\n }\r\n\r\n return {\r\n performedFiber: null,\r\n performedNextFiber: nextFiber,\r\n performedShadow: shadow,\r\n performedInstance: instance,\r\n };\r\n}\r\n\r\ntype MutateFiberOptions = {\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction mutateFiber(options: MutateFiberOptions) {\r\n const { fiber, alternate, instance } = options;\r\n const key = alternate ? getElementKey(alternate.instance) : null;\r\n const nextKey = alternate ? getElementKey(instance) : null;\r\n const isDifferentKeys = key !== nextKey;\r\n const isSameType = Boolean(alternate) && getInstanceType(alternate.instance) === getInstanceType(instance);\r\n const isUpdate = isSameType && !isDifferentKeys;\r\n\r\n fiber.instance = instance;\r\n fiber.alternate = alternate || null;\r\n fiber.nativeElement = isUpdate ? alternate.nativeElement : null;\r\n fiber.effectTag = isUpdate ? EffectTag.UPDATE : EffectTag.PLACEMENT;\r\n fiber.mountedToHost = fiber.nativeElement ? isUpdate : false;\r\n\r\n if (hasChildrenProp(fiber.instance)) {\r\n fiber.childrenCount = fiber.instance.children.length;\r\n }\r\n\r\n if (fiber.alternate) {\r\n fiber.alternate.shadow = null;\r\n fiber.alternate.alternate = null;\r\n }\r\n\r\n if (!fiber.nativeElement && detectIsVirtualNode(fiber.instance)) {\r\n fiber.nativeElement = platform.createNativeElement(fiber);\r\n }\r\n}\r\n\r\ntype PerformAlternateOptions = {\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction mutateAlternate(options: PerformAlternateOptions) {\r\n const { alternate, instance } = options;\r\n const alternateType = getInstanceType(alternate.instance);\r\n const elementType = getInstanceType(instance);\r\n const isSameType = elementType === alternateType;\r\n const prevKey = getElementKey(alternate.instance);\r\n const nextKey = getElementKey(instance);\r\n const isSameKeys = prevKey === nextKey;\r\n\r\n alternate.isUsed = true;\r\n\r\n if (!isSameType || !isSameKeys) {\r\n alternate.effectTag = EffectTag.DELETION;\r\n deletionsHelper.get().push(alternate);\r\n } else if (hasChildrenProp(alternate.instance) && hasChildrenProp(instance)) {\r\n const prevElementsCount = alternate.childrenCount;\r\n const nextElementsCount = instance.children.length;\r\n const isRequestedKeys = prevElementsCount !== nextElementsCount;\r\n\r\n if (isRequestedKeys) {\r\n const isRemovingCase = nextElementsCount < prevElementsCount;\r\n const isInsertingCase = nextElementsCount > prevElementsCount;\r\n const children = hasChildrenProp(instance) ? instance.children : [];\r\n const { keys, nextKeys } = extractKeys(alternate.child, children);\r\n const hasKeys = keys.length > 0;\r\n const hasAnyKeys = hasKeys || nextKeys.length > 0;\r\n\r\n if (process.env.NODE_ENV === 'development') {\r\n if (!hasAnyKeys && prevElementsCount !== 0 && nextElementsCount !== 0) {\r\n error(`\r\n [Dark]: Operation of inserting, adding, replacing elements into list requires to have a unique key for every node (string or number, but not array index)!\r\n `);\r\n }\r\n }\r\n\r\n const performRemovingNodes = () => {\r\n const diffKeys = getDiffKeys(keys, nextKeys);\r\n\r\n if (diffKeys.length > 0) {\r\n const fibersMap = createFibersByKeyMap(alternate.child);\r\n\r\n for (const key of diffKeys) {\r\n const fiber = fibersMap[key] || null;\r\n\r\n if (fiber) {\r\n fiber.effectTag = EffectTag.DELETION;\r\n deletionsHelper.get().push(fiber);\r\n }\r\n }\r\n } else if (!hasKeys) {\r\n const diffCount = prevElementsCount - nextElementsCount;\r\n const fibers = takeListFromEnd(getSiblingFibers(alternate.child), diffCount);\r\n\r\n for (const fiber of fibers) {\r\n fiber.effectTag = EffectTag.DELETION;\r\n }\r\n\r\n deletionsHelper.get().push(...fibers);\r\n }\r\n };\r\n\r\n const performInsertingNodes = () => {\r\n const diffKeys = getDiffKeys(nextKeys, keys);\r\n\r\n if (diffKeys.length > 0) {\r\n const diffKeyMap = keyBy(diffKeys, x => x);\r\n const fibersByPositionsMap = createFibersByPositionMap(alternate.child);\r\n const usedKeyMap = {};\r\n let keyIdx = 0;\r\n\r\n for (const nextKey of nextKeys) {\r\n if (process.env.NODE_ENV === 'development') {\r\n if (usedKeyMap[nextKey]) {\r\n error(`Some key of node already has been used!`);\r\n }\r\n }\r\n\r\n usedKeyMap[nextKey] = true;\r\n\r\n if (nextKey !== keys[keyIdx] && diffKeyMap[nextKey]) {\r\n const insertionFiber = new Fiber({\r\n instance: createEmptyVirtualNode(),\r\n parent: alternate,\r\n effectTag: EffectTag.PLACEMENT,\r\n });\r\n\r\n if (keyIdx === 0) {\r\n insertionFiber.nextSibling = alternate.child;\r\n alternate.child = insertionFiber;\r\n } else {\r\n const fiber = fibersByPositionsMap[keyIdx] || null;\r\n\r\n if (fiber) {\r\n insertionFiber.nextSibling = fiber;\r\n }\r\n }\r\n }\r\n\r\n keyIdx++;\r\n }\r\n }\r\n };\r\n\r\n isRemovingCase && performRemovingNodes();\r\n isInsertingCase && performInsertingNodes();\r\n }\r\n }\r\n}\r\n\r\ntype PerformMemoOptions = {\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction performMemo(options: PerformMemoOptions) {\r\n const { fiber, alternate, instance } = options;\r\n\r\n if (detectIsMemo(fiber.instance)) {\r\n let memoFiber: Fiber = null;\r\n const factory = instance as ComponentFactory;\r\n const alternateFactory = alternate.instance as ComponentFactory;\r\n\r\n if (factory.type !== alternateFactory.type) return fiber;\r\n\r\n const props = alternateFactory.props;\r\n const nextProps = factory.props;\r\n const skip = !factory.shouldUpdate(props, nextProps);\r\n\r\n if (skip) {\r\n let nextFiber: Fiber = null;\r\n fiberMountHelper.deepWalking.set(false);\r\n\r\n memoFiber = new Fiber({\r\n ...alternate,\r\n alternate,\r\n effectTag: EffectTag.SKIP,\r\n nextSibling: alternate.nextSibling\r\n ? alternate.nextSibling.effectTag === EffectTag.DELETION\r\n ? null\r\n : alternate.nextSibling\r\n : null,\r\n });\r\n\r\n alternate.alternate = null;\r\n nextFiber = memoFiber.child;\r\n\r\n while (nextFiber) {\r\n nextFiber.parent = memoFiber;\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n if (memoFiber.effectHost) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (memoFiber.layoutEffectHost) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (memoFiber.portalHost) {\r\n fiber.markPortalHost();\r\n }\r\n\r\n return memoFiber;\r\n }\r\n }\r\n\r\n return fiber;\r\n}\r\n\r\ntype PerformInstanceOptions = {\r\n instance: DarkElementInstance;\r\n idx: number;\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n};\r\n\r\nfunction pertformInstance(options: PerformInstanceOptions) {\r\n const { instance, idx, fiber, alternate } = options;\r\n let performedInstance: DarkElementInstance = null;\r\n let performedShadow: Fiber = null;\r\n\r\n if (hasChildrenProp(instance)) {\r\n const elements = detectIsArray(instance.children[idx])\r\n ? flatten([instance.children[idx]])\r\n : [instance.children[idx]];\r\n\r\n instance.children.splice(idx, 1, ...elements);\r\n performedInstance = instance.children[idx];\r\n performedShadow = alternate\r\n ? getRootShadow({\r\n instance: performedInstance,\r\n fiber,\r\n alternate,\r\n })\r\n : performedShadow;\r\n performedInstance = mountInstance(fiber, performedInstance);\r\n }\r\n\r\n if (detectIsComponentFactory(performedInstance)) {\r\n if (hasEffects(fiber)) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (hasLayoutEffects(fiber)) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (platform.detectIsPortal(performedInstance)) {\r\n fiber.markPortalHost();\r\n }\r\n }\r\n\r\n return {\r\n performedInstance,\r\n performedShadow,\r\n };\r\n}\r\n\r\ntype GetRootShadowOptions = {\r\n instance: DarkElementInstance;\r\n fiber: Fiber;\r\n alternate: Fiber;\r\n};\r\n\r\nfunction getRootShadow(options: GetRootShadowOptions) {\r\n const { instance, fiber, alternate } = options;\r\n const key = getElementKey(alternate.instance);\r\n const nextKey = getElementKey(instance);\r\n let shadow: Fiber = null;\r\n\r\n if (key !== nextKey) {\r\n shadow = getAlternateByKey(nextKey, alternate.parent.child);\r\n\r\n if (shadow) {\r\n fiber.hook = shadow.hook;\r\n fiber.provider = shadow.provider;\r\n alternate.transposition = true;\r\n }\r\n }\r\n\r\n return shadow;\r\n}\r\n\r\nfunction mountInstance(fiber: Fiber, instance: DarkElementInstance) {\r\n const isComponentFactory = detectIsComponentFactory(instance);\r\n const factory = instance as ComponentFactory;\r\n\r\n if (isComponentFactory) {\r\n try {\r\n const result = factory.type(factory.props, factory.ref);\r\n\r\n factory.children = detectIsArray(result)\r\n ? (flatten([result]) as Array)\r\n : ([result] as Array);\r\n } catch (err) {\r\n factory.children = [];\r\n fiber.setError(err);\r\n error(err);\r\n }\r\n } else if (detectIsVirtualNodeFactory(instance)) {\r\n instance = instance();\r\n }\r\n\r\n if (hasChildrenProp(instance)) {\r\n for (let i = 0; i < instance.children.length; i++) {\r\n if (!instance.children[i]) {\r\n instance.children[i] = transformElementInstance(instance.children[i]) as DarkElementInstance;\r\n }\r\n }\r\n\r\n instance.children = isComponentFactory\r\n ? instance.children\r\n : detectIsArray(instance.children)\r\n ? flatten([instance.children])\r\n : [instance.children];\r\n\r\n if (isComponentFactory && factory.children.length === 0) {\r\n factory.children.push(createEmptyVirtualNode());\r\n }\r\n }\r\n\r\n return instance;\r\n}\r\n\r\nfunction createFibersByPositionMap(fiber: Fiber) {\r\n let nextFiber = fiber;\r\n let position = 0;\r\n const map: Record = {};\r\n\r\n while (nextFiber) {\r\n map[position] = nextFiber;\r\n\r\n position++;\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return map;\r\n}\r\n\r\nfunction createFibersByKeyMap(fiber: Fiber) {\r\n let nextFiber = fiber;\r\n const map: Record = {};\r\n\r\n while (nextFiber) {\r\n const key = getElementKey(nextFiber.instance);\r\n\r\n if (!detectIsEmpty(key)) {\r\n map[key] = nextFiber;\r\n }\r\n\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return map;\r\n}\r\n\r\nfunction extractKeys(alternate: Fiber, children: Array) {\r\n let nextFiber = alternate;\r\n let idx = 0;\r\n const keys: Array = [];\r\n const nextKeys: Array = [];\r\n\r\n while (nextFiber || idx < children.length) {\r\n const key = nextFiber && getElementKey(nextFiber.instance);\r\n const nextKey = children[idx] && getElementKey(children[idx]);\r\n\r\n if (!detectIsEmpty(key)) {\r\n keys.push(key);\r\n }\r\n\r\n if (!detectIsEmpty(nextKey)) {\r\n nextKeys.push(nextKey);\r\n }\r\n\r\n nextFiber = nextFiber ? nextFiber.nextSibling : null;\r\n idx++;\r\n }\r\n\r\n return {\r\n keys,\r\n nextKeys,\r\n };\r\n}\r\n\r\nfunction getAlternateByKey(key: DarkElementKey, fiber: Fiber) {\r\n if (detectIsEmpty(key)) return null;\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (key === getElementKey(nextFiber.instance)) {\r\n return nextFiber;\r\n }\r\n\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction getElementKey(instance: DarkElementInstance): DarkElementKey | null {\r\n const key = detectIsComponentFactory(instance)\r\n ? getComponentFactoryKey(instance)\r\n : detectIsTagVirtualNode(instance)\r\n ? getVirtualNodeKey(instance)\r\n : null;\r\n\r\n return key;\r\n}\r\n\r\nfunction getDiffKeys(keys: Array, nextKeys: Array): Array {\r\n const nextKeysMap = nextKeys.reduce((acc, key) => ((acc[key] = true), acc), {});\r\n const diff = [];\r\n\r\n for (const key of keys) {\r\n if (!nextKeysMap[key]) {\r\n diff.push(key);\r\n }\r\n }\r\n\r\n return diff;\r\n}\r\n\r\nfunction getChildAlternate(fiber: Fiber): Fiber | null {\r\n let alternate = fiber.alternate && fiber.alternate.effectTag !== EffectTag.DELETION ? fiber.alternate.child : null;\r\n\r\n while (alternate && alternate.effectTag === EffectTag.DELETION) {\r\n alternate = alternate.nextSibling;\r\n }\r\n\r\n return alternate;\r\n}\r\n\r\nfunction getNextSiblingAlternate(fiber: Fiber): Fiber | null {\r\n let alternate = fiber.alternate?.nextSibling || null;\r\n\r\n while (alternate && alternate.effectTag === EffectTag.DELETION) {\r\n alternate = alternate.nextSibling;\r\n }\r\n\r\n return alternate;\r\n}\r\n\r\nfunction transformElementInstance(instance: DarkElement) {\r\n return detectIsEmpty(instance) || instance === false ? createEmptyVirtualNode() : instance;\r\n}\r\n\r\nfunction getInstanceType(instance: DarkElementInstance): string | Function {\r\n return detectIsTagVirtualNode(instance)\r\n ? instance.name\r\n : detectIsVirtualNode(instance)\r\n ? instance.type\r\n : detectIsComponentFactory(instance)\r\n ? instance.type\r\n : null;\r\n}\r\n\r\nfunction getSiblingFibers(fiber: Fiber): Array {\r\n const list = [];\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n list.push(nextFiber);\r\n nextFiber = nextFiber.nextSibling;\r\n }\r\n\r\n return list;\r\n}\r\n\r\nfunction hasChildrenProp(element: DarkElementInstance): element is TagVirtualNode | ComponentFactory {\r\n return detectIsTagVirtualNode(element) || detectIsComponentFactory(element);\r\n}\r\n\r\nfunction commitChanges() {\r\n const wipFiber = wipRootHelper.get();\r\n const fromHook = fromHookUpdateHelper.get();\r\n const deletions = deletionsHelper.get();\r\n const hasEffects = Boolean(wipFiber.alternate?.effectHost);\r\n const hasLayoutEffects = Boolean(wipFiber.alternate?.layoutEffectHost);\r\n const hasPortals = Boolean(wipFiber.alternate?.portalHost);\r\n\r\n if (hasEffects || hasLayoutEffects || hasPortals) {\r\n for (const fiber of deletions) {\r\n unmountFiber(fiber);\r\n }\r\n }\r\n\r\n commitWork(wipFiber.child, () => {\r\n const layoutEffects = layoutEffectsHelper.get();\r\n const effects = effectsHelper.get();\r\n\r\n for (const fiber of deletions) {\r\n platform.applyCommits(fiber);\r\n }\r\n\r\n deletionsHelper.set([]);\r\n wipRootHelper.set(null);\r\n\r\n for (const layoutEffect of layoutEffects) {\r\n layoutEffect();\r\n }\r\n\r\n setTimeout(() => {\r\n for (const effect of effects) {\r\n effect();\r\n }\r\n });\r\n\r\n layoutEffectsHelper.reset();\r\n effectsHelper.reset();\r\n\r\n if (fromHook) {\r\n fromHookUpdateHelper.set(false);\r\n } else {\r\n currentRootHelper.set(wipFiber);\r\n }\r\n });\r\n}\r\n\r\nfunction commitWork(fiber: Fiber, onComplete: Function) {\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, isReturn, resetIsDeepWalking }) => {\r\n const skip = nextFiber.effectTag === EffectTag.SKIP;\r\n\r\n if (skip) {\r\n resetIsDeepWalking();\r\n } else if (!isReturn) {\r\n platform.applyCommits(nextFiber);\r\n }\r\n\r\n if (nextFiber && nextFiber.shadow) {\r\n nextFiber.shadow = null;\r\n }\r\n },\r\n });\r\n\r\n onComplete();\r\n}\r\n\r\nfunction createHook(): Hook {\r\n return {\r\n idx: 0,\r\n values: [],\r\n };\r\n}\r\n\r\ntype GetHookOptions = {\r\n shadow: Fiber;\r\n alternate: Fiber;\r\n instance: DarkElementInstance;\r\n};\r\n\r\nfunction getHook(options: GetHookOptions) {\r\n const { shadow, alternate, instance } = options;\r\n\r\n if (shadow) return shadow.hook;\r\n\r\n if (alternate && getElementKey(alternate.instance) === getElementKey(instance)) {\r\n return alternate.hook;\r\n }\r\n\r\n return createHook();\r\n}\r\n\r\ntype CreateUpdateCallbackOptions = {\r\n rootId: number;\r\n fiber: Fiber;\r\n forceStart?: boolean;\r\n onStart: () => void;\r\n};\r\n\r\nfunction createUpdateCallback(options: CreateUpdateCallbackOptions) {\r\n const { rootId, fiber, forceStart = false, onStart } = options;\r\n const callback = () => {\r\n forceStart && onStart();\r\n if (fiber.isUsed) return;\r\n !forceStart && onStart();\r\n effectStoreHelper.set(rootId); // important order!\r\n fromHookUpdateHelper.set(true);\r\n fiberMountHelper.reset();\r\n\r\n fiber.alternate = new Fiber({\r\n ...fiber,\r\n alternate: null,\r\n });\r\n fiber.marker = PARTIAL_UPDATE;\r\n fiber.effectTag = EffectTag.UPDATE;\r\n fiber.child = null;\r\n\r\n wipRootHelper.set(fiber);\r\n componentFiberHelper.set(fiber);\r\n fiber.instance = mountInstance(fiber, fiber.instance);\r\n nextUnitOfWorkHelper.set(fiber);\r\n };\r\n\r\n return callback;\r\n}\r\n\r\nexport { Fiber, workLoop, createHook, hasChildrenProp, createUpdateCallback };\r\n","import { platform, type ScheduleCallbackOptions } from '../platform';\r\nimport { getRootId, componentFiberHelper } from '../scope';\r\nimport { createUpdateCallback } from '../fiber';\r\nimport { useMemo } from '../use-memo';\r\nimport { dummyFn } from '../helpers';\r\n\r\nfunction useUpdate(options?: ScheduleCallbackOptions) {\r\n const rootId = getRootId();\r\n const fiber = componentFiberHelper.get();\r\n const scope = useMemo(() => ({ fiber }), []);\r\n\r\n scope.fiber = fiber;\r\n\r\n const update = (onStart?: () => void) => {\r\n const callback = createUpdateCallback({\r\n rootId,\r\n fiber: scope.fiber,\r\n forceStart: Boolean(options?.timeoutMs),\r\n onStart: onStart || dummyFn,\r\n });\r\n\r\n platform.scheduleCallback(callback, options);\r\n };\r\n\r\n return update;\r\n}\r\n\r\nexport { useUpdate };\r\n","import { useEffect } from '../use-effect';\r\nimport { useMemo } from '../use-memo';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { useUpdate } from '../use-update';\r\nimport type { Fiber } from '../fiber';\r\nimport type { Context, ContextProviderValue } from '../context';\r\n\r\nfunction useContext(context: Context): T {\r\n const { defaultValue } = context;\r\n const fiber = componentFiberHelper.get();\r\n const provider = getProvider(context, fiber);\r\n const value = provider ? provider.value : defaultValue;\r\n const update = useUpdate();\r\n const scope = useMemo(() => ({ prevValue: value }), []);\r\n const hasProvider = Boolean(provider);\r\n\r\n useEffect(() => {\r\n if (!hasProvider) return;\r\n\r\n const subscriber = (newValue: T) => {\r\n if (!Object.is(scope.prevValue, newValue)) {\r\n update();\r\n }\r\n };\r\n\r\n provider.subscribers.push(subscriber);\r\n\r\n return () => {\r\n const idx = provider.subscribers.findIndex(x => x === subscriber);\r\n\r\n if (idx !== -1) {\r\n provider.subscribers.splice(idx, 1);\r\n }\r\n };\r\n }, [hasProvider]);\r\n\r\n scope.prevValue = value;\r\n\r\n return value;\r\n}\r\n\r\nfunction getProvider(context: Context, fiber: Fiber): ContextProviderValue {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (nextFiber.provider && nextFiber.provider.get(context)) {\r\n return nextFiber.provider.get(context) as ContextProviderValue;\r\n }\r\n\r\n nextFiber = nextFiber.parent;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport { useContext };\r\n","import { createComponent } from '../component';\r\nimport { useEffect } from '../use-effect';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { useContext } from '../use-context';\r\nimport { detectIsFunction } from '../helpers';\r\nimport type { Context, ContexProviderProps } from './types';\r\n\r\nfunction createContext(defaultValue: T): Context {\r\n let displayName = 'Context';\r\n const context: Context = {\r\n displayName,\r\n defaultValue,\r\n Provider: null,\r\n Consumer: null,\r\n };\r\n\r\n mutateContext(context, defaultValue, displayName);\r\n\r\n Object.defineProperty(context, 'displayName', {\r\n get: () => displayName,\r\n set: (newValue: string) => {\r\n displayName = newValue;\r\n mutateContext(context, defaultValue, displayName);\r\n },\r\n });\r\n\r\n return context;\r\n}\r\n\r\nfunction mutateContext(context: Context, defaultValue: T, displayName: string) {\r\n context.Provider = createProvider(context, defaultValue, displayName);\r\n context.Consumer = createConsumer(context, displayName);\r\n}\r\n\r\nfunction createProvider(context: Context, defaultValue: T, displayName: string) {\r\n return createComponent>(\r\n ({ value = defaultValue, slot }) => {\r\n const fiber = componentFiberHelper.get();\r\n\r\n if (!fiber.provider) {\r\n fiber.provider = new Map();\r\n }\r\n\r\n if (!fiber.provider.get(context)) {\r\n fiber.provider.set(context, {\r\n subscribers: [],\r\n value,\r\n });\r\n }\r\n\r\n const provider = fiber.provider.get(context);\r\n\r\n useEffect(() => {\r\n for (const subscriber of provider.subscribers) {\r\n subscriber(value);\r\n }\r\n }, [value]);\r\n\r\n provider.value = value;\r\n\r\n return slot;\r\n },\r\n { displayName: `${displayName}.Provider` },\r\n );\r\n}\r\n\r\nfunction createConsumer(context: Context, displayName: string) {\r\n return createComponent(\r\n ({ slot }) => {\r\n const value = useContext(context);\r\n\r\n return detectIsFunction(slot) ? slot(value) : null;\r\n },\r\n { displayName: `${displayName}.Consumer` },\r\n );\r\n}\r\n\r\nexport { createContext };\r\n","import { detectIsNumber, detectIsString, detectIsFunction } from '../helpers';\r\nimport { View, Text, type TagVirtualNodeFactory } from '../view';\r\n\r\nfunction getChildren(children: Array) {\r\n children = children.map(x => (detectIsString(x) || detectIsNumber(x) ? Text(x.toString()) : x));\r\n\r\n return children ? (Array.isArray(children) ? [...children] : [children]) : [];\r\n}\r\n\r\nfunction createElement(\r\n tag: string | Function,\r\n props: any,\r\n ...children: Array\r\n): TagVirtualNodeFactory | Function | null {\r\n if (detectIsString(tag)) {\r\n return View({\r\n ...props,\r\n as: tag,\r\n slot: getChildren(children),\r\n });\r\n }\r\n\r\n if (detectIsFunction(tag)) {\r\n let slot = getChildren(children);\r\n\r\n slot = slot.length === 1 ? slot[0] : slot;\r\n\r\n return tag({ ...props, slot });\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport { createElement };\r\n","import { useMemo } from '../use-memo';\r\n\r\nfunction useCallback(callback: T, deps: Array): T {\r\n const value = useMemo(() => callback, deps);\r\n\r\n return value;\r\n}\r\n\r\nexport { useCallback };\r\n","import { type ScheduleCallbackOptions } from '../platform';\r\nimport { detectIsUndefined, detectIsFunction } from '../helpers';\r\nimport { componentFiberHelper } from '../scope';\r\nimport { useUpdate } from '../use-update';\r\nimport { useMemo } from '../use-memo';\r\nimport { useCallback } from '../use-callback';\r\nimport { TaskPriority } from '../constants';\r\n\r\ntype Value = T | ((prevValue: T) => T);\r\ntype Scope = {\r\n idx: number;\r\n values: Array;\r\n};\r\n\r\nfunction useState(initialValue: T, options?: ScheduleCallbackOptions): [T, (value: Value) => void] {\r\n const fiber = componentFiberHelper.get();\r\n const update = useUpdate(options);\r\n const scope: Scope = useMemo(\r\n () => ({\r\n idx: fiber.hook.idx,\r\n values: fiber.hook.values,\r\n }),\r\n [],\r\n );\r\n const setState = useCallback((sourceValue: Value) => {\r\n const value = scope.values[scope.idx];\r\n const newValue = detectIsFunction(sourceValue) ? sourceValue(value) : sourceValue;\r\n\r\n if (!Object.is(value, newValue)) {\r\n const setValue = () => {\r\n scope.values[scope.idx] = newValue;\r\n };\r\n\r\n if (options?.priority === TaskPriority.LOW) {\r\n update(() => setValue());\r\n } else {\r\n setValue();\r\n update();\r\n }\r\n }\r\n }, []);\r\n const { hook } = fiber;\r\n const { idx, values } = hook;\r\n const value: T = !detectIsUndefined(values[idx]) ? values[idx] : initialValue;\r\n\r\n values[idx] = value;\r\n scope.idx = idx;\r\n scope.values = values;\r\n hook.idx++;\r\n\r\n return [value, setState];\r\n}\r\n\r\nexport { useState };\r\n","import { createComponent } from '../component';\r\nimport { useState } from '../use-state';\r\nimport { createContext } from '../context';\r\nimport { useContext } from '../use-context';\r\nimport { useMemo } from '../use-memo';\r\nimport { useCallback } from '../use-callback';\r\nimport type { DarkElement } from '../shared';\r\n\r\ntype SuspenseProps = {\r\n fallback: DarkElement;\r\n};\r\n\r\ntype SuspenseContextValue = {\r\n fallback: DarkElement;\r\n isLoaded: boolean;\r\n trigger: () => void;\r\n};\r\n\r\nconst SuspenseContext = createContext({\r\n fallback: null,\r\n isLoaded: true,\r\n trigger: () => {},\r\n});\r\n\r\nconst Suspense = createComponent(({ fallback, slot }) => {\r\n if (!fallback) {\r\n throw new Error(`Suspense fallback not found`);\r\n }\r\n const { isLoaded: isSuspenseLoaded } = useContext(SuspenseContext);\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n const trigger = useCallback(() => setIsLoaded(true), []);\r\n const value = useMemo(() => ({ fallback, isLoaded, trigger }), [fallback, isLoaded]);\r\n\r\n return SuspenseContext.Provider({\r\n value,\r\n slot: isSuspenseLoaded ? slot : null,\r\n });\r\n});\r\n\r\nexport { SuspenseContext, Suspense };\r\n","import { type Component, createComponent, detectIsComponentFactory } from '../component';\r\nimport { useState } from '../use-state';\r\nimport { useEffect } from '../use-effect';\r\nimport { forwardRef } from '../ref';\r\nimport { SuspenseContext } from '../suspense';\r\nimport { useContext } from '../use-context';\r\n\r\nconst $$lazy = Symbol('lazy');\r\n\r\ntype LazyScope = {\r\n component: Component;\r\n};\r\n\r\nfunction lazy(dynamic: () => Promise<{ default: Component

}>) {\r\n return forwardRef(\r\n createComponent(\r\n (props, ref) => {\r\n const { fallback, trigger } = useContext(SuspenseContext);\r\n const [scope, setScope] = useState>({\r\n component: null,\r\n });\r\n\r\n useEffect(() => {\r\n fetchModule(dynamic).then(component => {\r\n setScope({ component });\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!scope.component) return;\r\n trigger();\r\n }, [scope.component]);\r\n\r\n return scope.component ? scope.component(props, ref) : fallback;\r\n },\r\n { token: $$lazy },\r\n ),\r\n );\r\n}\r\n\r\nconst detectIsLazy = (factory: unknown) => detectIsComponentFactory(factory) && factory.token === $$lazy;\r\n\r\nfunction fetchModule(dynamic: () => Promise<{ default: Component }>) {\r\n return new Promise(resolve => {\r\n dynamic().then(module => {\r\n if (!module.default) {\r\n throw new Error('lazy loaded component should be exported as default!');\r\n }\r\n\r\n resolve(module.default);\r\n });\r\n });\r\n}\r\n\r\nexport { lazy, detectIsLazy };\r\n","import { useState } from '../use-state';\r\nimport { useEffect } from '../use-effect';\r\nimport { TaskPriority } from '../constants';\r\n\r\ntype UseDeferredValueOprions = {\r\n timeoutMs: number;\r\n};\r\n\r\nfunction useDeferredValue(value: T, options?: UseDeferredValueOprions): T {\r\n const { timeoutMs } = options || {};\r\n const [deferredValue, setDeferredValue] = useState(value, {\r\n priority: TaskPriority.LOW,\r\n timeoutMs,\r\n });\r\n\r\n useEffect(() => {\r\n setDeferredValue(value);\r\n }, [value]);\r\n\r\n return deferredValue;\r\n}\r\n\r\nexport { useDeferredValue };\r\n","import { componentFiberHelper } from '../scope';\r\nimport { useEffect } from '../use-effect';\r\nimport { useUpdate } from '../use-update';\r\nimport { useMemo } from '../use-memo';\r\n\r\ntype ErrorScope = {\r\n error: Error;\r\n};\r\n\r\nfunction useError(): Error | null {\r\n const fiber = componentFiberHelper.get();\r\n const update = useUpdate();\r\n const scope: ErrorScope = useMemo(() => ({ error: null }), []);\r\n\r\n fiber.catchException = (error: Error) => {\r\n scope.error = error;\r\n update();\r\n };\r\n\r\n useEffect(() => {\r\n scope.error = null;\r\n }, [scope.error]);\r\n\r\n return scope.error;\r\n}\r\n\r\nexport { useError };\r\n","import { useMemo } from '../use-memo';\r\nimport { useCallback } from '../use-callback';\r\n\r\nfunction useEvent any>(fn: T) {\r\n const scope = useMemo(() => ({ fn }), []);\r\n\r\n scope.fn = fn;\r\n\r\n const callback = useCallback((...args) => {\r\n return scope.fn(...args);\r\n }, []);\r\n\r\n return callback as unknown as T;\r\n}\r\n\r\nexport { useEvent };\r\n","import { useMemo } from '../use-memo';\r\nimport type { MutableRef } from '../ref';\r\n\r\nfunction useImperativeHandle(ref: MutableRef, createHandle: () => T, deps: Array) {\r\n const current = useMemo(() => createHandle(), deps);\r\n\r\n ref.current = current;\r\n}\r\n\r\nexport { useImperativeHandle };\r\n","import { useState } from '../use-state';\r\nimport { useCallback } from '../use-callback';\r\nimport { useMemo } from '../use-memo';\r\nimport { detectIsFunction } from '../helpers';\r\nimport type { Reducer, Dispatch, ReducerAction, ReducerState } from './types';\r\n\r\nfunction useReducer(\r\n reducer: R,\r\n initialState: ReducerState,\r\n initializer?: (state: ReducerState) => ReducerState,\r\n): [ReducerState, Dispatch>] {\r\n const initialValue = useMemo(() => {\r\n return detectIsFunction(initializer) ? initializer(initialState) : initialState;\r\n }, []);\r\n const [state, setState] = useState>(initialValue);\r\n const dispatch = useCallback((action: ReducerAction) => setState(state => reducer(state, action)), []) as Dispatch<\r\n ReducerAction\r\n >;\r\n\r\n return [state, dispatch];\r\n}\r\n\r\nexport { useReducer };\r\n","import { useMemo } from '../use-memo';\r\nimport type { MutableRef } from '../ref';\r\n\r\nfunction useRef(initialValue: T = null): MutableRef {\r\n const ref = useMemo(() => ({ current: initialValue }), []) as MutableRef;\r\n\r\n return ref;\r\n}\r\n\r\nexport { useRef };\r\n"],"names":["root","factory","exports","module","define","amd","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","TaskPriority","ROOT","EMPTY_NODE","ATTR_KEY","ATTR_REF","PARTIAL_UPDATE","detectIsFunction","detectIsUndefined","detectIsNumber","detectIsString","detectIsObject","detectIsBoolean","detectIsArray","Array","isArray","detectIsNull","detectIsEmpty","error","str","console","flatten","source","list","levelMap","idx","level","item","length","push","getTime","Date","now","keyBy","fn","reduce","acc","x","takeListFromEnd","count","slice","dummyFn","detectIsDepsDifferent","deps","prevDeps","i","defaultOptions","displayName","defaultProps","token","options","children","this","type","props","ref","shouldUpdate","createComponent","createElement","computedOptions","computedProps","ComponentFactory","NodeType","detectIsComponentFactory","getComponentFactoryKey","wipRoot","currentRoot","nextUnitOfWork","fromHookUpdate","events","Map","unsubscribers","deletions","fiberMount","navigation","isDeepWalking","componentFiber","effects","layoutEffects","rootId","stores","effectStoreHelper","set","id","effectStore","remove","delete","getRootId","Store","storeHelper","wipRootHelper","fiber","currentRootHelper","nextUnitOfWorkHelper","componentFiberHelper","fromHookUpdateHelper","eventsHelper","addUnsubscriber","mapUnsubscribers","forEach","deletionsHelper","fiberMountHelper","reset","getIndex","jumpToChild","nextLevel","jumpToParent","jumpToSibling","deepWalking","effectsHelper","add","effect","layoutEffectsHelper","createEffectFunctions","useEffect","hasEffects","cleanupEffects","store","hook","values","runEffect","undefined","cleanup","some","$$virtualNode","TAG","name","isVoid","attrs","VirtualNode","text","TEXT","COMMENT","detectIsVirtualNode","vNode","detectIsTagVirtualNode","TagVirtualNode","detectIsCommentVirtualNode","CommentVirtualNode","detectIsTextVirtualNode","TextVirtualNode","detectIsEmptyVirtualNode","getVirtualNodeKey","Text","Comment","View","def","as","slot","rest","createEmptyVirtualNode","detectIsVirtualNodeFactory","$$fragment","Fragment","detectIsFragment","forwardRef","component","detectIsRef","mutableRef","$$memo","defaultShouldUpdate","nextProps","keys","detectIsMemo","memo","Memo","processValue","getValue","isDepsDifferent","check","wrap","useMemo","hookValue","computedGetValue","EffectTag","platform","scheduleCallback","Error","shouldYeildToHost","createNativeElement","applyCommits","detectIsPortal","unmountPortal","cloneTagMap","PLACEMENT","SKIP","useLayoutEffect","hasLayoutEffects","cleanupLayoutEffects","walkFiber","onLoop","nextFiber","isReturn","isStopped","visitedMap","detectCanVisit","resetIsDeepWalking","stop","child","newFiber","nextSibling","parent","unmountFiber","effectHost","layoutEffectHost","transposition","instance","portalHost","unmountRoot","onComplete","nativeElement","alternate","effectTag","shadow","provider","mountedToHost","childrenCount","marker","isUsed","markPortalHost","markEffectHost","markLayoutEffectHost","setError","catchException","workLoop","wipFiber","shouldYield","hasMoreWork","Boolean","performUnitOfWork","fromHook","hasPortals","layoutEffect","setTimeout","commitChanges","hasChildrenProp","performChild","performedFiber","performSibling","performPartialUpdateEffects","DELETION","getChildAlternate","getHook","Fiber","pertformInstance","mutateAlternate","mutateFiber","performMemo","performedNextFiber","performedShadow","performedInstance","childrenIdx","getNextSiblingAlternate","isDifferentKeys","getElementKey","isUpdate","getInstanceType","UPDATE","alternateType","isSameType","isSameKeys","isRemovingCase","isInsertingCase","nextKeys","nextKey","extractKeys","diffKeys","getDiffKeys","fibersMap","map","createFibersByKeyMap","diffCount","fibers","getSiblingFibers","performRemovingNodes","diffKeyMap","fibersByPositionsMap","position","createFibersByPositionMap","usedKeyMap","keyIdx","insertionFiber","performInsertingNodes","memoFiber","alternateFactory","elements","splice","getAlternateByKey","getRootShadow","mountInstance","isComponentFactory","result","err","transformElementInstance","nextKeysMap","diff","element","createHook","createUpdateCallback","forceStart","onStart","useUpdate","scope","callback","timeoutMs","useContext","context","defaultValue","getProvider","update","prevValue","hasProvider","subscriber","newValue","is","subscribers","findIndex","createContext","Provider","Consumer","mutateContext","createProvider","createConsumer","getChildren","toString","tag","useCallback","useState","initialValue","setState","sourceValue","priority","LOW","SuspenseContext","fallback","isLoaded","trigger","Suspense","isSuspenseLoaded","setIsLoaded","$$lazy","lazy","dynamic","setScope","Promise","resolve","then","default","fetchModule","detectIsLazy","useDeferredValue","deferredValue","setDeferredValue","useError","useEvent","args","useImperativeHandle","createHandle","current","useReducer","reducer","initialState","initializer","state","dispatch","action","useRef"],"sourceRoot":""} \ No newline at end of file diff --git a/packages/platform-browser/package.json b/packages/platform-browser/package.json index 615a0632..88b9b1ef 100644 --- a/packages/platform-browser/package.json +++ b/packages/platform-browser/package.json @@ -1,6 +1,6 @@ { "name": "@dark-engine/platform-browser", - "version": "0.7.1", + "version": "0.7.3", "description": "Dark is lightweight (10 Kb gzipped) component-and-hook-based UI rendering engine for javascript apps without dependencies and written in Typescript 💫", "author": "AlexPlex", "license": "MIT",