kiru 0.52.3 → 0.53.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.map +1 -1
- package/dist/appContext.js +14 -11
- package/dist/appContext.js.map +1 -1
- package/dist/components/derive.d.ts +20 -0
- package/dist/components/derive.d.ts.map +1 -0
- package/dist/components/derive.js +57 -0
- package/dist/components/derive.js.map +1 -0
- package/dist/components/errorBoundary.d.ts +1 -1
- package/dist/components/errorBoundary.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/memo.d.ts +6 -3
- package/dist/components/memo.d.ts.map +1 -1
- package/dist/components/memo.js.map +1 -1
- package/dist/constants.d.ts +3 -3
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -3
- package/dist/constants.js.map +1 -1
- package/dist/dom.d.ts.map +1 -1
- package/dist/dom.js +69 -66
- package/dist/dom.js.map +1 -1
- package/dist/element.d.ts +2 -2
- package/dist/element.d.ts.map +1 -1
- package/dist/element.js +20 -32
- package/dist/element.js.map +1 -1
- package/dist/globalContext.d.ts +6 -1
- package/dist/globalContext.d.ts.map +1 -1
- package/dist/globalContext.js +14 -2
- package/dist/globalContext.js.map +1 -1
- package/dist/hooks/usePromise.d.ts +4 -9
- package/dist/hooks/usePromise.d.ts.map +1 -1
- package/dist/hooks/usePromise.js +25 -28
- package/dist/hooks/usePromise.js.map +1 -1
- package/dist/hooks/useRef.d.ts +2 -2
- package/dist/hooks/useRef.d.ts.map +1 -1
- package/dist/jsx.d.ts +1 -1
- package/dist/jsx.d.ts.map +1 -1
- package/dist/reconciler.d.ts +1 -1
- package/dist/reconciler.d.ts.map +1 -1
- package/dist/reconciler.js +57 -117
- package/dist/reconciler.js.map +1 -1
- package/dist/recursiveRender.d.ts +4 -3
- package/dist/recursiveRender.d.ts.map +1 -1
- package/dist/recursiveRender.js +20 -19
- package/dist/recursiveRender.js.map +1 -1
- package/dist/renderToString.js +2 -2
- package/dist/renderToString.js.map +1 -1
- package/dist/router/fileRouterController.d.ts +1 -1
- package/dist/router/fileRouterController.d.ts.map +1 -1
- package/dist/router/fileRouterController.js +11 -9
- package/dist/router/fileRouterController.js.map +1 -1
- package/dist/router/index.d.ts +1 -1
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/scrollStack.d.ts +0 -1
- package/dist/router/scrollStack.d.ts.map +1 -1
- package/dist/router/scrollStack.js +0 -3
- package/dist/router/scrollStack.js.map +1 -1
- package/dist/router/utils/index.d.ts +1 -1
- package/dist/router/utils/index.d.ts.map +1 -1
- package/dist/signals/base.d.ts +1 -3
- package/dist/signals/base.d.ts.map +1 -1
- package/dist/signals/base.js +3 -3
- package/dist/signals/base.js.map +1 -1
- package/dist/signals/computed.d.ts +4 -2
- package/dist/signals/computed.d.ts.map +1 -1
- package/dist/signals/computed.js +29 -6
- package/dist/signals/computed.js.map +1 -1
- package/dist/signals/for.d.ts +10 -0
- package/dist/signals/for.d.ts.map +1 -0
- package/dist/signals/for.js +7 -0
- package/dist/signals/for.js.map +1 -0
- package/dist/signals/index.d.ts +1 -1
- package/dist/signals/index.js +1 -1
- package/dist/signals/types.d.ts +1 -1
- package/dist/signals/types.d.ts.map +1 -1
- package/dist/ssr/server.js +13 -13
- package/dist/ssr/server.js.map +1 -1
- package/dist/types.d.ts +10 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/types.dom.d.ts +33 -32
- package/dist/types.dom.d.ts.map +1 -1
- package/dist/types.utils.d.ts +5 -1
- package/dist/types.utils.d.ts.map +1 -1
- package/dist/utils/format.d.ts +2 -2
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +4 -3
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/promise.d.ts +16 -0
- package/dist/utils/promise.d.ts.map +1 -0
- package/dist/utils/promise.js +14 -0
- package/dist/utils/promise.js.map +1 -0
- package/dist/utils/runtime.d.ts +10 -1
- package/dist/utils/runtime.d.ts.map +1 -1
- package/dist/utils/runtime.js +25 -1
- package/dist/utils/runtime.js.map +1 -1
- package/dist/utils/vdom.d.ts +4 -4
- package/dist/utils/vdom.d.ts.map +1 -1
- package/dist/utils/vdom.js +18 -17
- package/dist/utils/vdom.js.map +1 -1
- package/dist/vNode.d.ts +4 -0
- package/dist/vNode.d.ts.map +1 -0
- package/dist/vNode.js +22 -0
- package/dist/vNode.js.map +1 -0
- package/package.json +1 -1
- package/src/appContext.ts +15 -13
- package/src/components/derive.ts +121 -0
- package/src/components/index.ts +1 -1
- package/src/components/memo.ts +3 -2
- package/src/constants.ts +4 -4
- package/src/dom.ts +71 -66
- package/src/element.ts +22 -35
- package/src/globalContext.ts +24 -3
- package/src/hooks/usePromise.ts +32 -41
- package/src/hooks/useRef.ts +2 -2
- package/src/reconciler.ts +87 -125
- package/src/recursiveRender.ts +25 -23
- package/src/renderToString.ts +3 -3
- package/src/router/fileRouterController.ts +19 -9
- package/src/router/scrollStack.ts +23 -26
- package/src/signals/base.ts +3 -3
- package/src/signals/computed.ts +43 -6
- package/src/signals/for.ts +25 -0
- package/src/signals/index.ts +1 -1
- package/src/signals/types.ts +5 -1
- package/src/ssr/server.ts +15 -15
- package/src/types.dom.ts +40 -40
- package/src/types.ts +11 -11
- package/src/types.utils.ts +11 -1
- package/src/utils/format.ts +7 -4
- package/src/utils/index.ts +0 -2
- package/src/utils/promise.ts +26 -0
- package/src/utils/runtime.ts +29 -1
- package/src/utils/vdom.ts +20 -23
- package/src/vNode.ts +30 -0
- package/dist/components/suspense.d.ts +0 -24
- package/dist/components/suspense.d.ts.map +0 -1
- package/dist/components/suspense.js +0 -36
- package/dist/components/suspense.js.map +0 -1
- package/dist/signals/jsx.d.ts +0 -17
- package/dist/signals/jsx.d.ts.map +0 -1
- package/dist/signals/jsx.js +0 -11
- package/dist/signals/jsx.js.map +0 -1
- package/src/components/suspense.ts +0 -72
- package/src/signals/jsx.ts +0 -46
package/dist/appContext.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appContext.d.ts","sourceRoot":"","sources":["../src/appContext.ts"],"names":[],"mappings":"AAKA,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAEvB,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,CAAA;IACf,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;IACnC,OAAO,IAAI,IAAI,CAAA;CAChB;AAID,wBAAgB,KAAK,CACnB,QAAQ,EAAE,GAAG,CAAC,OAAO,EACrB,SAAS,EAAE,WAAW,EACtB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,UAAU,
|
|
1
|
+
{"version":3,"file":"appContext.d.ts","sourceRoot":"","sources":["../src/appContext.ts"],"names":[],"mappings":"AAKA,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAEvB,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,CAAA;IACf,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;IACnC,OAAO,IAAI,IAAI,CAAA;CAChB;AAID,wBAAgB,KAAK,CACnB,QAAQ,EAAE,GAAG,CAAC,OAAO,EACrB,SAAS,EAAE,WAAW,EACtB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,UAAU,CA8CZ"}
|
package/dist/appContext.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FLAG_STATIC_DOM } from "./constants.js";
|
|
2
|
-
import { createElement } from "./element.js";
|
|
3
2
|
import { __DEV__ } from "./env.js";
|
|
4
|
-
import { renderRootSync } from "./scheduler.js";
|
|
3
|
+
import { renderRootSync, requestUpdate } from "./scheduler.js";
|
|
4
|
+
import { createVNode } from "./vNode.js";
|
|
5
5
|
let appId = 0;
|
|
6
6
|
export function mount(children, container, options) {
|
|
7
7
|
if (__DEV__) {
|
|
@@ -9,17 +9,11 @@ export function mount(children, container, options) {
|
|
|
9
9
|
throw new Error("[kiru]: container in use - call unmount on the previous app first.");
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
const rootNode =
|
|
13
|
-
if (__DEV__) {
|
|
14
|
-
container.__kiruNode = rootNode;
|
|
15
|
-
}
|
|
16
|
-
rootNode.dom = container;
|
|
17
|
-
rootNode.flags |= FLAG_STATIC_DOM;
|
|
12
|
+
const rootNode = createRootNode(container);
|
|
18
13
|
const id = appId++;
|
|
19
|
-
const name = options?.name ?? `App-${id}`;
|
|
20
14
|
const appContext = {
|
|
21
15
|
id,
|
|
22
|
-
name
|
|
16
|
+
name: options?.name ?? `App-${id}`,
|
|
23
17
|
rootNode,
|
|
24
18
|
render,
|
|
25
19
|
unmount,
|
|
@@ -41,7 +35,7 @@ export function mount(children, container, options) {
|
|
|
41
35
|
rootNode.app = appContext;
|
|
42
36
|
}
|
|
43
37
|
render(children);
|
|
44
|
-
window.__kiru.emit("mount", appContext);
|
|
38
|
+
window.__kiru.emit("mount", appContext, requestUpdate);
|
|
45
39
|
if (__DEV__) {
|
|
46
40
|
queueMicrotask(() => {
|
|
47
41
|
window.dispatchEvent(new Event("kiru:ready"));
|
|
@@ -49,4 +43,13 @@ export function mount(children, container, options) {
|
|
|
49
43
|
}
|
|
50
44
|
return appContext;
|
|
51
45
|
}
|
|
46
|
+
function createRootNode(container) {
|
|
47
|
+
const node = createVNode(container.nodeName.toLowerCase());
|
|
48
|
+
node.flags |= FLAG_STATIC_DOM;
|
|
49
|
+
node.dom = container;
|
|
50
|
+
if (__DEV__) {
|
|
51
|
+
container.__kiruNode = node;
|
|
52
|
+
}
|
|
53
|
+
return node;
|
|
54
|
+
}
|
|
52
55
|
//# sourceMappingURL=appContext.js.map
|
package/dist/appContext.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appContext.js","sourceRoot":"","sources":["../src/appContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"appContext.js","sourceRoot":"","sources":["../src/appContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAmBxC,IAAI,KAAK,GAAG,CAAC,CAAA;AAEb,MAAM,UAAU,KAAK,CACnB,QAAqB,EACrB,SAAsB,EACtB,OAA2B;IAE3B,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAA;QACH,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IAC1C,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,UAAU,GAAe;QAC7B,EAAE;QACF,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,EAAE;QAClC,QAAQ;QACR,MAAM;QACN,OAAO;KACR,CAAA;IAED,SAAS,MAAM,CAAC,QAAqB;QACnC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAClC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC1B,CAAC;IAED,SAAS,OAAO;QACd,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;QAC9B,cAAc,CAAC,QAAQ,CAAC,CAAA;QACxB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC,UAAU,CAAA;YAC3B,OAAO,QAAQ,CAAC,GAAG,CAAA;QACrB,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,QAAQ,CAAC,GAAG,GAAG,UAAU,CAAA;IAC3B,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,CAAA;IAChB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;IACtD,IAAI,OAAO,EAAE,CAAC;QACZ,cAAc,CAAC,GAAG,EAAE;YAClB,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,SAAsB;IAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IAC1D,IAAI,CAAC,KAAK,IAAI,eAAe,CAAA;IAC7B,IAAI,CAAC,GAAG,GAAG,SAAS,CAAA;IACpB,IAAI,OAAO,EAAE,CAAC;QACZ,SAAS,CAAC,UAAU,GAAG,IAAI,CAAA;IAC7B,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Signal } from "../signals/index.js";
|
|
2
|
+
import type { RecordHas } from "../types.utils";
|
|
3
|
+
export type Derivable = Kiru.Signal<unknown> | Kiru.StatefulPromise<unknown> | Record<string, Kiru.Signal<unknown> | Kiru.StatefulPromise<unknown>>;
|
|
4
|
+
type InnerOf<T> = T extends Kiru.Signal<infer V> ? V : T extends Kiru.StatefulPromise<infer P> ? P : never;
|
|
5
|
+
type UnwrapDerive<T extends Derivable> = T extends Kiru.Signal<unknown> | Kiru.StatefulPromise<any> ? InnerOf<T> : {
|
|
6
|
+
[K in keyof T]: InnerOf<T[K]>;
|
|
7
|
+
};
|
|
8
|
+
type RecordHasPromise<T extends Record<string, any>> = RecordHas<T, Kiru.StatefulPromise<any>>;
|
|
9
|
+
type ChildFn<T> = (value: T) => JSX.Children;
|
|
10
|
+
type ChildFnWithStale<T> = (value: T, isStale: boolean) => JSX.Children;
|
|
11
|
+
export type DeriveFallbackMode = "swr" | "fallback";
|
|
12
|
+
export interface DeriveProps<T extends Derivable, Mode extends DeriveFallbackMode = "fallback"> {
|
|
13
|
+
from: T;
|
|
14
|
+
mode?: Mode;
|
|
15
|
+
children: T extends Kiru.StatefulPromise<infer U> ? Mode extends "swr" ? ChildFnWithStale<U> : ChildFn<U> : T extends Record<string, any> ? RecordHasPromise<T> extends true ? Mode extends "swr" ? ChildFnWithStale<UnwrapDerive<T>> : ChildFn<UnwrapDerive<T>> : ChildFn<UnwrapDerive<T>> : ChildFn<UnwrapDerive<T>>;
|
|
16
|
+
fallback?: T extends Kiru.StatefulPromise<any> ? JSX.Element : T extends Record<string, any> ? RecordHasPromise<T> extends true ? JSX.Element : never : never;
|
|
17
|
+
}
|
|
18
|
+
export declare function Derive<T extends Derivable, U extends DeriveFallbackMode = "swr">(props: DeriveProps<T, U>): string | number | bigint | boolean | Kiru.Element | JSX.Element[] | Signal<JSX.PrimitiveChild> | (T extends Kiru.StatefulPromise<any> ? JSX.Element : T extends Record<string, any> ? RecordHas<T, Kiru.StatefulPromise<any>> extends true ? JSX.Element : never : never) | null | undefined;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=derive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/components/derive.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,MAAM,MAAM,SAAS,GACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GACpB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;AAExE,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAC5C,CAAC,GACD,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GACvC,CAAC,GACD,KAAK,CAAA;AAET,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SACtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GACpB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GACzB,OAAO,CAAC,CAAC,CAAC,GACV;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AAErC,KAAK,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,SAAS,CAC9D,CAAC,EACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAC1B,CAAA;AAED,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAA;AAC5C,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAA;AAEvE,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,UAAU,CAAA;AAEnD,MAAM,WAAW,WAAW,CAC1B,CAAC,SAAS,SAAS,EACnB,IAAI,SAAS,kBAAkB,GAAG,UAAU;IAE5C,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,EAAE,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAC7C,IAAI,SAAS,KAAK,GAChB,gBAAgB,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,GACZ,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,gBAAgB,CAAC,CAAC,CAAC,SAAS,IAAI,GAC9B,IAAI,SAAS,KAAK,GAChB,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAC1C,GAAG,CAAC,OAAO,GACX,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,gBAAgB,CAAC,CAAC,CAAC,SAAS,IAAI,GAC9B,GAAG,CAAC,OAAO,GACX,KAAK,GACP,KAAK,CAAA;CACV;AAED,wBAAgB,MAAM,CACpB,CAAC,SAAS,SAAS,EACnB,CAAC,SAAS,kBAAkB,GAAG,KAAK,EACpC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,gSAuDzB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { node } from "../globals.js";
|
|
2
|
+
import { $STREAM_DATA } from "../constants.js";
|
|
3
|
+
import { requestUpdate } from "../scheduler.js";
|
|
4
|
+
import { useRef } from "../hooks/index.js";
|
|
5
|
+
import { Signal } from "../signals/index.js";
|
|
6
|
+
import { sideEffectsEnabled } from "../utils/index.js";
|
|
7
|
+
import { isStatefulPromise } from "../utils/promise.js";
|
|
8
|
+
export function Derive(props) {
|
|
9
|
+
const { from, children, fallback, mode } = props;
|
|
10
|
+
const prevSuccess = useRef(null);
|
|
11
|
+
const promises = new Set();
|
|
12
|
+
let value;
|
|
13
|
+
if (isStatefulPromise(from)) {
|
|
14
|
+
promises.add(from);
|
|
15
|
+
value = from.value;
|
|
16
|
+
}
|
|
17
|
+
else if (Signal.isSignal(from)) {
|
|
18
|
+
value = from.value;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
const out = {};
|
|
22
|
+
for (const key in from) {
|
|
23
|
+
const v = from[key];
|
|
24
|
+
if (isStatefulPromise(v))
|
|
25
|
+
promises.add(v);
|
|
26
|
+
out[key] = v.value;
|
|
27
|
+
}
|
|
28
|
+
value = out;
|
|
29
|
+
}
|
|
30
|
+
if (promises.size === 0) {
|
|
31
|
+
return children(value);
|
|
32
|
+
}
|
|
33
|
+
if (!sideEffectsEnabled()) {
|
|
34
|
+
throw {
|
|
35
|
+
[$STREAM_DATA]: {
|
|
36
|
+
fallback,
|
|
37
|
+
data: Array.from(promises),
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
for (const p of promises) {
|
|
42
|
+
if (p.state === "rejected") {
|
|
43
|
+
throw p.error;
|
|
44
|
+
}
|
|
45
|
+
if (p.state === "pending") {
|
|
46
|
+
const nodeRef = node.current;
|
|
47
|
+
Promise.allSettled(promises).then(() => requestUpdate(nodeRef));
|
|
48
|
+
if (mode !== "fallback" && prevSuccess.current) {
|
|
49
|
+
return children(prevSuccess.current, true);
|
|
50
|
+
}
|
|
51
|
+
return fallback;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
prevSuccess.current = value;
|
|
55
|
+
return children(value, false);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=derive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive.js","sourceRoot":"","sources":["../../src/components/derive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAA;AAuD7E,MAAM,UAAU,MAAM,CAGpB,KAAwB;IACxB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAChD,MAAM,WAAW,GAAG,MAAM,CAAyB,IAAI,CAAC,CAAA;IAExD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAA;IACrD,IAAI,KAAsB,CAAA;IAE1B,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAClB,KAAK,GAAG,IAAI,CAAC,KAAwB,CAAA;IACvC,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,KAAK,GAAG,IAAI,CAAC,KAAwB,CAAA;IACvC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAwB,EAAE,CAAA;QACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACnB,IAAI,iBAAiB,CAAC,CAAC,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACzC,GAAG,CAAC,GAAG,CAAC,GAAI,CAAqD,CAAC,KAAK,CAAA;QACzE,CAAC;QACD,KAAK,GAAG,GAAsB,CAAA;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACxB,OAAQ,QAAqC,CAAC,KAAK,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1B,MAAM;YACJ,CAAC,YAAY,CAAC,EAAE;gBACd,QAAQ;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC3B;SAC6B,CAAA;IAClC,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,CAAC,KAAK,CAAA;QACf,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAQ,CAAA;YAC7B,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;YAE/D,IAAI,IAAI,KAAK,UAAU,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC/C,OAAQ,QAA8C,CACpD,WAAW,CAAC,OAAO,EACnB,IAAI,CACL,CAAA;YACH,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC;IACH,CAAC;IAED,WAAW,CAAC,OAAO,GAAG,KAAK,CAAA;IAC3B,OAAQ,QAA8C,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACtE,CAAC"}
|
|
@@ -3,5 +3,5 @@ export interface ErrorBoundaryProps {
|
|
|
3
3
|
fallback?: JSX.Element | ((error: Error) => JSX.Element);
|
|
4
4
|
onError?: (error: Error) => void;
|
|
5
5
|
}
|
|
6
|
-
export declare function ErrorBoundary({ children, fallback, onError, }: ErrorBoundaryProps): Kiru.
|
|
6
|
+
export declare function ErrorBoundary({ children, fallback, onError, }: ErrorBoundaryProps): Kiru.Element;
|
|
7
7
|
//# sourceMappingURL=errorBoundary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorBoundary.d.ts","sourceRoot":"","sources":["../../src/components/errorBoundary.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAA;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAC,OAAO,CAAC,CAAA;IACxD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"errorBoundary.d.ts","sourceRoot":"","sources":["../../src/components/errorBoundary.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAA;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAC,OAAO,CAAC,CAAA;IACxD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,kBAAkB,gBAEpB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { ErrorBoundary, type ErrorBoundaryProps } from "./errorBoundary.js";
|
|
2
|
+
export * from "./derive.js";
|
|
2
3
|
export * from "./lazy.js";
|
|
3
4
|
export { memo } from "./memo.js";
|
|
4
5
|
export * from "./portal.js";
|
|
5
|
-
export * from "./suspense.js";
|
|
6
6
|
export * from "./transition.js";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
|
package/dist/components/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { ErrorBoundary } from "./errorBoundary.js";
|
|
2
|
+
export * from "./derive.js";
|
|
2
3
|
export * from "./lazy.js";
|
|
3
4
|
export { memo } from "./memo.js";
|
|
4
5
|
export * from "./portal.js";
|
|
5
|
-
export * from "./suspense.js";
|
|
6
6
|
export * from "./transition.js";
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAA;AAC3E,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAA;AAC3E,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { $MEMO } from "../constants.js";
|
|
2
|
-
export
|
|
2
|
+
export interface MemoFn<T extends Record<string, unknown> = {}> {
|
|
3
|
+
(props: T): JSX.Element;
|
|
3
4
|
[$MEMO]: {
|
|
4
5
|
arePropsEqual: (prevProps: Record<string, unknown>, nextProps: Record<string, unknown>) => boolean;
|
|
5
6
|
};
|
|
6
|
-
}
|
|
7
|
+
}
|
|
7
8
|
export declare function memo<T extends Record<string, unknown> = {}>(fn: Kiru.FC<T>, arePropsEqual?: (prevProps: T, nextProps: T) => boolean): (props: T) => JSX.Element;
|
|
8
|
-
export declare function isMemoFn(fn:
|
|
9
|
+
export declare function isMemoFn(fn: Function & {
|
|
10
|
+
[$MEMO]?: any;
|
|
11
|
+
}): fn is MemoFn;
|
|
9
12
|
//# sourceMappingURL=memo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memo.d.ts","sourceRoot":"","sources":["../../src/components/memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAiBvC,MAAM,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"memo.d.ts","sourceRoot":"","sources":["../../src/components/memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAiBvC,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE;IAC5D,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAA;IACvB,CAAC,KAAK,CAAC,EAAE;QACP,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,OAAO,CAAA;KACb,CAAA;CACF;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,EACzD,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EACd,aAAa,GAAE,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,OAAwB,GACtE,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,OAAO,CAU3B;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,EAAE,IAAI,MAAM,CAIvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/components/memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C,SAAS,cAAc,CACrB,SAAY,EACZ,SAAY;IAEZ,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC5E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;
|
|
1
|
+
{"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/components/memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C,SAAS,cAAc,CACrB,SAAY,EACZ,SAAY;IAEZ,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC5E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAYD,MAAM,UAAU,IAAI,CAClB,EAAc,EACd,gBAAyD,cAAc;IAEvE,OAAO,MAAM,CAAC,MAAM,CAClB,SAAS,IAAI,CAAC,KAAQ;QACpB,OAAO,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACjC,CAAC,EACD;QACE,CAAC,KAAK,CAAC,EAAE,EAAE,aAAa,EAAE;QAC1B,WAAW,EAAE,WAAW;KACzB,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAgC;IACvD,OAAO,CACL,OAAO,EAAE,KAAK,UAAU,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,KAAK,UAAU,CAC3E,CAAA;AACH,CAAC"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { $SIGNAL, $CONTEXT, $CONTEXT_PROVIDER, $FRAGMENT, $KIRU_ERROR, $HMR_ACCEPT, $MEMO, $ERROR_BOUNDARY, $
|
|
1
|
+
export { $SIGNAL, $CONTEXT, $CONTEXT_PROVIDER, $FRAGMENT, $KIRU_ERROR, $HMR_ACCEPT, $MEMO, $ERROR_BOUNDARY, $STREAM_DATA, $DEV_FILE_LINK, CONSECUTIVE_DIRTY_LIMIT, STREAMED_DATA_EVENT, EVENT_PREFIX_REGEX, FLAG_UPDATE, FLAG_PLACEMENT, FLAG_DELETION, FLAG_STATIC_DOM, FLAG_MEMO, FLAG_NOOP, FLAG_DIRTY, };
|
|
2
2
|
export { voidElements, svgTags, booleanAttributes, snakeCaseAttributes };
|
|
3
3
|
declare const $SIGNAL: unique symbol;
|
|
4
4
|
declare const $CONTEXT: unique symbol;
|
|
@@ -8,10 +8,10 @@ declare const $KIRU_ERROR: unique symbol;
|
|
|
8
8
|
declare const $HMR_ACCEPT: unique symbol;
|
|
9
9
|
declare const $MEMO: unique symbol;
|
|
10
10
|
declare const $ERROR_BOUNDARY: unique symbol;
|
|
11
|
-
declare const $
|
|
11
|
+
declare const $STREAM_DATA: unique symbol;
|
|
12
12
|
declare const $DEV_FILE_LINK: unique symbol;
|
|
13
13
|
declare const CONSECUTIVE_DIRTY_LIMIT = 50;
|
|
14
|
-
declare const
|
|
14
|
+
declare const STREAMED_DATA_EVENT = "kiru:deferred";
|
|
15
15
|
declare const FLAG_UPDATE: number;
|
|
16
16
|
declare const FLAG_PLACEMENT: number;
|
|
17
17
|
declare const FLAG_DELETION: number;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,WAAW,EACX,KAAK,EACL,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,WAAW,EACX,KAAK,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,GACX,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;AAExE,QAAA,MAAM,OAAO,eAA4B,CAAA;AACzC,QAAA,MAAM,QAAQ,eAA6B,CAAA;AAC3C,QAAA,MAAM,iBAAiB,eAAqC,CAAA;AAC5D,QAAA,MAAM,SAAS,eAA8B,CAAA;AAC7C,QAAA,MAAM,WAAW,eAA2B,CAAA;AAC5C,QAAA,MAAM,WAAW,eAA+B,CAAA;AAChD,QAAA,MAAM,KAAK,eAA0B,CAAA;AACrC,QAAA,MAAM,eAAe,eAAmC,CAAA;AACxD,QAAA,MAAM,YAAY,eAAgC,CAAA;AAClD,QAAA,MAAM,cAAc,eAAiC,CAAA;AAErD,QAAA,MAAM,uBAAuB,KAAK,CAAA;AAClC,QAAA,MAAM,mBAAmB,kBAAkB,CAAA;AAE3C,QAAA,MAAM,WAAW,QAAS,CAAA;AAC1B,QAAA,MAAM,cAAc,QAAS,CAAA;AAC7B,QAAA,MAAM,aAAa,QAAS,CAAA;AAC5B,QAAA,MAAM,eAAe,QAAS,CAAA;AAC9B,QAAA,MAAM,SAAS,QAAS,CAAA;AACxB,QAAA,MAAM,SAAS,QAAS,CAAA;AACxB,QAAA,MAAM,UAAU,QAAS,CAAA;AAEzB,QAAA,MAAM,kBAAkB,QAAU,CAAA;AAElC,QAAA,MAAM,YAAY,aAgBhB,CAAA;AAEF,QAAA,MAAM,OAAO,aAiDX,CAAA;AAEF,QAAA,MAAM,iBAAiB,aAkCrB,CAAA;AAEF,QAAA,MAAM,mBAAmB,qBA6EvB,CAAA"}
|
package/dist/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { $SIGNAL, $CONTEXT, $CONTEXT_PROVIDER, $FRAGMENT, $KIRU_ERROR, $HMR_ACCEPT, $MEMO, $ERROR_BOUNDARY, $
|
|
1
|
+
export { $SIGNAL, $CONTEXT, $CONTEXT_PROVIDER, $FRAGMENT, $KIRU_ERROR, $HMR_ACCEPT, $MEMO, $ERROR_BOUNDARY, $STREAM_DATA, $DEV_FILE_LINK, CONSECUTIVE_DIRTY_LIMIT, STREAMED_DATA_EVENT, EVENT_PREFIX_REGEX, FLAG_UPDATE, FLAG_PLACEMENT, FLAG_DELETION, FLAG_STATIC_DOM, FLAG_MEMO, FLAG_NOOP, FLAG_DIRTY, };
|
|
2
2
|
export { voidElements, svgTags, booleanAttributes, snakeCaseAttributes };
|
|
3
3
|
const $SIGNAL = Symbol.for("kiru.signal");
|
|
4
4
|
const $CONTEXT = Symbol.for("kiru.context");
|
|
@@ -8,10 +8,10 @@ const $KIRU_ERROR = Symbol.for("kiru.error");
|
|
|
8
8
|
const $HMR_ACCEPT = Symbol.for("kiru.hmrAccept");
|
|
9
9
|
const $MEMO = Symbol.for("kiru.memo");
|
|
10
10
|
const $ERROR_BOUNDARY = Symbol.for("kiru.errorBoundary");
|
|
11
|
-
const $
|
|
11
|
+
const $STREAM_DATA = Symbol.for("kiru.streamData");
|
|
12
12
|
const $DEV_FILE_LINK = Symbol.for("kiru.devFileLink");
|
|
13
13
|
const CONSECUTIVE_DIRTY_LIMIT = 50;
|
|
14
|
-
const
|
|
14
|
+
const STREAMED_DATA_EVENT = "kiru:deferred";
|
|
15
15
|
const FLAG_UPDATE = 1 << 1;
|
|
16
16
|
const FLAG_PLACEMENT = 1 << 2;
|
|
17
17
|
const FLAG_DELETION = 1 << 3;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,WAAW,EACX,KAAK,EACL,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/dom.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,QAAQ,EAGR,OAAO,EAER,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,SAAS,EACT,UAAU,GACX,CAAA;AAED,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAevB,iBAAS,uBAAuB,SAM/B;AAED,iBAAS,sBAAsB,SAS9B;AAED,iBAAS,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAU3C;AAgRD,iBAAS,UAAU,CAAC,KAAK,EAAE,KAAK,QA0C/B;AAuND,iBAAS,UAAU,CAAC,KAAK,EAAE,KAAK,QAa/B;AAsDD,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,QAwCnC"}
|
package/dist/dom.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { traverseApply, commitSnapshot, propFilters, propToHtmlAttr, getVNodeAppContext, } from "./utils/index.js";
|
|
1
|
+
import { traverseApply, commitSnapshot, propFilters, propToHtmlAttr, getVNodeAppContext, setRef, } from "./utils/index.js";
|
|
2
2
|
import { booleanAttributes, FLAG_PLACEMENT, FLAG_UPDATE, FLAG_STATIC_DOM, svgTags, FLAG_NOOP, EVENT_PREFIX_REGEX, } from "./constants.js";
|
|
3
3
|
import { Signal } from "./signals/base.js";
|
|
4
4
|
import { unwrap } from "./signals/utils.js";
|
|
@@ -33,21 +33,6 @@ function onAfterFlushDomChanges() {
|
|
|
33
33
|
}
|
|
34
34
|
persistingFocus = false;
|
|
35
35
|
}
|
|
36
|
-
function setDomRef(ref, value) {
|
|
37
|
-
if (typeof ref === "function") {
|
|
38
|
-
ref(value);
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (Signal.isSignal(ref)) {
|
|
42
|
-
ref.sneak(value);
|
|
43
|
-
ref.notify({
|
|
44
|
-
filter: (sub) => typeof sub === "function",
|
|
45
|
-
});
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
;
|
|
49
|
-
ref.current = value;
|
|
50
|
-
}
|
|
51
36
|
function createDom(vNode) {
|
|
52
37
|
const t = vNode.type;
|
|
53
38
|
const dom = t == "#text"
|
|
@@ -82,62 +67,70 @@ function wrapFocusEventHandler(vNode, evtName, callback) {
|
|
|
82
67
|
}
|
|
83
68
|
const vNodeToWrappedFocusEventHandlersMap = new WeakMap();
|
|
84
69
|
function updateDom(vNode) {
|
|
85
|
-
const dom = vNode
|
|
86
|
-
const prevProps =
|
|
87
|
-
const nextProps =
|
|
88
|
-
const keys = new Set([...Object.keys(prevProps), ...Object.keys(nextProps)]);
|
|
70
|
+
const { dom, prev, props, cleanups } = vNode;
|
|
71
|
+
const prevProps = prev?.props ?? {};
|
|
72
|
+
const nextProps = props ?? {};
|
|
89
73
|
const isHydration = renderMode.current === "hydrate";
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
setDomRef(prev, null);
|
|
96
|
-
}
|
|
97
|
-
if (next) {
|
|
98
|
-
setDomRef(next, dom);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return;
|
|
74
|
+
// TEXT NODE SHORT-PATH
|
|
75
|
+
if (dom instanceof Text) {
|
|
76
|
+
const nextVal = nextProps.nodeValue;
|
|
77
|
+
if (!Signal.isSignal(nextVal) && dom.nodeValue !== nextVal) {
|
|
78
|
+
dom.nodeValue = nextVal;
|
|
102
79
|
}
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const keys = [];
|
|
83
|
+
for (const k in prevProps)
|
|
84
|
+
keys.push(k);
|
|
85
|
+
for (const k in nextProps) {
|
|
86
|
+
if (!(k in prevProps))
|
|
87
|
+
keys.push(k);
|
|
88
|
+
}
|
|
89
|
+
for (let i = 0; i < keys.length; i++) {
|
|
90
|
+
const key = keys[i];
|
|
91
|
+
const prevVal = prevProps[key];
|
|
92
|
+
const nextVal = nextProps[key];
|
|
103
93
|
if (propFilters.isEvent(key)) {
|
|
104
|
-
if (
|
|
94
|
+
if (prevVal !== nextVal || isHydration) {
|
|
105
95
|
const evtName = key.replace(EVENT_PREFIX_REGEX, "");
|
|
106
|
-
const
|
|
96
|
+
const isFocus = evtName === "focus" || evtName === "blur";
|
|
97
|
+
const wrappedMap = vNodeToWrappedFocusEventHandlersMap.get(vNode);
|
|
107
98
|
if (key in prevProps) {
|
|
108
|
-
dom.removeEventListener(evtName,
|
|
109
|
-
? vNodeToWrappedFocusEventHandlersMap.get(vNode)?.[evtName]
|
|
110
|
-
: prev);
|
|
99
|
+
dom.removeEventListener(evtName, isFocus ? wrappedMap?.[evtName] : prevVal);
|
|
111
100
|
}
|
|
112
101
|
if (key in nextProps) {
|
|
113
|
-
dom.addEventListener(evtName,
|
|
102
|
+
dom.addEventListener(evtName, isFocus ? wrapFocusEventHandler(vNode, evtName, nextVal) : nextVal);
|
|
114
103
|
}
|
|
115
104
|
}
|
|
116
|
-
|
|
105
|
+
continue;
|
|
117
106
|
}
|
|
118
|
-
if (
|
|
119
|
-
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
if (Signal.isSignal(prev) && vNode.cleanups) {
|
|
123
|
-
const v = vNode.cleanups[key];
|
|
124
|
-
v && (v(), delete vNode.cleanups[key]);
|
|
125
|
-
}
|
|
126
|
-
if (Signal.isSignal(next)) {
|
|
127
|
-
return setSignalProp(vNode, dom, key, next, prev);
|
|
128
|
-
}
|
|
129
|
-
setProp(dom, key, next, prev);
|
|
130
|
-
return;
|
|
107
|
+
if (propFilters.isInternalProp(key) && key !== "innerHTML") {
|
|
108
|
+
continue;
|
|
131
109
|
}
|
|
132
|
-
if (
|
|
133
|
-
|
|
134
|
-
|
|
110
|
+
if (prevVal === nextVal) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (Signal.isSignal(prevVal) && cleanups) {
|
|
114
|
+
const disposer = cleanups[key];
|
|
115
|
+
if (disposer) {
|
|
116
|
+
disposer();
|
|
117
|
+
delete cleanups[key];
|
|
118
|
+
}
|
|
135
119
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
120
|
+
if (Signal.isSignal(nextVal)) {
|
|
121
|
+
setSignalProp(vNode, dom, key, nextVal, prevVal);
|
|
122
|
+
continue;
|
|
139
123
|
}
|
|
140
|
-
|
|
124
|
+
setProp(dom, key, nextVal, prevVal);
|
|
125
|
+
}
|
|
126
|
+
const prevRef = prevProps.ref;
|
|
127
|
+
const nextRef = nextProps.ref;
|
|
128
|
+
if (prevRef !== nextRef) {
|
|
129
|
+
if (prevRef)
|
|
130
|
+
setRef(prevRef, null);
|
|
131
|
+
if (nextRef)
|
|
132
|
+
setRef(nextRef, dom);
|
|
133
|
+
}
|
|
141
134
|
}
|
|
142
135
|
function deriveSelectElementValue(dom) {
|
|
143
136
|
if (dom.multiple) {
|
|
@@ -168,12 +161,19 @@ function setSignalProp(vNode, dom, key, signal, prevValue) {
|
|
|
168
161
|
const [modifier, attr] = key.split(":");
|
|
169
162
|
if (modifier !== "bind") {
|
|
170
163
|
cleanups[key] = signal.subscribe((value, prev) => {
|
|
164
|
+
if (value === prev)
|
|
165
|
+
return;
|
|
171
166
|
setProp(dom, key, value, prev);
|
|
172
167
|
if (__DEV__) {
|
|
173
168
|
window.__kiru.profilingContext?.emit("signalAttrUpdate", getVNodeAppContext(vNode));
|
|
174
169
|
}
|
|
175
170
|
});
|
|
176
|
-
|
|
171
|
+
const value = signal.peek();
|
|
172
|
+
const prev = unwrap(prevValue);
|
|
173
|
+
if (value === prev)
|
|
174
|
+
return;
|
|
175
|
+
setProp(dom, key, value, prev);
|
|
176
|
+
return;
|
|
177
177
|
}
|
|
178
178
|
const evtName = bindAttrToEventMap[attr];
|
|
179
179
|
if (!evtName) {
|
|
@@ -194,7 +194,7 @@ function setSignalProp(vNode, dom, key, signal, prevValue) {
|
|
|
194
194
|
};
|
|
195
195
|
const setSigFromElement = (val) => {
|
|
196
196
|
signal.sneak(val);
|
|
197
|
-
signal.notify(
|
|
197
|
+
signal.notify((sub) => sub !== signalUpdateCallback);
|
|
198
198
|
};
|
|
199
199
|
let evtHandler;
|
|
200
200
|
if (attr === "value") {
|
|
@@ -230,7 +230,11 @@ function setSignalProp(vNode, dom, key, signal, prevValue) {
|
|
|
230
230
|
dom.removeEventListener(evtName, evtHandler);
|
|
231
231
|
unsub();
|
|
232
232
|
};
|
|
233
|
-
|
|
233
|
+
const value = signal.peek();
|
|
234
|
+
const prev = unwrap(prevValue);
|
|
235
|
+
if (value === prev)
|
|
236
|
+
return;
|
|
237
|
+
setProp(dom, attr, value, prev);
|
|
234
238
|
}
|
|
235
239
|
function subTextNode(vNode, textNode, signal) {
|
|
236
240
|
;
|
|
@@ -328,8 +332,6 @@ const needsExplicitValueSet = (element) => {
|
|
|
328
332
|
return explicitValueElementTags.indexOf(element.nodeName) > -1;
|
|
329
333
|
};
|
|
330
334
|
function setProp(element, key, value, prev) {
|
|
331
|
-
if (value === prev)
|
|
332
|
-
return;
|
|
333
335
|
switch (key) {
|
|
334
336
|
case "style":
|
|
335
337
|
return setStyleProp(element, value, prev);
|
|
@@ -546,11 +548,12 @@ function commitDeletion(vNode) {
|
|
|
546
548
|
}
|
|
547
549
|
}
|
|
548
550
|
if (dom) {
|
|
549
|
-
if (ref)
|
|
550
|
-
setDomRef(ref, null);
|
|
551
551
|
if (dom.isConnected && !(node.flags & FLAG_STATIC_DOM)) {
|
|
552
552
|
dom.remove();
|
|
553
553
|
}
|
|
554
|
+
if (ref) {
|
|
555
|
+
setRef(ref, null);
|
|
556
|
+
}
|
|
554
557
|
delete node.dom;
|
|
555
558
|
}
|
|
556
559
|
});
|