diff --git a/packages/core/package.json b/packages/core/package.json index 24e39191..0e14288f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@dark-engine/core", - "version": "0.6.0", + "version": "0.7.0", "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 792c5192..0ba0bd32 100644 --- a/packages/core/umd/dark-core.development.js +++ b/packages/core/umd/dark-core.development.js @@ -384,6 +384,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./model */ "./src/fiber/model.ts"); /* harmony import */ var _use_effect__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../use-effect */ "./src/use-effect/index.ts"); /* harmony import */ var _use_layout_effect__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../use-layout-effect */ "./src/use-layout-effect/index.ts"); +/* harmony import */ var _walk__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../walk */ "./src/walk/index.ts"); +/* harmony import */ var _unmount__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../unmount */ "./src/unmount/index.ts"); var __assign = (undefined && undefined.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { @@ -441,6 +443,8 @@ var __values = (undefined && undefined.__values) || function(o) { + + var Fiber = /** @class */ (function () { function Fiber(options) { this.nativeElement = options.nativeElement || null; @@ -662,15 +666,6 @@ function performSibling(options) { performedInstance: instance, }; } -function getHook(options) { - var shadow = options.shadow, alternate = options.alternate, instance = options.instance; - if (shadow) - return shadow.hook; - if (alternate && getElementKey(alternate.instance) === getElementKey(instance)) { - return alternate.hook; - } - return createHook(); -} function mutateFiber(options) { var fiber = options.fiber, alternate = options.alternate, instance = options.instance; var key = alternate ? getElementKey(alternate.instance) : null; @@ -1086,27 +1081,10 @@ function commitChanges() { var hasLayoutEffects = Boolean((_c = wipFiber.alternate) === null || _c === void 0 ? void 0 : _c.layoutEffectHost); var hasPortals = Boolean((_d = wipFiber.alternate) === null || _d === void 0 ? void 0 : _d.portalHost); if (hasEffects || hasLayoutEffects || hasPortals) { - var _loop_1 = function (fiber) { - fiber.portalHost && _global__WEBPACK_IMPORTED_MODULE_1__.platform.unmountPortal(fiber); - if (fiber.effectHost || fiber.layoutEffectHost) { - walkFiber({ - fiber: fiber, - onLoop: function (_a) { - var nextFiber = _a.nextFiber, isReturn = _a.isReturn, stop = _a.stop; - if (nextFiber === fiber.nextSibling || fiber.transposition) - return stop(); - if (!isReturn && (0,_component__WEBPACK_IMPORTED_MODULE_3__.detectIsComponentFactory)(nextFiber.instance)) { - (0,_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__.cleanupLayoutEffects)(nextFiber.hook); - (0,_use_effect__WEBPACK_IMPORTED_MODULE_8__.cleanupEffects)(nextFiber.hook); - } - }, - }); - } - }; try { for (var deletions_1 = __values(deletions), deletions_1_1 = deletions_1.next(); !deletions_1_1.done; deletions_1_1 = deletions_1.next()) { var fiber = deletions_1_1.value; - _loop_1(fiber); + (0,_unmount__WEBPACK_IMPORTED_MODULE_11__.unmountFiber)(fiber); } } catch (e_5_1) { e_5 = { error: e_5_1 }; } @@ -1176,7 +1154,7 @@ function commitChanges() { }); } function commitWork(fiber, onComplete) { - walkFiber({ + (0,_walk__WEBPACK_IMPORTED_MODULE_10__.walkFiber)({ fiber: fiber, onLoop: function (_a) { var nextFiber = _a.nextFiber, isReturn = _a.isReturn, resetIsDeepWalking = _a.resetIsDeepWalking; @@ -1194,63 +1172,21 @@ function commitWork(fiber, onComplete) { }); onComplete(); } -function walkFiber(options) { - var fiber = options.fiber, onLoop = options.onLoop; - var nextFiber = fiber; - var isDeepWalking = true; - var isReturn = false; - var isStopped = false; - var visitedMap = new Map(); - var detectCanVisit = function (fiber) { return !visitedMap.get(fiber); }; - while (nextFiber) { - onLoop({ - nextFiber: nextFiber, - isReturn: isReturn, - resetIsDeepWalking: function () { return (isDeepWalking = false); }, - stop: function () { return (isStopped = true); }, - }); - if (isStopped) { - break; - } - if (nextFiber.child && isDeepWalking && detectCanVisit(nextFiber.child)) { - var newFiber = nextFiber.child; - isReturn = false; - nextFiber = newFiber; - visitedMap.set(newFiber, true); - } - else if (nextFiber.nextSibling && detectCanVisit(nextFiber.nextSibling)) { - var newFiber = nextFiber.nextSibling; - isDeepWalking = true; - isReturn = false; - nextFiber = newFiber; - visitedMap.set(newFiber, true); - } - else if (nextFiber.parent && - nextFiber.parent === fiber && - nextFiber.parent.nextSibling && - detectCanVisit(nextFiber.parent.nextSibling)) { - var newFiber = nextFiber.parent.nextSibling; - isDeepWalking = true; - isReturn = false; - nextFiber = newFiber; - visitedMap.set(newFiber, true); - } - else if (nextFiber.parent && nextFiber.parent !== fiber) { - isDeepWalking = false; - isReturn = true; - nextFiber = nextFiber.parent; - } - else { - nextFiber = null; - } - } -} function createHook() { return { idx: 0, values: [], }; } +function getHook(options) { + var shadow = options.shadow, alternate = options.alternate, instance = options.instance; + if (shadow) + return shadow.hook; + if (alternate && getElementKey(alternate.instance) === getElementKey(instance)) { + return alternate.hook; + } + return createHook(); +} function createUpdateCallback(options) { var rootId = options.rootId, fiber = options.fiber, _a = options.forceStart, forceStart = _a === void 0 ? false : _a, onStart = options.onStart; var callback = function () { @@ -1813,6 +1749,7 @@ var Store = /** @class */ (function () { this.nextUnitOfWork = null; this.fromHookUpdate = false; this.events = new Map(); + this.unsubscribers = []; this.deletions = []; this.fiberMount = { level: 0, @@ -1829,6 +1766,7 @@ var rootId = null; var stores = new Map(); var effectStoreHelper = { set: function (id) { return effectStore(id); }, + remove: function (id) { return stores.delete(id); }, }; var getRootId = function () { return rootId; }; var effectStore = function (id) { @@ -1846,7 +1784,7 @@ var wipRootHelper = { set: function (fiber) { return (storeHelper.get().wipRoot = fiber); }, }; var currentRootHelper = { - get: function () { var _a; return ((_a = storeHelper.get()) === null || _a === void 0 ? void 0 : _a.currentRoot) || null; }, + get: function (id) { var _a; return ((_a = storeHelper.get(id)) === null || _a === void 0 ? void 0 : _a.currentRoot) || null; }, set: function (fiber) { return (storeHelper.get().currentRoot = fiber); }, }; var nextUnitOfWorkHelper = { @@ -1863,6 +1801,8 @@ var fromHookUpdateHelper = { }; var eventsHelper = { get: function () { return storeHelper.get().events; }, + addUnsubscriber: function (fn) { return storeHelper.get().unsubscribers.push(fn); }, + mapUnsubscribers: function (id) { return storeHelper.get(id).unsubscribers.forEach(function (fn) { return fn(); }); }, }; var deletionsHelper = { get: function () { return storeHelper.get().deletions; }, @@ -2020,6 +1960,78 @@ var Suspense = (0,_component__WEBPACK_IMPORTED_MODULE_0__.createComponent)(funct +/***/ }), + +/***/ "./src/unmount/index.ts": +/*!******************************!*\ + !*** ./src/unmount/index.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "unmountFiber": () => (/* reexport safe */ _unmount__WEBPACK_IMPORTED_MODULE_0__.unmountFiber), +/* harmony export */ "unmountRoot": () => (/* reexport safe */ _unmount__WEBPACK_IMPORTED_MODULE_0__.unmountRoot) +/* harmony export */ }); +/* harmony import */ var _unmount__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./unmount */ "./src/unmount/unmount.ts"); + + + +/***/ }), + +/***/ "./src/unmount/unmount.ts": +/*!********************************!*\ + !*** ./src/unmount/unmount.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "unmountFiber": () => (/* binding */ unmountFiber), +/* harmony export */ "unmountRoot": () => (/* binding */ unmountRoot) +/* harmony export */ }); +/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../global */ "./src/global/index.ts"); +/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../component */ "./src/component/index.ts"); +/* harmony import */ var _use_effect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../use-effect */ "./src/use-effect/index.ts"); +/* harmony import */ var _use_layout_effect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../use-layout-effect */ "./src/use-layout-effect/index.ts"); +/* harmony import */ var _walk__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../walk */ "./src/walk/index.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../helpers */ "./src/helpers/index.ts"); +/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../scope */ "./src/scope/index.ts"); + + + + + + + +function unmountFiber(fiber) { + if (fiber.effectHost || fiber.layoutEffectHost) { + (0,_walk__WEBPACK_IMPORTED_MODULE_4__.walkFiber)({ + fiber: fiber, + onLoop: function (_a) { + var nextFiber = _a.nextFiber, isReturn = _a.isReturn, stop = _a.stop; + if (nextFiber === fiber.nextSibling || fiber.transposition) + return stop(); + if (!isReturn && (0,_component__WEBPACK_IMPORTED_MODULE_1__.detectIsComponentFactory)(nextFiber.instance)) { + (0,_use_layout_effect__WEBPACK_IMPORTED_MODULE_3__.cleanupLayoutEffects)(nextFiber.hook); + (0,_use_effect__WEBPACK_IMPORTED_MODULE_2__.cleanupEffects)(nextFiber.hook); + } + }, + }); + } + fiber.portalHost && _global__WEBPACK_IMPORTED_MODULE_0__.platform.unmountPortal(fiber); +} +function unmountRoot(rootId, onComplete) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_5__.detectIsUndefined)(rootId)) + return; + unmountFiber(_scope__WEBPACK_IMPORTED_MODULE_6__.currentRootHelper.get(rootId)); + _scope__WEBPACK_IMPORTED_MODULE_6__.eventsHelper.mapUnsubscribers(rootId); + _scope__WEBPACK_IMPORTED_MODULE_6__.effectStoreHelper.remove(rootId); + onComplete(); +} + + + /***/ }), /***/ "./src/use-callback/index.ts": @@ -3040,6 +3052,88 @@ var detectIsVirtualNodeFactory = function (factory) { +/***/ }), + +/***/ "./src/walk/index.ts": +/*!***************************!*\ + !*** ./src/walk/index.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "walkFiber": () => (/* reexport safe */ _walk__WEBPACK_IMPORTED_MODULE_0__.walkFiber) +/* harmony export */ }); +/* harmony import */ var _walk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./walk */ "./src/walk/walk.ts"); + + + +/***/ }), + +/***/ "./src/walk/walk.ts": +/*!**************************!*\ + !*** ./src/walk/walk.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "walkFiber": () => (/* binding */ walkFiber) +/* harmony export */ }); +function walkFiber(options) { + var fiber = options.fiber, onLoop = options.onLoop; + var nextFiber = fiber; + var isDeepWalking = true; + var isReturn = false; + var isStopped = false; + var visitedMap = new Map(); + var detectCanVisit = function (fiber) { return !visitedMap.get(fiber); }; + while (nextFiber) { + onLoop({ + nextFiber: nextFiber, + isReturn: isReturn, + resetIsDeepWalking: function () { return (isDeepWalking = false); }, + stop: function () { return (isStopped = true); }, + }); + if (isStopped) { + break; + } + if (nextFiber.child && isDeepWalking && detectCanVisit(nextFiber.child)) { + var newFiber = nextFiber.child; + isReturn = false; + nextFiber = newFiber; + visitedMap.set(newFiber, true); + } + else if (nextFiber.nextSibling && detectCanVisit(nextFiber.nextSibling)) { + var newFiber = nextFiber.nextSibling; + isDeepWalking = true; + isReturn = false; + nextFiber = newFiber; + visitedMap.set(newFiber, true); + } + else if (nextFiber.parent && + nextFiber.parent === fiber && + nextFiber.parent.nextSibling && + detectCanVisit(nextFiber.parent.nextSibling)) { + var newFiber = nextFiber.parent.nextSibling; + isDeepWalking = true; + isReturn = false; + nextFiber = newFiber; + visitedMap.set(newFiber, true); + } + else if (nextFiber.parent && nextFiber.parent !== fiber) { + isDeepWalking = false; + isReturn = true; + nextFiber = nextFiber.parent; + } + else { + nextFiber = null; + } + } +} + + + /***/ }) /******/ }); @@ -3179,6 +3273,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "nextUnitOfWorkHelper": () => (/* reexport safe */ _scope__WEBPACK_IMPORTED_MODULE_10__.nextUnitOfWorkHelper), /* harmony export */ "platform": () => (/* reexport safe */ _global__WEBPACK_IMPORTED_MODULE_5__.platform), /* harmony export */ "takeListFromEnd": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_6__.takeListFromEnd), +/* harmony export */ "unmountRoot": () => (/* reexport safe */ _unmount__WEBPACK_IMPORTED_MODULE_29__.unmountRoot), /* harmony export */ "useCallback": () => (/* reexport safe */ _use_callback__WEBPACK_IMPORTED_MODULE_13__.useCallback), /* harmony export */ "useContext": () => (/* reexport safe */ _use_context__WEBPACK_IMPORTED_MODULE_14__.useContext), /* harmony export */ "useDeferredValue": () => (/* reexport safe */ _use_deferred_value__WEBPACK_IMPORTED_MODULE_15__.useDeferredValue), @@ -3192,6 +3287,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "useRef": () => (/* reexport safe */ _use_ref__WEBPACK_IMPORTED_MODULE_23__.useRef), /* harmony export */ "useState": () => (/* reexport safe */ _use_state__WEBPACK_IMPORTED_MODULE_24__.useState), /* harmony export */ "useUpdate": () => (/* reexport safe */ _use_update__WEBPACK_IMPORTED_MODULE_25__.useUpdate), +/* harmony export */ "walkFiber": () => (/* reexport safe */ _walk__WEBPACK_IMPORTED_MODULE_28__.walkFiber), /* harmony export */ "wipRootHelper": () => (/* reexport safe */ _scope__WEBPACK_IMPORTED_MODULE_10__.wipRootHelper), /* harmony export */ "workLoop": () => (/* reexport safe */ _fiber__WEBPACK_IMPORTED_MODULE_3__.workLoop) /* harmony export */ }); @@ -3223,6 +3319,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _use_update__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./use-update */ "./src/use-update/index.ts"); /* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./view */ "./src/view/index.ts"); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./constants */ "./src/constants.ts"); +/* harmony import */ var _walk__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./walk */ "./src/walk/index.ts"); +/* harmony import */ var _unmount__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./unmount */ "./src/unmount/index.ts"); + + diff --git a/packages/core/umd/dark-core.development.js.map b/packages/core/umd/dark-core.development.js.map index 6f0fae4a..fb75bbf2 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/model.ts","webpack://DarkCore/./src/constants.ts","webpack://DarkCore/./src/context/context.ts","webpack://DarkCore/./src/context/index.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/model.ts","webpack://DarkCore/./src/fragment/fragment.ts","webpack://DarkCore/./src/fragment/index.ts","webpack://DarkCore/./src/global/global.ts","webpack://DarkCore/./src/global/index.ts","webpack://DarkCore/./src/global/model.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/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/model.ts","webpack://DarkCore/./src/suspense/index.ts","webpack://DarkCore/./src/suspense/suspense.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/model.ts","webpack://DarkCore/./src/view/view.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/model';\r\nimport type { MutableRef } from '../ref';\r\nimport type { CreateElement, ComponentOptions, StandardComponentProps, SlotProps } from './model';\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 './model';\r\n","import { ComponentFactory } from './component';\r\nimport { DarkElementKey, DarkElement } from '../shared/model';\r\nimport { MutableRef } from '../ref/model';\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 './model';\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\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 '../global';\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/model';\r\nimport type { DarkElementKey, DarkElement, DarkElementInstance } from '../shared/model';\r\nimport { PARTIAL_UPDATE } from '../constants';\r\nimport { type NativeElement, type Hook, EffectTag, cloneTagMap } from './model';\r\nimport { hasEffects, cleanupEffects } from '../use-effect';\r\nimport { hasLayoutEffects, cleanupLayoutEffects } from '../use-layout-effect';\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 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 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 childAlternate = fibersMap[key] || null;\r\n\r\n if (childAlternate) {\r\n childAlternate.effectTag = EffectTag.DELETION;\r\n deletionsHelper.get().push(childAlternate);\r\n\r\n if (childAlternate.effectHost) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (childAlternate.layoutEffectHost) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (childAlternate.portalHost) {\r\n fiber.markPortalHost();\r\n }\r\n }\r\n }\r\n } else if (!hasKeys) {\r\n const diffCount = prevElementsCount - nextElementsCount;\r\n const childAlternates: Array = takeListFromEnd(getSiblingFibers(alternate.child), diffCount);\r\n\r\n for (const childAlternate of childAlternates) {\r\n childAlternate.effectTag = EffectTag.DELETION;\r\n\r\n if (childAlternate.effectHost) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (childAlternate.layoutEffectHost) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (childAlternate.portalHost) {\r\n fiber.markPortalHost();\r\n }\r\n }\r\n\r\n deletionsHelper.get().push(...childAlternates);\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 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 fiber.portalHost && platform.unmountPortal(fiber);\r\n\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 }\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\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\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\nfunction createHook(): Hook {\r\n return {\r\n idx: 0,\r\n values: [],\r\n };\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 './model';\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 { Platform } from './model';\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 * from './global';\r\nexport * from './model';\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","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 './ref';\r\nexport type { MutableRef } from './model';\r\n","import { detectIsObject, detectIsNull } from '../helpers';\r\nimport type { Component, RefProps, ComponentFactory } from '../component';\r\nimport type { MutableRef } from './model';\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 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};\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: () => storeHelper.get()?.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};\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 './model';\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 './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/model';\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 './model';\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 './model';\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 './model';\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/model';\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 '../global';\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 '../global';\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 './model';\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/model';\r\nimport type { ComponentFactory, StandardComponentProps } from '../component';\r\nimport { NodeType, type ViewDef } from './model';\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","// 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 './global';\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\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/model.ts","webpack://DarkCore/./src/constants.ts","webpack://DarkCore/./src/context/context.ts","webpack://DarkCore/./src/context/index.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/model.ts","webpack://DarkCore/./src/fragment/fragment.ts","webpack://DarkCore/./src/fragment/index.ts","webpack://DarkCore/./src/global/global.ts","webpack://DarkCore/./src/global/index.ts","webpack://DarkCore/./src/global/model.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/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/model.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/model.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/model';\r\nimport type { MutableRef } from '../ref';\r\nimport type { CreateElement, ComponentOptions, StandardComponentProps, SlotProps } from './model';\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 './model';\r\n","import { ComponentFactory } from './component';\r\nimport { DarkElementKey, DarkElement } from '../shared/model';\r\nimport { MutableRef } from '../ref/model';\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 './model';\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\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 '../global';\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/model';\r\nimport type { DarkElementKey, DarkElement, DarkElementInstance } from '../shared/model';\r\nimport { PARTIAL_UPDATE } from '../constants';\r\nimport { type NativeElement, type Hook, EffectTag, cloneTagMap } from './model';\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 childAlternate = fibersMap[key] || null;\r\n\r\n if (childAlternate) {\r\n childAlternate.effectTag = EffectTag.DELETION;\r\n deletionsHelper.get().push(childAlternate);\r\n\r\n if (childAlternate.effectHost) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (childAlternate.layoutEffectHost) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (childAlternate.portalHost) {\r\n fiber.markPortalHost();\r\n }\r\n }\r\n }\r\n } else if (!hasKeys) {\r\n const diffCount = prevElementsCount - nextElementsCount;\r\n const childAlternates: Array = takeListFromEnd(getSiblingFibers(alternate.child), diffCount);\r\n\r\n for (const childAlternate of childAlternates) {\r\n childAlternate.effectTag = EffectTag.DELETION;\r\n\r\n if (childAlternate.effectHost) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (childAlternate.layoutEffectHost) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (childAlternate.portalHost) {\r\n fiber.markPortalHost();\r\n }\r\n }\r\n\r\n deletionsHelper.get().push(...childAlternates);\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 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 './model';\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 { Platform } from './model';\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 * from './global';\r\nexport * from './model';\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","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 './ref';\r\nexport type { MutableRef } from './model';\r\n","import { detectIsObject, detectIsNull } from '../helpers';\r\nimport type { Component, RefProps, ComponentFactory } from '../component';\r\nimport type { MutableRef } from './model';\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 './model';\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 '../global';\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/model';\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 './model';\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 './model';\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 './model';\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/model';\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 '../global';\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 '../global';\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 './model';\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/model';\r\nimport type { ComponentFactory, StandardComponentProps } from '../component';\r\nimport { NodeType, type ViewDef } from './model';\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 './global';\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 f5820500..3ccbb7ab 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:()=>_e,Fragment:()=>ge,NodeType:()=>I,PARTIAL_UPDATE:()=>l,ROOT:()=>r,Suspense:()=>mt,SuspenseContext:()=>bt,TagVirtualNode:()=>oe,TaskPriority:()=>n,Text:()=>pe,TextVirtualNode:()=>ie,View:()=>he,VirtualNode:()=>re,cloneTagMap:()=>Le,componentFiberHelper:()=>W,createComponent:()=>H,createContext:()=>ct,createEmptyVirtualNode:()=>ye,createHook:()=>at,createUpdateCallback:()=>lt,currentRootHelper:()=>V,deletionsHelper:()=>K,detectIsArray:()=>v,detectIsBoolean:()=>p,detectIsCommentVirtualNode:()=>fe,detectIsComponentFactory:()=>P,detectIsDepsDifferent:()=>S,detectIsEmpty:()=>y,detectIsEmptyVirtualNode:()=>se,detectIsFragment:()=>xe,detectIsFunction:()=>u,detectIsLazy:()=>Et,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:()=>M,effectsHelper:()=>Y,error:()=>b,eventsHelper:()=>B,fiberMountHelper:()=>G,flatten:()=>m,forwardRef:()=>Ee,fromHookUpdateHelper:()=>_,getComponentFactoryKey:()=>N,getRootId:()=>F,getTime:()=>g,getVirtualNodeKey:()=>de,h:()=>vt,hasChildrenProp:()=>ot,keyBy:()=>x,layoutEffectsHelper:()=>z,lazy:()=>xt,memo:()=>Oe,nextUnitOfWorkHelper:()=>R,platform:()=>Ce,takeListFromEnd:()=>E,useCallback:()=>ht,useContext:()=>ft,useDeferredValue:()=>wt,useEffect:()=>$,useError:()=>St,useEvent:()=>Ot,useImperativeHandle:()=>Ht,useLayoutEffect:()=>Fe,useMemo:()=>Pe,useReducer:()=>It,useRef:()=>Pt,useState:()=>yt,useUpdate:()=>ut,wipRootHelper:()=>U,workLoop:()=>Be});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 Le=((Ne={})[je.PLACEMENT]=!0,Ne[je.SKIP]=!0,Ne),Me=Q(Symbol("use-layout-effect"),z),Fe=Me.useEffect,Ae=Me.hasEffects,De=Me.cleanupEffects,Ue=function(){return Ue=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},Re=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.")},_e=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 Be(){for(var e=U.get(),t=R.get(),n=!1,r=Boolean(t);t&&!n;)t=Ke(t),R.set(t),r=Boolean(t),n=Ce.shouldYeildToHost();return!t&&e&&function(){var e,t,n,r,o,i=U.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){var s=function(e){e.portalHost&&Ce.unmountPortal(e),(e.effectHost||e.layoutEffectHost)&&it({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)&&(De(n.hook),J(n.hook))}})};try{for(var d=We(l),p=d.next();!p.done;p=d.next())s(p.value)}catch(t){e={error:t}}finally{try{p&&!p.done&&(t=d.return)&&t.call(d)}finally{if(e)throw e.error}}}it({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=We(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([]),U.set(null);try{for(var d=We(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=We(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 Ke(e){for(var t=!0,n=e,r=e.shadow,o=e.instance;;){if(t=G.deepWalking.get(),n.hook.idx=0,t)if(ot(o)&&o.children.length>0){var i=Ye({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=ze({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=ze({nextFiber:n,shadow:r,instance:o});if(a=u.performedFiber,n=u.performedNextFiber,r=u.performedShadow,o=u.performedInstance,a)return a}if(Ge(n),null===n.parent)return null}}function Ge(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,Re([],Ve(a),!1))}}}function Ye(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=Xe({shadow:n,alternate:o,instance:r}),a=n?n.provider:o?o.provider:null,l=new _e({hook:i,provider:a});W.set(l),l.parent=t;var u=Qe({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}),$e({fiber:l,alternate:o,instance:r}),l=o?Je({fiber:l,alternate:o,instance:r}):l,t.child=l,l.parent=t,l.shadow=n,t=l,Le[l.parent.effectTag]&&(l.effectTag=l.parent.effectTag),{performedFiber:t,performedNextFiber:t,performedShadow:n,performedInstance:r}}function ze(e){G.jumpToSibling();var t=e.nextFiber,n=e.shadow,r=e.instance,o=t.parent.instance,i=G.getIndex();if(ot(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=Xe({shadow:n,alternate:a,instance:r}),u=n?n.provider:a?a.provider:null,f=new _e({hook:l,provider:u});W.set(f),f.parent=t.parent;var c=Qe({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}),$e({fiber:f,alternate:a,instance:r}),(f=a?Je({fiber:f,alternate:a,instance:r}):f).parent=t.parent,t.nextSibling=f,f.shadow=n,t=f,Le[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,ot(t.instance)&&(t.instance.children=[]),{performedFiber:null,performedNextFiber:t,performedShadow:n,performedInstance:r}}function Xe(e){var t=e.shadow,n=e.alternate,r=e.instance;return t?t.hook:n&&et(n.instance)===et(r)?n.hook:{idx:0,values:[]}}function $e(e){var t=e.fiber,n=e.alternate,r=e.instance,o=(n?et(n.instance):null)!==(n?et(r):null),i=Boolean(n)&&rt(n.instance)===rt(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,ot(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.fiber,n=e.alternate,r=e.instance,o=rt(n.instance),i=rt(r)===o,a=et(n.instance)===et(r);if(n.isUsed=!0,i&&a){if(ot(n.instance)&&ot(r)){var l=n.childrenCount,u=r.children.length;if(l!==u){var f=ul,s=ot(r)?r.children:[],d=function(e,t){for(var n=e,r=0,o=[],i=[];n||r0;h||v.length,f&&function(){var e,r,o,i,a,f=tt(p,v);if(f.length>0){var c=function(e){for(var t=e,n={};t;){var r=et(t.instance);y(r)||(n[r]=t),t=t.nextSibling}return n}(n.child);try{for(var s=We(f),d=s.next();!d.done;d=s.next())(w=c[d.value]||null)&&(w.effectTag=je.DELETION,K.get().push(w),w.effectHost&&t.markEffectHost(),w.layoutEffectHost&&t.markLayoutEffectHost(),w.portalHost&&t.markPortalHost())}catch(t){e={error:t}}finally{try{d&&!d.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}}else if(!h){var b=l-u,m=E(function(e){for(var t=[],n=e;n;)t.push(n),n=n.nextSibling;return t}(n.child),b);try{for(var g=We(m),x=g.next();!x.done;x=g.next()){var w;(w=x.value).effectTag=je.DELETION,w.effectHost&&t.markEffectHost(),w.layoutEffectHost&&t.markLayoutEffectHost(),w.portalHost&&t.markPortalHost()}}catch(e){o={error:e}}finally{try{x&&!x.done&&(i=g.return)&&i.call(g)}finally{if(o)throw o.error}}(a=K.get()).push.apply(a,Re([],Ve(m),!1))}}(),c&&function(){var e,t,r=tt(v,p);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}(n.child),a={},l=0;try{for(var u=We(v),f=u.next();!f.done;f=u.next()){var c=f.value;if(a[c]=!0,c!==p[l]&&o[c]){var s=new _e({instance:ye(),parent:n,effectTag:je.PLACEMENT});if(0===l)s.nextSibling=n.child,n.child=s;else{var d=i[l]||null;d&&(s.nextSibling=d)}}l++}}catch(t){e={error:t}}finally{try{f&&!f.done&&(t=u.return)&&t.call(u)}finally{if(e)throw e.error}}}}()}}}else n.effectTag=je.DELETION,K.get().push(n)}function Je(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 _e(Ue(Ue({},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}}return t}function Qe(e){var t,n=e.instance,r=e.idx,o=e.fiber,i=e.alternate,a=null,l=null;if(ot(n)){var u=v(n.children[r])?m([n.children[r]]):[n.children[r]];(t=n.children).splice.apply(t,Re([r,1],Ve(u),!1)),a=n.children[r],l=i?function(e){var t=e.instance,n=e.fiber,r=e.alternate,o=et(r.instance),i=et(t),a=null;return o!==i&&(a=function(e,t){if(y(e))return null;for(var n=t;n;){if(e===et(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=Ze(o,a)}return P(a)&&(q(o)&&o.markEffectHost(),Ae(o)&&o.markLayoutEffectHost(),Ce.detectIsPortal(a)&&o.markPortalHost()),{performedInstance:a,performedShadow:l}}function Ze(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(ot(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=ft(e);return u(n)?n(r):null}),{displayName:"".concat(t,".Consumer")})}(e,n)}var dt=function(){return dt=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 vt(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}(yt(!1),2),i=o[0],a=o[1],l=ht((function(){return a(!0)}),[]),u=Pe((function(){return{fallback:t,isLoaded:i,trigger:l}}),[t,i]);return bt.Provider({value:u,slot:r?n:null})})),gt=Symbol("lazy");function xt(e){return Ee(H((function(t,n){var r=ft(bt),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}(yt({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:gt}))}var Et=function(e){return P(e)&&e.token===gt};function wt(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}(yt(e,{priority:n.LOW,timeoutMs:r}),2),i=o[0],a=o[1];return $((function(){a(e)}),[e]),i}function St(){var e=W.get(),t=ut(),n=Pe((function(){return{error:null}}),[]);return e.catchException=function(e){n.error=e,t()},$((function(){n.error=null}),[n.error]),n.error}var kt=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},Tt=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}(yt(Pe((function(){return u(n)?n(t):t}),[])),2),o=r[0],i=r[1],a=ht((function(t){return i((function(n){return e(n,t)}))}),[]);return[o,a]}function Pt(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:()=>Le,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:()=>F,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 Le=((Ne={})[je.PLACEMENT]=!0,Ne[je.SKIP]=!0,Ne),Fe=Q(Symbol("use-layout-effect"),z),Me=Fe.useEffect,Ae=Fe.hasEffects,Ue=Fe.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),F.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,Le[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,Le[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.fiber,n=e.alternate,r=e.instance,o=it(n.instance),i=it(r)===o,a=nt(n.instance)===nt(r);if(n.isUsed=!0,i&&a){if(at(n.instance)&&at(r)){var l=n.childrenCount,u=r.children.length;if(l!==u){var f=ul,s=at(r)?r.children:[],d=function(e,t){for(var n=e,r=0,o=[],i=[];n||r0;h||v.length,f&&function(){var e,r,o,i,a,f=rt(p,v);if(f.length>0){var c=function(e){for(var t=e,n={};t;){var r=nt(t.instance);y(r)||(n[r]=t),t=t.nextSibling}return n}(n.child);try{for(var s=Ke(f),d=s.next();!d.done;d=s.next())(w=c[d.value]||null)&&(w.effectTag=je.DELETION,K.get().push(w),w.effectHost&&t.markEffectHost(),w.layoutEffectHost&&t.markLayoutEffectHost(),w.portalHost&&t.markPortalHost())}catch(t){e={error:t}}finally{try{d&&!d.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}}else if(!h){var b=l-u,m=E(function(e){for(var t=[],n=e;n;)t.push(n),n=n.nextSibling;return t}(n.child),b);try{for(var g=Ke(m),x=g.next();!x.done;x=g.next()){var w;(w=x.value).effectTag=je.DELETION,w.effectHost&&t.markEffectHost(),w.layoutEffectHost&&t.markLayoutEffectHost(),w.portalHost&&t.markPortalHost()}}catch(e){o={error:e}}finally{try{x&&!x.done&&(i=g.return)&&i.call(g)}finally{if(o)throw o.error}}(a=K.get()).push.apply(a,Be([],_e(m),!1))}}(),c&&function(){var e,t,r=rt(v,p);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}(n.child),a={},l=0;try{for(var u=Ke(v),f=u.next();!f.done;f=u.next()){var c=f.value;if(a[c]=!0,c!==p[l]&&o[c]){var s=new Ge({instance:ye(),parent:n,effectTag:je.PLACEMENT});if(0===l)s.nextSibling=n.child,n.child=s;else{var d=i[l]||null;d&&(s.nextSibling=d)}}l++}}catch(t){e={error:t}}finally{try{f&&!f.done&&(t=u.return)&&t.call(u)}finally{if(e)throw e.error}}}}()}}}else n.effectTag=je.DELETION,K.get().push(n)}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}}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 731dacb4..fa328e38 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/model.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/global/global.ts","webpack://DarkCore/./src/fiber/model.ts","webpack://DarkCore/./src/use-layout-effect/use-layout-effect.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/model';\r\nimport type { MutableRef } from '../ref';\r\nimport type { CreateElement, ComponentOptions, StandardComponentProps, SlotProps } from './model';\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 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};\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: () => storeHelper.get()?.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};\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 './model';\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/model';\r\nimport type { ComponentFactory, StandardComponentProps } from '../component';\r\nimport { NodeType, type ViewDef } from './model';\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 './model';\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 './model';\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 { flatten, detectIsEmpty, error, keyBy, takeListFromEnd, detectIsUndefined, detectIsArray } from '../helpers';\r\nimport { platform } from '../global';\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/model';\r\nimport type { DarkElementKey, DarkElement, DarkElementInstance } from '../shared/model';\r\nimport { PARTIAL_UPDATE } from '../constants';\r\nimport { type NativeElement, type Hook, EffectTag, cloneTagMap } from './model';\r\nimport { hasEffects, cleanupEffects } from '../use-effect';\r\nimport { hasLayoutEffects, cleanupLayoutEffects } from '../use-layout-effect';\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 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 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 childAlternate = fibersMap[key] || null;\r\n\r\n if (childAlternate) {\r\n childAlternate.effectTag = EffectTag.DELETION;\r\n deletionsHelper.get().push(childAlternate);\r\n\r\n if (childAlternate.effectHost) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (childAlternate.layoutEffectHost) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (childAlternate.portalHost) {\r\n fiber.markPortalHost();\r\n }\r\n }\r\n }\r\n } else if (!hasKeys) {\r\n const diffCount = prevElementsCount - nextElementsCount;\r\n const childAlternates: Array = takeListFromEnd(getSiblingFibers(alternate.child), diffCount);\r\n\r\n for (const childAlternate of childAlternates) {\r\n childAlternate.effectTag = EffectTag.DELETION;\r\n\r\n if (childAlternate.effectHost) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (childAlternate.layoutEffectHost) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (childAlternate.portalHost) {\r\n fiber.markPortalHost();\r\n }\r\n }\r\n\r\n deletionsHelper.get().push(...childAlternates);\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 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 fiber.portalHost && platform.unmountPortal(fiber);\r\n\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 }\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\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\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\nfunction createHook(): Hook {\r\n return {\r\n idx: 0,\r\n values: [],\r\n };\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 '../global';\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/model';\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 './model';\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 '../global';\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 './model';\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/model';\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","deletions","fiberMount","navigation","isDeepWalking","componentFiber","effects","layoutEffects","rootId","stores","effectStoreHelper","set","id","effectStore","getRootId","Store","storeHelper","wipRootHelper","fiber","currentRootHelper","nextUnitOfWorkHelper","componentFiberHelper","fromHookUpdateHelper","eventsHelper","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","nativeElement","parent","child","nextSibling","alternate","effectTag","instance","shadow","provider","transposition","mountedToHost","portalHost","effectHost","layoutEffectHost","childrenCount","marker","isUsed","markPortalHost","markEffectHost","markLayoutEffectHost","setError","catchException","workLoop","wipFiber","shouldYield","hasMoreWork","Boolean","performUnitOfWork","fromHook","hasPortals","walkFiber","onLoop","nextFiber","isReturn","stop","resetIsDeepWalking","layoutEffect","setTimeout","onComplete","commitChanges","hasChildrenProp","performChild","performedFiber","performSibling","performPartialUpdateEffects","DELETION","getChildAlternate","getHook","Fiber","pertformInstance","mutateAlternate","mutateFiber","performMemo","performedNextFiber","performedShadow","performedInstance","childrenIdx","getNextSiblingAlternate","getElementKey","isDifferentKeys","isUpdate","getInstanceType","UPDATE","alternateType","isSameType","isSameKeys","isRemovingCase","isInsertingCase","nextKeys","nextKey","extractKeys","diffKeys","getDiffKeys","fibersMap","map","createFibersByKeyMap","childAlternate","diffCount","childAlternates","getSiblingFibers","performRemovingNodes","diffKeyMap","fibersByPositionsMap","position","createFibersByPositionMap","usedKeyMap","keyIdx","insertionFiber","performInsertingNodes","memoFiber","alternateFactory","elements","splice","getAlternateByKey","getRootShadow","mountInstance","isComponentFactory","result","err","transformElementInstance","nextKeysMap","diff","element","isStopped","visitedMap","detectCanVisit","newFiber","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":"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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/model.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/global/global.ts","webpack://DarkCore/./src/fiber/model.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/model';\r\nimport type { MutableRef } from '../ref';\r\nimport type { CreateElement, ComponentOptions, StandardComponentProps, SlotProps } from './model';\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 './model';\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/model';\r\nimport type { ComponentFactory, StandardComponentProps } from '../component';\r\nimport { NodeType, type ViewDef } from './model';\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 './model';\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 './model';\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 '../global';\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 '../global';\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/model';\r\nimport type { DarkElementKey, DarkElement, DarkElementInstance } from '../shared/model';\r\nimport { PARTIAL_UPDATE } from '../constants';\r\nimport { type NativeElement, type Hook, EffectTag, cloneTagMap } from './model';\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 childAlternate = fibersMap[key] || null;\r\n\r\n if (childAlternate) {\r\n childAlternate.effectTag = EffectTag.DELETION;\r\n deletionsHelper.get().push(childAlternate);\r\n\r\n if (childAlternate.effectHost) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (childAlternate.layoutEffectHost) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (childAlternate.portalHost) {\r\n fiber.markPortalHost();\r\n }\r\n }\r\n }\r\n } else if (!hasKeys) {\r\n const diffCount = prevElementsCount - nextElementsCount;\r\n const childAlternates: Array = takeListFromEnd(getSiblingFibers(alternate.child), diffCount);\r\n\r\n for (const childAlternate of childAlternates) {\r\n childAlternate.effectTag = EffectTag.DELETION;\r\n\r\n if (childAlternate.effectHost) {\r\n fiber.markEffectHost();\r\n }\r\n\r\n if (childAlternate.layoutEffectHost) {\r\n fiber.markLayoutEffectHost();\r\n }\r\n\r\n if (childAlternate.portalHost) {\r\n fiber.markPortalHost();\r\n }\r\n }\r\n\r\n deletionsHelper.get().push(...childAlternates);\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 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 '../global';\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/model';\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 './model';\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 '../global';\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 './model';\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/model';\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","childAlternate","diffCount","childAlternates","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 9e655e0b..ca92cef4 100644 --- a/packages/platform-browser/package.json +++ b/packages/platform-browser/package.json @@ -1,6 +1,6 @@ { "name": "@dark-engine/platform-browser", - "version": "0.6.0", + "version": "0.7.0", "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/platform-browser/umd/dark-platform-browser.development.js b/packages/platform-browser/umd/dark-platform-browser.development.js index d9edb68b..a9303db7 100644 --- a/packages/platform-browser/umd/dark-platform-browser.development.js +++ b/packages/platform-browser/umd/dark-platform-browser.development.js @@ -12,6 +12,57 @@ return /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ +/***/ "./src/create-root/create-root.tsx": +/*!*****************************************!*\ + !*** ./src/create-root/create-root.tsx ***! + \*****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "createRoot": () => (/* binding */ createRoot) +/* harmony export */ }); +/* harmony import */ var _dark_engine_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @dark-engine/core */ "@dark-engine/core"); +/* harmony import */ var _dark_engine_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_dark_engine_core__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _render__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../render */ "./src/render/index.ts"); +/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom */ "./src/dom/index.ts"); + + + +function createRoot(container) { + return { + render: function (element) { return (0,_render__WEBPACK_IMPORTED_MODULE_1__.render)(element, container); }, + unmount: function () { + var rootId = _render__WEBPACK_IMPORTED_MODULE_1__.roots.get(container); + (0,_dark_engine_core__WEBPACK_IMPORTED_MODULE_0__.unmountRoot)(rootId, function () { + (0,_dom__WEBPACK_IMPORTED_MODULE_2__.resetNodeCache)(); + _render__WEBPACK_IMPORTED_MODULE_1__.roots["delete"](container); + container.innerHTML = ''; + }); + }, + }; +} + + + +/***/ }), + +/***/ "./src/create-root/index.ts": +/*!**********************************!*\ + !*** ./src/create-root/index.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "createRoot": () => (/* reexport safe */ _create_root__WEBPACK_IMPORTED_MODULE_0__.createRoot) +/* harmony export */ }); +/* harmony import */ var _create_root__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./create-root */ "./src/create-root/create-root.tsx"); + + + +/***/ }), + /***/ "./src/dom/dom.ts": /*!************************!*\ !*** ./src/dom/dom.ts ***! @@ -507,7 +558,7 @@ function delegateEvent(options) { var eventsStore = _dark_engine_core__WEBPACK_IMPORTED_MODULE_0__.eventsHelper.get(); var handlerMap = eventsStore.get(eventName); if (!handlerMap) { - var rootHandler = function (event) { + var rootHandler_1 = function (event) { var fireEvent = eventsStore.get(eventName).get(event.target); var target = event.target; var syntheticEvent = null; @@ -523,7 +574,8 @@ function delegateEvent(options) { } }; eventsStore.set(eventName, new WeakMap([[target, handler]])); - document.addEventListener(eventName, rootHandler, true); + document.addEventListener(eventName, rootHandler_1, true); + _dark_engine_core__WEBPACK_IMPORTED_MODULE_0__.eventsHelper.addUnsubscriber(function () { return document.removeEventListener(eventName, rootHandler_1, true); }); } else { handlerMap.set(target, handler); @@ -668,7 +720,8 @@ function unmountPortal(fiber) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "render": () => (/* reexport safe */ _render__WEBPACK_IMPORTED_MODULE_0__.render) +/* harmony export */ "render": () => (/* reexport safe */ _render__WEBPACK_IMPORTED_MODULE_0__.render), +/* harmony export */ "roots": () => (/* reexport safe */ _render__WEBPACK_IMPORTED_MODULE_0__.roots) /* harmony export */ }); /* harmony import */ var _render__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./render */ "./src/render/render.ts"); @@ -684,7 +737,8 @@ __webpack_require__.r(__webpack_exports__); __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "render": () => (/* binding */ render) +/* harmony export */ "render": () => (/* binding */ render), +/* harmony export */ "roots": () => (/* binding */ roots) /* harmony export */ }); /* harmony import */ var _dark_engine_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @dark-engine/core */ "@dark-engine/core"); /* harmony import */ var _dark_engine_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_dark_engine_core__WEBPACK_IMPORTED_MODULE_0__); @@ -1085,13 +1139,16 @@ var __webpack_exports__ = {}; \**********************/ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "createPortal": () => (/* reexport safe */ _portal__WEBPACK_IMPORTED_MODULE_1__.createPortal), +/* harmony export */ "createPortal": () => (/* reexport safe */ _portal__WEBPACK_IMPORTED_MODULE_2__.createPortal), +/* harmony export */ "createRoot": () => (/* reexport safe */ _create_root__WEBPACK_IMPORTED_MODULE_1__.createRoot), /* harmony export */ "render": () => (/* reexport safe */ _render__WEBPACK_IMPORTED_MODULE_0__.render), -/* harmony export */ "useStyle": () => (/* reexport safe */ _use_style__WEBPACK_IMPORTED_MODULE_2__.useStyle) +/* harmony export */ "useStyle": () => (/* reexport safe */ _use_style__WEBPACK_IMPORTED_MODULE_3__.useStyle) /* harmony export */ }); /* harmony import */ var _render__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./render */ "./src/render/index.ts"); -/* harmony import */ var _portal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./portal */ "./src/portal/index.ts"); -/* harmony import */ var _use_style__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-style */ "./src/use-style/index.ts"); +/* harmony import */ var _create_root__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./create-root */ "./src/create-root/index.ts"); +/* harmony import */ var _portal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./portal */ "./src/portal/index.ts"); +/* harmony import */ var _use_style__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./use-style */ "./src/use-style/index.ts"); + diff --git a/packages/platform-browser/umd/dark-platform-browser.development.js.map b/packages/platform-browser/umd/dark-platform-browser.development.js.map index 3e71f308..cad91413 100644 --- a/packages/platform-browser/umd/dark-platform-browser.development.js.map +++ b/packages/platform-browser/umd/dark-platform-browser.development.js.map @@ -1 +1 @@ -{"version":3,"file":"dark-platform-browser.development.js","mappings":"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","sources":["webpack://DarkPlatformBrowser/webpack/universalModuleDefinition","webpack://DarkPlatformBrowser/./src/dom/dom.ts","webpack://DarkPlatformBrowser/./src/dom/index.ts","webpack://DarkPlatformBrowser/./src/dom/model.ts","webpack://DarkPlatformBrowser/./src/events/events.ts","webpack://DarkPlatformBrowser/./src/events/index.ts","webpack://DarkPlatformBrowser/./src/portal/index.ts","webpack://DarkPlatformBrowser/./src/portal/portal.tsx","webpack://DarkPlatformBrowser/./src/render/index.ts","webpack://DarkPlatformBrowser/./src/render/render.ts","webpack://DarkPlatformBrowser/./src/scheduling/index.ts","webpack://DarkPlatformBrowser/./src/scheduling/model.ts","webpack://DarkPlatformBrowser/./src/scheduling/scheduling.ts","webpack://DarkPlatformBrowser/./src/use-style/index.ts","webpack://DarkPlatformBrowser/./src/use-style/use-style.ts","webpack://DarkPlatformBrowser/external umd {\"root\":\"DarkCore\",\"commonjs2\":\"@dark-engine/core\",\"commonjs\":\"@dark-engine/core\",\"amd\":\"@dark-engine/core\"}","webpack://DarkPlatformBrowser/webpack/bootstrap","webpack://DarkPlatformBrowser/webpack/runtime/compat get default export","webpack://DarkPlatformBrowser/webpack/runtime/define property getters","webpack://DarkPlatformBrowser/webpack/runtime/hasOwnProperty shorthand","webpack://DarkPlatformBrowser/webpack/runtime/make namespace object","webpack://DarkPlatformBrowser/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@dark-engine/core\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DarkPlatformBrowser\", [\"@dark-engine/core\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DarkPlatformBrowser\"] = factory(require(\"@dark-engine/core\"));\n\telse\n\t\troot[\"DarkPlatformBrowser\"] = factory(root[\"DarkCore\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__dark_engine_core__) => {\nreturn ","import {\r\n type Fiber,\r\n type VirtualNode,\r\n type TagVirtualNode,\r\n type TextVirtualNode,\r\n type CommentVirtualNode,\r\n type MutableRef,\r\n EffectTag,\r\n detectIsFunction,\r\n detectIsUndefined,\r\n NodeType,\r\n detectIsVirtualNode,\r\n detectIsTagVirtualNode,\r\n detectIsTextVirtualNode,\r\n detectIsCommentVirtualNode,\r\n detectIsRef,\r\n ATTR_KEY,\r\n ATTR_REF,\r\n EMPTY_NODE,\r\n fromHookUpdateHelper,\r\n} from '@dark-engine/core';\r\nimport { detectIsPortal, getPortalContainer } from '../portal';\r\nimport { delegateEvent, detectIsEvent, getEventName } from '../events';\r\nimport type { DomElement } from './model';\r\n\r\nconst attrBlackListMap = {\r\n [ATTR_KEY]: true,\r\n [ATTR_REF]: true,\r\n};\r\n\r\nfunction createElement(vNode: VirtualNode): DomElement {\r\n const map = {\r\n [NodeType.TAG]: (vNode: VirtualNode) => {\r\n const tagNode = vNode as TagVirtualNode;\r\n const node = detectIsSvgElement(tagNode.name)\r\n ? document.createElementNS('http://www.w3.org/2000/svg', tagNode.name)\r\n : document.createElement(tagNode.name);\r\n\r\n return node;\r\n },\r\n [NodeType.TEXT]: (vNode: VirtualNode) => {\r\n const textNode = vNode as TextVirtualNode;\r\n const node = document.createTextNode(textNode.value);\r\n\r\n return node;\r\n },\r\n [NodeType.COMMENT]: (vNode: VirtualNode) => {\r\n const commentNode = vNode as CommentVirtualNode;\r\n const node = document.createComment(commentNode.value);\r\n\r\n return node;\r\n },\r\n };\r\n\r\n return map[vNode.type](vNode);\r\n}\r\n\r\nfunction createDomElement(fiber: Fiber): DomElement {\r\n if (!detectIsVirtualNode(fiber.instance)) {\r\n throw new Error('createDomElement receives only Element!');\r\n }\r\n\r\n const vNode: VirtualNode = fiber.instance;\r\n\r\n return createElement(vNode);\r\n}\r\n\r\nfunction applyRef(ref: MutableRef, element: Element) {\r\n if (detectIsRef(ref)) {\r\n ref.current = element;\r\n }\r\n}\r\n\r\nfunction addAttributes(element: Element, vNode: VirtualNode) {\r\n if (!detectIsTagVirtualNode(vNode)) return;\r\n const attrNames = Object.keys(vNode.attrs);\r\n\r\n for (const attrName of attrNames) {\r\n const attrValue = vNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(attrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (detectIsFunction(attrValue)) {\r\n if (detectIsEvent(attrName)) {\r\n delegateEvent({\r\n target: element,\r\n handler: attrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!detectIsUndefined(attrValue) && !attrBlackListMap[attrName]) {\r\n upgradeInputAttributes({\r\n tagName: vNode.name,\r\n value: attrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n element.setAttribute(attrName, attrValue);\r\n }\r\n }\r\n}\r\n\r\nfunction updateAttributes(element: Element, vNode: TagVirtualNode, nextVNode: TagVirtualNode) {\r\n const attrNames = new Set([...Object.keys(vNode.attrs), ...Object.keys(nextVNode.attrs)]);\r\n\r\n for (const attrName of attrNames) {\r\n const prevAttrValue = vNode.attrs[attrName];\r\n const nextAttrValue = nextVNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(prevAttrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (!detectIsUndefined(nextAttrValue)) {\r\n if (detectIsFunction(prevAttrValue)) {\r\n if (detectIsEvent(attrName) && prevAttrValue !== nextAttrValue) {\r\n delegateEvent({\r\n target: element,\r\n handler: nextAttrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!attrBlackListMap[attrName] && prevAttrValue !== nextAttrValue) {\r\n upgradeInputAttributes({\r\n tagName: nextVNode.name,\r\n value: nextAttrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n element.setAttribute(attrName, nextAttrValue);\r\n }\r\n } else {\r\n element.removeAttribute(attrName);\r\n }\r\n }\r\n}\r\n\r\ntype UpgradeInputAttributesOptions = {\r\n tagName: string;\r\n element: Element;\r\n attrName: string;\r\n value: string | boolean;\r\n};\r\n\r\nfunction upgradeInputAttributes(options: UpgradeInputAttributesOptions) {\r\n const { tagName, element, attrName, value } = options;\r\n const map = {\r\n input: () => {\r\n const attrsMap = {\r\n value: true,\r\n checked: true,\r\n };\r\n\r\n if (attrsMap[attrName]) {\r\n element[attrName] = value;\r\n }\r\n },\r\n option: () => {\r\n const attrsMap = {\r\n selected: true,\r\n };\r\n\r\n if (attrsMap[attrName]) {\r\n element[attrName] = value;\r\n }\r\n },\r\n };\r\n\r\n map[tagName] && map[tagName]();\r\n}\r\n\r\nfunction updateDom(element: Element, instance: VirtualNode, nextInstance: VirtualNode) {\r\n if (\r\n detectIsTextVirtualNode(instance) &&\r\n detectIsTextVirtualNode(nextInstance) &&\r\n instance.value !== nextInstance.value\r\n ) {\r\n return (element.textContent = nextInstance.value);\r\n }\r\n\r\n if (detectIsTagVirtualNode(instance) && detectIsTagVirtualNode(nextInstance)) {\r\n return updateAttributes(element, instance, nextInstance);\r\n }\r\n}\r\n\r\nconst fragmentMap: Map = new Map();\r\nlet nodeCacheMap: Map = new Map();\r\n\r\nfunction resetNodeCache() {\r\n nodeCacheMap = new Map();\r\n}\r\n\r\nfunction mutateDom(fiber: Fiber) {\r\n const fromHookUpdate = fromHookUpdateHelper.get();\r\n const nextFiber = getFiberWithNativeElement(fiber);\r\n const parentNativeElement = nextFiber.nativeElement;\r\n\r\n if (fiber.nativeElement !== null && fiber.effectTag === EffectTag.PLACEMENT) {\r\n const cachedNode = nodeCacheMap.get(parentNativeElement);\r\n const node = nextFiber.alternate\r\n ? !detectIsUndefined(cachedNode) && canTakeNodeFromCache(fiber, nextFiber)\r\n ? cachedNode\r\n : cachedNode === null\r\n ? null\r\n : getNodeOnTheRight(fiber, parentNativeElement)\r\n : fromHookUpdate\r\n ? getNodeOnTheRight(fiber, parentNativeElement)\r\n : null;\r\n\r\n nodeCacheMap.set(parentNativeElement, node);\r\n\r\n if (node) {\r\n parentNativeElement.insertBefore(fiber.nativeElement, node);\r\n fiber.mountedToHost = true;\r\n if (isEndOfInsertion(fiber, nextFiber)) {\r\n nodeCacheMap.delete(parentNativeElement);\r\n }\r\n } else {\r\n let fragment = fragmentMap.get(parentNativeElement);\r\n\r\n if (detectIsUndefined(fragment)) {\r\n fragment = document.createDocumentFragment();\r\n fragmentMap.set(parentNativeElement, fragment);\r\n }\r\n\r\n fragment.appendChild(fiber.nativeElement);\r\n fiber.mountedToHost = true;\r\n\r\n if (!hasNextSibling(fiber, nextFiber)) {\r\n parentNativeElement.appendChild(fragment);\r\n fragmentMap.delete(parentNativeElement);\r\n nodeCacheMap.delete(parentNativeElement);\r\n }\r\n }\r\n\r\n addAttributes(fiber.nativeElement, fiber.instance as VirtualNode);\r\n } else if (fiber.nativeElement !== null && fiber.effectTag === EffectTag.UPDATE) {\r\n if (!detectIsVirtualNode(fiber.alternate.instance) || !detectIsVirtualNode(fiber.instance)) return;\r\n const vNode: VirtualNode = fiber.alternate.instance;\r\n const nextVNode: VirtualNode = fiber.instance;\r\n\r\n updateDom(fiber.nativeElement, vNode, nextVNode);\r\n } else if (fiber.effectTag === EffectTag.DELETION) {\r\n commitDeletion(fiber, parentNativeElement);\r\n }\r\n}\r\n\r\nfunction hasNextSibling(fiber: Fiber, rootFilber: Fiber) {\r\n let nextFiber = fiber;\r\n\r\n if (nextFiber.nextSibling && detectIsPortal(nextFiber.nextSibling.instance)) {\r\n return false;\r\n }\r\n\r\n while (!nextFiber.nextSibling) {\r\n nextFiber = nextFiber.parent;\r\n\r\n if (nextFiber === rootFilber || nextFiber.nativeElement) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction getFiberWithNativeElement(fiber: Fiber): Fiber {\r\n let nextFiber = fiber.parent;\r\n\r\n if (detectIsPortal(fiber.instance)) return fiber;\r\n\r\n while (nextFiber && !nextFiber.nativeElement) {\r\n if (detectIsPortal(nextFiber.instance)) {\r\n nextFiber.nativeElement = getPortalContainer(nextFiber.instance);\r\n } else {\r\n nextFiber = nextFiber.parent;\r\n }\r\n }\r\n\r\n return nextFiber;\r\n}\r\n\r\nfunction canTakeNodeFromCache(fiber: Fiber, parentFiber: Fiber) {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (nextFiber.alternate) {\r\n const alternate = nextFiber.alternate;\r\n const isEmptyNode = detectIsCommentVirtualNode(alternate.instance) && alternate.instance.value === EMPTY_NODE;\r\n\r\n return isEmptyNode;\r\n }\r\n\r\n nextFiber = nextFiber.parent;\r\n if (nextFiber === parentFiber) return false;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction isEndOfInsertion(fiber: Fiber, parentFiber: Fiber) {\r\n let nextFiber = fiber;\r\n\r\n do {\r\n if (!nextFiber) return false;\r\n nextFiber = nextFiber.nextSibling || nextFiber.parent.nextSibling;\r\n if (nextFiber && nextFiber.parent === parentFiber) break;\r\n } while (!nextFiber);\r\n\r\n if (nextFiber.effectTag === EffectTag.UPDATE) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getNodeOnTheRight(fiber: Fiber, parentElement: Element) {\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n\r\n while (nextFiber) {\r\n if (nextFiber.nativeElement && nextFiber.nativeElement.parentElement === parentElement) {\r\n return nextFiber.nativeElement;\r\n }\r\n\r\n if (nextFiber.nativeElement && !nextFiber.mountedToHost) {\r\n isDeepWalking = false;\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking) {\r\n nextFiber = nextFiber.child;\r\n } else if (nextFiber.nextSibling) {\r\n isDeepWalking = true;\r\n nextFiber = nextFiber.nextSibling;\r\n } else if (nextFiber.parent && nextFiber.parent.nativeElement !== parentElement) {\r\n isDeepWalking = false;\r\n nextFiber = nextFiber.parent;\r\n } else {\r\n nextFiber = null;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction commitDeletion(fiber: Fiber, parentElement: Element) {\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n let isReturn = false;\r\n\r\n while (nextFiber) {\r\n if (!isReturn) {\r\n if (nextFiber.nativeElement) {\r\n const isPortal = detectIsPortal(nextFiber.instance);\r\n\r\n !isPortal && parentElement.removeChild(nextFiber.nativeElement);\r\n isDeepWalking = false;\r\n }\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking) {\r\n nextFiber = nextFiber.child;\r\n isReturn = false;\r\n } else if (nextFiber.nextSibling && nextFiber.nextSibling !== fiber.nextSibling) {\r\n if (nextFiber.nextSibling.effectTag === EffectTag.DELETION) return;\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = nextFiber.nextSibling;\r\n } else if (\r\n nextFiber.parent &&\r\n nextFiber !== fiber &&\r\n nextFiber.parent !== fiber &&\r\n nextFiber.parent !== fiber.parent\r\n ) {\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\nfunction detectIsSvgElement(tagName) {\r\n const tagMap = {\r\n svg: true,\r\n circle: true,\r\n ellipse: true,\r\n g: true,\r\n text: true,\r\n tspan: true,\r\n textPath: true,\r\n path: true,\r\n polygon: true,\r\n polyline: true,\r\n line: true,\r\n rect: true,\r\n use: true,\r\n image: true,\r\n symbol: true,\r\n defs: true,\r\n linearGradient: true,\r\n radialGradient: true,\r\n stop: true,\r\n clipPath: true,\r\n pattern: true,\r\n mask: true,\r\n marker: true,\r\n };\r\n\r\n return Boolean(tagMap[tagName]);\r\n}\r\n\r\nexport { createDomElement, mutateDom, resetNodeCache };\r\n","export * from './dom';\r\nexport * from './model';\r\n","export type DomElement = {} & (Element | Text | Comment);\r\n","import { detectIsFunction, eventsHelper } from '@dark-engine/core';\r\n\r\ntype BrowserEventConstructor = (type: string, event: Event) => void;\r\n\r\nclass SyntheticEvent {\r\n public type = '';\r\n public sourceEvent: E = null;\r\n public target: T = null;\r\n private propagation = true;\r\n\r\n constructor(options: Pick, 'sourceEvent' | 'target'>) {\r\n this.type = options.sourceEvent.type;\r\n this.sourceEvent = options.sourceEvent;\r\n this.target = options.target;\r\n }\r\n\r\n public stopPropagation() {\r\n this.propagation = false;\r\n this.sourceEvent.stopPropagation();\r\n }\r\n\r\n public preventDefault() {\r\n this.sourceEvent.preventDefault();\r\n }\r\n\r\n public getPropagation() {\r\n return this.propagation;\r\n }\r\n}\r\n\r\ntype DelegateEventOptions = {\r\n target: Element;\r\n eventName: string;\r\n handler: (e: Event) => void;\r\n};\r\n\r\nfunction delegateEvent(options: DelegateEventOptions) {\r\n const { target, eventName, handler } = options;\r\n const eventsStore = eventsHelper.get();\r\n const handlerMap = eventsStore.get(eventName);\r\n\r\n if (!handlerMap) {\r\n const rootHandler = (event: Event) => {\r\n const fireEvent = eventsStore.get(eventName).get(event.target);\r\n const target = event.target as Element;\r\n let syntheticEvent: SyntheticEvent = null;\r\n\r\n if (detectIsFunction(fireEvent)) {\r\n syntheticEvent = new SyntheticEvent({\r\n sourceEvent: event,\r\n target,\r\n });\r\n fireEvent(syntheticEvent);\r\n }\r\n\r\n if (syntheticEvent ? syntheticEvent.getPropagation() : target.parentElement) {\r\n target.parentElement.dispatchEvent(new (event.constructor as BrowserEventConstructor)(event.type, event));\r\n }\r\n };\r\n\r\n eventsStore.set(eventName, new WeakMap([[target, handler]]));\r\n document.addEventListener(eventName, rootHandler, true);\r\n } else {\r\n handlerMap.set(target, handler);\r\n }\r\n}\r\n\r\nconst detectIsEvent = (attrName: string) => attrName.startsWith('on');\r\n\r\nconst getEventName = (attrName: string) => attrName.slice(2, attrName.length).toLowerCase();\r\n\r\nexport { SyntheticEvent, delegateEvent, detectIsEvent, getEventName };\r\n","export * from './events';\r\n","export * from './portal';\r\n","import {\r\n type Fiber,\r\n type DarkElement,\r\n type ComponentFactory,\r\n createComponent,\r\n detectIsComponentFactory,\r\n error,\r\n useMemo,\r\n} from '@dark-engine/core';\r\n\r\nconst $$portal = Symbol('portal');\r\n\r\nfunction createPortal(slot: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n if (process.env.NODE_ENV === 'development') {\r\n error(`[Dark]: createPortal receives only Element as container!`);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return Portal({ [$$portal]: container, slot });\r\n}\r\n\r\nconst Portal = createComponent(\r\n ({ slot, ...rest }) => {\r\n useMemo(() => (rest[$$portal].innerHTML = ''), []);\r\n\r\n return slot;\r\n },\r\n { token: $$portal },\r\n);\r\n\r\nconst detectIsPortal = (factory: unknown): factory is ComponentFactory =>\r\n detectIsComponentFactory(factory) && factory.token === $$portal;\r\nconst getPortalContainer = (factory: unknown): Element => (detectIsPortal(factory) ? factory.props[$$portal] : null);\r\n\r\nfunction unmountPortal(fiber: Fiber) {\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n let isReturn = false;\r\n\r\n while (nextFiber) {\r\n if (!isReturn && detectIsPortal(nextFiber.instance)) {\r\n const container = getPortalContainer(nextFiber.instance);\r\n\r\n container.innerHTML = '';\r\n }\r\n\r\n if (!nextFiber.portalHost) {\r\n isDeepWalking = false;\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking) {\r\n nextFiber = nextFiber.child;\r\n isReturn = false;\r\n } else if (nextFiber.nextSibling && nextFiber.nextSibling !== fiber.nextSibling) {\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = nextFiber.nextSibling;\r\n } else if (\r\n nextFiber.parent &&\r\n nextFiber !== fiber &&\r\n nextFiber.parent !== fiber &&\r\n nextFiber.parent !== fiber.parent\r\n ) {\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 { createPortal, detectIsPortal, getPortalContainer, unmountPortal };\r\n","export * from './render';\r\n","import {\r\n type DarkElement,\r\n type VirtualNodeFactory,\r\n type ComponentFactory,\r\n Fiber,\r\n EffectTag,\r\n platform,\r\n flatten,\r\n detectIsUndefined,\r\n TagVirtualNode,\r\n effectStoreHelper,\r\n wipRootHelper,\r\n currentRootHelper,\r\n nextUnitOfWorkHelper,\r\n fiberMountHelper,\r\n ROOT,\r\n TaskPriority,\r\n} from '@dark-engine/core';\r\nimport { createDomElement, mutateDom, resetNodeCache } from '../dom';\r\nimport { detectIsPortal, unmountPortal } from '../portal';\r\nimport { scheduleCallback, shouldYeildToHost } from '../scheduling';\r\n\r\nplatform.scheduleCallback = scheduleCallback;\r\nplatform.shouldYeildToHost = shouldYeildToHost;\r\nplatform.createNativeElement = createDomElement as typeof platform.createNativeElement;\r\nplatform.applyCommits = mutateDom as typeof platform.applyCommits;\r\nplatform.detectIsPortal = detectIsPortal as typeof platform.detectIsPortal;\r\nplatform.unmountPortal = unmountPortal as typeof platform.unmountPortal;\r\n\r\nconst roots = new Map();\r\n\r\nfunction render(element: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n throw new Error(`render expects to receive container as Element!`);\r\n }\r\n\r\n const isMounted = !detectIsUndefined(roots.get(container));\r\n let rootId = null;\r\n\r\n if (!isMounted) {\r\n rootId = roots.size;\r\n\r\n roots.set(container, rootId);\r\n container.innerHTML = '';\r\n } else {\r\n rootId = roots.get(container);\r\n }\r\n\r\n const callback = () => {\r\n effectStoreHelper.set(rootId); // important order!\r\n resetNodeCache();\r\n\r\n const currentRootFiber = currentRootHelper.get();\r\n const fiber = new Fiber({\r\n nativeElement: container,\r\n instance: new TagVirtualNode({\r\n name: ROOT,\r\n children: flatten([element]) as Array,\r\n }),\r\n alternate: currentRootFiber,\r\n effectTag: isMounted ? EffectTag.UPDATE : EffectTag.PLACEMENT,\r\n });\r\n\r\n currentRootFiber && (currentRootFiber.alternate = null);\r\n fiberMountHelper.reset();\r\n wipRootHelper.set(fiber);\r\n nextUnitOfWorkHelper.set(fiber);\r\n };\r\n\r\n platform.scheduleCallback(callback, { priority: TaskPriority.NORMAL });\r\n}\r\n\r\nexport { render };\r\n","export * from './scheduling';\r\nexport * from './model';\r\n","export type Callback = () => boolean;\r\n\r\nexport type Task = {\r\n id: number;\r\n priority: TaskPriority;\r\n calllback: () => void;\r\n};\r\n\r\nexport enum TaskPriority {\r\n HIGH = 2,\r\n NORMAL = 1,\r\n}\r\n","import { type ScheduleCallbackOptions, getTime, workLoop, wipRootHelper, TaskPriority } from '@dark-engine/core';\r\nimport { type Callback } from './model';\r\n\r\ntype QueueByPriority = {\r\n hight: Array;\r\n normal: Array;\r\n low: Array;\r\n};\r\n\r\nconst queueByPriority: QueueByPriority = {\r\n hight: [],\r\n normal: [],\r\n low: [],\r\n};\r\nconst YEILD_INTERVAL = 10;\r\nlet scheduledCallback: Callback = null;\r\nlet deadline = 0;\r\nlet isMessageLoopRunning = false;\r\nlet currentTask: Task = null;\r\n\r\nclass Task {\r\n public static nextTaskId = 0;\r\n public id: number;\r\n public time: number;\r\n public timeoutMs: number;\r\n public priority: TaskPriority;\r\n public callback: () => void;\r\n\r\n constructor(options: Omit) {\r\n this.id = ++Task.nextTaskId;\r\n this.time = options.time;\r\n this.timeoutMs = options.timeoutMs;\r\n this.priority = options.priority;\r\n this.callback = options.callback;\r\n }\r\n}\r\n\r\nconst shouldYeildToHost = () => getTime() >= deadline;\r\n\r\nfunction scheduleCallback(callback: () => void, options?: ScheduleCallbackOptions) {\r\n const { priority = TaskPriority.NORMAL, timeoutMs } = options || {};\r\n const task = new Task({ time: getTime(), timeoutMs, priority, callback });\r\n const map: Record void> = {\r\n [TaskPriority.HIGH]: () => queueByPriority.hight.push(task),\r\n [TaskPriority.NORMAL]: () => queueByPriority.normal.push(task),\r\n [TaskPriority.LOW]: () => queueByPriority.low.push(task),\r\n };\r\n\r\n map[task.priority]();\r\n executeTasks();\r\n}\r\n\r\nfunction pick(queue: Array) {\r\n if (!queue.length) return false;\r\n currentTask = queue.shift();\r\n\r\n currentTask.callback();\r\n requestCallback(workLoop);\r\n\r\n return true;\r\n}\r\n\r\nfunction executeTasks() {\r\n const isBusy = Boolean(wipRootHelper.get());\r\n\r\n if (!isBusy) {\r\n checkOverdueTasks() ||\r\n pick(queueByPriority.hight) ||\r\n pick(queueByPriority.normal) ||\r\n requestIdleCallback(() => pick(queueByPriority.low));\r\n }\r\n}\r\n\r\nfunction checkOverdueTasks() {\r\n const [task] = queueByPriority.low;\r\n\r\n if (task && task.timeoutMs > 0 && getTime() - task.time > task.timeoutMs) {\r\n pick(queueByPriority.low);\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction performWorkUntilDeadline() {\r\n if (scheduledCallback) {\r\n deadline = getTime() + YEILD_INTERVAL;\r\n\r\n try {\r\n const hasMoreWork = scheduledCallback();\r\n\r\n if (!hasMoreWork) {\r\n currentTask = null;\r\n isMessageLoopRunning = false;\r\n scheduledCallback = null;\r\n executeTasks();\r\n } else {\r\n port.postMessage(null);\r\n }\r\n } catch (error) {\r\n port.postMessage(null);\r\n throw error;\r\n }\r\n } else {\r\n isMessageLoopRunning = false;\r\n }\r\n}\r\n\r\nfunction requestCallback(callback: Callback) {\r\n if (process.env.NODE_ENV === 'test') {\r\n return requestCallbackSync(callback);\r\n }\r\n\r\n scheduledCallback = callback;\r\n\r\n if (!isMessageLoopRunning) {\r\n isMessageLoopRunning = true;\r\n port.postMessage(null);\r\n }\r\n}\r\n\r\nfunction requestCallbackSync(callback: Callback) {\r\n while (callback()) {\r\n //\r\n }\r\n executeTasks();\r\n currentTask = null;\r\n}\r\n\r\nlet channel: MessageChannel = null;\r\nlet port: MessagePort = null;\r\n\r\nfunction setup() {\r\n if (process.env.NODE_ENV === 'test') {\r\n return;\r\n }\r\n\r\n channel = new MessageChannel();\r\n port = channel.port2;\r\n\r\n channel.port1.onmessage = performWorkUntilDeadline;\r\n}\r\n\r\nsetup();\r\n\r\nexport { shouldYeildToHost, scheduleCallback };\r\n","export * from './use-style';\r\n","import { useMemo, detectIsUndefined } from '@dark-engine/core';\r\n\r\nfunction styled(strings: TemplateStringsArray, ...args: Array): string {\r\n const style = useMemo(() => {\r\n return strings\r\n .map((x, idx) => x + (!detectIsUndefined(args[idx]) ? args[idx] : ''))\r\n .join('')\r\n .replace(/;\\s*/gm, ';')\r\n .replace(/:\\s*/gm, ':')\r\n .trim();\r\n }, [strings, ...args]);\r\n\r\n return style;\r\n}\r\n\r\ntype Style = Record;\r\n\r\ntype Config = (x: typeof styled) => T;\r\n\r\nfunction useStyle(config: Config) {\r\n return config(styled);\r\n}\r\n\r\nexport { useStyle };\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__dark_engine_core__;","// 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","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\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 { render } from './render';\r\nexport { createPortal } from './portal';\r\nexport { useStyle } from './use-style';\r\nexport type { SyntheticEvent } from './events';\r\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"dark-platform-browser.development.js","mappings":"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","sources":["webpack://DarkPlatformBrowser/webpack/universalModuleDefinition","webpack://DarkPlatformBrowser/./src/create-root/create-root.tsx","webpack://DarkPlatformBrowser/./src/create-root/index.ts","webpack://DarkPlatformBrowser/./src/dom/dom.ts","webpack://DarkPlatformBrowser/./src/dom/index.ts","webpack://DarkPlatformBrowser/./src/dom/model.ts","webpack://DarkPlatformBrowser/./src/events/events.ts","webpack://DarkPlatformBrowser/./src/events/index.ts","webpack://DarkPlatformBrowser/./src/portal/index.ts","webpack://DarkPlatformBrowser/./src/portal/portal.tsx","webpack://DarkPlatformBrowser/./src/render/index.ts","webpack://DarkPlatformBrowser/./src/render/render.ts","webpack://DarkPlatformBrowser/./src/scheduling/index.ts","webpack://DarkPlatformBrowser/./src/scheduling/model.ts","webpack://DarkPlatformBrowser/./src/scheduling/scheduling.ts","webpack://DarkPlatformBrowser/./src/use-style/index.ts","webpack://DarkPlatformBrowser/./src/use-style/use-style.ts","webpack://DarkPlatformBrowser/external umd {\"root\":\"DarkCore\",\"commonjs2\":\"@dark-engine/core\",\"commonjs\":\"@dark-engine/core\",\"amd\":\"@dark-engine/core\"}","webpack://DarkPlatformBrowser/webpack/bootstrap","webpack://DarkPlatformBrowser/webpack/runtime/compat get default export","webpack://DarkPlatformBrowser/webpack/runtime/define property getters","webpack://DarkPlatformBrowser/webpack/runtime/hasOwnProperty shorthand","webpack://DarkPlatformBrowser/webpack/runtime/make namespace object","webpack://DarkPlatformBrowser/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@dark-engine/core\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DarkPlatformBrowser\", [\"@dark-engine/core\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DarkPlatformBrowser\"] = factory(require(\"@dark-engine/core\"));\n\telse\n\t\troot[\"DarkPlatformBrowser\"] = factory(root[\"DarkCore\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__dark_engine_core__) => {\nreturn ","import { type DarkElement, unmountRoot } from '@dark-engine/core';\r\nimport { render, roots } from '../render';\r\nimport { resetNodeCache } from '../dom';\r\n\r\nfunction createRoot(container: Element) {\r\n return {\r\n render: (element: DarkElement) => render(element, container),\r\n unmount: () => {\r\n const rootId = roots.get(container);\r\n\r\n unmountRoot(rootId, () => {\r\n resetNodeCache();\r\n roots.delete(container);\r\n container.innerHTML = '';\r\n });\r\n },\r\n };\r\n}\r\n\r\nexport { createRoot };\r\n","export * from './create-root';\r\n","import {\r\n type Fiber,\r\n type VirtualNode,\r\n type TagVirtualNode,\r\n type TextVirtualNode,\r\n type CommentVirtualNode,\r\n type MutableRef,\r\n EffectTag,\r\n detectIsFunction,\r\n detectIsUndefined,\r\n NodeType,\r\n detectIsVirtualNode,\r\n detectIsTagVirtualNode,\r\n detectIsTextVirtualNode,\r\n detectIsCommentVirtualNode,\r\n detectIsRef,\r\n ATTR_KEY,\r\n ATTR_REF,\r\n EMPTY_NODE,\r\n fromHookUpdateHelper,\r\n} from '@dark-engine/core';\r\nimport { detectIsPortal, getPortalContainer } from '../portal';\r\nimport { delegateEvent, detectIsEvent, getEventName } from '../events';\r\nimport type { DomElement } from './model';\r\n\r\nconst attrBlackListMap = {\r\n [ATTR_KEY]: true,\r\n [ATTR_REF]: true,\r\n};\r\n\r\nfunction createElement(vNode: VirtualNode): DomElement {\r\n const map = {\r\n [NodeType.TAG]: (vNode: VirtualNode) => {\r\n const tagNode = vNode as TagVirtualNode;\r\n const node = detectIsSvgElement(tagNode.name)\r\n ? document.createElementNS('http://www.w3.org/2000/svg', tagNode.name)\r\n : document.createElement(tagNode.name);\r\n\r\n return node;\r\n },\r\n [NodeType.TEXT]: (vNode: VirtualNode) => {\r\n const textNode = vNode as TextVirtualNode;\r\n const node = document.createTextNode(textNode.value);\r\n\r\n return node;\r\n },\r\n [NodeType.COMMENT]: (vNode: VirtualNode) => {\r\n const commentNode = vNode as CommentVirtualNode;\r\n const node = document.createComment(commentNode.value);\r\n\r\n return node;\r\n },\r\n };\r\n\r\n return map[vNode.type](vNode);\r\n}\r\n\r\nfunction createDomElement(fiber: Fiber): DomElement {\r\n if (!detectIsVirtualNode(fiber.instance)) {\r\n throw new Error('createDomElement receives only Element!');\r\n }\r\n\r\n const vNode: VirtualNode = fiber.instance;\r\n\r\n return createElement(vNode);\r\n}\r\n\r\nfunction applyRef(ref: MutableRef, element: Element) {\r\n if (detectIsRef(ref)) {\r\n ref.current = element;\r\n }\r\n}\r\n\r\nfunction addAttributes(element: Element, vNode: VirtualNode) {\r\n if (!detectIsTagVirtualNode(vNode)) return;\r\n const attrNames = Object.keys(vNode.attrs);\r\n\r\n for (const attrName of attrNames) {\r\n const attrValue = vNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(attrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (detectIsFunction(attrValue)) {\r\n if (detectIsEvent(attrName)) {\r\n delegateEvent({\r\n target: element,\r\n handler: attrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!detectIsUndefined(attrValue) && !attrBlackListMap[attrName]) {\r\n upgradeInputAttributes({\r\n tagName: vNode.name,\r\n value: attrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n element.setAttribute(attrName, attrValue);\r\n }\r\n }\r\n}\r\n\r\nfunction updateAttributes(element: Element, vNode: TagVirtualNode, nextVNode: TagVirtualNode) {\r\n const attrNames = new Set([...Object.keys(vNode.attrs), ...Object.keys(nextVNode.attrs)]);\r\n\r\n for (const attrName of attrNames) {\r\n const prevAttrValue = vNode.attrs[attrName];\r\n const nextAttrValue = nextVNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(prevAttrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (!detectIsUndefined(nextAttrValue)) {\r\n if (detectIsFunction(prevAttrValue)) {\r\n if (detectIsEvent(attrName) && prevAttrValue !== nextAttrValue) {\r\n delegateEvent({\r\n target: element,\r\n handler: nextAttrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!attrBlackListMap[attrName] && prevAttrValue !== nextAttrValue) {\r\n upgradeInputAttributes({\r\n tagName: nextVNode.name,\r\n value: nextAttrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n element.setAttribute(attrName, nextAttrValue);\r\n }\r\n } else {\r\n element.removeAttribute(attrName);\r\n }\r\n }\r\n}\r\n\r\ntype UpgradeInputAttributesOptions = {\r\n tagName: string;\r\n element: Element;\r\n attrName: string;\r\n value: string | boolean;\r\n};\r\n\r\nfunction upgradeInputAttributes(options: UpgradeInputAttributesOptions) {\r\n const { tagName, element, attrName, value } = options;\r\n const map = {\r\n input: () => {\r\n const attrsMap = {\r\n value: true,\r\n checked: true,\r\n };\r\n\r\n if (attrsMap[attrName]) {\r\n element[attrName] = value;\r\n }\r\n },\r\n option: () => {\r\n const attrsMap = {\r\n selected: true,\r\n };\r\n\r\n if (attrsMap[attrName]) {\r\n element[attrName] = value;\r\n }\r\n },\r\n };\r\n\r\n map[tagName] && map[tagName]();\r\n}\r\n\r\nfunction updateDom(element: Element, instance: VirtualNode, nextInstance: VirtualNode) {\r\n if (\r\n detectIsTextVirtualNode(instance) &&\r\n detectIsTextVirtualNode(nextInstance) &&\r\n instance.value !== nextInstance.value\r\n ) {\r\n return (element.textContent = nextInstance.value);\r\n }\r\n\r\n if (detectIsTagVirtualNode(instance) && detectIsTagVirtualNode(nextInstance)) {\r\n return updateAttributes(element, instance, nextInstance);\r\n }\r\n}\r\n\r\nconst fragmentMap: Map = new Map();\r\nlet nodeCacheMap: Map = new Map();\r\n\r\nfunction resetNodeCache() {\r\n nodeCacheMap = new Map();\r\n}\r\n\r\nfunction mutateDom(fiber: Fiber) {\r\n const fromHookUpdate = fromHookUpdateHelper.get();\r\n const nextFiber = getFiberWithNativeElement(fiber);\r\n const parentNativeElement = nextFiber.nativeElement;\r\n\r\n if (fiber.nativeElement !== null && fiber.effectTag === EffectTag.PLACEMENT) {\r\n const cachedNode = nodeCacheMap.get(parentNativeElement);\r\n const node = nextFiber.alternate\r\n ? !detectIsUndefined(cachedNode) && canTakeNodeFromCache(fiber, nextFiber)\r\n ? cachedNode\r\n : cachedNode === null\r\n ? null\r\n : getNodeOnTheRight(fiber, parentNativeElement)\r\n : fromHookUpdate\r\n ? getNodeOnTheRight(fiber, parentNativeElement)\r\n : null;\r\n\r\n nodeCacheMap.set(parentNativeElement, node);\r\n\r\n if (node) {\r\n parentNativeElement.insertBefore(fiber.nativeElement, node);\r\n fiber.mountedToHost = true;\r\n if (isEndOfInsertion(fiber, nextFiber)) {\r\n nodeCacheMap.delete(parentNativeElement);\r\n }\r\n } else {\r\n let fragment = fragmentMap.get(parentNativeElement);\r\n\r\n if (detectIsUndefined(fragment)) {\r\n fragment = document.createDocumentFragment();\r\n fragmentMap.set(parentNativeElement, fragment);\r\n }\r\n\r\n fragment.appendChild(fiber.nativeElement);\r\n fiber.mountedToHost = true;\r\n\r\n if (!hasNextSibling(fiber, nextFiber)) {\r\n parentNativeElement.appendChild(fragment);\r\n fragmentMap.delete(parentNativeElement);\r\n nodeCacheMap.delete(parentNativeElement);\r\n }\r\n }\r\n\r\n addAttributes(fiber.nativeElement, fiber.instance as VirtualNode);\r\n } else if (fiber.nativeElement !== null && fiber.effectTag === EffectTag.UPDATE) {\r\n if (!detectIsVirtualNode(fiber.alternate.instance) || !detectIsVirtualNode(fiber.instance)) return;\r\n const vNode: VirtualNode = fiber.alternate.instance;\r\n const nextVNode: VirtualNode = fiber.instance;\r\n\r\n updateDom(fiber.nativeElement, vNode, nextVNode);\r\n } else if (fiber.effectTag === EffectTag.DELETION) {\r\n commitDeletion(fiber, parentNativeElement);\r\n }\r\n}\r\n\r\nfunction hasNextSibling(fiber: Fiber, rootFilber: Fiber) {\r\n let nextFiber = fiber;\r\n\r\n if (nextFiber.nextSibling && detectIsPortal(nextFiber.nextSibling.instance)) {\r\n return false;\r\n }\r\n\r\n while (!nextFiber.nextSibling) {\r\n nextFiber = nextFiber.parent;\r\n\r\n if (nextFiber === rootFilber || nextFiber.nativeElement) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction getFiberWithNativeElement(fiber: Fiber): Fiber {\r\n let nextFiber = fiber.parent;\r\n\r\n if (detectIsPortal(fiber.instance)) return fiber;\r\n\r\n while (nextFiber && !nextFiber.nativeElement) {\r\n if (detectIsPortal(nextFiber.instance)) {\r\n nextFiber.nativeElement = getPortalContainer(nextFiber.instance);\r\n } else {\r\n nextFiber = nextFiber.parent;\r\n }\r\n }\r\n\r\n return nextFiber;\r\n}\r\n\r\nfunction canTakeNodeFromCache(fiber: Fiber, parentFiber: Fiber) {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (nextFiber.alternate) {\r\n const alternate = nextFiber.alternate;\r\n const isEmptyNode = detectIsCommentVirtualNode(alternate.instance) && alternate.instance.value === EMPTY_NODE;\r\n\r\n return isEmptyNode;\r\n }\r\n\r\n nextFiber = nextFiber.parent;\r\n if (nextFiber === parentFiber) return false;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction isEndOfInsertion(fiber: Fiber, parentFiber: Fiber) {\r\n let nextFiber = fiber;\r\n\r\n do {\r\n if (!nextFiber) return false;\r\n nextFiber = nextFiber.nextSibling || nextFiber.parent.nextSibling;\r\n if (nextFiber && nextFiber.parent === parentFiber) break;\r\n } while (!nextFiber);\r\n\r\n if (nextFiber.effectTag === EffectTag.UPDATE) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getNodeOnTheRight(fiber: Fiber, parentElement: Element) {\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n\r\n while (nextFiber) {\r\n if (nextFiber.nativeElement && nextFiber.nativeElement.parentElement === parentElement) {\r\n return nextFiber.nativeElement;\r\n }\r\n\r\n if (nextFiber.nativeElement && !nextFiber.mountedToHost) {\r\n isDeepWalking = false;\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking) {\r\n nextFiber = nextFiber.child;\r\n } else if (nextFiber.nextSibling) {\r\n isDeepWalking = true;\r\n nextFiber = nextFiber.nextSibling;\r\n } else if (nextFiber.parent && nextFiber.parent.nativeElement !== parentElement) {\r\n isDeepWalking = false;\r\n nextFiber = nextFiber.parent;\r\n } else {\r\n nextFiber = null;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction commitDeletion(fiber: Fiber, parentElement: Element) {\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n let isReturn = false;\r\n\r\n while (nextFiber) {\r\n if (!isReturn) {\r\n if (nextFiber.nativeElement) {\r\n const isPortal = detectIsPortal(nextFiber.instance);\r\n\r\n !isPortal && parentElement.removeChild(nextFiber.nativeElement);\r\n isDeepWalking = false;\r\n }\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking) {\r\n nextFiber = nextFiber.child;\r\n isReturn = false;\r\n } else if (nextFiber.nextSibling && nextFiber.nextSibling !== fiber.nextSibling) {\r\n if (nextFiber.nextSibling.effectTag === EffectTag.DELETION) return;\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = nextFiber.nextSibling;\r\n } else if (\r\n nextFiber.parent &&\r\n nextFiber !== fiber &&\r\n nextFiber.parent !== fiber &&\r\n nextFiber.parent !== fiber.parent\r\n ) {\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\nfunction detectIsSvgElement(tagName) {\r\n const tagMap = {\r\n svg: true,\r\n circle: true,\r\n ellipse: true,\r\n g: true,\r\n text: true,\r\n tspan: true,\r\n textPath: true,\r\n path: true,\r\n polygon: true,\r\n polyline: true,\r\n line: true,\r\n rect: true,\r\n use: true,\r\n image: true,\r\n symbol: true,\r\n defs: true,\r\n linearGradient: true,\r\n radialGradient: true,\r\n stop: true,\r\n clipPath: true,\r\n pattern: true,\r\n mask: true,\r\n marker: true,\r\n };\r\n\r\n return Boolean(tagMap[tagName]);\r\n}\r\n\r\nexport { createDomElement, mutateDom, resetNodeCache };\r\n","export * from './dom';\r\nexport * from './model';\r\n","export type DomElement = {} & (Element | Text | Comment);\r\n","import { detectIsFunction, eventsHelper } from '@dark-engine/core';\r\n\r\ntype BrowserEventConstructor = (type: string, event: Event) => void;\r\n\r\nclass SyntheticEvent {\r\n public type = '';\r\n public sourceEvent: E = null;\r\n public target: T = null;\r\n private propagation = true;\r\n\r\n constructor(options: Pick, 'sourceEvent' | 'target'>) {\r\n this.type = options.sourceEvent.type;\r\n this.sourceEvent = options.sourceEvent;\r\n this.target = options.target;\r\n }\r\n\r\n public stopPropagation() {\r\n this.propagation = false;\r\n this.sourceEvent.stopPropagation();\r\n }\r\n\r\n public preventDefault() {\r\n this.sourceEvent.preventDefault();\r\n }\r\n\r\n public getPropagation() {\r\n return this.propagation;\r\n }\r\n}\r\n\r\ntype DelegateEventOptions = {\r\n target: Element;\r\n eventName: string;\r\n handler: (e: Event) => void;\r\n};\r\n\r\nfunction delegateEvent(options: DelegateEventOptions) {\r\n const { target, eventName, handler } = options;\r\n const eventsStore = eventsHelper.get();\r\n const handlerMap = eventsStore.get(eventName);\r\n\r\n if (!handlerMap) {\r\n const rootHandler = (event: Event) => {\r\n const fireEvent = eventsStore.get(eventName).get(event.target);\r\n const target = event.target as Element;\r\n let syntheticEvent: SyntheticEvent = null;\r\n\r\n if (detectIsFunction(fireEvent)) {\r\n syntheticEvent = new SyntheticEvent({\r\n sourceEvent: event,\r\n target,\r\n });\r\n fireEvent(syntheticEvent);\r\n }\r\n\r\n if (syntheticEvent ? syntheticEvent.getPropagation() : target.parentElement) {\r\n target.parentElement.dispatchEvent(new (event.constructor as BrowserEventConstructor)(event.type, event));\r\n }\r\n };\r\n\r\n eventsStore.set(eventName, new WeakMap([[target, handler]]));\r\n document.addEventListener(eventName, rootHandler, true);\r\n eventsHelper.addUnsubscriber(() => document.removeEventListener(eventName, rootHandler, true));\r\n } else {\r\n handlerMap.set(target, handler);\r\n }\r\n}\r\n\r\nconst detectIsEvent = (attrName: string) => attrName.startsWith('on');\r\n\r\nconst getEventName = (attrName: string) => attrName.slice(2, attrName.length).toLowerCase();\r\n\r\nexport { SyntheticEvent, delegateEvent, detectIsEvent, getEventName };\r\n","export * from './events';\r\n","export * from './portal';\r\n","import {\r\n type Fiber,\r\n type DarkElement,\r\n type ComponentFactory,\r\n createComponent,\r\n detectIsComponentFactory,\r\n error,\r\n useMemo,\r\n} from '@dark-engine/core';\r\n\r\nconst $$portal = Symbol('portal');\r\n\r\nfunction createPortal(slot: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n if (process.env.NODE_ENV === 'development') {\r\n error(`[Dark]: createPortal receives only Element as container!`);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return Portal({ [$$portal]: container, slot });\r\n}\r\n\r\nconst Portal = createComponent(\r\n ({ slot, ...rest }) => {\r\n useMemo(() => (rest[$$portal].innerHTML = ''), []);\r\n\r\n return slot;\r\n },\r\n { token: $$portal },\r\n);\r\n\r\nconst detectIsPortal = (factory: unknown): factory is ComponentFactory =>\r\n detectIsComponentFactory(factory) && factory.token === $$portal;\r\nconst getPortalContainer = (factory: unknown): Element => (detectIsPortal(factory) ? factory.props[$$portal] : null);\r\n\r\nfunction unmountPortal(fiber: Fiber) {\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n let isReturn = false;\r\n\r\n while (nextFiber) {\r\n if (!isReturn && detectIsPortal(nextFiber.instance)) {\r\n const container = getPortalContainer(nextFiber.instance);\r\n\r\n container.innerHTML = '';\r\n }\r\n\r\n if (!nextFiber.portalHost) {\r\n isDeepWalking = false;\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking) {\r\n nextFiber = nextFiber.child;\r\n isReturn = false;\r\n } else if (nextFiber.nextSibling && nextFiber.nextSibling !== fiber.nextSibling) {\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = nextFiber.nextSibling;\r\n } else if (\r\n nextFiber.parent &&\r\n nextFiber !== fiber &&\r\n nextFiber.parent !== fiber &&\r\n nextFiber.parent !== fiber.parent\r\n ) {\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 { createPortal, detectIsPortal, getPortalContainer, unmountPortal };\r\n","export * from './render';\r\n","import {\r\n type DarkElement,\r\n type VirtualNodeFactory,\r\n type ComponentFactory,\r\n Fiber,\r\n EffectTag,\r\n platform,\r\n flatten,\r\n detectIsUndefined,\r\n TagVirtualNode,\r\n effectStoreHelper,\r\n wipRootHelper,\r\n currentRootHelper,\r\n nextUnitOfWorkHelper,\r\n fiberMountHelper,\r\n ROOT,\r\n TaskPriority,\r\n} from '@dark-engine/core';\r\nimport { createDomElement, mutateDom, resetNodeCache } from '../dom';\r\nimport { detectIsPortal, unmountPortal } from '../portal';\r\nimport { scheduleCallback, shouldYeildToHost } from '../scheduling';\r\n\r\nplatform.scheduleCallback = scheduleCallback;\r\nplatform.shouldYeildToHost = shouldYeildToHost;\r\nplatform.createNativeElement = createDomElement as typeof platform.createNativeElement;\r\nplatform.applyCommits = mutateDom as typeof platform.applyCommits;\r\nplatform.detectIsPortal = detectIsPortal as typeof platform.detectIsPortal;\r\nplatform.unmountPortal = unmountPortal as typeof platform.unmountPortal;\r\n\r\nconst roots = new Map();\r\n\r\nfunction render(element: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n throw new Error(`render expects to receive container as Element!`);\r\n }\r\n\r\n const isMounted = !detectIsUndefined(roots.get(container));\r\n let rootId = null;\r\n\r\n if (!isMounted) {\r\n rootId = roots.size;\r\n\r\n roots.set(container, rootId);\r\n container.innerHTML = '';\r\n } else {\r\n rootId = roots.get(container);\r\n }\r\n\r\n const callback = () => {\r\n effectStoreHelper.set(rootId); // important order!\r\n resetNodeCache();\r\n\r\n const currentRootFiber = currentRootHelper.get();\r\n const fiber = new Fiber({\r\n nativeElement: container,\r\n instance: new TagVirtualNode({\r\n name: ROOT,\r\n children: flatten([element]) as Array,\r\n }),\r\n alternate: currentRootFiber,\r\n effectTag: isMounted ? EffectTag.UPDATE : EffectTag.PLACEMENT,\r\n });\r\n\r\n currentRootFiber && (currentRootFiber.alternate = null);\r\n fiberMountHelper.reset();\r\n wipRootHelper.set(fiber);\r\n nextUnitOfWorkHelper.set(fiber);\r\n };\r\n\r\n platform.scheduleCallback(callback, { priority: TaskPriority.NORMAL });\r\n}\r\n\r\nexport { render, roots };\r\n","export * from './scheduling';\r\nexport * from './model';\r\n","export type Callback = () => boolean;\r\n\r\nexport type Task = {\r\n id: number;\r\n priority: TaskPriority;\r\n calllback: () => void;\r\n};\r\n\r\nexport enum TaskPriority {\r\n HIGH = 2,\r\n NORMAL = 1,\r\n}\r\n","import { type ScheduleCallbackOptions, getTime, workLoop, wipRootHelper, TaskPriority } from '@dark-engine/core';\r\nimport { type Callback } from './model';\r\n\r\ntype QueueByPriority = {\r\n hight: Array;\r\n normal: Array;\r\n low: Array;\r\n};\r\n\r\nconst queueByPriority: QueueByPriority = {\r\n hight: [],\r\n normal: [],\r\n low: [],\r\n};\r\nconst YEILD_INTERVAL = 10;\r\nlet scheduledCallback: Callback = null;\r\nlet deadline = 0;\r\nlet isMessageLoopRunning = false;\r\nlet currentTask: Task = null;\r\n\r\nclass Task {\r\n public static nextTaskId = 0;\r\n public id: number;\r\n public time: number;\r\n public timeoutMs: number;\r\n public priority: TaskPriority;\r\n public callback: () => void;\r\n\r\n constructor(options: Omit) {\r\n this.id = ++Task.nextTaskId;\r\n this.time = options.time;\r\n this.timeoutMs = options.timeoutMs;\r\n this.priority = options.priority;\r\n this.callback = options.callback;\r\n }\r\n}\r\n\r\nconst shouldYeildToHost = () => getTime() >= deadline;\r\n\r\nfunction scheduleCallback(callback: () => void, options?: ScheduleCallbackOptions) {\r\n const { priority = TaskPriority.NORMAL, timeoutMs } = options || {};\r\n const task = new Task({ time: getTime(), timeoutMs, priority, callback });\r\n const map: Record void> = {\r\n [TaskPriority.HIGH]: () => queueByPriority.hight.push(task),\r\n [TaskPriority.NORMAL]: () => queueByPriority.normal.push(task),\r\n [TaskPriority.LOW]: () => queueByPriority.low.push(task),\r\n };\r\n\r\n map[task.priority]();\r\n executeTasks();\r\n}\r\n\r\nfunction pick(queue: Array) {\r\n if (!queue.length) return false;\r\n currentTask = queue.shift();\r\n\r\n currentTask.callback();\r\n requestCallback(workLoop);\r\n\r\n return true;\r\n}\r\n\r\nfunction executeTasks() {\r\n const isBusy = Boolean(wipRootHelper.get());\r\n\r\n if (!isBusy) {\r\n checkOverdueTasks() ||\r\n pick(queueByPriority.hight) ||\r\n pick(queueByPriority.normal) ||\r\n requestIdleCallback(() => pick(queueByPriority.low));\r\n }\r\n}\r\n\r\nfunction checkOverdueTasks() {\r\n const [task] = queueByPriority.low;\r\n\r\n if (task && task.timeoutMs > 0 && getTime() - task.time > task.timeoutMs) {\r\n pick(queueByPriority.low);\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction performWorkUntilDeadline() {\r\n if (scheduledCallback) {\r\n deadline = getTime() + YEILD_INTERVAL;\r\n\r\n try {\r\n const hasMoreWork = scheduledCallback();\r\n\r\n if (!hasMoreWork) {\r\n currentTask = null;\r\n isMessageLoopRunning = false;\r\n scheduledCallback = null;\r\n executeTasks();\r\n } else {\r\n port.postMessage(null);\r\n }\r\n } catch (error) {\r\n port.postMessage(null);\r\n throw error;\r\n }\r\n } else {\r\n isMessageLoopRunning = false;\r\n }\r\n}\r\n\r\nfunction requestCallback(callback: Callback) {\r\n if (process.env.NODE_ENV === 'test') {\r\n return requestCallbackSync(callback);\r\n }\r\n\r\n scheduledCallback = callback;\r\n\r\n if (!isMessageLoopRunning) {\r\n isMessageLoopRunning = true;\r\n port.postMessage(null);\r\n }\r\n}\r\n\r\nfunction requestCallbackSync(callback: Callback) {\r\n while (callback()) {\r\n //\r\n }\r\n executeTasks();\r\n currentTask = null;\r\n}\r\n\r\nlet channel: MessageChannel = null;\r\nlet port: MessagePort = null;\r\n\r\nfunction setup() {\r\n if (process.env.NODE_ENV === 'test') {\r\n return;\r\n }\r\n\r\n channel = new MessageChannel();\r\n port = channel.port2;\r\n\r\n channel.port1.onmessage = performWorkUntilDeadline;\r\n}\r\n\r\nsetup();\r\n\r\nexport { shouldYeildToHost, scheduleCallback };\r\n","export * from './use-style';\r\n","import { useMemo, detectIsUndefined } from '@dark-engine/core';\r\n\r\nfunction styled(strings: TemplateStringsArray, ...args: Array): string {\r\n const style = useMemo(() => {\r\n return strings\r\n .map((x, idx) => x + (!detectIsUndefined(args[idx]) ? args[idx] : ''))\r\n .join('')\r\n .replace(/;\\s*/gm, ';')\r\n .replace(/:\\s*/gm, ':')\r\n .trim();\r\n }, [strings, ...args]);\r\n\r\n return style;\r\n}\r\n\r\ntype Style = Record;\r\n\r\ntype Config = (x: typeof styled) => T;\r\n\r\nfunction useStyle(config: Config) {\r\n return config(styled);\r\n}\r\n\r\nexport { useStyle };\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__dark_engine_core__;","// 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","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\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 { render } from './render';\r\nexport { createRoot } from './create-root';\r\nexport { createPortal } from './portal';\r\nexport { useStyle } from './use-style';\r\nexport type { SyntheticEvent } from './events';\r\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/packages/platform-browser/umd/dark-platform-browser.production.min.js b/packages/platform-browser/umd/dark-platform-browser.production.min.js index fa6fa943..9753b14c 100644 --- a/packages/platform-browser/umd/dark-platform-browser.production.min.js +++ b/packages/platform-browser/umd/dark-platform-browser.production.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@dark-engine/core")):"function"==typeof define&&define.amd?define("DarkPlatformBrowser",["@dark-engine/core"],t):"object"==typeof exports?exports.DarkPlatformBrowser=t(require("@dark-engine/core")):e.DarkPlatformBrowser=t(e.DarkCore)}(self,(e=>(()=>{"use strict";var t={317:t=>{t.exports=e}},n={};function r(e){var a=n[e];if(void 0!==a)return a.exports;var o=n[e]={exports:{}};return t[e](o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{r.r(a),r.d(a,{createPortal:()=>n,render:()=>C,useStyle:()=>D});var e=r(317),t=Symbol("portal");function n(e,n){var r;return n instanceof Element?o(((r={})[t]=n,r.slot=e,r)):null}var o=(0,e.createComponent)((function(n){var r=n.slot,a=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},m=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i},v=function(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a0)&&!(r=o.next()).done;)i.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}(w.low,1)[0])&&t.timeoutMs>0&&(0,e.getTime)()-t.time>t.timeoutMs&&(M(w.low),1)||M(w.hight)||M(w.normal)||requestIdleCallback((function(){return M(w.low)}))}var I,P=null,H=null;P=new MessageChannel,H=P.port2,P.port1.onmessage=function(){if(x){S=(0,e.getTime)()+10;try{x()?H.postMessage(null):(N=!1,x=null,O())}catch(e){throw H.postMessage(null),e}}else N=!1},function(e){e[e.HIGH=2]="HIGH",e[e.NORMAL=1]="NORMAL"}(I||(I={})),e.platform.scheduleCallback=function(t,n){var r,a=n||{},o=a.priority,i=void 0===o?e.TaskPriority.NORMAL:o,l=a.timeoutMs,c=new k({time:(0,e.getTime)(),timeoutMs:l,priority:i,callback:t});((r={})[e.TaskPriority.HIGH]=function(){return w.hight.push(c)},r[e.TaskPriority.NORMAL]=function(){return w.normal.push(c)},r[e.TaskPriority.LOW]=function(){return w.low.push(c)},r)[c.priority](),O()},e.platform.shouldYeildToHost=function(){return(0,e.getTime)()>=S},e.platform.createNativeElement=function(t){if(!(0,e.detectIsVirtualNode)(t.instance))throw new Error("createDomElement receives only Element!");return function(t){var n,r=((n={})[e.NodeType.TAG]=function(e){var t,n=e;return t=n.name,Boolean({svg:!0,circle:!0,ellipse:!0,g:!0,text:!0,tspan:!0,textPath:!0,path:!0,polygon:!0,polyline:!0,line:!0,rect:!0,use:!0,image:!0,symbol:!0,defs:!0,linearGradient:!0,radialGradient:!0,stop:!0,clipPath:!0,pattern:!0,mask:!0,marker:!0}[t])?document.createElementNS("http://www.w3.org/2000/svg",n.name):document.createElement(n.name)},n[e.NodeType.TEXT]=function(e){var t=e;return document.createTextNode(t.value)},n[e.NodeType.COMMENT]=function(e){var t=e;return document.createComment(t.value)},n);return r[t.type](t)}(t.instance)},e.platform.applyCommits=function(t){var n,r,a,o=e.fromHookUpdateHelper.get(),c=function(e){var t=e.parent;if(i(e.instance))return e;for(;t&&!t.nativeElement;)i(t.instance)?t.nativeElement=l(t.instance):t=t.parent;return t}(t),f=c.nativeElement;if(null!==t.nativeElement&&t.effectTag===e.EffectTag.PLACEMENT){var w=T.get(f),x=c.alternate?!(0,e.detectIsUndefined)(w)&&function(t,n){for(var r=t;r;){if(r.alternate){var a=r.alternate;return(0,e.detectIsCommentVirtualNode)(a.instance)&&a.instance.value===e.EMPTY_NODE}if((r=r.parent)===n)return!1}return!1}(t,c)?w:null===w?null:b(t,f):o?b(t,f):null;if(T.set(f,x),x)f.insertBefore(t.nativeElement,x),t.mountedToHost=!0,function(t,n){var r=t;do{if(!r)return!1;if((r=r.nextSibling||r.parent.nextSibling)&&r.parent===n)break}while(!r);return r.effectTag===e.EffectTag.UPDATE}(t,c)&&T.delete(f);else{var S=E.get(f);(0,e.detectIsUndefined)(S)&&(S=document.createDocumentFragment(),E.set(f,S)),S.appendChild(t.nativeElement),t.mountedToHost=!0,function(e,t){var n=e;if(n.nextSibling&&i(n.nextSibling.instance))return!1;for(;!n.nextSibling;)if((n=n.parent)===t||n.nativeElement)return!1;return!0}(t,c)||(f.appendChild(S),E.delete(f),T.delete(f))}!function(t,n){var r,a;if((0,e.detectIsTagVirtualNode)(n)){var o=Object.keys(n.attrs);try{for(var i=d(o),l=i.next();!l.done;l=i.next()){var c=l.value,f=n.attrs[c];c!==e.ATTR_REF?(0,e.detectIsFunction)(f)?s(c)&&u({target:t,handler:f,eventName:p(c)}):(0,e.detectIsUndefined)(f)||g[c]||(h({tagName:n.name,value:f,attrName:c,element:t}),t.setAttribute(c,f)):y(f,t)}}catch(e){r={error:e}}finally{try{l&&!l.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}}}(t.nativeElement,t.instance)}else if(null!==t.nativeElement&&t.effectTag===e.EffectTag.UPDATE){if(!(0,e.detectIsVirtualNode)(t.alternate.instance)||!(0,e.detectIsVirtualNode)(t.instance))return;var N=t.alternate.instance,k=t.instance;n=t.nativeElement,r=N,a=k,(0,e.detectIsTextVirtualNode)(r)&&(0,e.detectIsTextVirtualNode)(a)&&r.value!==a.value?n.textContent=a.value:(0,e.detectIsTagVirtualNode)(r)&&(0,e.detectIsTagVirtualNode)(a)&&function(t,n,r){var a,o,i=new Set(v(v([],m(Object.keys(n.attrs)),!1),m(Object.keys(r.attrs)),!1));try{for(var l=d(i),c=l.next();!c.done;c=l.next()){var f=c.value,E=n.attrs[f],T=r.attrs[f];f!==e.ATTR_REF?(0,e.detectIsUndefined)(T)?t.removeAttribute(f):(0,e.detectIsFunction)(E)?s(f)&&E!==T&&u({target:t,handler:T,eventName:p(f)}):g[f]||E===T||(h({tagName:r.name,value:T,attrName:f,element:t}),t.setAttribute(f,T)):y(E,t)}}catch(e){a={error:e}}finally{try{c&&!c.done&&(o=l.return)&&o.call(l)}finally{if(a)throw a.error}}}(n,r,a)}else t.effectTag===e.EffectTag.DELETION&&function(t,n){for(var r=t,a=!0,o=!1;r;)if(o||r.nativeElement&&(!i(r.instance)&&n.removeChild(r.nativeElement),a=!1),r.child&&a)r=r.child,o=!1;else if(r.nextSibling&&r.nextSibling!==t.nextSibling){if(r.nextSibling.effectTag===e.EffectTag.DELETION)return;a=!0,o=!1,r=r.nextSibling}else r.parent&&r!==t&&r.parent!==t&&r.parent!==t.parent?(a=!1,o=!0,r=r.parent):r=null}(t,f)},e.platform.detectIsPortal=i,e.platform.unmountPortal=function(e){for(var t=e,n=!0,r=!1;t;)!r&&i(t.instance)&&(l(t.instance).innerHTML=""),t.portalHost||(n=!1),t.child&&n?(t=t.child,r=!1):t.nextSibling&&t.nextSibling!==e.nextSibling?(n=!0,r=!1,t=t.nextSibling):t.parent&&t!==e&&t.parent!==e&&t.parent!==e.parent?(n=!1,r=!0,t=t.parent):t=null};var A=new Map;function C(t,n){if(!(n instanceof Element))throw new Error("render expects to receive container as Element!");var r=!(0,e.detectIsUndefined)(A.get(n)),a=null;r?a=A.get(n):(a=A.size,A.set(n,a),n.innerHTML=""),e.platform.scheduleCallback((function(){e.effectStoreHelper.set(a),T=new Map;var o=e.currentRootHelper.get(),i=new e.Fiber({nativeElement:n,instance:new e.TagVirtualNode({name:e.ROOT,children:(0,e.flatten)([t])}),alternate:o,effectTag:r?e.EffectTag.UPDATE:e.EffectTag.PLACEMENT});o&&(o.alternate=null),e.fiberMountHelper.reset(),e.wipRootHelper.set(i),e.nextUnitOfWorkHelper.set(i)}),{priority:e.TaskPriority.NORMAL})}var R=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i},j=function(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a(()=>{"use strict";var t={317:t=>{t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{r.r(o),r.d(o,{createPortal:()=>n,createRoot:()=>L,render:()=>C,useStyle:()=>V});var e=r(317),t=Symbol("portal");function n(e,n){var r;return n instanceof Element?a(((r={})[t]=n,r.slot=e,r)):null}var a=(0,e.createComponent)((function(n){var r=n.slot,o=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);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.")},m=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i},v=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o0)&&!(r=a.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}(x.low,1)[0])&&t.timeoutMs>0&&(0,e.getTime)()-t.time>t.timeoutMs&&(O(x.low),1)||O(x.hight)||O(x.normal)||requestIdleCallback((function(){return O(x.low)}))}var P,H=null,A=null;H=new MessageChannel,A=H.port2,H.port1.onmessage=function(){if(S){N=(0,e.getTime)()+10;try{S()?A.postMessage(null):(k=!1,S=null,I())}catch(e){throw A.postMessage(null),e}}else k=!1},function(e){e[e.HIGH=2]="HIGH",e[e.NORMAL=1]="NORMAL"}(P||(P={})),e.platform.scheduleCallback=function(t,n){var r,o=n||{},a=o.priority,i=void 0===a?e.TaskPriority.NORMAL:a,l=o.timeoutMs,u=new M({time:(0,e.getTime)(),timeoutMs:l,priority:i,callback:t});((r={})[e.TaskPriority.HIGH]=function(){return x.hight.push(u)},r[e.TaskPriority.NORMAL]=function(){return x.normal.push(u)},r[e.TaskPriority.LOW]=function(){return x.low.push(u)},r)[u.priority](),I()},e.platform.shouldYeildToHost=function(){return(0,e.getTime)()>=N},e.platform.createNativeElement=function(t){if(!(0,e.detectIsVirtualNode)(t.instance))throw new Error("createDomElement receives only Element!");return function(t){var n,r=((n={})[e.NodeType.TAG]=function(e){var t,n=e;return t=n.name,Boolean({svg:!0,circle:!0,ellipse:!0,g:!0,text:!0,tspan:!0,textPath:!0,path:!0,polygon:!0,polyline:!0,line:!0,rect:!0,use:!0,image:!0,symbol:!0,defs:!0,linearGradient:!0,radialGradient:!0,stop:!0,clipPath:!0,pattern:!0,mask:!0,marker:!0}[t])?document.createElementNS("http://www.w3.org/2000/svg",n.name):document.createElement(n.name)},n[e.NodeType.TEXT]=function(e){var t=e;return document.createTextNode(t.value)},n[e.NodeType.COMMENT]=function(e){var t=e;return document.createComment(t.value)},n);return r[t.type](t)}(t.instance)},e.platform.applyCommits=function(t){var n,r,o,a=e.fromHookUpdateHelper.get(),u=function(e){var t=e.parent;if(i(e.instance))return e;for(;t&&!t.nativeElement;)i(t.instance)?t.nativeElement=l(t.instance):t=t.parent;return t}(t),f=u.nativeElement;if(null!==t.nativeElement&&t.effectTag===e.EffectTag.PLACEMENT){var T=b.get(f),x=u.alternate?!(0,e.detectIsUndefined)(T)&&function(t,n){for(var r=t;r;){if(r.alternate){var o=r.alternate;return(0,e.detectIsCommentVirtualNode)(o.instance)&&o.instance.value===e.EMPTY_NODE}if((r=r.parent)===n)return!1}return!1}(t,u)?T:null===T?null:w(t,f):a?w(t,f):null;if(b.set(f,x),x)f.insertBefore(t.nativeElement,x),t.mountedToHost=!0,function(t,n){var r=t;do{if(!r)return!1;if((r=r.nextSibling||r.parent.nextSibling)&&r.parent===n)break}while(!r);return r.effectTag===e.EffectTag.UPDATE}(t,u)&&b.delete(f);else{var S=E.get(f);(0,e.detectIsUndefined)(S)&&(S=document.createDocumentFragment(),E.set(f,S)),S.appendChild(t.nativeElement),t.mountedToHost=!0,function(e,t){var n=e;if(n.nextSibling&&i(n.nextSibling.instance))return!1;for(;!n.nextSibling;)if((n=n.parent)===t||n.nativeElement)return!1;return!0}(t,u)||(f.appendChild(S),E.delete(f),b.delete(f))}!function(t,n){var r,o;if((0,e.detectIsTagVirtualNode)(n)){var a=Object.keys(n.attrs);try{for(var i=d(a),l=i.next();!l.done;l=i.next()){var u=l.value,f=n.attrs[u];u!==e.ATTR_REF?(0,e.detectIsFunction)(f)?s(u)&&c({target:t,handler:f,eventName:p(u)}):(0,e.detectIsUndefined)(f)||g[u]||(h({tagName:n.name,value:f,attrName:u,element:t}),t.setAttribute(u,f)):y(f,t)}}catch(e){r={error:e}}finally{try{l&&!l.done&&(o=i.return)&&o.call(i)}finally{if(r)throw r.error}}}}(t.nativeElement,t.instance)}else if(null!==t.nativeElement&&t.effectTag===e.EffectTag.UPDATE){if(!(0,e.detectIsVirtualNode)(t.alternate.instance)||!(0,e.detectIsVirtualNode)(t.instance))return;var N=t.alternate.instance,k=t.instance;n=t.nativeElement,r=N,o=k,(0,e.detectIsTextVirtualNode)(r)&&(0,e.detectIsTextVirtualNode)(o)&&r.value!==o.value?n.textContent=o.value:(0,e.detectIsTagVirtualNode)(r)&&(0,e.detectIsTagVirtualNode)(o)&&function(t,n,r){var o,a,i=new Set(v(v([],m(Object.keys(n.attrs)),!1),m(Object.keys(r.attrs)),!1));try{for(var l=d(i),u=l.next();!u.done;u=l.next()){var f=u.value,E=n.attrs[f],b=r.attrs[f];f!==e.ATTR_REF?(0,e.detectIsUndefined)(b)?t.removeAttribute(f):(0,e.detectIsFunction)(E)?s(f)&&E!==b&&c({target:t,handler:b,eventName:p(f)}):g[f]||E===b||(h({tagName:r.name,value:b,attrName:f,element:t}),t.setAttribute(f,b)):y(E,t)}}catch(e){o={error:e}}finally{try{u&&!u.done&&(a=l.return)&&a.call(l)}finally{if(o)throw o.error}}}(n,r,o)}else t.effectTag===e.EffectTag.DELETION&&function(t,n){for(var r=t,o=!0,a=!1;r;)if(a||r.nativeElement&&(!i(r.instance)&&n.removeChild(r.nativeElement),o=!1),r.child&&o)r=r.child,a=!1;else if(r.nextSibling&&r.nextSibling!==t.nextSibling){if(r.nextSibling.effectTag===e.EffectTag.DELETION)return;o=!0,a=!1,r=r.nextSibling}else r.parent&&r!==t&&r.parent!==t&&r.parent!==t.parent?(o=!1,a=!0,r=r.parent):r=null}(t,f)},e.platform.detectIsPortal=i,e.platform.unmountPortal=function(e){for(var t=e,n=!0,r=!1;t;)!r&&i(t.instance)&&(l(t.instance).innerHTML=""),t.portalHost||(n=!1),t.child&&n?(t=t.child,r=!1):t.nextSibling&&t.nextSibling!==e.nextSibling?(n=!0,r=!1,t=t.nextSibling):t.parent&&t!==e&&t.parent!==e&&t.parent!==e.parent?(n=!1,r=!0,t=t.parent):t=null};var R=new Map;function C(t,n){if(!(n instanceof Element))throw new Error("render expects to receive container as Element!");var r=!(0,e.detectIsUndefined)(R.get(n)),o=null;r?o=R.get(n):(o=R.size,R.set(n,o),n.innerHTML=""),e.platform.scheduleCallback((function(){e.effectStoreHelper.set(o),T();var a=e.currentRootHelper.get(),i=new e.Fiber({nativeElement:n,instance:new e.TagVirtualNode({name:e.ROOT,children:(0,e.flatten)([t])}),alternate:a,effectTag:r?e.EffectTag.UPDATE:e.EffectTag.PLACEMENT});a&&(a.alternate=null),e.fiberMountHelper.reset(),e.wipRootHelper.set(i),e.nextUnitOfWorkHelper.set(i)}),{priority:e.TaskPriority.NORMAL})}function L(t){return{render:function(e){return C(e,t)},unmount:function(){var n=R.get(t);(0,e.unmountRoot)(n,(function(){T(),R.delete(t),t.innerHTML=""}))}}}var j=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i},D=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__317__;","// 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};","import {\r\n type Fiber,\r\n type DarkElement,\r\n type ComponentFactory,\r\n createComponent,\r\n detectIsComponentFactory,\r\n error,\r\n useMemo,\r\n} from '@dark-engine/core';\r\n\r\nconst $$portal = Symbol('portal');\r\n\r\nfunction createPortal(slot: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n if (process.env.NODE_ENV === 'development') {\r\n error(`[Dark]: createPortal receives only Element as container!`);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return Portal({ [$$portal]: container, slot });\r\n}\r\n\r\nconst Portal = createComponent(\r\n ({ slot, ...rest }) => {\r\n useMemo(() => (rest[$$portal].innerHTML = ''), []);\r\n\r\n return slot;\r\n },\r\n { token: $$portal },\r\n);\r\n\r\nconst detectIsPortal = (factory: unknown): factory is ComponentFactory =>\r\n detectIsComponentFactory(factory) && factory.token === $$portal;\r\nconst getPortalContainer = (factory: unknown): Element => (detectIsPortal(factory) ? factory.props[$$portal] : null);\r\n\r\nfunction unmountPortal(fiber: Fiber) {\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n let isReturn = false;\r\n\r\n while (nextFiber) {\r\n if (!isReturn && detectIsPortal(nextFiber.instance)) {\r\n const container = getPortalContainer(nextFiber.instance);\r\n\r\n container.innerHTML = '';\r\n }\r\n\r\n if (!nextFiber.portalHost) {\r\n isDeepWalking = false;\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking) {\r\n nextFiber = nextFiber.child;\r\n isReturn = false;\r\n } else if (nextFiber.nextSibling && nextFiber.nextSibling !== fiber.nextSibling) {\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = nextFiber.nextSibling;\r\n } else if (\r\n nextFiber.parent &&\r\n nextFiber !== fiber &&\r\n nextFiber.parent !== fiber &&\r\n nextFiber.parent !== fiber.parent\r\n ) {\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 { createPortal, detectIsPortal, getPortalContainer, unmountPortal };\r\n","import { detectIsFunction, eventsHelper } from '@dark-engine/core';\r\n\r\ntype BrowserEventConstructor = (type: string, event: Event) => void;\r\n\r\nclass SyntheticEvent {\r\n public type = '';\r\n public sourceEvent: E = null;\r\n public target: T = null;\r\n private propagation = true;\r\n\r\n constructor(options: Pick, 'sourceEvent' | 'target'>) {\r\n this.type = options.sourceEvent.type;\r\n this.sourceEvent = options.sourceEvent;\r\n this.target = options.target;\r\n }\r\n\r\n public stopPropagation() {\r\n this.propagation = false;\r\n this.sourceEvent.stopPropagation();\r\n }\r\n\r\n public preventDefault() {\r\n this.sourceEvent.preventDefault();\r\n }\r\n\r\n public getPropagation() {\r\n return this.propagation;\r\n }\r\n}\r\n\r\ntype DelegateEventOptions = {\r\n target: Element;\r\n eventName: string;\r\n handler: (e: Event) => void;\r\n};\r\n\r\nfunction delegateEvent(options: DelegateEventOptions) {\r\n const { target, eventName, handler } = options;\r\n const eventsStore = eventsHelper.get();\r\n const handlerMap = eventsStore.get(eventName);\r\n\r\n if (!handlerMap) {\r\n const rootHandler = (event: Event) => {\r\n const fireEvent = eventsStore.get(eventName).get(event.target);\r\n const target = event.target as Element;\r\n let syntheticEvent: SyntheticEvent = null;\r\n\r\n if (detectIsFunction(fireEvent)) {\r\n syntheticEvent = new SyntheticEvent({\r\n sourceEvent: event,\r\n target,\r\n });\r\n fireEvent(syntheticEvent);\r\n }\r\n\r\n if (syntheticEvent ? syntheticEvent.getPropagation() : target.parentElement) {\r\n target.parentElement.dispatchEvent(new (event.constructor as BrowserEventConstructor)(event.type, event));\r\n }\r\n };\r\n\r\n eventsStore.set(eventName, new WeakMap([[target, handler]]));\r\n document.addEventListener(eventName, rootHandler, true);\r\n } else {\r\n handlerMap.set(target, handler);\r\n }\r\n}\r\n\r\nconst detectIsEvent = (attrName: string) => attrName.startsWith('on');\r\n\r\nconst getEventName = (attrName: string) => attrName.slice(2, attrName.length).toLowerCase();\r\n\r\nexport { SyntheticEvent, delegateEvent, detectIsEvent, getEventName };\r\n","import {\r\n type Fiber,\r\n type VirtualNode,\r\n type TagVirtualNode,\r\n type TextVirtualNode,\r\n type CommentVirtualNode,\r\n type MutableRef,\r\n EffectTag,\r\n detectIsFunction,\r\n detectIsUndefined,\r\n NodeType,\r\n detectIsVirtualNode,\r\n detectIsTagVirtualNode,\r\n detectIsTextVirtualNode,\r\n detectIsCommentVirtualNode,\r\n detectIsRef,\r\n ATTR_KEY,\r\n ATTR_REF,\r\n EMPTY_NODE,\r\n fromHookUpdateHelper,\r\n} from '@dark-engine/core';\r\nimport { detectIsPortal, getPortalContainer } from '../portal';\r\nimport { delegateEvent, detectIsEvent, getEventName } from '../events';\r\nimport type { DomElement } from './model';\r\n\r\nconst attrBlackListMap = {\r\n [ATTR_KEY]: true,\r\n [ATTR_REF]: true,\r\n};\r\n\r\nfunction createElement(vNode: VirtualNode): DomElement {\r\n const map = {\r\n [NodeType.TAG]: (vNode: VirtualNode) => {\r\n const tagNode = vNode as TagVirtualNode;\r\n const node = detectIsSvgElement(tagNode.name)\r\n ? document.createElementNS('http://www.w3.org/2000/svg', tagNode.name)\r\n : document.createElement(tagNode.name);\r\n\r\n return node;\r\n },\r\n [NodeType.TEXT]: (vNode: VirtualNode) => {\r\n const textNode = vNode as TextVirtualNode;\r\n const node = document.createTextNode(textNode.value);\r\n\r\n return node;\r\n },\r\n [NodeType.COMMENT]: (vNode: VirtualNode) => {\r\n const commentNode = vNode as CommentVirtualNode;\r\n const node = document.createComment(commentNode.value);\r\n\r\n return node;\r\n },\r\n };\r\n\r\n return map[vNode.type](vNode);\r\n}\r\n\r\nfunction createDomElement(fiber: Fiber): DomElement {\r\n if (!detectIsVirtualNode(fiber.instance)) {\r\n throw new Error('createDomElement receives only Element!');\r\n }\r\n\r\n const vNode: VirtualNode = fiber.instance;\r\n\r\n return createElement(vNode);\r\n}\r\n\r\nfunction applyRef(ref: MutableRef, element: Element) {\r\n if (detectIsRef(ref)) {\r\n ref.current = element;\r\n }\r\n}\r\n\r\nfunction addAttributes(element: Element, vNode: VirtualNode) {\r\n if (!detectIsTagVirtualNode(vNode)) return;\r\n const attrNames = Object.keys(vNode.attrs);\r\n\r\n for (const attrName of attrNames) {\r\n const attrValue = vNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(attrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (detectIsFunction(attrValue)) {\r\n if (detectIsEvent(attrName)) {\r\n delegateEvent({\r\n target: element,\r\n handler: attrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!detectIsUndefined(attrValue) && !attrBlackListMap[attrName]) {\r\n upgradeInputAttributes({\r\n tagName: vNode.name,\r\n value: attrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n element.setAttribute(attrName, attrValue);\r\n }\r\n }\r\n}\r\n\r\nfunction updateAttributes(element: Element, vNode: TagVirtualNode, nextVNode: TagVirtualNode) {\r\n const attrNames = new Set([...Object.keys(vNode.attrs), ...Object.keys(nextVNode.attrs)]);\r\n\r\n for (const attrName of attrNames) {\r\n const prevAttrValue = vNode.attrs[attrName];\r\n const nextAttrValue = nextVNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(prevAttrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (!detectIsUndefined(nextAttrValue)) {\r\n if (detectIsFunction(prevAttrValue)) {\r\n if (detectIsEvent(attrName) && prevAttrValue !== nextAttrValue) {\r\n delegateEvent({\r\n target: element,\r\n handler: nextAttrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!attrBlackListMap[attrName] && prevAttrValue !== nextAttrValue) {\r\n upgradeInputAttributes({\r\n tagName: nextVNode.name,\r\n value: nextAttrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n element.setAttribute(attrName, nextAttrValue);\r\n }\r\n } else {\r\n element.removeAttribute(attrName);\r\n }\r\n }\r\n}\r\n\r\ntype UpgradeInputAttributesOptions = {\r\n tagName: string;\r\n element: Element;\r\n attrName: string;\r\n value: string | boolean;\r\n};\r\n\r\nfunction upgradeInputAttributes(options: UpgradeInputAttributesOptions) {\r\n const { tagName, element, attrName, value } = options;\r\n const map = {\r\n input: () => {\r\n const attrsMap = {\r\n value: true,\r\n checked: true,\r\n };\r\n\r\n if (attrsMap[attrName]) {\r\n element[attrName] = value;\r\n }\r\n },\r\n option: () => {\r\n const attrsMap = {\r\n selected: true,\r\n };\r\n\r\n if (attrsMap[attrName]) {\r\n element[attrName] = value;\r\n }\r\n },\r\n };\r\n\r\n map[tagName] && map[tagName]();\r\n}\r\n\r\nfunction updateDom(element: Element, instance: VirtualNode, nextInstance: VirtualNode) {\r\n if (\r\n detectIsTextVirtualNode(instance) &&\r\n detectIsTextVirtualNode(nextInstance) &&\r\n instance.value !== nextInstance.value\r\n ) {\r\n return (element.textContent = nextInstance.value);\r\n }\r\n\r\n if (detectIsTagVirtualNode(instance) && detectIsTagVirtualNode(nextInstance)) {\r\n return updateAttributes(element, instance, nextInstance);\r\n }\r\n}\r\n\r\nconst fragmentMap: Map = new Map();\r\nlet nodeCacheMap: Map = new Map();\r\n\r\nfunction resetNodeCache() {\r\n nodeCacheMap = new Map();\r\n}\r\n\r\nfunction mutateDom(fiber: Fiber) {\r\n const fromHookUpdate = fromHookUpdateHelper.get();\r\n const nextFiber = getFiberWithNativeElement(fiber);\r\n const parentNativeElement = nextFiber.nativeElement;\r\n\r\n if (fiber.nativeElement !== null && fiber.effectTag === EffectTag.PLACEMENT) {\r\n const cachedNode = nodeCacheMap.get(parentNativeElement);\r\n const node = nextFiber.alternate\r\n ? !detectIsUndefined(cachedNode) && canTakeNodeFromCache(fiber, nextFiber)\r\n ? cachedNode\r\n : cachedNode === null\r\n ? null\r\n : getNodeOnTheRight(fiber, parentNativeElement)\r\n : fromHookUpdate\r\n ? getNodeOnTheRight(fiber, parentNativeElement)\r\n : null;\r\n\r\n nodeCacheMap.set(parentNativeElement, node);\r\n\r\n if (node) {\r\n parentNativeElement.insertBefore(fiber.nativeElement, node);\r\n fiber.mountedToHost = true;\r\n if (isEndOfInsertion(fiber, nextFiber)) {\r\n nodeCacheMap.delete(parentNativeElement);\r\n }\r\n } else {\r\n let fragment = fragmentMap.get(parentNativeElement);\r\n\r\n if (detectIsUndefined(fragment)) {\r\n fragment = document.createDocumentFragment();\r\n fragmentMap.set(parentNativeElement, fragment);\r\n }\r\n\r\n fragment.appendChild(fiber.nativeElement);\r\n fiber.mountedToHost = true;\r\n\r\n if (!hasNextSibling(fiber, nextFiber)) {\r\n parentNativeElement.appendChild(fragment);\r\n fragmentMap.delete(parentNativeElement);\r\n nodeCacheMap.delete(parentNativeElement);\r\n }\r\n }\r\n\r\n addAttributes(fiber.nativeElement, fiber.instance as VirtualNode);\r\n } else if (fiber.nativeElement !== null && fiber.effectTag === EffectTag.UPDATE) {\r\n if (!detectIsVirtualNode(fiber.alternate.instance) || !detectIsVirtualNode(fiber.instance)) return;\r\n const vNode: VirtualNode = fiber.alternate.instance;\r\n const nextVNode: VirtualNode = fiber.instance;\r\n\r\n updateDom(fiber.nativeElement, vNode, nextVNode);\r\n } else if (fiber.effectTag === EffectTag.DELETION) {\r\n commitDeletion(fiber, parentNativeElement);\r\n }\r\n}\r\n\r\nfunction hasNextSibling(fiber: Fiber, rootFilber: Fiber) {\r\n let nextFiber = fiber;\r\n\r\n if (nextFiber.nextSibling && detectIsPortal(nextFiber.nextSibling.instance)) {\r\n return false;\r\n }\r\n\r\n while (!nextFiber.nextSibling) {\r\n nextFiber = nextFiber.parent;\r\n\r\n if (nextFiber === rootFilber || nextFiber.nativeElement) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction getFiberWithNativeElement(fiber: Fiber): Fiber {\r\n let nextFiber = fiber.parent;\r\n\r\n if (detectIsPortal(fiber.instance)) return fiber;\r\n\r\n while (nextFiber && !nextFiber.nativeElement) {\r\n if (detectIsPortal(nextFiber.instance)) {\r\n nextFiber.nativeElement = getPortalContainer(nextFiber.instance);\r\n } else {\r\n nextFiber = nextFiber.parent;\r\n }\r\n }\r\n\r\n return nextFiber;\r\n}\r\n\r\nfunction canTakeNodeFromCache(fiber: Fiber, parentFiber: Fiber) {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (nextFiber.alternate) {\r\n const alternate = nextFiber.alternate;\r\n const isEmptyNode = detectIsCommentVirtualNode(alternate.instance) && alternate.instance.value === EMPTY_NODE;\r\n\r\n return isEmptyNode;\r\n }\r\n\r\n nextFiber = nextFiber.parent;\r\n if (nextFiber === parentFiber) return false;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction isEndOfInsertion(fiber: Fiber, parentFiber: Fiber) {\r\n let nextFiber = fiber;\r\n\r\n do {\r\n if (!nextFiber) return false;\r\n nextFiber = nextFiber.nextSibling || nextFiber.parent.nextSibling;\r\n if (nextFiber && nextFiber.parent === parentFiber) break;\r\n } while (!nextFiber);\r\n\r\n if (nextFiber.effectTag === EffectTag.UPDATE) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getNodeOnTheRight(fiber: Fiber, parentElement: Element) {\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n\r\n while (nextFiber) {\r\n if (nextFiber.nativeElement && nextFiber.nativeElement.parentElement === parentElement) {\r\n return nextFiber.nativeElement;\r\n }\r\n\r\n if (nextFiber.nativeElement && !nextFiber.mountedToHost) {\r\n isDeepWalking = false;\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking) {\r\n nextFiber = nextFiber.child;\r\n } else if (nextFiber.nextSibling) {\r\n isDeepWalking = true;\r\n nextFiber = nextFiber.nextSibling;\r\n } else if (nextFiber.parent && nextFiber.parent.nativeElement !== parentElement) {\r\n isDeepWalking = false;\r\n nextFiber = nextFiber.parent;\r\n } else {\r\n nextFiber = null;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction commitDeletion(fiber: Fiber, parentElement: Element) {\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n let isReturn = false;\r\n\r\n while (nextFiber) {\r\n if (!isReturn) {\r\n if (nextFiber.nativeElement) {\r\n const isPortal = detectIsPortal(nextFiber.instance);\r\n\r\n !isPortal && parentElement.removeChild(nextFiber.nativeElement);\r\n isDeepWalking = false;\r\n }\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking) {\r\n nextFiber = nextFiber.child;\r\n isReturn = false;\r\n } else if (nextFiber.nextSibling && nextFiber.nextSibling !== fiber.nextSibling) {\r\n if (nextFiber.nextSibling.effectTag === EffectTag.DELETION) return;\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = nextFiber.nextSibling;\r\n } else if (\r\n nextFiber.parent &&\r\n nextFiber !== fiber &&\r\n nextFiber.parent !== fiber &&\r\n nextFiber.parent !== fiber.parent\r\n ) {\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\nfunction detectIsSvgElement(tagName) {\r\n const tagMap = {\r\n svg: true,\r\n circle: true,\r\n ellipse: true,\r\n g: true,\r\n text: true,\r\n tspan: true,\r\n textPath: true,\r\n path: true,\r\n polygon: true,\r\n polyline: true,\r\n line: true,\r\n rect: true,\r\n use: true,\r\n image: true,\r\n symbol: true,\r\n defs: true,\r\n linearGradient: true,\r\n radialGradient: true,\r\n stop: true,\r\n clipPath: true,\r\n pattern: true,\r\n mask: true,\r\n marker: true,\r\n };\r\n\r\n return Boolean(tagMap[tagName]);\r\n}\r\n\r\nexport { createDomElement, mutateDom, resetNodeCache };\r\n","import { type ScheduleCallbackOptions, getTime, workLoop, wipRootHelper, TaskPriority } from '@dark-engine/core';\r\nimport { type Callback } from './model';\r\n\r\ntype QueueByPriority = {\r\n hight: Array;\r\n normal: Array;\r\n low: Array;\r\n};\r\n\r\nconst queueByPriority: QueueByPriority = {\r\n hight: [],\r\n normal: [],\r\n low: [],\r\n};\r\nconst YEILD_INTERVAL = 10;\r\nlet scheduledCallback: Callback = null;\r\nlet deadline = 0;\r\nlet isMessageLoopRunning = false;\r\nlet currentTask: Task = null;\r\n\r\nclass Task {\r\n public static nextTaskId = 0;\r\n public id: number;\r\n public time: number;\r\n public timeoutMs: number;\r\n public priority: TaskPriority;\r\n public callback: () => void;\r\n\r\n constructor(options: Omit) {\r\n this.id = ++Task.nextTaskId;\r\n this.time = options.time;\r\n this.timeoutMs = options.timeoutMs;\r\n this.priority = options.priority;\r\n this.callback = options.callback;\r\n }\r\n}\r\n\r\nconst shouldYeildToHost = () => getTime() >= deadline;\r\n\r\nfunction scheduleCallback(callback: () => void, options?: ScheduleCallbackOptions) {\r\n const { priority = TaskPriority.NORMAL, timeoutMs } = options || {};\r\n const task = new Task({ time: getTime(), timeoutMs, priority, callback });\r\n const map: Record void> = {\r\n [TaskPriority.HIGH]: () => queueByPriority.hight.push(task),\r\n [TaskPriority.NORMAL]: () => queueByPriority.normal.push(task),\r\n [TaskPriority.LOW]: () => queueByPriority.low.push(task),\r\n };\r\n\r\n map[task.priority]();\r\n executeTasks();\r\n}\r\n\r\nfunction pick(queue: Array) {\r\n if (!queue.length) return false;\r\n currentTask = queue.shift();\r\n\r\n currentTask.callback();\r\n requestCallback(workLoop);\r\n\r\n return true;\r\n}\r\n\r\nfunction executeTasks() {\r\n const isBusy = Boolean(wipRootHelper.get());\r\n\r\n if (!isBusy) {\r\n checkOverdueTasks() ||\r\n pick(queueByPriority.hight) ||\r\n pick(queueByPriority.normal) ||\r\n requestIdleCallback(() => pick(queueByPriority.low));\r\n }\r\n}\r\n\r\nfunction checkOverdueTasks() {\r\n const [task] = queueByPriority.low;\r\n\r\n if (task && task.timeoutMs > 0 && getTime() - task.time > task.timeoutMs) {\r\n pick(queueByPriority.low);\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction performWorkUntilDeadline() {\r\n if (scheduledCallback) {\r\n deadline = getTime() + YEILD_INTERVAL;\r\n\r\n try {\r\n const hasMoreWork = scheduledCallback();\r\n\r\n if (!hasMoreWork) {\r\n currentTask = null;\r\n isMessageLoopRunning = false;\r\n scheduledCallback = null;\r\n executeTasks();\r\n } else {\r\n port.postMessage(null);\r\n }\r\n } catch (error) {\r\n port.postMessage(null);\r\n throw error;\r\n }\r\n } else {\r\n isMessageLoopRunning = false;\r\n }\r\n}\r\n\r\nfunction requestCallback(callback: Callback) {\r\n if (process.env.NODE_ENV === 'test') {\r\n return requestCallbackSync(callback);\r\n }\r\n\r\n scheduledCallback = callback;\r\n\r\n if (!isMessageLoopRunning) {\r\n isMessageLoopRunning = true;\r\n port.postMessage(null);\r\n }\r\n}\r\n\r\nfunction requestCallbackSync(callback: Callback) {\r\n while (callback()) {\r\n //\r\n }\r\n executeTasks();\r\n currentTask = null;\r\n}\r\n\r\nlet channel: MessageChannel = null;\r\nlet port: MessagePort = null;\r\n\r\nfunction setup() {\r\n if (process.env.NODE_ENV === 'test') {\r\n return;\r\n }\r\n\r\n channel = new MessageChannel();\r\n port = channel.port2;\r\n\r\n channel.port1.onmessage = performWorkUntilDeadline;\r\n}\r\n\r\nsetup();\r\n\r\nexport { shouldYeildToHost, scheduleCallback };\r\n","export type Callback = () => boolean;\r\n\r\nexport type Task = {\r\n id: number;\r\n priority: TaskPriority;\r\n calllback: () => void;\r\n};\r\n\r\nexport enum TaskPriority {\r\n HIGH = 2,\r\n NORMAL = 1,\r\n}\r\n","import {\r\n type DarkElement,\r\n type VirtualNodeFactory,\r\n type ComponentFactory,\r\n Fiber,\r\n EffectTag,\r\n platform,\r\n flatten,\r\n detectIsUndefined,\r\n TagVirtualNode,\r\n effectStoreHelper,\r\n wipRootHelper,\r\n currentRootHelper,\r\n nextUnitOfWorkHelper,\r\n fiberMountHelper,\r\n ROOT,\r\n TaskPriority,\r\n} from '@dark-engine/core';\r\nimport { createDomElement, mutateDom, resetNodeCache } from '../dom';\r\nimport { detectIsPortal, unmountPortal } from '../portal';\r\nimport { scheduleCallback, shouldYeildToHost } from '../scheduling';\r\n\r\nplatform.scheduleCallback = scheduleCallback;\r\nplatform.shouldYeildToHost = shouldYeildToHost;\r\nplatform.createNativeElement = createDomElement as typeof platform.createNativeElement;\r\nplatform.applyCommits = mutateDom as typeof platform.applyCommits;\r\nplatform.detectIsPortal = detectIsPortal as typeof platform.detectIsPortal;\r\nplatform.unmountPortal = unmountPortal as typeof platform.unmountPortal;\r\n\r\nconst roots = new Map();\r\n\r\nfunction render(element: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n throw new Error(`render expects to receive container as Element!`);\r\n }\r\n\r\n const isMounted = !detectIsUndefined(roots.get(container));\r\n let rootId = null;\r\n\r\n if (!isMounted) {\r\n rootId = roots.size;\r\n\r\n roots.set(container, rootId);\r\n container.innerHTML = '';\r\n } else {\r\n rootId = roots.get(container);\r\n }\r\n\r\n const callback = () => {\r\n effectStoreHelper.set(rootId); // important order!\r\n resetNodeCache();\r\n\r\n const currentRootFiber = currentRootHelper.get();\r\n const fiber = new Fiber({\r\n nativeElement: container,\r\n instance: new TagVirtualNode({\r\n name: ROOT,\r\n children: flatten([element]) as Array,\r\n }),\r\n alternate: currentRootFiber,\r\n effectTag: isMounted ? EffectTag.UPDATE : EffectTag.PLACEMENT,\r\n });\r\n\r\n currentRootFiber && (currentRootFiber.alternate = null);\r\n fiberMountHelper.reset();\r\n wipRootHelper.set(fiber);\r\n nextUnitOfWorkHelper.set(fiber);\r\n };\r\n\r\n platform.scheduleCallback(callback, { priority: TaskPriority.NORMAL });\r\n}\r\n\r\nexport { render };\r\n","import { useMemo, detectIsUndefined } from '@dark-engine/core';\r\n\r\nfunction styled(strings: TemplateStringsArray, ...args: Array): string {\r\n const style = useMemo(() => {\r\n return strings\r\n .map((x, idx) => x + (!detectIsUndefined(args[idx]) ? args[idx] : ''))\r\n .join('')\r\n .replace(/;\\s*/gm, ';')\r\n .replace(/:\\s*/gm, ':')\r\n .trim();\r\n }, [strings, ...args]);\r\n\r\n return style;\r\n}\r\n\r\ntype Style = Record;\r\n\r\ntype Config = (x: typeof styled) => T;\r\n\r\nfunction useStyle(config: Config) {\r\n return config(styled);\r\n}\r\n\r\nexport { useStyle };\r\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__317__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","$$portal","createPortal","slot","container","Element","Portal","createComponent","rest","useMemo","innerHTML","token","detectIsPortal","detectIsComponentFactory","getPortalContainer","props","options","type","sourceEvent","target","propagation","this","stopPropagation","preventDefault","getPropagation","delegateEvent","eventName","handler","eventsStore","eventsHelper","handlerMap","set","WeakMap","document","addEventListener","event","fireEvent","syntheticEvent","detectIsFunction","SyntheticEvent","parentElement","dispatchEvent","constructor","detectIsEvent","attrName","startsWith","getEventName","slice","length","toLowerCase","attrBlackListMap","ATTR_KEY","ATTR_REF","applyRef","ref","element","detectIsRef","current","upgradeInputAttributes","tagName","map","input","checked","option","selected","fragmentMap","Map","nodeCacheMap","getNodeOnTheRight","fiber","nextFiber","isDeepWalking","nativeElement","mountedToHost","child","nextSibling","parent","queueByPriority","hight","normal","low","scheduledCallback","deadline","isMessageLoopRunning","id","Task","nextTaskId","time","timeoutMs","priority","callback","pick","queue","shift","workLoop","port","postMessage","executeTasks","task","Boolean","wipRootHelper","getTime","requestIdleCallback","TaskPriority","channel","MessageChannel","port2","port1","onmessage","error","platform","push","detectIsVirtualNode","instance","Error","vNode","NodeType","tagNode","name","svg","circle","ellipse","g","text","tspan","textPath","path","polygon","polyline","line","rect","use","image","symbol","defs","linearGradient","radialGradient","stop","clipPath","pattern","mask","marker","createElementNS","createElement","textNode","createTextNode","commentNode","createComment","nextInstance","fromHookUpdate","fromHookUpdateHelper","getFiberWithNativeElement","parentNativeElement","effectTag","EffectTag","cachedNode","node","alternate","detectIsUndefined","parentFiber","detectIsCommentVirtualNode","EMPTY_NODE","canTakeNodeFromCache","insertBefore","isEndOfInsertion","delete","fragment","createDocumentFragment","appendChild","rootFilber","hasNextSibling","detectIsTagVirtualNode","attrNames","keys","attrs","attrValue","setAttribute","addAttributes","nextVNode","detectIsTextVirtualNode","textContent","Set","prevAttrValue","nextAttrValue","removeAttribute","updateAttributes","isReturn","removeChild","commitDeletion","portalHost","roots","render","isMounted","rootId","size","effectStoreHelper","currentRootFiber","currentRootHelper","Fiber","TagVirtualNode","ROOT","children","flatten","fiberMountHelper","nextUnitOfWorkHelper","styled","strings","style","x","idx","args","join","replace","trim","useStyle","config"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"dark-platform-browser.production.min.js","mappings":"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","sources":["webpack://DarkPlatformBrowser/webpack/universalModuleDefinition","webpack://DarkPlatformBrowser/external umd {\"root\":\"DarkCore\",\"commonjs2\":\"@dark-engine/core\",\"commonjs\":\"@dark-engine/core\",\"amd\":\"@dark-engine/core\"}","webpack://DarkPlatformBrowser/webpack/bootstrap","webpack://DarkPlatformBrowser/webpack/runtime/define property getters","webpack://DarkPlatformBrowser/webpack/runtime/hasOwnProperty shorthand","webpack://DarkPlatformBrowser/webpack/runtime/make namespace object","webpack://DarkPlatformBrowser/./src/portal/portal.tsx","webpack://DarkPlatformBrowser/./src/events/events.ts","webpack://DarkPlatformBrowser/./src/dom/dom.ts","webpack://DarkPlatformBrowser/./src/scheduling/scheduling.ts","webpack://DarkPlatformBrowser/./src/scheduling/model.ts","webpack://DarkPlatformBrowser/./src/render/render.ts","webpack://DarkPlatformBrowser/./src/create-root/create-root.tsx","webpack://DarkPlatformBrowser/./src/use-style/use-style.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@dark-engine/core\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DarkPlatformBrowser\", [\"@dark-engine/core\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DarkPlatformBrowser\"] = factory(require(\"@dark-engine/core\"));\n\telse\n\t\troot[\"DarkPlatformBrowser\"] = factory(root[\"DarkCore\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__317__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__317__;","// 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};","import {\r\n type Fiber,\r\n type DarkElement,\r\n type ComponentFactory,\r\n createComponent,\r\n detectIsComponentFactory,\r\n error,\r\n useMemo,\r\n} from '@dark-engine/core';\r\n\r\nconst $$portal = Symbol('portal');\r\n\r\nfunction createPortal(slot: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n if (process.env.NODE_ENV === 'development') {\r\n error(`[Dark]: createPortal receives only Element as container!`);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return Portal({ [$$portal]: container, slot });\r\n}\r\n\r\nconst Portal = createComponent(\r\n ({ slot, ...rest }) => {\r\n useMemo(() => (rest[$$portal].innerHTML = ''), []);\r\n\r\n return slot;\r\n },\r\n { token: $$portal },\r\n);\r\n\r\nconst detectIsPortal = (factory: unknown): factory is ComponentFactory =>\r\n detectIsComponentFactory(factory) && factory.token === $$portal;\r\nconst getPortalContainer = (factory: unknown): Element => (detectIsPortal(factory) ? factory.props[$$portal] : null);\r\n\r\nfunction unmountPortal(fiber: Fiber) {\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n let isReturn = false;\r\n\r\n while (nextFiber) {\r\n if (!isReturn && detectIsPortal(nextFiber.instance)) {\r\n const container = getPortalContainer(nextFiber.instance);\r\n\r\n container.innerHTML = '';\r\n }\r\n\r\n if (!nextFiber.portalHost) {\r\n isDeepWalking = false;\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking) {\r\n nextFiber = nextFiber.child;\r\n isReturn = false;\r\n } else if (nextFiber.nextSibling && nextFiber.nextSibling !== fiber.nextSibling) {\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = nextFiber.nextSibling;\r\n } else if (\r\n nextFiber.parent &&\r\n nextFiber !== fiber &&\r\n nextFiber.parent !== fiber &&\r\n nextFiber.parent !== fiber.parent\r\n ) {\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 { createPortal, detectIsPortal, getPortalContainer, unmountPortal };\r\n","import { detectIsFunction, eventsHelper } from '@dark-engine/core';\r\n\r\ntype BrowserEventConstructor = (type: string, event: Event) => void;\r\n\r\nclass SyntheticEvent {\r\n public type = '';\r\n public sourceEvent: E = null;\r\n public target: T = null;\r\n private propagation = true;\r\n\r\n constructor(options: Pick, 'sourceEvent' | 'target'>) {\r\n this.type = options.sourceEvent.type;\r\n this.sourceEvent = options.sourceEvent;\r\n this.target = options.target;\r\n }\r\n\r\n public stopPropagation() {\r\n this.propagation = false;\r\n this.sourceEvent.stopPropagation();\r\n }\r\n\r\n public preventDefault() {\r\n this.sourceEvent.preventDefault();\r\n }\r\n\r\n public getPropagation() {\r\n return this.propagation;\r\n }\r\n}\r\n\r\ntype DelegateEventOptions = {\r\n target: Element;\r\n eventName: string;\r\n handler: (e: Event) => void;\r\n};\r\n\r\nfunction delegateEvent(options: DelegateEventOptions) {\r\n const { target, eventName, handler } = options;\r\n const eventsStore = eventsHelper.get();\r\n const handlerMap = eventsStore.get(eventName);\r\n\r\n if (!handlerMap) {\r\n const rootHandler = (event: Event) => {\r\n const fireEvent = eventsStore.get(eventName).get(event.target);\r\n const target = event.target as Element;\r\n let syntheticEvent: SyntheticEvent = null;\r\n\r\n if (detectIsFunction(fireEvent)) {\r\n syntheticEvent = new SyntheticEvent({\r\n sourceEvent: event,\r\n target,\r\n });\r\n fireEvent(syntheticEvent);\r\n }\r\n\r\n if (syntheticEvent ? syntheticEvent.getPropagation() : target.parentElement) {\r\n target.parentElement.dispatchEvent(new (event.constructor as BrowserEventConstructor)(event.type, event));\r\n }\r\n };\r\n\r\n eventsStore.set(eventName, new WeakMap([[target, handler]]));\r\n document.addEventListener(eventName, rootHandler, true);\r\n eventsHelper.addUnsubscriber(() => document.removeEventListener(eventName, rootHandler, true));\r\n } else {\r\n handlerMap.set(target, handler);\r\n }\r\n}\r\n\r\nconst detectIsEvent = (attrName: string) => attrName.startsWith('on');\r\n\r\nconst getEventName = (attrName: string) => attrName.slice(2, attrName.length).toLowerCase();\r\n\r\nexport { SyntheticEvent, delegateEvent, detectIsEvent, getEventName };\r\n","import {\r\n type Fiber,\r\n type VirtualNode,\r\n type TagVirtualNode,\r\n type TextVirtualNode,\r\n type CommentVirtualNode,\r\n type MutableRef,\r\n EffectTag,\r\n detectIsFunction,\r\n detectIsUndefined,\r\n NodeType,\r\n detectIsVirtualNode,\r\n detectIsTagVirtualNode,\r\n detectIsTextVirtualNode,\r\n detectIsCommentVirtualNode,\r\n detectIsRef,\r\n ATTR_KEY,\r\n ATTR_REF,\r\n EMPTY_NODE,\r\n fromHookUpdateHelper,\r\n} from '@dark-engine/core';\r\nimport { detectIsPortal, getPortalContainer } from '../portal';\r\nimport { delegateEvent, detectIsEvent, getEventName } from '../events';\r\nimport type { DomElement } from './model';\r\n\r\nconst attrBlackListMap = {\r\n [ATTR_KEY]: true,\r\n [ATTR_REF]: true,\r\n};\r\n\r\nfunction createElement(vNode: VirtualNode): DomElement {\r\n const map = {\r\n [NodeType.TAG]: (vNode: VirtualNode) => {\r\n const tagNode = vNode as TagVirtualNode;\r\n const node = detectIsSvgElement(tagNode.name)\r\n ? document.createElementNS('http://www.w3.org/2000/svg', tagNode.name)\r\n : document.createElement(tagNode.name);\r\n\r\n return node;\r\n },\r\n [NodeType.TEXT]: (vNode: VirtualNode) => {\r\n const textNode = vNode as TextVirtualNode;\r\n const node = document.createTextNode(textNode.value);\r\n\r\n return node;\r\n },\r\n [NodeType.COMMENT]: (vNode: VirtualNode) => {\r\n const commentNode = vNode as CommentVirtualNode;\r\n const node = document.createComment(commentNode.value);\r\n\r\n return node;\r\n },\r\n };\r\n\r\n return map[vNode.type](vNode);\r\n}\r\n\r\nfunction createDomElement(fiber: Fiber): DomElement {\r\n if (!detectIsVirtualNode(fiber.instance)) {\r\n throw new Error('createDomElement receives only Element!');\r\n }\r\n\r\n const vNode: VirtualNode = fiber.instance;\r\n\r\n return createElement(vNode);\r\n}\r\n\r\nfunction applyRef(ref: MutableRef, element: Element) {\r\n if (detectIsRef(ref)) {\r\n ref.current = element;\r\n }\r\n}\r\n\r\nfunction addAttributes(element: Element, vNode: VirtualNode) {\r\n if (!detectIsTagVirtualNode(vNode)) return;\r\n const attrNames = Object.keys(vNode.attrs);\r\n\r\n for (const attrName of attrNames) {\r\n const attrValue = vNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(attrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (detectIsFunction(attrValue)) {\r\n if (detectIsEvent(attrName)) {\r\n delegateEvent({\r\n target: element,\r\n handler: attrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!detectIsUndefined(attrValue) && !attrBlackListMap[attrName]) {\r\n upgradeInputAttributes({\r\n tagName: vNode.name,\r\n value: attrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n element.setAttribute(attrName, attrValue);\r\n }\r\n }\r\n}\r\n\r\nfunction updateAttributes(element: Element, vNode: TagVirtualNode, nextVNode: TagVirtualNode) {\r\n const attrNames = new Set([...Object.keys(vNode.attrs), ...Object.keys(nextVNode.attrs)]);\r\n\r\n for (const attrName of attrNames) {\r\n const prevAttrValue = vNode.attrs[attrName];\r\n const nextAttrValue = nextVNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(prevAttrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (!detectIsUndefined(nextAttrValue)) {\r\n if (detectIsFunction(prevAttrValue)) {\r\n if (detectIsEvent(attrName) && prevAttrValue !== nextAttrValue) {\r\n delegateEvent({\r\n target: element,\r\n handler: nextAttrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!attrBlackListMap[attrName] && prevAttrValue !== nextAttrValue) {\r\n upgradeInputAttributes({\r\n tagName: nextVNode.name,\r\n value: nextAttrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n element.setAttribute(attrName, nextAttrValue);\r\n }\r\n } else {\r\n element.removeAttribute(attrName);\r\n }\r\n }\r\n}\r\n\r\ntype UpgradeInputAttributesOptions = {\r\n tagName: string;\r\n element: Element;\r\n attrName: string;\r\n value: string | boolean;\r\n};\r\n\r\nfunction upgradeInputAttributes(options: UpgradeInputAttributesOptions) {\r\n const { tagName, element, attrName, value } = options;\r\n const map = {\r\n input: () => {\r\n const attrsMap = {\r\n value: true,\r\n checked: true,\r\n };\r\n\r\n if (attrsMap[attrName]) {\r\n element[attrName] = value;\r\n }\r\n },\r\n option: () => {\r\n const attrsMap = {\r\n selected: true,\r\n };\r\n\r\n if (attrsMap[attrName]) {\r\n element[attrName] = value;\r\n }\r\n },\r\n };\r\n\r\n map[tagName] && map[tagName]();\r\n}\r\n\r\nfunction updateDom(element: Element, instance: VirtualNode, nextInstance: VirtualNode) {\r\n if (\r\n detectIsTextVirtualNode(instance) &&\r\n detectIsTextVirtualNode(nextInstance) &&\r\n instance.value !== nextInstance.value\r\n ) {\r\n return (element.textContent = nextInstance.value);\r\n }\r\n\r\n if (detectIsTagVirtualNode(instance) && detectIsTagVirtualNode(nextInstance)) {\r\n return updateAttributes(element, instance, nextInstance);\r\n }\r\n}\r\n\r\nconst fragmentMap: Map = new Map();\r\nlet nodeCacheMap: Map = new Map();\r\n\r\nfunction resetNodeCache() {\r\n nodeCacheMap = new Map();\r\n}\r\n\r\nfunction mutateDom(fiber: Fiber) {\r\n const fromHookUpdate = fromHookUpdateHelper.get();\r\n const nextFiber = getFiberWithNativeElement(fiber);\r\n const parentNativeElement = nextFiber.nativeElement;\r\n\r\n if (fiber.nativeElement !== null && fiber.effectTag === EffectTag.PLACEMENT) {\r\n const cachedNode = nodeCacheMap.get(parentNativeElement);\r\n const node = nextFiber.alternate\r\n ? !detectIsUndefined(cachedNode) && canTakeNodeFromCache(fiber, nextFiber)\r\n ? cachedNode\r\n : cachedNode === null\r\n ? null\r\n : getNodeOnTheRight(fiber, parentNativeElement)\r\n : fromHookUpdate\r\n ? getNodeOnTheRight(fiber, parentNativeElement)\r\n : null;\r\n\r\n nodeCacheMap.set(parentNativeElement, node);\r\n\r\n if (node) {\r\n parentNativeElement.insertBefore(fiber.nativeElement, node);\r\n fiber.mountedToHost = true;\r\n if (isEndOfInsertion(fiber, nextFiber)) {\r\n nodeCacheMap.delete(parentNativeElement);\r\n }\r\n } else {\r\n let fragment = fragmentMap.get(parentNativeElement);\r\n\r\n if (detectIsUndefined(fragment)) {\r\n fragment = document.createDocumentFragment();\r\n fragmentMap.set(parentNativeElement, fragment);\r\n }\r\n\r\n fragment.appendChild(fiber.nativeElement);\r\n fiber.mountedToHost = true;\r\n\r\n if (!hasNextSibling(fiber, nextFiber)) {\r\n parentNativeElement.appendChild(fragment);\r\n fragmentMap.delete(parentNativeElement);\r\n nodeCacheMap.delete(parentNativeElement);\r\n }\r\n }\r\n\r\n addAttributes(fiber.nativeElement, fiber.instance as VirtualNode);\r\n } else if (fiber.nativeElement !== null && fiber.effectTag === EffectTag.UPDATE) {\r\n if (!detectIsVirtualNode(fiber.alternate.instance) || !detectIsVirtualNode(fiber.instance)) return;\r\n const vNode: VirtualNode = fiber.alternate.instance;\r\n const nextVNode: VirtualNode = fiber.instance;\r\n\r\n updateDom(fiber.nativeElement, vNode, nextVNode);\r\n } else if (fiber.effectTag === EffectTag.DELETION) {\r\n commitDeletion(fiber, parentNativeElement);\r\n }\r\n}\r\n\r\nfunction hasNextSibling(fiber: Fiber, rootFilber: Fiber) {\r\n let nextFiber = fiber;\r\n\r\n if (nextFiber.nextSibling && detectIsPortal(nextFiber.nextSibling.instance)) {\r\n return false;\r\n }\r\n\r\n while (!nextFiber.nextSibling) {\r\n nextFiber = nextFiber.parent;\r\n\r\n if (nextFiber === rootFilber || nextFiber.nativeElement) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction getFiberWithNativeElement(fiber: Fiber): Fiber {\r\n let nextFiber = fiber.parent;\r\n\r\n if (detectIsPortal(fiber.instance)) return fiber;\r\n\r\n while (nextFiber && !nextFiber.nativeElement) {\r\n if (detectIsPortal(nextFiber.instance)) {\r\n nextFiber.nativeElement = getPortalContainer(nextFiber.instance);\r\n } else {\r\n nextFiber = nextFiber.parent;\r\n }\r\n }\r\n\r\n return nextFiber;\r\n}\r\n\r\nfunction canTakeNodeFromCache(fiber: Fiber, parentFiber: Fiber) {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (nextFiber.alternate) {\r\n const alternate = nextFiber.alternate;\r\n const isEmptyNode = detectIsCommentVirtualNode(alternate.instance) && alternate.instance.value === EMPTY_NODE;\r\n\r\n return isEmptyNode;\r\n }\r\n\r\n nextFiber = nextFiber.parent;\r\n if (nextFiber === parentFiber) return false;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction isEndOfInsertion(fiber: Fiber, parentFiber: Fiber) {\r\n let nextFiber = fiber;\r\n\r\n do {\r\n if (!nextFiber) return false;\r\n nextFiber = nextFiber.nextSibling || nextFiber.parent.nextSibling;\r\n if (nextFiber && nextFiber.parent === parentFiber) break;\r\n } while (!nextFiber);\r\n\r\n if (nextFiber.effectTag === EffectTag.UPDATE) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getNodeOnTheRight(fiber: Fiber, parentElement: Element) {\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n\r\n while (nextFiber) {\r\n if (nextFiber.nativeElement && nextFiber.nativeElement.parentElement === parentElement) {\r\n return nextFiber.nativeElement;\r\n }\r\n\r\n if (nextFiber.nativeElement && !nextFiber.mountedToHost) {\r\n isDeepWalking = false;\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking) {\r\n nextFiber = nextFiber.child;\r\n } else if (nextFiber.nextSibling) {\r\n isDeepWalking = true;\r\n nextFiber = nextFiber.nextSibling;\r\n } else if (nextFiber.parent && nextFiber.parent.nativeElement !== parentElement) {\r\n isDeepWalking = false;\r\n nextFiber = nextFiber.parent;\r\n } else {\r\n nextFiber = null;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction commitDeletion(fiber: Fiber, parentElement: Element) {\r\n let nextFiber = fiber;\r\n let isDeepWalking = true;\r\n let isReturn = false;\r\n\r\n while (nextFiber) {\r\n if (!isReturn) {\r\n if (nextFiber.nativeElement) {\r\n const isPortal = detectIsPortal(nextFiber.instance);\r\n\r\n !isPortal && parentElement.removeChild(nextFiber.nativeElement);\r\n isDeepWalking = false;\r\n }\r\n }\r\n\r\n if (nextFiber.child && isDeepWalking) {\r\n nextFiber = nextFiber.child;\r\n isReturn = false;\r\n } else if (nextFiber.nextSibling && nextFiber.nextSibling !== fiber.nextSibling) {\r\n if (nextFiber.nextSibling.effectTag === EffectTag.DELETION) return;\r\n isDeepWalking = true;\r\n isReturn = false;\r\n nextFiber = nextFiber.nextSibling;\r\n } else if (\r\n nextFiber.parent &&\r\n nextFiber !== fiber &&\r\n nextFiber.parent !== fiber &&\r\n nextFiber.parent !== fiber.parent\r\n ) {\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\nfunction detectIsSvgElement(tagName) {\r\n const tagMap = {\r\n svg: true,\r\n circle: true,\r\n ellipse: true,\r\n g: true,\r\n text: true,\r\n tspan: true,\r\n textPath: true,\r\n path: true,\r\n polygon: true,\r\n polyline: true,\r\n line: true,\r\n rect: true,\r\n use: true,\r\n image: true,\r\n symbol: true,\r\n defs: true,\r\n linearGradient: true,\r\n radialGradient: true,\r\n stop: true,\r\n clipPath: true,\r\n pattern: true,\r\n mask: true,\r\n marker: true,\r\n };\r\n\r\n return Boolean(tagMap[tagName]);\r\n}\r\n\r\nexport { createDomElement, mutateDom, resetNodeCache };\r\n","import { type ScheduleCallbackOptions, getTime, workLoop, wipRootHelper, TaskPriority } from '@dark-engine/core';\r\nimport { type Callback } from './model';\r\n\r\ntype QueueByPriority = {\r\n hight: Array;\r\n normal: Array;\r\n low: Array;\r\n};\r\n\r\nconst queueByPriority: QueueByPriority = {\r\n hight: [],\r\n normal: [],\r\n low: [],\r\n};\r\nconst YEILD_INTERVAL = 10;\r\nlet scheduledCallback: Callback = null;\r\nlet deadline = 0;\r\nlet isMessageLoopRunning = false;\r\nlet currentTask: Task = null;\r\n\r\nclass Task {\r\n public static nextTaskId = 0;\r\n public id: number;\r\n public time: number;\r\n public timeoutMs: number;\r\n public priority: TaskPriority;\r\n public callback: () => void;\r\n\r\n constructor(options: Omit) {\r\n this.id = ++Task.nextTaskId;\r\n this.time = options.time;\r\n this.timeoutMs = options.timeoutMs;\r\n this.priority = options.priority;\r\n this.callback = options.callback;\r\n }\r\n}\r\n\r\nconst shouldYeildToHost = () => getTime() >= deadline;\r\n\r\nfunction scheduleCallback(callback: () => void, options?: ScheduleCallbackOptions) {\r\n const { priority = TaskPriority.NORMAL, timeoutMs } = options || {};\r\n const task = new Task({ time: getTime(), timeoutMs, priority, callback });\r\n const map: Record void> = {\r\n [TaskPriority.HIGH]: () => queueByPriority.hight.push(task),\r\n [TaskPriority.NORMAL]: () => queueByPriority.normal.push(task),\r\n [TaskPriority.LOW]: () => queueByPriority.low.push(task),\r\n };\r\n\r\n map[task.priority]();\r\n executeTasks();\r\n}\r\n\r\nfunction pick(queue: Array) {\r\n if (!queue.length) return false;\r\n currentTask = queue.shift();\r\n\r\n currentTask.callback();\r\n requestCallback(workLoop);\r\n\r\n return true;\r\n}\r\n\r\nfunction executeTasks() {\r\n const isBusy = Boolean(wipRootHelper.get());\r\n\r\n if (!isBusy) {\r\n checkOverdueTasks() ||\r\n pick(queueByPriority.hight) ||\r\n pick(queueByPriority.normal) ||\r\n requestIdleCallback(() => pick(queueByPriority.low));\r\n }\r\n}\r\n\r\nfunction checkOverdueTasks() {\r\n const [task] = queueByPriority.low;\r\n\r\n if (task && task.timeoutMs > 0 && getTime() - task.time > task.timeoutMs) {\r\n pick(queueByPriority.low);\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction performWorkUntilDeadline() {\r\n if (scheduledCallback) {\r\n deadline = getTime() + YEILD_INTERVAL;\r\n\r\n try {\r\n const hasMoreWork = scheduledCallback();\r\n\r\n if (!hasMoreWork) {\r\n currentTask = null;\r\n isMessageLoopRunning = false;\r\n scheduledCallback = null;\r\n executeTasks();\r\n } else {\r\n port.postMessage(null);\r\n }\r\n } catch (error) {\r\n port.postMessage(null);\r\n throw error;\r\n }\r\n } else {\r\n isMessageLoopRunning = false;\r\n }\r\n}\r\n\r\nfunction requestCallback(callback: Callback) {\r\n if (process.env.NODE_ENV === 'test') {\r\n return requestCallbackSync(callback);\r\n }\r\n\r\n scheduledCallback = callback;\r\n\r\n if (!isMessageLoopRunning) {\r\n isMessageLoopRunning = true;\r\n port.postMessage(null);\r\n }\r\n}\r\n\r\nfunction requestCallbackSync(callback: Callback) {\r\n while (callback()) {\r\n //\r\n }\r\n executeTasks();\r\n currentTask = null;\r\n}\r\n\r\nlet channel: MessageChannel = null;\r\nlet port: MessagePort = null;\r\n\r\nfunction setup() {\r\n if (process.env.NODE_ENV === 'test') {\r\n return;\r\n }\r\n\r\n channel = new MessageChannel();\r\n port = channel.port2;\r\n\r\n channel.port1.onmessage = performWorkUntilDeadline;\r\n}\r\n\r\nsetup();\r\n\r\nexport { shouldYeildToHost, scheduleCallback };\r\n","export type Callback = () => boolean;\r\n\r\nexport type Task = {\r\n id: number;\r\n priority: TaskPriority;\r\n calllback: () => void;\r\n};\r\n\r\nexport enum TaskPriority {\r\n HIGH = 2,\r\n NORMAL = 1,\r\n}\r\n","import {\r\n type DarkElement,\r\n type VirtualNodeFactory,\r\n type ComponentFactory,\r\n Fiber,\r\n EffectTag,\r\n platform,\r\n flatten,\r\n detectIsUndefined,\r\n TagVirtualNode,\r\n effectStoreHelper,\r\n wipRootHelper,\r\n currentRootHelper,\r\n nextUnitOfWorkHelper,\r\n fiberMountHelper,\r\n ROOT,\r\n TaskPriority,\r\n} from '@dark-engine/core';\r\nimport { createDomElement, mutateDom, resetNodeCache } from '../dom';\r\nimport { detectIsPortal, unmountPortal } from '../portal';\r\nimport { scheduleCallback, shouldYeildToHost } from '../scheduling';\r\n\r\nplatform.scheduleCallback = scheduleCallback;\r\nplatform.shouldYeildToHost = shouldYeildToHost;\r\nplatform.createNativeElement = createDomElement as typeof platform.createNativeElement;\r\nplatform.applyCommits = mutateDom as typeof platform.applyCommits;\r\nplatform.detectIsPortal = detectIsPortal as typeof platform.detectIsPortal;\r\nplatform.unmountPortal = unmountPortal as typeof platform.unmountPortal;\r\n\r\nconst roots = new Map();\r\n\r\nfunction render(element: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n throw new Error(`render expects to receive container as Element!`);\r\n }\r\n\r\n const isMounted = !detectIsUndefined(roots.get(container));\r\n let rootId = null;\r\n\r\n if (!isMounted) {\r\n rootId = roots.size;\r\n\r\n roots.set(container, rootId);\r\n container.innerHTML = '';\r\n } else {\r\n rootId = roots.get(container);\r\n }\r\n\r\n const callback = () => {\r\n effectStoreHelper.set(rootId); // important order!\r\n resetNodeCache();\r\n\r\n const currentRootFiber = currentRootHelper.get();\r\n const fiber = new Fiber({\r\n nativeElement: container,\r\n instance: new TagVirtualNode({\r\n name: ROOT,\r\n children: flatten([element]) as Array,\r\n }),\r\n alternate: currentRootFiber,\r\n effectTag: isMounted ? EffectTag.UPDATE : EffectTag.PLACEMENT,\r\n });\r\n\r\n currentRootFiber && (currentRootFiber.alternate = null);\r\n fiberMountHelper.reset();\r\n wipRootHelper.set(fiber);\r\n nextUnitOfWorkHelper.set(fiber);\r\n };\r\n\r\n platform.scheduleCallback(callback, { priority: TaskPriority.NORMAL });\r\n}\r\n\r\nexport { render, roots };\r\n","import { type DarkElement, unmountRoot } from '@dark-engine/core';\r\nimport { render, roots } from '../render';\r\nimport { resetNodeCache } from '../dom';\r\n\r\nfunction createRoot(container: Element) {\r\n return {\r\n render: (element: DarkElement) => render(element, container),\r\n unmount: () => {\r\n const rootId = roots.get(container);\r\n\r\n unmountRoot(rootId, () => {\r\n resetNodeCache();\r\n roots.delete(container);\r\n container.innerHTML = '';\r\n });\r\n },\r\n };\r\n}\r\n\r\nexport { createRoot };\r\n","import { useMemo, detectIsUndefined } from '@dark-engine/core';\r\n\r\nfunction styled(strings: TemplateStringsArray, ...args: Array): string {\r\n const style = useMemo(() => {\r\n return strings\r\n .map((x, idx) => x + (!detectIsUndefined(args[idx]) ? args[idx] : ''))\r\n .join('')\r\n .replace(/;\\s*/gm, ';')\r\n .replace(/:\\s*/gm, ':')\r\n .trim();\r\n }, [strings, ...args]);\r\n\r\n return style;\r\n}\r\n\r\ntype Style = Record;\r\n\r\ntype Config = (x: typeof styled) => T;\r\n\r\nfunction useStyle(config: Config) {\r\n return config(styled);\r\n}\r\n\r\nexport { useStyle };\r\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__317__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","$$portal","createPortal","slot","container","Element","Portal","createComponent","rest","useMemo","innerHTML","token","detectIsPortal","detectIsComponentFactory","getPortalContainer","props","options","type","sourceEvent","target","propagation","this","stopPropagation","preventDefault","getPropagation","delegateEvent","eventName","handler","eventsStore","eventsHelper","handlerMap","set","event","fireEvent","syntheticEvent","detectIsFunction","SyntheticEvent","parentElement","dispatchEvent","constructor","WeakMap","document","addEventListener","removeEventListener","detectIsEvent","attrName","startsWith","getEventName","slice","length","toLowerCase","attrBlackListMap","ATTR_KEY","ATTR_REF","applyRef","ref","element","detectIsRef","current","upgradeInputAttributes","tagName","map","input","checked","option","selected","fragmentMap","Map","nodeCacheMap","resetNodeCache","getNodeOnTheRight","fiber","nextFiber","isDeepWalking","nativeElement","mountedToHost","child","nextSibling","parent","queueByPriority","hight","normal","low","scheduledCallback","deadline","isMessageLoopRunning","id","Task","nextTaskId","time","timeoutMs","priority","callback","pick","queue","shift","workLoop","port","postMessage","executeTasks","task","Boolean","wipRootHelper","getTime","requestIdleCallback","TaskPriority","channel","MessageChannel","port2","port1","onmessage","error","platform","push","detectIsVirtualNode","instance","Error","vNode","NodeType","tagNode","name","svg","circle","ellipse","g","text","tspan","textPath","path","polygon","polyline","line","rect","use","image","symbol","defs","linearGradient","radialGradient","stop","clipPath","pattern","mask","marker","createElementNS","createElement","textNode","createTextNode","commentNode","createComment","nextInstance","fromHookUpdate","fromHookUpdateHelper","getFiberWithNativeElement","parentNativeElement","effectTag","EffectTag","cachedNode","node","alternate","detectIsUndefined","parentFiber","detectIsCommentVirtualNode","EMPTY_NODE","canTakeNodeFromCache","insertBefore","isEndOfInsertion","delete","fragment","createDocumentFragment","appendChild","rootFilber","hasNextSibling","detectIsTagVirtualNode","attrNames","keys","attrs","attrValue","setAttribute","addAttributes","nextVNode","detectIsTextVirtualNode","textContent","Set","prevAttrValue","nextAttrValue","removeAttribute","updateAttributes","isReturn","removeChild","commitDeletion","portalHost","roots","render","isMounted","rootId","size","effectStoreHelper","currentRootFiber","currentRootHelper","Fiber","TagVirtualNode","ROOT","children","flatten","fiberMountHelper","nextUnitOfWorkHelper","createRoot","unmount","unmountRoot","styled","strings","style","x","idx","args","join","replace","trim","useStyle","config"],"sourceRoot":""} \ No newline at end of file