kiru 0.54.4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{appContext.d.ts → appHandle.d.ts} +4 -4
- package/dist/appHandle.d.ts.map +1 -0
- package/dist/{appContext.js → appHandle.js} +13 -10
- package/dist/appHandle.js.map +1 -0
- package/dist/components/derive.d.ts +10 -8
- package/dist/components/derive.d.ts.map +1 -1
- package/dist/components/derive.js +50 -47
- package/dist/components/derive.js.map +1 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +0 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/lazy.d.ts.map +1 -1
- package/dist/components/lazy.js +7 -6
- package/dist/components/lazy.js.map +1 -1
- package/dist/components/portal.d.ts.map +1 -1
- package/dist/components/portal.js +2 -3
- package/dist/components/portal.js.map +1 -1
- package/dist/components/transition.d.ts +3 -2
- package/dist/components/transition.d.ts.map +1 -1
- package/dist/components/transition.js +29 -30
- package/dist/components/transition.js.map +1 -1
- package/dist/constants.d.ts +1 -5
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -5
- package/dist/constants.js.map +1 -1
- package/dist/context.d.ts +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +25 -19
- package/dist/context.js.map +1 -1
- package/dist/devtools.d.ts +7 -0
- package/dist/devtools.d.ts.map +1 -0
- package/dist/devtools.js +19 -0
- package/dist/devtools.js.map +1 -0
- package/dist/dom/commit.d.ts +5 -0
- package/dist/dom/commit.d.ts.map +1 -0
- package/dist/dom/commit.js +94 -0
- package/dist/dom/commit.js.map +1 -0
- package/dist/dom/focus.d.ts +4 -0
- package/dist/dom/focus.d.ts.map +1 -0
- package/dist/dom/focus.js +32 -0
- package/dist/dom/focus.js.map +1 -0
- package/dist/dom/index.d.ts +4 -0
- package/dist/dom/index.d.ts.map +1 -0
- package/dist/dom/index.js +4 -0
- package/dist/dom/index.js.map +1 -0
- package/dist/dom/nodes.d.ts +12 -0
- package/dist/dom/nodes.d.ts.map +1 -0
- package/dist/dom/nodes.js +165 -0
- package/dist/dom/nodes.js.map +1 -0
- package/dist/dom/props.d.ts +8 -0
- package/dist/dom/props.d.ts.map +1 -0
- package/dist/dom/props.js +675 -0
- package/dist/dom/props.js.map +1 -0
- package/dist/env.d.ts +2 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +2 -0
- package/dist/env.js.map +1 -1
- package/dist/globalContext.d.ts +17 -23
- package/dist/globalContext.d.ts.map +1 -1
- package/dist/globalContext.js +31 -53
- package/dist/globalContext.js.map +1 -1
- package/dist/globals.d.ts +21 -4
- package/dist/globals.d.ts.map +1 -1
- package/dist/globals.js +22 -5
- package/dist/globals.js.map +1 -1
- package/dist/headlessRender.d.ts +6 -0
- package/dist/headlessRender.d.ts.map +1 -0
- package/dist/{recursiveRender.js → headlessRender.js} +17 -16
- package/dist/headlessRender.js.map +1 -0
- package/dist/hmr.d.ts +21 -8
- package/dist/hmr.d.ts.map +1 -1
- package/dist/hmr.js +58 -37
- package/dist/hmr.js.map +1 -1
- package/dist/hooks/index.d.ts +4 -14
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +4 -14
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/onBeforeMount.d.ts +9 -0
- package/dist/hooks/onBeforeMount.d.ts.map +1 -0
- package/dist/hooks/onBeforeMount.js +19 -0
- package/dist/hooks/onBeforeMount.js.map +1 -0
- package/dist/hooks/onCleanup.d.ts +8 -0
- package/dist/hooks/onCleanup.d.ts.map +1 -0
- package/dist/hooks/onCleanup.js +18 -0
- package/dist/hooks/onCleanup.js.map +1 -0
- package/dist/hooks/onMount.d.ts +9 -0
- package/dist/hooks/onMount.d.ts.map +1 -0
- package/dist/hooks/onMount.js +19 -0
- package/dist/hooks/onMount.js.map +1 -0
- package/dist/hooks/setup.d.ts +13 -0
- package/dist/hooks/setup.d.ts.map +1 -0
- package/dist/hooks/setup.js +54 -0
- package/dist/hooks/setup.js.map +1 -0
- package/dist/hooks/utils.d.ts +2 -63
- package/dist/hooks/utils.d.ts.map +1 -1
- package/dist/hooks/utils.js +17 -144
- package/dist/hooks/utils.js.map +1 -1
- package/dist/index.d.ts +9 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -8
- package/dist/index.js.map +1 -1
- package/dist/profiling.d.ts +15 -14
- package/dist/profiling.d.ts.map +1 -1
- package/dist/profiling.js +9 -4
- package/dist/profiling.js.map +1 -1
- package/dist/reconciler.d.ts.map +1 -1
- package/dist/reconciler.js +15 -28
- package/dist/reconciler.js.map +1 -1
- package/dist/ref.d.ts +4 -0
- package/dist/ref.d.ts.map +1 -0
- package/dist/ref.js +4 -0
- package/dist/ref.js.map +1 -0
- package/dist/renderToString.js +1 -1
- package/dist/renderToString.js.map +1 -1
- package/dist/router/context.d.ts.map +1 -1
- package/dist/router/context.js +1 -2
- package/dist/router/context.js.map +1 -1
- package/dist/router/fileRouter.d.ts +1 -1
- package/dist/router/fileRouter.d.ts.map +1 -1
- package/dist/router/fileRouter.js +17 -11
- package/dist/router/fileRouter.js.map +1 -1
- package/dist/router/fileRouterController.d.ts.map +1 -1
- package/dist/router/fileRouterController.js +68 -55
- package/dist/router/fileRouterController.js.map +1 -1
- package/dist/router/head.js +2 -2
- package/dist/router/head.js.map +1 -1
- package/dist/router/link.d.ts.map +1 -1
- package/dist/router/link.js +19 -23
- package/dist/router/link.js.map +1 -1
- package/dist/router/pageConfig.js +2 -2
- package/dist/router/pageConfig.js.map +1 -1
- package/dist/router/server/index.d.ts.map +1 -1
- package/dist/router/server/index.js +14 -11
- package/dist/router/server/index.js.map +1 -1
- package/dist/router/types.d.ts +11 -6
- package/dist/router/types.d.ts.map +1 -1
- package/dist/scheduler.d.ts +1 -0
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +91 -73
- package/dist/scheduler.js.map +1 -1
- package/dist/signals/base.d.ts +0 -1
- package/dist/signals/base.d.ts.map +1 -1
- package/dist/signals/base.js +14 -37
- package/dist/signals/base.js.map +1 -1
- package/dist/signals/computed.d.ts +0 -2
- package/dist/signals/computed.d.ts.map +1 -1
- package/dist/signals/computed.js +1 -40
- package/dist/signals/computed.js.map +1 -1
- package/dist/signals/effect.d.ts +15 -14
- package/dist/signals/effect.d.ts.map +1 -1
- package/dist/signals/effect.js +65 -37
- package/dist/signals/effect.js.map +1 -1
- package/dist/signals/globals.d.ts +0 -5
- package/dist/signals/globals.d.ts.map +1 -1
- package/dist/signals/globals.js +0 -6
- package/dist/signals/globals.js.map +1 -1
- package/dist/signals/index.d.ts +4 -4
- package/dist/signals/index.d.ts.map +1 -1
- package/dist/signals/index.js +4 -4
- package/dist/signals/index.js.map +1 -1
- package/dist/signals/{for.d.ts → jsx.d.ts} +8 -1
- package/dist/signals/jsx.d.ts.map +1 -0
- package/dist/signals/{for.js → jsx.js} +4 -1
- package/dist/signals/jsx.js.map +1 -0
- package/dist/signals/tracking.d.ts +24 -0
- package/dist/signals/tracking.d.ts.map +1 -0
- package/dist/signals/tracking.js +51 -0
- package/dist/signals/tracking.js.map +1 -0
- package/dist/signals/types.d.ts +1 -1
- package/dist/signals/types.d.ts.map +1 -1
- package/dist/signals/utils.d.ts +2 -1
- package/dist/signals/utils.d.ts.map +1 -1
- package/dist/signals/utils.js +9 -2
- package/dist/signals/utils.js.map +1 -1
- package/dist/ssr/client.d.ts +3 -3
- package/dist/ssr/client.d.ts.map +1 -1
- package/dist/ssr/client.js.map +1 -1
- package/dist/ssr/server.js +1 -1
- package/dist/ssr/server.js.map +1 -1
- package/dist/statefulPromise.d.ts +22 -0
- package/dist/statefulPromise.d.ts.map +1 -0
- package/dist/statefulPromise.js +94 -0
- package/dist/statefulPromise.js.map +1 -0
- package/dist/types.d.ts +40 -50
- package/dist/types.d.ts.map +1 -1
- package/dist/types.dom.d.ts +5 -8
- package/dist/types.dom.d.ts.map +1 -1
- package/dist/types.utils.d.ts +3 -4
- package/dist/types.utils.d.ts.map +1 -1
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +4 -1
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/vdom.d.ts +8 -6
- package/dist/utils/vdom.d.ts.map +1 -1
- package/dist/utils/vdom.js +32 -9
- package/dist/utils/vdom.js.map +1 -1
- package/dist/viewTransitions.d.ts +7 -0
- package/dist/viewTransitions.d.ts.map +1 -0
- package/dist/viewTransitions.js +72 -0
- package/dist/viewTransitions.js.map +1 -0
- package/package.json +1 -1
- package/src/{appContext.ts → appHandle.ts} +22 -17
- package/src/components/derive.ts +74 -69
- package/src/components/index.ts +0 -1
- package/src/components/lazy.ts +10 -10
- package/src/components/portal.ts +2 -3
- package/src/components/transition.ts +33 -39
- package/src/constants.ts +0 -8
- package/src/context.ts +30 -23
- package/src/devtools.ts +18 -0
- package/src/dom/commit.ts +133 -0
- package/src/dom/focus.ts +34 -0
- package/src/dom/index.ts +3 -0
- package/src/dom/nodes.ts +204 -0
- package/src/dom/props.ts +818 -0
- package/src/env.ts +3 -0
- package/src/globalContext.ts +51 -85
- package/src/globals.ts +25 -6
- package/src/{recursiveRender.ts → headlessRender.ts} +18 -18
- package/src/hmr.ts +60 -42
- package/src/hooks/index.ts +4 -14
- package/src/hooks/onBeforeMount.ts +18 -0
- package/src/hooks/onCleanup.ts +21 -0
- package/src/hooks/onMount.ts +18 -0
- package/src/hooks/setup.ts +70 -0
- package/src/hooks/utils.ts +24 -239
- package/src/index.ts +17 -7
- package/src/profiling.ts +22 -20
- package/src/reconciler.ts +21 -33
- package/src/ref.ts +6 -0
- package/src/renderToString.ts +1 -1
- package/src/router/context.ts +1 -2
- package/src/router/fileRouter.ts +23 -13
- package/src/router/fileRouterController.ts +72 -64
- package/src/router/head.ts +2 -2
- package/src/router/link.ts +11 -25
- package/src/router/pageConfig.ts +2 -2
- package/src/router/server/index.ts +24 -13
- package/src/router/types.ts +15 -8
- package/src/scheduler.ts +116 -98
- package/src/signals/base.ts +13 -42
- package/src/signals/computed.ts +1 -62
- package/src/signals/effect.ts +93 -48
- package/src/signals/globals.ts +0 -7
- package/src/signals/index.ts +4 -4
- package/src/signals/{for.ts → jsx.ts} +10 -0
- package/src/signals/tracking.ts +70 -0
- package/src/signals/types.ts +1 -1
- package/src/signals/utils.ts +9 -1
- package/src/ssr/client.ts +4 -4
- package/src/ssr/server.ts +2 -2
- package/src/statefulPromise.ts +136 -0
- package/src/types.dom.ts +6 -10
- package/src/types.ts +51 -60
- package/src/types.utils.ts +3 -4
- package/src/utils/format.ts +3 -1
- package/src/utils/vdom.ts +44 -15
- package/src/viewTransitions.ts +89 -0
- package/dist/appContext.d.ts.map +0 -1
- package/dist/appContext.js.map +0 -1
- package/dist/components/memo.d.ts +0 -10
- package/dist/components/memo.d.ts.map +0 -1
- package/dist/components/memo.js +0 -23
- package/dist/components/memo.js.map +0 -1
- package/dist/dom.d.ts +0 -10
- package/dist/dom.d.ts.map +0 -1
- package/dist/dom.js +0 -634
- package/dist/dom.js.map +0 -1
- package/dist/form/index.d.ts +0 -4
- package/dist/form/index.d.ts.map +0 -1
- package/dist/form/index.js +0 -518
- package/dist/form/index.js.map +0 -1
- package/dist/form/types.d.ts +0 -122
- package/dist/form/types.d.ts.map +0 -1
- package/dist/form/types.js +0 -2
- package/dist/form/types.js.map +0 -1
- package/dist/form/utils.d.ts +0 -3
- package/dist/form/utils.d.ts.map +0 -1
- package/dist/form/utils.js +0 -16
- package/dist/form/utils.js.map +0 -1
- package/dist/hooks/useAsync.d.ts +0 -18
- package/dist/hooks/useAsync.d.ts.map +0 -1
- package/dist/hooks/useAsync.js +0 -96
- package/dist/hooks/useAsync.js.map +0 -1
- package/dist/hooks/useCallback.d.ts +0 -7
- package/dist/hooks/useCallback.d.ts.map +0 -1
- package/dist/hooks/useCallback.js +0 -30
- package/dist/hooks/useCallback.js.map +0 -1
- package/dist/hooks/useContext.d.ts +0 -7
- package/dist/hooks/useContext.d.ts.map +0 -1
- package/dist/hooks/useContext.js +0 -59
- package/dist/hooks/useContext.js.map +0 -1
- package/dist/hooks/useEffect.d.ts +0 -8
- package/dist/hooks/useEffect.d.ts.map +0 -1
- package/dist/hooks/useEffect.js +0 -34
- package/dist/hooks/useEffect.js.map +0 -1
- package/dist/hooks/useEffectEvent.d.ts +0 -8
- package/dist/hooks/useEffectEvent.d.ts.map +0 -1
- package/dist/hooks/useEffectEvent.js +0 -23
- package/dist/hooks/useEffectEvent.js.map +0 -1
- package/dist/hooks/useId.d.ts +0 -8
- package/dist/hooks/useId.d.ts.map +0 -1
- package/dist/hooks/useId.js +0 -35
- package/dist/hooks/useId.js.map +0 -1
- package/dist/hooks/useLayoutEffect.d.ts +0 -8
- package/dist/hooks/useLayoutEffect.d.ts.map +0 -1
- package/dist/hooks/useLayoutEffect.js +0 -34
- package/dist/hooks/useLayoutEffect.js.map +0 -1
- package/dist/hooks/useMemo.d.ts +0 -8
- package/dist/hooks/useMemo.d.ts.map +0 -1
- package/dist/hooks/useMemo.js +0 -31
- package/dist/hooks/useMemo.js.map +0 -1
- package/dist/hooks/usePromise.d.ts +0 -8
- package/dist/hooks/usePromise.d.ts.map +0 -1
- package/dist/hooks/usePromise.js +0 -90
- package/dist/hooks/usePromise.js.map +0 -1
- package/dist/hooks/useReducer.d.ts +0 -7
- package/dist/hooks/useReducer.d.ts.map +0 -1
- package/dist/hooks/useReducer.js +0 -44
- package/dist/hooks/useReducer.js.map +0 -1
- package/dist/hooks/useRef.d.ts +0 -10
- package/dist/hooks/useRef.d.ts.map +0 -1
- package/dist/hooks/useRef.js +0 -29
- package/dist/hooks/useRef.js.map +0 -1
- package/dist/hooks/useState.d.ts +0 -7
- package/dist/hooks/useState.d.ts.map +0 -1
- package/dist/hooks/useState.js +0 -54
- package/dist/hooks/useState.js.map +0 -1
- package/dist/hooks/useSyncExternalStore.d.ts +0 -8
- package/dist/hooks/useSyncExternalStore.d.ts.map +0 -1
- package/dist/hooks/useSyncExternalStore.js +0 -50
- package/dist/hooks/useSyncExternalStore.js.map +0 -1
- package/dist/hooks/useViewTransition.d.ts +0 -10
- package/dist/hooks/useViewTransition.d.ts.map +0 -1
- package/dist/hooks/useViewTransition.js +0 -27
- package/dist/hooks/useViewTransition.js.map +0 -1
- package/dist/recursiveRender.d.ts +0 -7
- package/dist/recursiveRender.d.ts.map +0 -1
- package/dist/recursiveRender.js.map +0 -1
- package/dist/signals/for.d.ts.map +0 -1
- package/dist/signals/for.js.map +0 -1
- package/dist/signals/watch.d.ts +0 -21
- package/dist/signals/watch.d.ts.map +0 -1
- package/dist/signals/watch.js +0 -86
- package/dist/signals/watch.js.map +0 -1
- package/dist/store.d.ts +0 -28
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -166
- package/dist/store.js.map +0 -1
- package/dist/swr.d.ts +0 -63
- package/dist/swr.d.ts.map +0 -1
- package/dist/swr.js +0 -236
- package/dist/swr.js.map +0 -1
- package/dist/utils/promise.d.ts +0 -16
- package/dist/utils/promise.d.ts.map +0 -1
- package/dist/utils/promise.js +0 -14
- package/dist/utils/promise.js.map +0 -1
- package/src/components/memo.ts +0 -39
- package/src/dom.ts +0 -809
- package/src/form/index.ts +0 -676
- package/src/form/types.ts +0 -262
- package/src/form/utils.ts +0 -19
- package/src/hooks/useAsync.ts +0 -121
- package/src/hooks/useCallback.ts +0 -32
- package/src/hooks/useContext.ts +0 -79
- package/src/hooks/useEffect.ts +0 -40
- package/src/hooks/useEffectEvent.ts +0 -24
- package/src/hooks/useId.ts +0 -42
- package/src/hooks/useLayoutEffect.ts +0 -43
- package/src/hooks/useMemo.ts +0 -34
- package/src/hooks/usePromise.ts +0 -126
- package/src/hooks/useReducer.ts +0 -50
- package/src/hooks/useRef.ts +0 -40
- package/src/hooks/useState.ts +0 -62
- package/src/hooks/useSyncExternalStore.ts +0 -59
- package/src/hooks/useViewTransition.ts +0 -25
- package/src/signals/watch.ts +0 -139
- package/src/store.ts +0 -245
- package/src/swr.ts +0 -351
- package/src/utils/promise.ts +0 -26
package/dist/hmr.js
CHANGED
|
@@ -12,16 +12,20 @@ export function isGenericHmrAcceptor(thing) {
|
|
|
12
12
|
typeof thing[$HMR_ACCEPT] === "object" &&
|
|
13
13
|
!!thing[$HMR_ACCEPT]);
|
|
14
14
|
}
|
|
15
|
-
export function
|
|
15
|
+
export function createHmrContext() {
|
|
16
16
|
const moduleMap = new Map();
|
|
17
17
|
let currentModuleFilePath = null;
|
|
18
18
|
let currentModuleMemory = null;
|
|
19
19
|
let isModuleReplacementExecution = false;
|
|
20
20
|
const isReplacement = () => isModuleReplacementExecution;
|
|
21
|
-
let
|
|
22
|
-
const
|
|
21
|
+
let isWaitingForNextEffect = false;
|
|
22
|
+
const globalHmrCallbacks = [];
|
|
23
23
|
const onHmr = (callback) => {
|
|
24
|
-
|
|
24
|
+
if (currentModuleMemory) {
|
|
25
|
+
currentModuleMemory.hmrCallbacks.push(callback);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
globalHmrCallbacks.push(callback);
|
|
25
29
|
};
|
|
26
30
|
const prepare = (filePath) => {
|
|
27
31
|
let mod = moduleMap.get(filePath);
|
|
@@ -29,16 +33,20 @@ export function createHMRContext() {
|
|
|
29
33
|
if (!mod) {
|
|
30
34
|
mod = {
|
|
31
35
|
hotVars: new Map(),
|
|
32
|
-
|
|
36
|
+
unnamedEffects: [],
|
|
37
|
+
hmrCallbacks: [],
|
|
33
38
|
};
|
|
34
39
|
moduleMap.set(filePath, mod);
|
|
35
40
|
}
|
|
36
41
|
else {
|
|
37
|
-
while (
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
while (mod.hmrCallbacks.length)
|
|
43
|
+
mod.hmrCallbacks.shift()();
|
|
44
|
+
while (globalHmrCallbacks.length)
|
|
45
|
+
globalHmrCallbacks.shift()();
|
|
46
|
+
for (const effect of mod.unnamedEffects) {
|
|
47
|
+
effect.stop();
|
|
41
48
|
}
|
|
49
|
+
mod.unnamedEffects.length = 0;
|
|
42
50
|
}
|
|
43
51
|
currentModuleMemory = mod;
|
|
44
52
|
currentModuleFilePath = filePath;
|
|
@@ -46,23 +54,18 @@ export function createHMRContext() {
|
|
|
46
54
|
const register = (hotVarRegistrationEntries) => {
|
|
47
55
|
if (currentModuleMemory === null)
|
|
48
56
|
throw new Error("[kiru]: HMR could not register: No active module");
|
|
49
|
-
let
|
|
57
|
+
let dirtyNodes = new Set();
|
|
50
58
|
for (const [name, newEntry] of Object.entries(hotVarRegistrationEntries)) {
|
|
51
59
|
const oldEntry = currentModuleMemory.hotVars.get(name);
|
|
52
60
|
// @ts-ignore - this is how we tell devtools what file the hotvar is from
|
|
53
61
|
newEntry.value[$DEV_FILE_LINK] = newEntry.link;
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
oldEntry.value.__next = newEntry.value;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
if (newEntry.type === "createStore") {
|
|
65
|
-
window.__kiru.stores.add(name, newEntry.value);
|
|
62
|
+
if (oldEntry?.value) {
|
|
63
|
+
/**
|
|
64
|
+
* this is how, when the previous value has been stored somewhere else (eg. in a Map, or by Vike),
|
|
65
|
+
* we can trace it to its current version by using latest(value)
|
|
66
|
+
*/
|
|
67
|
+
// @ts-ignore
|
|
68
|
+
oldEntry.value.__next = newEntry.value;
|
|
66
69
|
}
|
|
67
70
|
currentModuleMemory.hotVars.set(name, newEntry);
|
|
68
71
|
if (!oldEntry)
|
|
@@ -74,19 +77,19 @@ export function createHMRContext() {
|
|
|
74
77
|
continue;
|
|
75
78
|
}
|
|
76
79
|
if (oldEntry.type === "component" && newEntry.type === "component") {
|
|
77
|
-
window.__kiru.apps.forEach((
|
|
78
|
-
traverseApply(
|
|
80
|
+
window.__kiru.apps.forEach((app) => {
|
|
81
|
+
traverseApply(app.rootNode, (vNode) => {
|
|
79
82
|
if (vNode.type === oldEntry.value) {
|
|
80
83
|
vNode.type = newEntry.value;
|
|
81
|
-
|
|
84
|
+
dirtyNodes.add(vNode);
|
|
82
85
|
}
|
|
83
86
|
});
|
|
84
87
|
});
|
|
85
88
|
}
|
|
86
89
|
}
|
|
87
|
-
if (
|
|
90
|
+
if (dirtyNodes.size) {
|
|
88
91
|
_isHmrUpdate = true;
|
|
89
|
-
|
|
92
|
+
dirtyNodes.forEach((n) => requestUpdate(n));
|
|
90
93
|
flushSync();
|
|
91
94
|
_isHmrUpdate = false;
|
|
92
95
|
}
|
|
@@ -94,27 +97,45 @@ export function createHMRContext() {
|
|
|
94
97
|
currentModuleMemory = null;
|
|
95
98
|
currentModuleFilePath = null;
|
|
96
99
|
};
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
const moduleEffects = {
|
|
101
|
+
registerNext() {
|
|
102
|
+
isWaitingForNextEffect = true;
|
|
100
103
|
},
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
isWaitingForNextWatchCall = false;
|
|
104
|
+
push(effect) {
|
|
105
|
+
if (!isWaitingForNextEffect)
|
|
106
|
+
return;
|
|
107
|
+
currentModuleMemory.unnamedEffects.push(effect);
|
|
108
|
+
isWaitingForNextEffect = false;
|
|
107
109
|
},
|
|
108
110
|
};
|
|
109
111
|
return {
|
|
110
112
|
register,
|
|
111
113
|
prepare,
|
|
112
114
|
isReplacement,
|
|
113
|
-
|
|
115
|
+
moduleEffects,
|
|
114
116
|
onHmr,
|
|
115
117
|
getCurrentFilePath() {
|
|
116
118
|
return currentModuleFilePath;
|
|
117
119
|
},
|
|
118
120
|
};
|
|
119
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Queues a callback to be fired when HMR is triggered. This is a no-op in non-browser environments or in production.
|
|
124
|
+
* - If called during current module evaluation, the callback will be fired the next time the current module is evaluated.
|
|
125
|
+
* - If called at any other time, the callback will be fired the next time HMR is triggered.
|
|
126
|
+
* @see https://kirujs.dev/docs/api/lifecycles#onHmr
|
|
127
|
+
*
|
|
128
|
+
* ```ts
|
|
129
|
+
* import { onHmr } from "kiru"
|
|
130
|
+
* // start an interval in the module scope
|
|
131
|
+
* const interval = setInterval(() => {...}, 1000)
|
|
132
|
+
* // stop the interval when this file is reloaded
|
|
133
|
+
* onHmr(() => clearInterval(interval))
|
|
134
|
+
```
|
|
135
|
+
*/
|
|
136
|
+
export function onHmr(callback) {
|
|
137
|
+
if ("window" in globalThis && window.__kiru.HMRContext) {
|
|
138
|
+
window.__kiru.HMRContext.onHmr(callback);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
120
141
|
//# sourceMappingURL=hmr.js.map
|
package/dist/hmr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmr.js","sourceRoot":"","sources":["../src/hmr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"hmr.js","sourceRoot":"","sources":["../src/hmr.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
|
-
export * from "./
|
|
2
|
-
export * from "./
|
|
3
|
-
export * from "./
|
|
4
|
-
export * from "./
|
|
5
|
-
export * from "./useEffectEvent.js";
|
|
6
|
-
export * from "./useId.js";
|
|
7
|
-
export * from "./useLayoutEffect.js";
|
|
8
|
-
export * from "./useMemo.js";
|
|
9
|
-
export * from "./usePromise.js";
|
|
10
|
-
export * from "./useReducer.js";
|
|
11
|
-
export * from "./useRef.js";
|
|
12
|
-
export * from "./useState.js";
|
|
13
|
-
export * from "./useSyncExternalStore.js";
|
|
14
|
-
export * from "./useViewTransition.js";
|
|
1
|
+
export * from "./onCleanup.js";
|
|
2
|
+
export * from "./onMount.js";
|
|
3
|
+
export * from "./onBeforeMount.js";
|
|
4
|
+
export * from "./setup.js";
|
|
15
5
|
export * from "./utils.js";
|
|
16
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
|
-
export * from "./
|
|
2
|
-
export * from "./
|
|
3
|
-
export * from "./
|
|
4
|
-
export * from "./
|
|
5
|
-
export * from "./useEffectEvent.js";
|
|
6
|
-
export * from "./useId.js";
|
|
7
|
-
export * from "./useLayoutEffect.js";
|
|
8
|
-
export * from "./useMemo.js";
|
|
9
|
-
export * from "./usePromise.js";
|
|
10
|
-
export * from "./useReducer.js";
|
|
11
|
-
export * from "./useRef.js";
|
|
12
|
-
export * from "./useState.js";
|
|
13
|
-
export * from "./useSyncExternalStore.js";
|
|
14
|
-
export * from "./useViewTransition.js";
|
|
1
|
+
export * from "./onCleanup.js";
|
|
2
|
+
export * from "./onMount.js";
|
|
3
|
+
export * from "./onBeforeMount.js";
|
|
4
|
+
export * from "./setup.js";
|
|
15
5
|
export * from "./utils.js";
|
|
16
6
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers a callback that runs after the component is first mounted to the DOM, but before the DOM is painted.
|
|
3
|
+
* Optionally returns a cleanup function that will run when the component unmounts.
|
|
4
|
+
* Intended for use during component setup when the component returns a render function.
|
|
5
|
+
*
|
|
6
|
+
* @see https://kirujs.dev/docs/api/lifecycles#onBeforeMount
|
|
7
|
+
*/
|
|
8
|
+
export declare function onBeforeMount(fn: () => (() => void) | void): void;
|
|
9
|
+
//# sourceMappingURL=onBeforeMount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onBeforeMount.d.ts","sourceRoot":"","sources":["../../src/hooks/onBeforeMount.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAOjE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { sideEffectsEnabled } from "../utils/index.js";
|
|
2
|
+
import { getVNodeLifecycleHooks, wrapLifecycleHookCallback } from "./utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* Registers a callback that runs after the component is first mounted to the DOM, but before the DOM is painted.
|
|
5
|
+
* Optionally returns a cleanup function that will run when the component unmounts.
|
|
6
|
+
* Intended for use during component setup when the component returns a render function.
|
|
7
|
+
*
|
|
8
|
+
* @see https://kirujs.dev/docs/api/lifecycles#onBeforeMount
|
|
9
|
+
*/
|
|
10
|
+
export function onBeforeMount(fn) {
|
|
11
|
+
if (!sideEffectsEnabled())
|
|
12
|
+
return;
|
|
13
|
+
const hooks = getVNodeLifecycleHooks();
|
|
14
|
+
if (!hooks) {
|
|
15
|
+
throw new Error("Cannot queue beforeMount effect outside of a component");
|
|
16
|
+
}
|
|
17
|
+
hooks.pre.push(wrapLifecycleHookCallback(fn, hooks.preCleanups));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=onBeforeMount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onBeforeMount.js","sourceRoot":"","sources":["../../src/hooks/onBeforeMount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,EAA6B;IACzD,IAAI,CAAC,kBAAkB,EAAE;QAAE,OAAM;IACjC,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAA;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;AAClE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers a cleanup function that runs when the component unmounts.
|
|
3
|
+
* Intended for use during component setup when the component returns a render function.
|
|
4
|
+
*
|
|
5
|
+
* @see https://kirujs.dev/docs/api/lifecycles#onCleanup
|
|
6
|
+
*/
|
|
7
|
+
export declare function onCleanup(fn: () => void): void;
|
|
8
|
+
//# sourceMappingURL=onCleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onCleanup.d.ts","sourceRoot":"","sources":["../../src/hooks/onCleanup.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAO9C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { node } from "../globals.js";
|
|
2
|
+
import { generateRandomID, registerVNodeCleanup, sideEffectsEnabled, } from "../utils/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Registers a cleanup function that runs when the component unmounts.
|
|
5
|
+
* Intended for use during component setup when the component returns a render function.
|
|
6
|
+
*
|
|
7
|
+
* @see https://kirujs.dev/docs/api/lifecycles#onCleanup
|
|
8
|
+
*/
|
|
9
|
+
export function onCleanup(fn) {
|
|
10
|
+
if (!sideEffectsEnabled())
|
|
11
|
+
return;
|
|
12
|
+
const vNode = node.current;
|
|
13
|
+
if (!vNode) {
|
|
14
|
+
throw new Error("Cannot queue onCleanup effect outside of a component");
|
|
15
|
+
}
|
|
16
|
+
registerVNodeCleanup(vNode, generateRandomID(10), fn);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=onCleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onCleanup.js","sourceRoot":"","sources":["../../src/hooks/onCleanup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,EAAc;IACtC,IAAI,CAAC,kBAAkB,EAAE;QAAE,OAAM;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAQ,CAAA;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IACD,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;AACvD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers a callback that runs after the component is first mounted to the DOM.
|
|
3
|
+
* Optionally returns a cleanup function that will run after the component unmounts.
|
|
4
|
+
* Intended for use during component setup when the component returns a render function.
|
|
5
|
+
*
|
|
6
|
+
* @see https://kirujs.dev/docs/api/lifecycles#onMount
|
|
7
|
+
*/
|
|
8
|
+
export declare function onMount(fn: () => (() => void) | void): void;
|
|
9
|
+
//# sourceMappingURL=onMount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onMount.d.ts","sourceRoot":"","sources":["../../src/hooks/onMount.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAO3D"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { sideEffectsEnabled } from "../utils/index.js";
|
|
2
|
+
import { getVNodeLifecycleHooks, wrapLifecycleHookCallback } from "./utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* Registers a callback that runs after the component is first mounted to the DOM.
|
|
5
|
+
* Optionally returns a cleanup function that will run after the component unmounts.
|
|
6
|
+
* Intended for use during component setup when the component returns a render function.
|
|
7
|
+
*
|
|
8
|
+
* @see https://kirujs.dev/docs/api/lifecycles#onMount
|
|
9
|
+
*/
|
|
10
|
+
export function onMount(fn) {
|
|
11
|
+
if (!sideEffectsEnabled())
|
|
12
|
+
return;
|
|
13
|
+
const hooks = getVNodeLifecycleHooks();
|
|
14
|
+
if (!hooks) {
|
|
15
|
+
throw new Error("Cannot queue onMount effect outside of a component");
|
|
16
|
+
}
|
|
17
|
+
hooks.post.push(wrapLifecycleHookCallback(fn, hooks.postCleanups));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=onMount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onMount.js","sourceRoot":"","sources":["../../src/hooks/onMount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,EAA6B;IACnD,IAAI,CAAC,kBAAkB,EAAE;QAAE,OAAM;IACjC,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAA;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;AACpE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Signal } from "../signals/base.js";
|
|
2
|
+
export interface Setup<Props extends {}> {
|
|
3
|
+
readonly derive: <T>(selector: (props: Props extends Kiru.FC<infer P> ? P : Props) => T) => Signal<T>;
|
|
4
|
+
readonly id: Signal<string>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Creates a per‑VNode setup context that can be used during
|
|
8
|
+
* component setup to derive props into signals.
|
|
9
|
+
*
|
|
10
|
+
* @see https://kirujs.dev/docs/api/lifecycles#setup
|
|
11
|
+
*/
|
|
12
|
+
export declare function setup<Props extends {}>(): Setup<Props>;
|
|
13
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/hooks/setup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAIhD,MAAM,WAAW,KAAK,CAAC,KAAK,SAAS,EAAE;IACrC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,SAAS,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,KAC/D,MAAM,CAAC,CAAC,CAAC,CAAA;IACd,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,SAAS,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,CAkBtD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { node, setups } from "../globals.js";
|
|
2
|
+
import { signal } from "../signals/index.js";
|
|
3
|
+
import { createVNodeId } from "../utils/vdom.js";
|
|
4
|
+
import { __DEV__ } from "../env.js";
|
|
5
|
+
/**
|
|
6
|
+
* Creates a per‑VNode setup context that can be used during
|
|
7
|
+
* component setup to derive props into signals.
|
|
8
|
+
*
|
|
9
|
+
* @see https://kirujs.dev/docs/api/lifecycles#setup
|
|
10
|
+
*/
|
|
11
|
+
export function setup() {
|
|
12
|
+
const vNode = node.current;
|
|
13
|
+
if (__DEV__) {
|
|
14
|
+
if (!vNode) {
|
|
15
|
+
throw new Error("setup() must be called inside a Kiru component");
|
|
16
|
+
}
|
|
17
|
+
if (vNode.render) {
|
|
18
|
+
throw new Error("setup() cannot be used inside a render function");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (setups.has(vNode)) {
|
|
22
|
+
return setups.get(vNode);
|
|
23
|
+
}
|
|
24
|
+
const setup = createSetup(vNode);
|
|
25
|
+
setups.set(vNode, setup);
|
|
26
|
+
return setup;
|
|
27
|
+
}
|
|
28
|
+
function createSetup(vNode) {
|
|
29
|
+
let id;
|
|
30
|
+
const propSyncs = (vNode.propSyncs = []);
|
|
31
|
+
let prevIndex = -1;
|
|
32
|
+
return {
|
|
33
|
+
derive(selector) {
|
|
34
|
+
const props = { ...vNode.props };
|
|
35
|
+
const sig = signal(selector(props));
|
|
36
|
+
propSyncs.push((p) => (sig.value = selector(p)));
|
|
37
|
+
return sig;
|
|
38
|
+
},
|
|
39
|
+
get id() {
|
|
40
|
+
if (!id) {
|
|
41
|
+
id = signal(createVNodeId(vNode));
|
|
42
|
+
prevIndex = vNode.index;
|
|
43
|
+
propSyncs.push(() => {
|
|
44
|
+
if (prevIndex !== vNode.index) {
|
|
45
|
+
id.value = createVNodeId(vNode);
|
|
46
|
+
prevIndex = vNode.index;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return id;
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/hooks/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC;;;;;GAKG;AACH,MAAM,UAAU,KAAK;IACnB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAQ,CAAA;IAC3B,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QACnE,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;IAC3B,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAQ,KAAK,CAAC,CAAA;IACvC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACxB,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,WAAW,CAAmB,KAAiB;IACtD,IAAI,EAAkB,CAAA;IAGtB,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAuC,CAAA;IAE9E,IAAI,SAAS,GAAG,CAAC,CAAC,CAAA;IAElB,OAAO;QACL,MAAM,CAAC,QAAQ;YACb,MAAM,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAAmB,CAAA;YACjD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;YACnC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAChD,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,IAAI,EAAE;YACJ,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;gBACjC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAA;gBACvB,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;oBAClB,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;wBAC9B,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;wBAC/B,SAAS,GAAG,KAAK,CAAC,KAAK,CAAA;oBACzB,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,EAAE,CAAA;QACX,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/hooks/utils.d.ts
CHANGED
|
@@ -1,64 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
declare enum HookDebugGroupAction {
|
|
4
|
-
Start = "start",
|
|
5
|
-
End = "end"
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* **dev only - this is a no-op in production.**
|
|
9
|
-
*
|
|
10
|
-
* Used to create 'groups' of hooks in the devtools.
|
|
11
|
-
* Useful for debugging and profiling.
|
|
12
|
-
*/
|
|
13
|
-
declare const useHookDebugGroup: (name: string, action: HookDebugGroupAction) => void;
|
|
14
|
-
/**
|
|
15
|
-
* Used obtain an 'requestUpdate' function for the current component.
|
|
16
|
-
*/
|
|
17
|
-
declare const useRequestUpdate: () => () => void;
|
|
18
|
-
/**
|
|
19
|
-
* Used to obtain the 'VNode' for the current component.
|
|
20
|
-
*/
|
|
21
|
-
declare const useVNode: () => Kiru.VNode;
|
|
22
|
-
type HookCallbackContext<T> = {
|
|
23
|
-
/**
|
|
24
|
-
* The current state of the hook
|
|
25
|
-
*/
|
|
26
|
-
hook: HookState<T>;
|
|
27
|
-
/**
|
|
28
|
-
* Indicates if this is the first time the hook has been initialized
|
|
29
|
-
*/
|
|
30
|
-
isInit: boolean;
|
|
31
|
-
/**
|
|
32
|
-
* Dev mode only - indicates if the hook is being run as a result of a HMR update.
|
|
33
|
-
* This is the time to clean up the previous version of the hook if necessary, ie. initial arguments changed.
|
|
34
|
-
*/
|
|
35
|
-
isHMR?: boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Queues the current component to be re-rendered
|
|
38
|
-
*/
|
|
39
|
-
update: () => void;
|
|
40
|
-
/**
|
|
41
|
-
* Queues an effect to be run, either immediately or on the next render
|
|
42
|
-
*/
|
|
43
|
-
queueEffect: (callback: Function, opts?: {
|
|
44
|
-
immediate?: boolean;
|
|
45
|
-
}) => void;
|
|
46
|
-
/**
|
|
47
|
-
* The VNode associated with the current component
|
|
48
|
-
*/
|
|
49
|
-
vNode: Kiru.VNode;
|
|
50
|
-
/**
|
|
51
|
-
* The index of the current hook.
|
|
52
|
-
* You can count on this being stable across renders,
|
|
53
|
-
* and unique across separate hooks in the same component.
|
|
54
|
-
*/
|
|
55
|
-
index: number;
|
|
56
|
-
};
|
|
57
|
-
type HookCallback<T> = (state: HookCallbackContext<T>) => any;
|
|
58
|
-
declare function useHook<T extends () => Record<string, unknown>, U extends HookCallback<ReturnType<T>>>(hookName: string, hookInitializer: T, callback: U): ReturnType<U>;
|
|
59
|
-
declare function useHook<T extends Record<string, unknown>, U extends HookCallback<T>>(hookName: string, hookData: T, callback: U): ReturnType<U>;
|
|
60
|
-
declare function cleanupHook(hook: {
|
|
61
|
-
cleanup?: () => void;
|
|
62
|
-
}): void;
|
|
63
|
-
declare function depsRequireChange(a?: unknown[], b?: unknown[]): boolean;
|
|
1
|
+
export declare function getVNodeLifecycleHooks(): null | NonNullable<Kiru.VNode["hooks"]>;
|
|
2
|
+
export declare function wrapLifecycleHookCallback(callback: Kiru.LifecycleHookCallback, cleanups: (() => void)[]): Kiru.LifecycleHookCallback;
|
|
64
3
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/hooks/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/hooks/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,IAAI,IAAI,GAAG,WAAW,CAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CACpB,CAUA;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EACpC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,GACvB,IAAI,CAAC,qBAAqB,CAO5B"}
|