From 0e7751b1666e3ad047c4919ca92653f017470431 Mon Sep 17 00:00:00 2001 From: atellmer Date: Mon, 14 Nov 2022 10:07:44 -0800 Subject: [PATCH] added use-event --- README.md | 17 ++ packages/core/package.json | 2 +- packages/core/src/index.ts | 1 + .../src/use-callback/use-callback.spec.ts | 3 +- .../core/src/use-callback/use-callback.ts | 31 +--- packages/core/src/use-event/index.ts | 1 + packages/core/src/use-event/use-event.ts | 16 ++ packages/core/umd/dark-core.development.js | 173 ++++++++++++------ .../core/umd/dark-core.development.js.map | 2 +- packages/core/umd/dark-core.production.min.js | 2 +- .../core/umd/dark-core.production.min.js.map | 2 +- packages/platform-browser/package.json | 2 +- 12 files changed, 159 insertions(+), 93 deletions(-) create mode 100644 packages/core/src/use-event/index.ts create mode 100644 packages/core/src/use-event/use-event.ts diff --git a/README.md b/README.md index 12443a1c..409356c6 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,7 @@ import { forwardRef, Suspense, useCallback, + useEvent, useContext, useEffect, useError, @@ -607,6 +608,22 @@ Suitable for memoizing handler functions descending down the component tree: ); ``` +#### useEvent + +```tsx +import { useEvent } from '@dark-engine/core'; +``` + +Similar to useCallback but has no dependencies. Ensures the return of the same function, with the closures always corresponding to the last render. In most cases, it eliminates the need to track dependencies in useCallback. + +```tsx + const handleClick = useEvent(() => setCount(count + 1)); + + return ( + + ); +``` + #### useDeferredValue Dark under the hood performs all recalculations in asynchronous mode so as not to block the main thread. Due to the task scheduler, you can achieve prioritization of interface updates. For example, make some updates more important than others, and vice versa - less important. diff --git a/packages/core/package.json b/packages/core/package.json index e5ff5bfc..9b8cd098 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@dark-engine/core", - "version": "0.4.4", + "version": "0.5.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/src/index.ts b/packages/core/src/index.ts index 878f7da5..5d77d577 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -16,6 +16,7 @@ export * from './use-context'; export * from './use-deferred-value'; export * from './use-effect'; export * from './use-error'; +export * from './use-event'; export * from './use-imperative-handle'; export * from './use-memo'; export * from './use-reducer'; diff --git a/packages/core/src/use-callback/use-callback.spec.ts b/packages/core/src/use-callback/use-callback.spec.ts index e152a2e2..ad3a762b 100644 --- a/packages/core/src/use-callback/use-callback.spec.ts +++ b/packages/core/src/use-callback/use-callback.spec.ts @@ -21,7 +21,8 @@ test('use-callback works correctly by default', () => { render(App(), host); waitNextIdle(); - expect(handlers.every(x => x && x === handlers[0])).toBeTruthy(); + render(App(), host); + waitNextIdle(); render(App(), host); waitNextIdle(); expect(handlers.every(x => x && x === handlers[0])).toBeTruthy(); diff --git a/packages/core/src/use-callback/use-callback.ts b/packages/core/src/use-callback/use-callback.ts index 6113fe51..8dec5914 100644 --- a/packages/core/src/use-callback/use-callback.ts +++ b/packages/core/src/use-callback/use-callback.ts @@ -1,34 +1,9 @@ -import { detectIsUndefined, detectIsDepsDifferent } from '../helpers'; -import { componentFiberHelper } from '../scope'; +import { useMemo } from '../use-memo'; function useCallback(callback: T, deps: Array): T { - const fiber = componentFiberHelper.get(); - const { hook } = fiber; - const { idx, values } = hook; + const value = useMemo(() => callback, deps); - if (detectIsUndefined(values[idx])) { - values[idx] = { - deps, - value: callback, - }; - - hook.idx++; - - return callback; - } - - const hookValue = values[idx]; - const prevDeps = hookValue.deps as Array; - const isDepsDifferent = detectIsDepsDifferent(deps, prevDeps); - - if (isDepsDifferent) { - hookValue.deps = deps; - hookValue.value = callback; - } - - hook.idx++; - - return hookValue.value; + return value; } export { useCallback }; diff --git a/packages/core/src/use-event/index.ts b/packages/core/src/use-event/index.ts new file mode 100644 index 00000000..0323ed08 --- /dev/null +++ b/packages/core/src/use-event/index.ts @@ -0,0 +1 @@ +export * from './use-event'; diff --git a/packages/core/src/use-event/use-event.ts b/packages/core/src/use-event/use-event.ts new file mode 100644 index 00000000..4d5e863e --- /dev/null +++ b/packages/core/src/use-event/use-event.ts @@ -0,0 +1,16 @@ +import { useMemo } from '../use-memo'; +import { useCallback } from '../use-callback'; + +function useEvent any>(fn: T) { + const scope = useMemo(() => ({ fn }), []); + + scope.fn = fn; + + const callback = useCallback((...args) => { + return scope.fn(...args); + }, []); + + return callback as unknown as T; +} + +export { useEvent }; diff --git a/packages/core/umd/dark-core.development.js b/packages/core/umd/dark-core.development.js index e289aeea..835bc0a4 100644 --- a/packages/core/umd/dark-core.development.js +++ b/packages/core/umd/dark-core.development.js @@ -2007,31 +2007,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "useCallback": () => (/* binding */ useCallback) /* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers/index.ts"); -/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scope */ "./src/scope/index.ts"); - +/* harmony import */ var _use_memo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../use-memo */ "./src/use-memo/index.ts"); function useCallback(callback, deps) { - var fiber = _scope__WEBPACK_IMPORTED_MODULE_1__.componentFiberHelper.get(); - var hook = fiber.hook; - var idx = hook.idx, values = hook.values; - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.detectIsUndefined)(values[idx])) { - values[idx] = { - deps: deps, - value: callback, - }; - hook.idx++; - return callback; - } - var hookValue = values[idx]; - var prevDeps = hookValue.deps; - var isDepsDifferent = (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.detectIsDepsDifferent)(deps, prevDeps); - if (isDepsDifferent) { - hookValue.deps = deps; - hookValue.value = callback; - } - hook.idx++; - return hookValue.value; + var value = (0,_use_memo__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () { return callback; }, deps); + return value; } @@ -2331,6 +2311,78 @@ function useError() { +/***/ }), + +/***/ "./src/use-event/index.ts": +/*!********************************!*\ + !*** ./src/use-event/index.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "useEvent": () => (/* reexport safe */ _use_event__WEBPACK_IMPORTED_MODULE_0__.useEvent) +/* harmony export */ }); +/* harmony import */ var _use_event__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./use-event */ "./src/use-event/use-event.ts"); + + + +/***/ }), + +/***/ "./src/use-event/use-event.ts": +/*!************************************!*\ + !*** ./src/use-event/use-event.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "useEvent": () => (/* binding */ useEvent) +/* harmony export */ }); +/* harmony import */ var _use_memo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../use-memo */ "./src/use-memo/index.ts"); +/* harmony import */ var _use_callback__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../use-callback */ "./src/use-callback/index.ts"); +var __read = (undefined && undefined.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; + + +function useEvent(fn) { + var scope = (0,_use_memo__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () { return ({ fn: fn }); }, []); + scope.fn = fn; + var callback = (0,_use_callback__WEBPACK_IMPORTED_MODULE_1__.useCallback)(function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return scope.fn.apply(scope, __spreadArray([], __read(args), false)); + }, []); + return callback; +} + + + /***/ }), /***/ "./src/use-imperative-handle/index.ts": @@ -2963,43 +3015,43 @@ var __webpack_exports__ = {}; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "$$memo": () => (/* reexport safe */ _memo__WEBPACK_IMPORTED_MODULE_8__.$$memo), -/* harmony export */ "ATTR_KEY": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_25__.ATTR_KEY), -/* harmony export */ "ATTR_REF": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_25__.ATTR_REF), -/* harmony export */ "Comment": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.Comment), -/* harmony export */ "CommentVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.CommentVirtualNode), +/* harmony export */ "ATTR_KEY": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_26__.ATTR_KEY), +/* harmony export */ "ATTR_REF": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_26__.ATTR_REF), +/* harmony export */ "Comment": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.Comment), +/* harmony export */ "CommentVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.CommentVirtualNode), /* harmony export */ "ComponentFactory": () => (/* reexport safe */ _component__WEBPACK_IMPORTED_MODULE_0__.ComponentFactory), -/* harmony export */ "EMPTY_NODE": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_25__.EMPTY_NODE), +/* harmony export */ "EMPTY_NODE": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_26__.EMPTY_NODE), /* harmony export */ "EffectTag": () => (/* reexport safe */ _fiber__WEBPACK_IMPORTED_MODULE_3__.EffectTag), /* harmony export */ "Fiber": () => (/* reexport safe */ _fiber__WEBPACK_IMPORTED_MODULE_3__.Fiber), /* harmony export */ "Fragment": () => (/* reexport safe */ _fragment__WEBPACK_IMPORTED_MODULE_4__.Fragment), -/* harmony export */ "NodeType": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.NodeType), -/* harmony export */ "PARTIAL_UPDATE": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_25__.PARTIAL_UPDATE), -/* harmony export */ "ROOT": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_25__.ROOT), +/* harmony export */ "NodeType": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.NodeType), +/* harmony export */ "PARTIAL_UPDATE": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_26__.PARTIAL_UPDATE), +/* harmony export */ "ROOT": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_26__.ROOT), /* harmony export */ "Suspense": () => (/* reexport safe */ _suspense__WEBPACK_IMPORTED_MODULE_12__.Suspense), /* harmony export */ "SuspenseContext": () => (/* reexport safe */ _suspense__WEBPACK_IMPORTED_MODULE_12__.SuspenseContext), -/* harmony export */ "TagVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.TagVirtualNode), -/* harmony export */ "TaskPriority": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_25__.TaskPriority), -/* harmony export */ "Text": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.Text), -/* harmony export */ "TextVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.TextVirtualNode), -/* harmony export */ "View": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.View), -/* harmony export */ "VirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.VirtualNode), +/* harmony export */ "TagVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.TagVirtualNode), +/* harmony export */ "TaskPriority": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_26__.TaskPriority), +/* harmony export */ "Text": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.Text), +/* harmony export */ "TextVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.TextVirtualNode), +/* harmony export */ "View": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.View), +/* harmony export */ "VirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.VirtualNode), /* harmony export */ "cleanupEffects": () => (/* reexport safe */ _use_effect__WEBPACK_IMPORTED_MODULE_16__.cleanupEffects), /* harmony export */ "cloneTagMap": () => (/* reexport safe */ _fiber__WEBPACK_IMPORTED_MODULE_3__.cloneTagMap), /* harmony export */ "componentFiberHelper": () => (/* reexport safe */ _scope__WEBPACK_IMPORTED_MODULE_10__.componentFiberHelper), /* harmony export */ "createComponent": () => (/* reexport safe */ _component__WEBPACK_IMPORTED_MODULE_0__.createComponent), /* harmony export */ "createContext": () => (/* reexport safe */ _context__WEBPACK_IMPORTED_MODULE_1__.createContext), -/* harmony export */ "createEmptyVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.createEmptyVirtualNode), +/* harmony export */ "createEmptyVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.createEmptyVirtualNode), /* harmony export */ "createHook": () => (/* reexport safe */ _fiber__WEBPACK_IMPORTED_MODULE_3__.createHook), /* harmony export */ "createUpdateCallback": () => (/* reexport safe */ _fiber__WEBPACK_IMPORTED_MODULE_3__.createUpdateCallback), /* harmony export */ "currentRootHelper": () => (/* reexport safe */ _scope__WEBPACK_IMPORTED_MODULE_10__.currentRootHelper), /* harmony export */ "deletionsHelper": () => (/* reexport safe */ _scope__WEBPACK_IMPORTED_MODULE_10__.deletionsHelper), /* harmony export */ "detectIsArray": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_6__.detectIsArray), /* harmony export */ "detectIsBoolean": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_6__.detectIsBoolean), -/* harmony export */ "detectIsCommentVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.detectIsCommentVirtualNode), +/* harmony export */ "detectIsCommentVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.detectIsCommentVirtualNode), /* harmony export */ "detectIsComponentFactory": () => (/* reexport safe */ _component__WEBPACK_IMPORTED_MODULE_0__.detectIsComponentFactory), /* harmony export */ "detectIsDepsDifferent": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_6__.detectIsDepsDifferent), /* harmony export */ "detectIsEmpty": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_6__.detectIsEmpty), -/* harmony export */ "detectIsEmptyVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.detectIsEmptyVirtualNode), +/* harmony export */ "detectIsEmptyVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.detectIsEmptyVirtualNode), /* harmony export */ "detectIsFragment": () => (/* reexport safe */ _fragment__WEBPACK_IMPORTED_MODULE_4__.detectIsFragment), /* harmony export */ "detectIsFunction": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_6__.detectIsFunction), /* harmony export */ "detectIsLazy": () => (/* reexport safe */ _lazy__WEBPACK_IMPORTED_MODULE_7__.detectIsLazy), @@ -3009,11 +3061,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "detectIsObject": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_6__.detectIsObject), /* harmony export */ "detectIsRef": () => (/* reexport safe */ _ref__WEBPACK_IMPORTED_MODULE_9__.detectIsRef), /* harmony export */ "detectIsString": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_6__.detectIsString), -/* harmony export */ "detectIsTagVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.detectIsTagVirtualNode), -/* harmony export */ "detectIsTextVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.detectIsTextVirtualNode), +/* harmony export */ "detectIsTagVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.detectIsTagVirtualNode), +/* harmony export */ "detectIsTextVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.detectIsTextVirtualNode), /* harmony export */ "detectIsUndefined": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_6__.detectIsUndefined), -/* harmony export */ "detectIsVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.detectIsVirtualNode), -/* harmony export */ "detectIsVirtualNodeFactory": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.detectIsVirtualNodeFactory), +/* harmony export */ "detectIsVirtualNode": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.detectIsVirtualNode), +/* harmony export */ "detectIsVirtualNodeFactory": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.detectIsVirtualNodeFactory), /* harmony export */ "dummyFn": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_6__.dummyFn), /* harmony export */ "effectStoreHelper": () => (/* reexport safe */ _scope__WEBPACK_IMPORTED_MODULE_10__.effectStoreHelper), /* harmony export */ "effectsHelper": () => (/* reexport safe */ _scope__WEBPACK_IMPORTED_MODULE_10__.effectsHelper), @@ -3026,7 +3078,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "getComponentFactoryKey": () => (/* reexport safe */ _component__WEBPACK_IMPORTED_MODULE_0__.getComponentFactoryKey), /* harmony export */ "getRootId": () => (/* reexport safe */ _scope__WEBPACK_IMPORTED_MODULE_10__.getRootId), /* harmony export */ "getTime": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_6__.getTime), -/* harmony export */ "getVirtualNodeKey": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_24__.getVirtualNodeKey), +/* harmony export */ "getVirtualNodeKey": () => (/* reexport safe */ _view__WEBPACK_IMPORTED_MODULE_25__.getVirtualNodeKey), /* harmony export */ "h": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_2__.createElement), /* harmony export */ "hasChildrenProp": () => (/* reexport safe */ _fiber__WEBPACK_IMPORTED_MODULE_3__.hasChildrenProp), /* harmony export */ "hasEffects": () => (/* reexport safe */ _use_effect__WEBPACK_IMPORTED_MODULE_16__.hasEffects), @@ -3041,12 +3093,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "useDeferredValue": () => (/* reexport safe */ _use_deferred_value__WEBPACK_IMPORTED_MODULE_15__.useDeferredValue), /* harmony export */ "useEffect": () => (/* reexport safe */ _use_effect__WEBPACK_IMPORTED_MODULE_16__.useEffect), /* harmony export */ "useError": () => (/* reexport safe */ _use_error__WEBPACK_IMPORTED_MODULE_17__.useError), -/* harmony export */ "useImperativeHandle": () => (/* reexport safe */ _use_imperative_handle__WEBPACK_IMPORTED_MODULE_18__.useImperativeHandle), -/* harmony export */ "useMemo": () => (/* reexport safe */ _use_memo__WEBPACK_IMPORTED_MODULE_19__.useMemo), -/* harmony export */ "useReducer": () => (/* reexport safe */ _use_reducer__WEBPACK_IMPORTED_MODULE_20__.useReducer), -/* harmony export */ "useRef": () => (/* reexport safe */ _use_ref__WEBPACK_IMPORTED_MODULE_21__.useRef), -/* harmony export */ "useState": () => (/* reexport safe */ _use_state__WEBPACK_IMPORTED_MODULE_22__.useState), -/* harmony export */ "useUpdate": () => (/* reexport safe */ _use_update__WEBPACK_IMPORTED_MODULE_23__.useUpdate), +/* harmony export */ "useEvent": () => (/* reexport safe */ _use_event__WEBPACK_IMPORTED_MODULE_18__.useEvent), +/* harmony export */ "useImperativeHandle": () => (/* reexport safe */ _use_imperative_handle__WEBPACK_IMPORTED_MODULE_19__.useImperativeHandle), +/* harmony export */ "useMemo": () => (/* reexport safe */ _use_memo__WEBPACK_IMPORTED_MODULE_20__.useMemo), +/* harmony export */ "useReducer": () => (/* reexport safe */ _use_reducer__WEBPACK_IMPORTED_MODULE_21__.useReducer), +/* harmony export */ "useRef": () => (/* reexport safe */ _use_ref__WEBPACK_IMPORTED_MODULE_22__.useRef), +/* harmony export */ "useState": () => (/* reexport safe */ _use_state__WEBPACK_IMPORTED_MODULE_23__.useState), +/* harmony export */ "useUpdate": () => (/* reexport safe */ _use_update__WEBPACK_IMPORTED_MODULE_24__.useUpdate), /* harmony export */ "wipRootHelper": () => (/* reexport safe */ _scope__WEBPACK_IMPORTED_MODULE_10__.wipRootHelper), /* harmony export */ "workLoop": () => (/* reexport safe */ _fiber__WEBPACK_IMPORTED_MODULE_3__.workLoop) /* harmony export */ }); @@ -3068,14 +3121,16 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _use_deferred_value__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./use-deferred-value */ "./src/use-deferred-value/index.ts"); /* harmony import */ var _use_effect__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./use-effect */ "./src/use-effect/index.ts"); /* harmony import */ var _use_error__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./use-error */ "./src/use-error/index.ts"); -/* harmony import */ var _use_imperative_handle__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./use-imperative-handle */ "./src/use-imperative-handle/index.ts"); -/* harmony import */ var _use_memo__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./use-memo */ "./src/use-memo/index.ts"); -/* harmony import */ var _use_reducer__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./use-reducer */ "./src/use-reducer/index.ts"); -/* harmony import */ var _use_ref__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./use-ref */ "./src/use-ref/index.ts"); -/* harmony import */ var _use_state__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./use-state */ "./src/use-state/index.ts"); -/* harmony import */ var _use_update__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./use-update */ "./src/use-update/index.ts"); -/* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./view */ "./src/view/index.ts"); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./constants */ "./src/constants.ts"); +/* harmony import */ var _use_event__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./use-event */ "./src/use-event/index.ts"); +/* harmony import */ var _use_imperative_handle__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./use-imperative-handle */ "./src/use-imperative-handle/index.ts"); +/* harmony import */ var _use_memo__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./use-memo */ "./src/use-memo/index.ts"); +/* harmony import */ var _use_reducer__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./use-reducer */ "./src/use-reducer/index.ts"); +/* harmony import */ var _use_ref__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./use-ref */ "./src/use-ref/index.ts"); +/* harmony import */ var _use_state__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./use-state */ "./src/use-state/index.ts"); +/* harmony import */ var _use_update__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./use-update */ "./src/use-update/index.ts"); +/* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./view */ "./src/view/index.ts"); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./constants */ "./src/constants.ts"); + diff --git a/packages/core/umd/dark-core.development.js.map b/packages/core/umd/dark-core.development.js.map index 23666ca5..7e2945b0 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-imperative-handle/index.ts","webpack://DarkCore/./src/use-imperative-handle/use-imperative-handle.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} 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\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 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.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 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.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.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 (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 hasPortals = Boolean(wipFiber.alternate?.portalHost);\r\n\r\n if (hasEffects || hasPortals) {\r\n for (const fiber of deletions) {\r\n fiber.portalHost && platform.unmountPortal(fiber);\r\n\r\n if (fiber.effectHost) {\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 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 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 setTimeout(() => {\r\n for (const effect of effects) {\r\n effect();\r\n }\r\n });\r\n\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}\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\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};\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 { detectIsUndefined, detectIsDepsDifferent } from '../helpers';\r\nimport { componentFiberHelper } from '../scope';\r\n\r\nfunction useCallback(callback: 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 values[idx] = {\r\n deps,\r\n value: callback,\r\n };\r\n\r\n hook.idx++;\r\n\r\n return callback;\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\r\n if (isDepsDifferent) {\r\n hookValue.deps = deps;\r\n hookValue.value = callback;\r\n }\r\n\r\n hook.idx++;\r\n\r\n return hookValue.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\nfunction 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 value: undefined,\r\n token: $$useEffect,\r\n };\r\n\r\n effectsHelper.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\nfunction hasEffects(fiber: Fiber) {\r\n const { values } = fiber.hook as Hook;\r\n const hasEffect = values.some(x => x.token === $$useEffect);\r\n\r\n return hasEffect;\r\n}\r\n\r\nfunction cleanupEffects(hook: Hook>) {\r\n const { values } = hook;\r\n\r\n for (const value of values) {\r\n if (value.token === $$useEffect) {\r\n const cleanup = value.value;\r\n\r\n detectIsFunction(cleanup) && cleanup();\r\n }\r\n }\r\n}\r\n\r\nexport { useEffect, hasEffects, cleanupEffects };\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-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-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 * from './use-effect';\r\nexport * from './use-error';\r\nexport * from './use-imperative-handle';\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/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-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} 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\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 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.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 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.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.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 (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 hasPortals = Boolean(wipFiber.alternate?.portalHost);\r\n\r\n if (hasEffects || hasPortals) {\r\n for (const fiber of deletions) {\r\n fiber.portalHost && platform.unmountPortal(fiber);\r\n\r\n if (fiber.effectHost) {\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 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 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 setTimeout(() => {\r\n for (const effect of effects) {\r\n effect();\r\n }\r\n });\r\n\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}\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\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};\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\nfunction 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 value: undefined,\r\n token: $$useEffect,\r\n };\r\n\r\n effectsHelper.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\nfunction hasEffects(fiber: Fiber) {\r\n const { values } = fiber.hook as Hook;\r\n const hasEffect = values.some(x => x.token === $$useEffect);\r\n\r\n return hasEffect;\r\n}\r\n\r\nfunction cleanupEffects(hook: Hook>) {\r\n const { values } = hook;\r\n\r\n for (const value of values) {\r\n if (value.token === $$useEffect) {\r\n const cleanup = value.value;\r\n\r\n detectIsFunction(cleanup) && cleanup();\r\n }\r\n }\r\n}\r\n\r\nexport { useEffect, hasEffects, cleanupEffects };\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-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 * from './use-effect';\r\nexport * from './use-error';\r\nexport * from './use-event';\r\nexport * from './use-imperative-handle';\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 diff --git a/packages/core/umd/dark-core.production.min.js b/packages/core/umd/dark-core.production.min.js index 30987037..5156d996 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:()=>we,ATTR_KEY:()=>i,ATTR_REF:()=>a,Comment:()=>de,CommentVirtualNode:()=>oe,ComponentFactory:()=>O,EMPTY_NODE:()=>o,EffectTag:()=>He,Fiber:()=>Ae,Fragment:()=>be,NodeType:()=>P,PARTIAL_UPDATE:()=>l,ROOT:()=>r,Suspense:()=>dt,SuspenseContext:()=>st,TagVirtualNode:()=>ne,TaskPriority:()=>n,Text:()=>se,TextVirtualNode:()=>re,View:()=>pe,VirtualNode:()=>te,cleanupEffects:()=>q,cloneTagMap:()=>je,componentFiberHelper:()=>W,createComponent:()=>I,createContext:()=>ot,createEmptyVirtualNode:()=>ve,createHook:()=>et,createUpdateCallback:()=>tt,currentRootHelper:()=>V,deletionsHelper:()=>B,detectIsArray:()=>v,detectIsBoolean:()=>p,detectIsCommentVirtualNode:()=>le,detectIsComponentFactory:()=>H,detectIsDepsDifferent:()=>E,detectIsEmpty:()=>y,detectIsEmptyVirtualNode:()=>fe,detectIsFragment:()=>me,detectIsFunction:()=>u,detectIsLazy:()=>ht,detectIsMemo:()=>Ee,detectIsNull:()=>h,detectIsNumber:()=>c,detectIsObject:()=>d,detectIsRef:()=>xe,detectIsString:()=>s,detectIsTagVirtualNode:()=>ae,detectIsTextVirtualNode:()=>ue,detectIsUndefined:()=>f,detectIsVirtualNode:()=>ie,detectIsVirtualNodeFactory:()=>he,dummyFn:()=>S,effectStoreHelper:()=>F,effectsHelper:()=>Y,error:()=>b,eventsHelper:()=>K,fiberMountHelper:()=>G,flatten:()=>m,forwardRef:()=>ge,fromHookUpdateHelper:()=>_,getComponentFactoryKey:()=>N,getRootId:()=>L,getTime:()=>g,getVirtualNodeKey:()=>ce,h:()=>ut,hasChildrenProp:()=>Qe,hasEffects:()=>$,keyBy:()=>x,lazy:()=>vt,memo:()=>Te,nextUnitOfWorkHelper:()=>R,platform:()=>Ne,takeListFromEnd:()=>w,useCallback:()=>ft,useContext:()=>rt,useDeferredValue:()=>yt,useEffect:()=>X,useError:()=>bt,useImperativeHandle:()=>mt,useMemo:()=>Ie,useReducer:()=>gt,useRef:()=>xt,useState:()=>ct,useUpdate:()=>nt,wipRootHelper:()=>U,workLoop:()=>De});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.")}(r),i=o.next();!i.done;i=o.next()){var a=i.value;if(a.token===z){var l=a.value;u(l)&&l()}}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}}!function(e){e.TAG="TAG",e.TEXT="TEXT",e.COMMENT="COMMENT"}(P||(P={}));var J,Q=(J=function(e,t){return J=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])},J(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}J(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),Z=function(){return Z=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},Ee=function(e){return H(e)&&e.token===we};function Te(e,t){return void 0===t&&(t=Se),ge(I((function(t,n){return n&&(t.ref=n),e(t)}),{token:we,shouldUpdate:t}))}var ke=I((function(e){return e.slot}),{token:we});function Oe(e,t){return void 0===t&&(t=!1),function(e,t){var n=function(e){return he(e)||H(e)};if(v(e)?n(e[0]):n(e)){var r=ke({slot:be({slot:e})});return r.shouldUpdate=function(){return t},r}return e}(e(),t)}function Ie(e,t){var n=W.get().hook,r=n.idx,o=n.values;if(f(o[r])){var i=Oe(e);return o[r]={deps:t,value:i},n.idx++,i}var a=o[r],l=E(t,a.deps),u=l?e:function(){return a.value};return a.deps=t,a.value=Oe(u,l),n.idx++,a.value}var Pe,He,Ne={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"}(He||(He={}));var je=((Pe={})[He.PLACEMENT]=!0,Pe[He.SKIP]=!0,Pe),Ce=function(){return Ce=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},Fe=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.")},Ae=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.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.setError=function(e){"function"==typeof this.catchException?this.catchException(e):this.parent&&this.parent.setError(e)},e}();function De(){for(var e=U.get(),t=R.get(),n=!1,r=Boolean(t);t&&!n;)t=Ue(t),R.set(t),r=Boolean(t),n=Ne.shouldYeildToHost();return!t&&e&&function(){var e,t,n,r,o=U.get(),i=_.get(),a=B.get(),l=Boolean(null===(n=o.alternate)||void 0===n?void 0:n.effectHost),u=Boolean(null===(r=o.alternate)||void 0===r?void 0:r.portalHost);if(l||u){var f=function(e){e.portalHost&&Ne.unmountPortal(e),e.effectHost&&Ze({fiber:e,onLoop:function(t){var n=t.nextFiber,r=t.isReturn,o=t.stop;if(n===e.nextSibling||e.transposition)return o();!r&&H(n.instance)&&q(n.hook)}})};try{for(var c=Le(a),s=c.next();!s.done;s=c.next())f(s.value)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=c.return)&&t.call(c)}finally{if(e)throw e.error}}}Ze({fiber:o.child,onLoop:function(e){var t=e.nextFiber,n=e.isReturn,r=e.resetIsDeepWalking;t.effectTag===He.SKIP?r():n||Ne.applyCommits(t),t&&t.shadow&&(t.shadow=null)}}),function(){var e,t,n=Y.get();try{for(var r=Le(a),l=r.next();!l.done;l=r.next()){var u=l.value;Ne.applyCommits(u)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}B.set([]),U.set(null),setTimeout((function(){var e,t;try{for(var r=Le(n),o=r.next();!o.done;o=r.next())(0,o.value)()}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}})),Y.reset(),i?_.set(!1):V.set(o)}()}(),r}function Ue(e){for(var t=!0,n=e,r=e.shadow,o=e.instance;;){if(t=G.deepWalking.get(),n.hook.idx=0,t)if(Qe(o)&&o.children.length>0){var i=Re({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=We({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=We({nextFiber:n,shadow:r,instance:o});if(a=u.performedFiber,n=u.performedNextFiber,r=u.performedShadow,o=u.performedInstance,a)return a}if(Ve(n),null===n.parent)return null}}function Ve(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=He.DELETION,a.push(i),i=i.nextSibling;(t=B.get()).push.apply(t,Fe([],Me(a),!1))}}}function Re(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!==He.DELETION?e.alternate.child:null;t&&t.effectTag===He.DELETION;)t=t.nextSibling;return t}(t),i=_e({shadow:n,alternate:o,instance:r}),a=n?n.provider:o?o.provider:null,l=new Ae({hook:i,provider:a});W.set(l),l.parent=t;var u=Ye({instance:r,idx:0,fiber:l,alternate:o});return r=u.performedInstance||r,n=u.performedShadow||n,o&&Be({fiber:l,alternate:o,instance:r}),Ke({fiber:l,alternate:o,instance:r}),l=o?Ge({fiber:l,alternate:o,instance:r}):l,t.child=l,l.parent=t,l.shadow=n,t=l,je[l.parent.effectTag]&&(l.effectTag=l.parent.effectTag),{performedFiber:t,performedNextFiber:t,performedShadow:n,performedInstance:r}}function We(e){G.jumpToSibling();var t=e.nextFiber,n=e.shadow,r=e.instance,o=t.parent.instance,i=G.getIndex();if(Qe(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===He.DELETION;)n=n.nextSibling;return n}(t),l=_e({shadow:n,alternate:a,instance:r}),u=n?n.provider:a?a.provider:null,f=new Ae({hook:l,provider:u});W.set(f),f.parent=t.parent;var c=Ye({instance:o,idx:i,fiber:f,alternate:a});return r=c.performedInstance||r,n=c.performedShadow||n,a&&Be({fiber:f,alternate:a,instance:r}),Ke({fiber:f,alternate:a,instance:r}),(f=a?Ge({fiber:f,alternate:a,instance:r}):f).parent=t.parent,t.nextSibling=f,f.shadow=n,t=f,je[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,Qe(t.instance)&&(t.instance.children=[]),{performedFiber:null,performedNextFiber:t,performedShadow:n,performedInstance:r}}function _e(e){var t=e.shadow,n=e.alternate,r=e.instance;return t?t.hook:n&&Xe(n.instance)===Xe(r)?n.hook:{idx:0,values:[]}}function Ke(e){var t=e.fiber,n=e.alternate,r=e.instance,o=(n?Xe(n.instance):null)!==(n?Xe(r):null),i=Boolean(n)&&Je(n.instance)===Je(r)&&!o;t.instance=r,t.alternate=n||null,t.nativeElement=i?n.nativeElement:null,t.effectTag=i?He.UPDATE:He.PLACEMENT,t.mountedToHost=!!t.nativeElement&&i,Qe(t.instance)&&(t.childrenCount=t.instance.children.length),t.alternate&&(t.alternate.shadow=null,t.alternate.alternate=null),!t.nativeElement&&ie(t.instance)&&(t.nativeElement=Ne.createNativeElement(t))}function Be(e){var t=e.fiber,n=e.alternate,r=e.instance,o=Je(n.instance),i=Je(r)===o,a=Xe(n.instance)===Xe(r);if(n.isUsed=!0,i&&a){if(Qe(n.instance)&&Qe(r)){var l=n.childrenCount,u=r.children.length;if(l!==u){var f=ul,s=Qe(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=$e(p,v);if(f.length>0){var c=function(e){for(var t=e,n={};t;){var r=Xe(t.instance);y(r)||(n[r]=t),t=t.nextSibling}return n}(n.child);try{for(var s=Le(f),d=s.next();!d.done;d=s.next())(S=c[d.value]||null)&&(S.effectTag=He.DELETION,B.get().push(S),S.effectHost&&t.markEffectHost(),S.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=w(function(e){for(var t=[],n=e;n;)t.push(n),n=n.nextSibling;return t}(n.child),b);try{for(var g=Le(m),x=g.next();!x.done;x=g.next()){var S;(S=x.value).effectTag=He.DELETION,S.effectHost&&t.markEffectHost(),S.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=B.get()).push.apply(a,Fe([],Me(m),!1))}}(),c&&function(){var e,t,r=$e(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=Le(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 Ae({instance:ve(),parent:n,effectTag:He.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=He.DELETION,B.get().push(n)}function Ge(e){var t=e.fiber,n=e.alternate,r=e.instance;if(Ee(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 Ae(Ce(Ce({},n),{alternate:n,effectTag:He.SKIP,nextSibling:n.nextSibling?n.nextSibling.effectTag===He.DELETION?null:n.nextSibling:null})),n.alternate=null,f=o.child;f;)f.parent=o,f=f.nextSibling;return o}}return t}function Ye(e){var t,n=e.instance,r=e.idx,o=e.fiber,i=e.alternate,a=null,l=null;if(Qe(n)){var u=v(n.children[r])?m([n.children[r]]):[n.children[r]];(t=n.children).splice.apply(t,Fe([r,1],Me(u),!1)),a=n.children[r],l=i?function(e){var t=e.instance,n=e.fiber,r=e.alternate,o=Xe(r.instance),i=Xe(t),a=null;return o!==i&&(a=function(e,t){if(y(e))return null;for(var n=t;n;){if(e===Xe(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 H(a)&&($(o)&&o.markEffectHost(),Ne.detectIsPortal(a)&&o.markPortalHost()),{performedInstance:a,performedShadow:l}}function ze(e,t){var n=H(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 he(t)&&(t=t());if(Qe(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 I((function(t){var n=t.slot,r=rt(e);return u(n)?n(r):null}),{displayName:"".concat(t,".Consumer")})}(e,n)}var at=function(){return at=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 ut(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}(ct(!1),2),i=o[0],a=o[1],l=ft((function(){return a(!0)}),[]),u=Ie((function(){return{fallback:t,isLoaded:i,trigger:l}}),[t,i]);return st.Provider({value:u,slot:r?n:null})})),pt=Symbol("lazy");function vt(e){return ge(I((function(t,n){var r=rt(st),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}(ct({component:null}),2),l=a[0],u=a[1];return X((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})}))}),[]),X((function(){l.component&&i()}),[l.component]),l.component?l.component(t,n):o}),{token:pt}))}var ht=function(e){return H(e)&&e.token===pt};function yt(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}(ct(e,{priority:n.LOW,timeoutMs:r}),2),i=o[0],a=o[1];return X((function(){a(e)}),[e]),i}function bt(){var e=W.get(),t=nt(),n=Ie((function(){return{error:null}}),[]);return e.catchException=function(e){n.error=e,t()},X((function(){n.error=null}),[n.error]),n.error}function mt(e,t,n){var r=Ie((function(){return t()}),n);e.current=r}function gt(e,t,n){var r=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}(ct(Ie((function(){return u(n)?n(t):t}),[])),2),o=r[0],i=r[1],a=ft((function(t){return i((function(n){return e(n,t)}))}),[]);return[o,a]}function xt(e){return void 0===e&&(e=null),Ie((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:()=>we,ATTR_KEY:()=>i,ATTR_REF:()=>a,Comment:()=>de,CommentVirtualNode:()=>oe,ComponentFactory:()=>O,EMPTY_NODE:()=>o,EffectTag:()=>He,Fiber:()=>Le,Fragment:()=>be,NodeType:()=>P,PARTIAL_UPDATE:()=>l,ROOT:()=>r,Suspense:()=>dt,SuspenseContext:()=>st,TagVirtualNode:()=>ne,TaskPriority:()=>n,Text:()=>se,TextVirtualNode:()=>re,View:()=>pe,VirtualNode:()=>te,cleanupEffects:()=>q,cloneTagMap:()=>je,componentFiberHelper:()=>W,createComponent:()=>I,createContext:()=>ot,createEmptyVirtualNode:()=>ve,createHook:()=>et,createUpdateCallback:()=>tt,currentRootHelper:()=>V,deletionsHelper:()=>B,detectIsArray:()=>v,detectIsBoolean:()=>p,detectIsCommentVirtualNode:()=>le,detectIsComponentFactory:()=>H,detectIsDepsDifferent:()=>E,detectIsEmpty:()=>y,detectIsEmptyVirtualNode:()=>fe,detectIsFragment:()=>me,detectIsFunction:()=>u,detectIsLazy:()=>ht,detectIsMemo:()=>Ee,detectIsNull:()=>h,detectIsNumber:()=>c,detectIsObject:()=>d,detectIsRef:()=>xe,detectIsString:()=>s,detectIsTagVirtualNode:()=>ae,detectIsTextVirtualNode:()=>ue,detectIsUndefined:()=>f,detectIsVirtualNode:()=>ie,detectIsVirtualNodeFactory:()=>he,dummyFn:()=>S,effectStoreHelper:()=>F,effectsHelper:()=>Y,error:()=>b,eventsHelper:()=>K,fiberMountHelper:()=>G,flatten:()=>m,forwardRef:()=>ge,fromHookUpdateHelper:()=>_,getComponentFactoryKey:()=>N,getRootId:()=>A,getTime:()=>g,getVirtualNodeKey:()=>ce,h:()=>ut,hasChildrenProp:()=>Qe,hasEffects:()=>$,keyBy:()=>x,lazy:()=>vt,memo:()=>Te,nextUnitOfWorkHelper:()=>R,platform:()=>Ne,takeListFromEnd:()=>w,useCallback:()=>ft,useContext:()=>rt,useDeferredValue:()=>yt,useEffect:()=>X,useError:()=>bt,useEvent:()=>xt,useImperativeHandle:()=>wt,useMemo:()=>Ie,useReducer:()=>St,useRef:()=>Et,useState:()=>ct,useUpdate:()=>nt,wipRootHelper:()=>U,workLoop:()=>De});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.")}(r),i=o.next();!i.done;i=o.next()){var a=i.value;if(a.token===z){var l=a.value;u(l)&&l()}}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}}!function(e){e.TAG="TAG",e.TEXT="TEXT",e.COMMENT="COMMENT"}(P||(P={}));var J,Q=(J=function(e,t){return J=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])},J(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}J(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),Z=function(){return Z=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},Ee=function(e){return H(e)&&e.token===we};function Te(e,t){return void 0===t&&(t=Se),ge(I((function(t,n){return n&&(t.ref=n),e(t)}),{token:we,shouldUpdate:t}))}var ke=I((function(e){return e.slot}),{token:we});function Oe(e,t){return void 0===t&&(t=!1),function(e,t){var n=function(e){return he(e)||H(e)};if(v(e)?n(e[0]):n(e)){var r=ke({slot:be({slot:e})});return r.shouldUpdate=function(){return t},r}return e}(e(),t)}function Ie(e,t){var n=W.get().hook,r=n.idx,o=n.values;if(f(o[r])){var i=Oe(e);return o[r]={deps:t,value:i},n.idx++,i}var a=o[r],l=E(t,a.deps),u=l?e:function(){return a.value};return a.deps=t,a.value=Oe(u,l),n.idx++,a.value}var Pe,He,Ne={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"}(He||(He={}));var je=((Pe={})[He.PLACEMENT]=!0,Pe[He.SKIP]=!0,Pe),Ce=function(){return Ce=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},Fe=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.")},Le=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.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.setError=function(e){"function"==typeof this.catchException?this.catchException(e):this.parent&&this.parent.setError(e)},e}();function De(){for(var e=U.get(),t=R.get(),n=!1,r=Boolean(t);t&&!n;)t=Ue(t),R.set(t),r=Boolean(t),n=Ne.shouldYeildToHost();return!t&&e&&function(){var e,t,n,r,o=U.get(),i=_.get(),a=B.get(),l=Boolean(null===(n=o.alternate)||void 0===n?void 0:n.effectHost),u=Boolean(null===(r=o.alternate)||void 0===r?void 0:r.portalHost);if(l||u){var f=function(e){e.portalHost&&Ne.unmountPortal(e),e.effectHost&&Ze({fiber:e,onLoop:function(t){var n=t.nextFiber,r=t.isReturn,o=t.stop;if(n===e.nextSibling||e.transposition)return o();!r&&H(n.instance)&&q(n.hook)}})};try{for(var c=Ae(a),s=c.next();!s.done;s=c.next())f(s.value)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=c.return)&&t.call(c)}finally{if(e)throw e.error}}}Ze({fiber:o.child,onLoop:function(e){var t=e.nextFiber,n=e.isReturn,r=e.resetIsDeepWalking;t.effectTag===He.SKIP?r():n||Ne.applyCommits(t),t&&t.shadow&&(t.shadow=null)}}),function(){var e,t,n=Y.get();try{for(var r=Ae(a),l=r.next();!l.done;l=r.next()){var u=l.value;Ne.applyCommits(u)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}B.set([]),U.set(null),setTimeout((function(){var e,t;try{for(var r=Ae(n),o=r.next();!o.done;o=r.next())(0,o.value)()}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}})),Y.reset(),i?_.set(!1):V.set(o)}()}(),r}function Ue(e){for(var t=!0,n=e,r=e.shadow,o=e.instance;;){if(t=G.deepWalking.get(),n.hook.idx=0,t)if(Qe(o)&&o.children.length>0){var i=Re({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=We({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=We({nextFiber:n,shadow:r,instance:o});if(a=u.performedFiber,n=u.performedNextFiber,r=u.performedShadow,o=u.performedInstance,a)return a}if(Ve(n),null===n.parent)return null}}function Ve(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=He.DELETION,a.push(i),i=i.nextSibling;(t=B.get()).push.apply(t,Fe([],Me(a),!1))}}}function Re(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!==He.DELETION?e.alternate.child:null;t&&t.effectTag===He.DELETION;)t=t.nextSibling;return t}(t),i=_e({shadow:n,alternate:o,instance:r}),a=n?n.provider:o?o.provider:null,l=new Le({hook:i,provider:a});W.set(l),l.parent=t;var u=Ye({instance:r,idx:0,fiber:l,alternate:o});return r=u.performedInstance||r,n=u.performedShadow||n,o&&Be({fiber:l,alternate:o,instance:r}),Ke({fiber:l,alternate:o,instance:r}),l=o?Ge({fiber:l,alternate:o,instance:r}):l,t.child=l,l.parent=t,l.shadow=n,t=l,je[l.parent.effectTag]&&(l.effectTag=l.parent.effectTag),{performedFiber:t,performedNextFiber:t,performedShadow:n,performedInstance:r}}function We(e){G.jumpToSibling();var t=e.nextFiber,n=e.shadow,r=e.instance,o=t.parent.instance,i=G.getIndex();if(Qe(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===He.DELETION;)n=n.nextSibling;return n}(t),l=_e({shadow:n,alternate:a,instance:r}),u=n?n.provider:a?a.provider:null,f=new Le({hook:l,provider:u});W.set(f),f.parent=t.parent;var c=Ye({instance:o,idx:i,fiber:f,alternate:a});return r=c.performedInstance||r,n=c.performedShadow||n,a&&Be({fiber:f,alternate:a,instance:r}),Ke({fiber:f,alternate:a,instance:r}),(f=a?Ge({fiber:f,alternate:a,instance:r}):f).parent=t.parent,t.nextSibling=f,f.shadow=n,t=f,je[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,Qe(t.instance)&&(t.instance.children=[]),{performedFiber:null,performedNextFiber:t,performedShadow:n,performedInstance:r}}function _e(e){var t=e.shadow,n=e.alternate,r=e.instance;return t?t.hook:n&&Xe(n.instance)===Xe(r)?n.hook:{idx:0,values:[]}}function Ke(e){var t=e.fiber,n=e.alternate,r=e.instance,o=(n?Xe(n.instance):null)!==(n?Xe(r):null),i=Boolean(n)&&Je(n.instance)===Je(r)&&!o;t.instance=r,t.alternate=n||null,t.nativeElement=i?n.nativeElement:null,t.effectTag=i?He.UPDATE:He.PLACEMENT,t.mountedToHost=!!t.nativeElement&&i,Qe(t.instance)&&(t.childrenCount=t.instance.children.length),t.alternate&&(t.alternate.shadow=null,t.alternate.alternate=null),!t.nativeElement&&ie(t.instance)&&(t.nativeElement=Ne.createNativeElement(t))}function Be(e){var t=e.fiber,n=e.alternate,r=e.instance,o=Je(n.instance),i=Je(r)===o,a=Xe(n.instance)===Xe(r);if(n.isUsed=!0,i&&a){if(Qe(n.instance)&&Qe(r)){var l=n.childrenCount,u=r.children.length;if(l!==u){var f=ul,s=Qe(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=$e(p,v);if(f.length>0){var c=function(e){for(var t=e,n={};t;){var r=Xe(t.instance);y(r)||(n[r]=t),t=t.nextSibling}return n}(n.child);try{for(var s=Ae(f),d=s.next();!d.done;d=s.next())(S=c[d.value]||null)&&(S.effectTag=He.DELETION,B.get().push(S),S.effectHost&&t.markEffectHost(),S.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=w(function(e){for(var t=[],n=e;n;)t.push(n),n=n.nextSibling;return t}(n.child),b);try{for(var g=Ae(m),x=g.next();!x.done;x=g.next()){var S;(S=x.value).effectTag=He.DELETION,S.effectHost&&t.markEffectHost(),S.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=B.get()).push.apply(a,Fe([],Me(m),!1))}}(),c&&function(){var e,t,r=$e(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=Ae(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 Le({instance:ve(),parent:n,effectTag:He.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=He.DELETION,B.get().push(n)}function Ge(e){var t=e.fiber,n=e.alternate,r=e.instance;if(Ee(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 Le(Ce(Ce({},n),{alternate:n,effectTag:He.SKIP,nextSibling:n.nextSibling?n.nextSibling.effectTag===He.DELETION?null:n.nextSibling:null})),n.alternate=null,f=o.child;f;)f.parent=o,f=f.nextSibling;return o}}return t}function Ye(e){var t,n=e.instance,r=e.idx,o=e.fiber,i=e.alternate,a=null,l=null;if(Qe(n)){var u=v(n.children[r])?m([n.children[r]]):[n.children[r]];(t=n.children).splice.apply(t,Fe([r,1],Me(u),!1)),a=n.children[r],l=i?function(e){var t=e.instance,n=e.fiber,r=e.alternate,o=Xe(r.instance),i=Xe(t),a=null;return o!==i&&(a=function(e,t){if(y(e))return null;for(var n=t;n;){if(e===Xe(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 H(a)&&($(o)&&o.markEffectHost(),Ne.detectIsPortal(a)&&o.markPortalHost()),{performedInstance:a,performedShadow:l}}function ze(e,t){var n=H(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 he(t)&&(t=t());if(Qe(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 I((function(t){var n=t.slot,r=rt(e);return u(n)?n(r):null}),{displayName:"".concat(t,".Consumer")})}(e,n)}var at=function(){return at=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 ut(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}(ct(!1),2),i=o[0],a=o[1],l=ft((function(){return a(!0)}),[]),u=Ie((function(){return{fallback:t,isLoaded:i,trigger:l}}),[t,i]);return st.Provider({value:u,slot:r?n:null})})),pt=Symbol("lazy");function vt(e){return ge(I((function(t,n){var r=rt(st),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}(ct({component:null}),2),l=a[0],u=a[1];return X((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})}))}),[]),X((function(){l.component&&i()}),[l.component]),l.component?l.component(t,n):o}),{token:pt}))}var ht=function(e){return H(e)&&e.token===pt};function yt(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}(ct(e,{priority:n.LOW,timeoutMs:r}),2),i=o[0],a=o[1];return X((function(){a(e)}),[e]),i}function bt(){var e=W.get(),t=nt(),n=Ie((function(){return{error:null}}),[]);return e.catchException=function(e){n.error=e,t()},X((function(){n.error=null}),[n.error]),n.error}var mt=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},gt=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}(ct(Ie((function(){return u(n)?n(t):t}),[])),2),o=r[0],i=r[1],a=ft((function(t){return i((function(n){return e(n,t)}))}),[]);return[o,a]}function Et(e){return void 0===e&&(e=null),Ie((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 a76ba93c..103ffe09 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/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-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}\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\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};\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\nfunction 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 value: undefined,\r\n token: $$useEffect,\r\n };\r\n\r\n effectsHelper.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\nfunction hasEffects(fiber: Fiber) {\r\n const { values } = fiber.hook as Hook;\r\n const hasEffect = values.some(x => x.token === $$useEffect);\r\n\r\n return hasEffect;\r\n}\r\n\r\nfunction cleanupEffects(hook: Hook>) {\r\n const { values } = hook;\r\n\r\n for (const value of values) {\r\n if (value.token === $$useEffect) {\r\n const cleanup = value.value;\r\n\r\n detectIsFunction(cleanup) && cleanup();\r\n }\r\n }\r\n}\r\n\r\nexport { useEffect, hasEffects, cleanupEffects };\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 { 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} 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\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 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.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 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.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.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 (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 hasPortals = Boolean(wipFiber.alternate?.portalHost);\r\n\r\n if (hasEffects || hasPortals) {\r\n for (const fiber of deletions) {\r\n fiber.portalHost && platform.unmountPortal(fiber);\r\n\r\n if (fiber.effectHost) {\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 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 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 setTimeout(() => {\r\n for (const effect of effects) {\r\n effect();\r\n }\r\n });\r\n\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 { detectIsUndefined, detectIsDepsDifferent } from '../helpers';\r\nimport { componentFiberHelper } from '../scope';\r\n\r\nfunction useCallback(callback: 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 values[idx] = {\r\n deps,\r\n value: callback,\r\n };\r\n\r\n hook.idx++;\r\n\r\n return callback;\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\r\n if (isDepsDifferent) {\r\n hookValue.deps = deps;\r\n hookValue.value = callback;\r\n }\r\n\r\n hook.idx++;\r\n\r\n return hookValue.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 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","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","$$useEffect","useEffect","hook","values","runEffect","undefined","cleanup","hasEffects","some","cleanupEffects","$$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","nativeElement","parent","child","nextSibling","alternate","effectTag","instance","shadow","provider","transposition","mountedToHost","portalHost","effectHost","childrenCount","marker","isUsed","markPortalHost","markEffectHost","setError","catchException","workLoop","wipFiber","shouldYield","hasMoreWork","Boolean","performUnitOfWork","fromHook","hasPortals","walkFiber","onLoop","nextFiber","isReturn","stop","resetIsDeepWalking","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","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/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}\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\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};\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\nfunction 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 value: undefined,\r\n token: $$useEffect,\r\n };\r\n\r\n effectsHelper.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\nfunction hasEffects(fiber: Fiber) {\r\n const { values } = fiber.hook as Hook;\r\n const hasEffect = values.some(x => x.token === $$useEffect);\r\n\r\n return hasEffect;\r\n}\r\n\r\nfunction cleanupEffects(hook: Hook>) {\r\n const { values } = hook;\r\n\r\n for (const value of values) {\r\n if (value.token === $$useEffect) {\r\n const cleanup = value.value;\r\n\r\n detectIsFunction(cleanup) && cleanup();\r\n }\r\n }\r\n}\r\n\r\nexport { useEffect, hasEffects, cleanupEffects };\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 { 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} 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\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 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.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 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.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.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 (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 hasPortals = Boolean(wipFiber.alternate?.portalHost);\r\n\r\n if (hasEffects || hasPortals) {\r\n for (const fiber of deletions) {\r\n fiber.portalHost && platform.unmountPortal(fiber);\r\n\r\n if (fiber.effectHost) {\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 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 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 setTimeout(() => {\r\n for (const effect of effects) {\r\n effect();\r\n }\r\n });\r\n\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","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","$$useEffect","useEffect","hook","values","runEffect","undefined","cleanup","hasEffects","some","cleanupEffects","$$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","nativeElement","parent","child","nextSibling","alternate","effectTag","instance","shadow","provider","transposition","mountedToHost","portalHost","effectHost","childrenCount","marker","isUsed","markPortalHost","markEffectHost","setError","catchException","workLoop","wipFiber","shouldYield","hasMoreWork","Boolean","performUnitOfWork","fromHook","hasPortals","walkFiber","onLoop","nextFiber","isReturn","stop","resetIsDeepWalking","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 diff --git a/packages/platform-browser/package.json b/packages/platform-browser/package.json index 8d5f997b..beccef74 100644 --- a/packages/platform-browser/package.json +++ b/packages/platform-browser/package.json @@ -1,6 +1,6 @@ { "name": "@dark-engine/platform-browser", - "version": "0.4.4", + "version": "0.5.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",