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/src/vNode.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { $FRAGMENT } from "./constants.js"
|
|
2
|
+
import { Fragment } from "./element.js"
|
|
3
|
+
|
|
4
|
+
type VNode = Kiru.VNode
|
|
5
|
+
|
|
6
|
+
export function createVNode(
|
|
7
|
+
type: VNode["type"],
|
|
8
|
+
parent: VNode | null = null,
|
|
9
|
+
props: VNode["props"] = {},
|
|
10
|
+
key: VNode["key"] = null,
|
|
11
|
+
index = 0
|
|
12
|
+
): VNode {
|
|
13
|
+
if ((type as any) === Fragment) {
|
|
14
|
+
type = $FRAGMENT
|
|
15
|
+
}
|
|
16
|
+
const depth = parent ? parent.depth + 1 : 0
|
|
17
|
+
return {
|
|
18
|
+
type,
|
|
19
|
+
key,
|
|
20
|
+
props,
|
|
21
|
+
parent,
|
|
22
|
+
index,
|
|
23
|
+
depth,
|
|
24
|
+
flags: 0,
|
|
25
|
+
child: null,
|
|
26
|
+
sibling: null,
|
|
27
|
+
prev: null,
|
|
28
|
+
deletions: null,
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { $SUSPENSE_THROW } from "../constants.js";
|
|
2
|
-
export { Suspense, isSuspenseThrowValue };
|
|
3
|
-
export type { SuspenseProps };
|
|
4
|
-
type StatefulPromiseValues<T extends readonly Kiru.StatefulPromise<unknown>[]> = {
|
|
5
|
-
[I in keyof T]: T[I] extends Kiru.StatefulPromise<infer V> ? V : never;
|
|
6
|
-
};
|
|
7
|
-
type SuspenseChildrenArgs<T extends Kiru.StatefulPromise<any> | Kiru.StatefulPromise<any>[]> = T extends Kiru.StatefulPromise<any>[] ? StatefulPromiseValues<T> : [T extends Kiru.StatefulPromise<infer V> ? V : never];
|
|
8
|
-
interface SuspenseProps<T extends Kiru.StatefulPromise<any> | Kiru.StatefulPromise<any>[]> {
|
|
9
|
-
data: T;
|
|
10
|
-
children: (...data: SuspenseChildrenArgs<T>) => JSX.Element;
|
|
11
|
-
fallback?: JSX.Element;
|
|
12
|
-
}
|
|
13
|
-
declare function Suspense<const T extends Kiru.StatefulPromise<unknown> | Kiru.StatefulPromise<unknown>[]>({ data, children, fallback }: SuspenseProps<T>): JSX.Element;
|
|
14
|
-
interface SuspenseThrowValue {
|
|
15
|
-
[$SUSPENSE_THROW]: {
|
|
16
|
-
fallback?: JSX.Element;
|
|
17
|
-
pending: Kiru.StatefulPromise<unknown>[];
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Returns true if the value was thrown by a Suspense component.
|
|
22
|
-
*/
|
|
23
|
-
declare function isSuspenseThrowValue(value: unknown): value is SuspenseThrowValue;
|
|
24
|
-
//# sourceMappingURL=suspense.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"suspense.d.ts","sourceRoot":"","sources":["../../src/components/suspense.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAKjD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAA;AACzC,YAAY,EAAE,aAAa,EAAE,CAAA;AAE7B,KAAK,qBAAqB,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,IAC3E;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACvE,CAAA;AAEH,KAAK,oBAAoB,CACvB,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,IAC/D,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,GACrC,qBAAqB,CAAC,CAAC,CAAC,GACxB,CAAC,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;AAEzD,UAAU,aAAa,CACrB,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;IAEjE,IAAI,EAAE,CAAC,CAAA;IACP,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAA;IAC3D,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB;AAED,iBAAS,QAAQ,CACf,KAAK,CAAC,CAAC,SACH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAC7B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,eA0B/C;AAED,UAAU,kBAAkB;IAC1B,CAAC,eAAe,CAAC,EAAE;QACjB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;QACtB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAA;KACzC,CAAA;CACF;AAED;;GAEG;AACH,iBAAS,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEzE"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { $SUSPENSE_THROW } from "../constants.js";
|
|
2
|
-
import { renderMode, node } from "../globals.js";
|
|
3
|
-
import { requestUpdate } from "../scheduler.js";
|
|
4
|
-
export { Suspense, isSuspenseThrowValue };
|
|
5
|
-
function Suspense({ data, children, fallback }) {
|
|
6
|
-
const promiseArray = Array.isArray(data)
|
|
7
|
-
? data
|
|
8
|
-
: [data];
|
|
9
|
-
switch (renderMode.current) {
|
|
10
|
-
case "stream":
|
|
11
|
-
case "string":
|
|
12
|
-
throw {
|
|
13
|
-
[$SUSPENSE_THROW]: { fallback, pending: promiseArray },
|
|
14
|
-
};
|
|
15
|
-
case "dom":
|
|
16
|
-
case "hydrate":
|
|
17
|
-
for (const p of promiseArray) {
|
|
18
|
-
if (p.state === "rejected")
|
|
19
|
-
throw p.error;
|
|
20
|
-
if (p.state === "pending") {
|
|
21
|
-
const n = node.current;
|
|
22
|
-
Promise.allSettled(promiseArray).then(() => requestUpdate(n));
|
|
23
|
-
return fallback;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
const values = promiseArray.map((p) => p.value);
|
|
27
|
-
return children(...values);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Returns true if the value was thrown by a Suspense component.
|
|
32
|
-
*/
|
|
33
|
-
function isSuspenseThrowValue(value) {
|
|
34
|
-
return typeof value === "object" && !!value && $SUSPENSE_THROW in value;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=suspense.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"suspense.js","sourceRoot":"","sources":["../../src/components/suspense.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAA;AAsBzC,SAAS,QAAQ,CAIf,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAoB;IAC9C,MAAM,YAAY,GAAoC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACvE,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAEV,QAAQ,UAAU,CAAC,OAAO,EAAE,CAAC;QAC3B,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACX,MAAM;gBACJ,CAAC,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;aAC1B,CAAA;QAEhC,KAAK,KAAK,CAAC;QACX,KAAK,SAAS;YACZ,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC7B,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU;oBAAE,MAAM,CAAC,CAAC,KAAK,CAAA;gBACzC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAQ,CAAA;oBACvB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC7D,OAAO,QAAQ,CAAA;gBACjB,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAA4B,CAAA;YAE1E,OAAO,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC;AASD;;GAEG;AACH,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,eAAe,IAAI,KAAK,CAAA;AACzE,CAAC"}
|
package/dist/signals/jsx.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { Signal } from "./base.js";
|
|
2
|
-
import type { SignalValues } from "./types.js";
|
|
3
|
-
type InferArraySignalItemType<T extends Signal<any[]>> = T extends Signal<infer V> ? V extends Array<infer W> ? W : never : never;
|
|
4
|
-
type ForProps<T extends Signal<any[]>, U = InferArraySignalItemType<T>> = {
|
|
5
|
-
each: T;
|
|
6
|
-
fallback?: JSX.Element;
|
|
7
|
-
children: (value: U, index: number, array: U[]) => JSX.Element;
|
|
8
|
-
};
|
|
9
|
-
export declare function For<T extends Signal<any[]>>({ each, fallback, children, }: ForProps<T>): JSX.Element;
|
|
10
|
-
type DeriveChildrenArgs<T extends Signal<any> | Signal<any>[]> = T extends Signal<any>[] ? SignalValues<T> : [T extends Signal<infer V> ? V : never];
|
|
11
|
-
export type DeriveProps<T extends Signal<any> | Signal<any>[]> = {
|
|
12
|
-
from: T;
|
|
13
|
-
children: (...values: DeriveChildrenArgs<T>) => JSX.Children;
|
|
14
|
-
};
|
|
15
|
-
export declare function Derive<const T extends Signal<any> | Signal<any>[]>({ from, children, }: DeriveProps<T>): JSX.Children;
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=jsx.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../../src/signals/jsx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,KAAK,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,CACvE,MAAM,CAAC,CACR,GACG,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACtB,CAAC,GACD,KAAK,GACP,KAAK,CAAA;AAET,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,IAAI;IACxE,IAAI,EAAE,CAAC,CAAA;IACP,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,OAAO,CAAA;CAC/D,CAAA;AAED,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,EAC3C,IAAI,EACJ,QAAQ,EACR,QAAQ,GACT,EAAE,QAAQ,CAAC,CAAC,CAAC,eAIb;AAED,KAAK,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,IAC3D,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,EAAE,GACnB,YAAY,CAAC,CAAC,CAAC,GACf,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;AAE7C,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI;IAC/D,IAAI,EAAE,CAAC,CAAA;IACP,QAAQ,EAAE,CAAC,GAAG,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAA;CAC7D,CAAA;AAED,wBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAClE,IAAI,EACJ,QAAQ,GACT,EAAE,WAAW,CAAC,CAAC,CAAC,gBAKhB"}
|
package/dist/signals/jsx.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export function For({ each, fallback, children, }) {
|
|
2
|
-
const items = each.value;
|
|
3
|
-
if (items.length === 0)
|
|
4
|
-
return fallback;
|
|
5
|
-
return items.map(children);
|
|
6
|
-
}
|
|
7
|
-
export function Derive({ from, children, }) {
|
|
8
|
-
const args = (Array.isArray(from) ? from : [from]).map((s) => s.value);
|
|
9
|
-
return children(...args);
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=jsx.js.map
|
package/dist/signals/jsx.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsx.js","sourceRoot":"","sources":["../../src/signals/jsx.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,GAAG,CAA0B,EAC3C,IAAI,EACJ,QAAQ,EACR,QAAQ,GACI;IACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IACxB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAA;IACvC,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AAC5B,CAAC;AAYD,MAAM,UAAU,MAAM,CAA8C,EAClE,IAAI,EACJ,QAAQ,GACO;IACf,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CACU,CAAA;IAC1B,OAAO,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;AAC1B,CAAC"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { $SUSPENSE_THROW } from "../constants.js"
|
|
2
|
-
import { __DEV__ } from "../env.js"
|
|
3
|
-
import { renderMode, node } from "../globals.js"
|
|
4
|
-
import { requestUpdate } from "../scheduler.js"
|
|
5
|
-
|
|
6
|
-
export { Suspense, isSuspenseThrowValue }
|
|
7
|
-
export type { SuspenseProps }
|
|
8
|
-
|
|
9
|
-
type StatefulPromiseValues<T extends readonly Kiru.StatefulPromise<unknown>[]> =
|
|
10
|
-
{
|
|
11
|
-
[I in keyof T]: T[I] extends Kiru.StatefulPromise<infer V> ? V : never
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
type SuspenseChildrenArgs<
|
|
15
|
-
T extends Kiru.StatefulPromise<any> | Kiru.StatefulPromise<any>[]
|
|
16
|
-
> = T extends Kiru.StatefulPromise<any>[]
|
|
17
|
-
? StatefulPromiseValues<T>
|
|
18
|
-
: [T extends Kiru.StatefulPromise<infer V> ? V : never]
|
|
19
|
-
|
|
20
|
-
interface SuspenseProps<
|
|
21
|
-
T extends Kiru.StatefulPromise<any> | Kiru.StatefulPromise<any>[]
|
|
22
|
-
> {
|
|
23
|
-
data: T
|
|
24
|
-
children: (...data: SuspenseChildrenArgs<T>) => JSX.Element
|
|
25
|
-
fallback?: JSX.Element
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function Suspense<
|
|
29
|
-
const T extends
|
|
30
|
-
| Kiru.StatefulPromise<unknown>
|
|
31
|
-
| Kiru.StatefulPromise<unknown>[]
|
|
32
|
-
>({ data, children, fallback }: SuspenseProps<T>) {
|
|
33
|
-
const promiseArray: Kiru.StatefulPromise<unknown>[] = Array.isArray(data)
|
|
34
|
-
? data
|
|
35
|
-
: [data]
|
|
36
|
-
|
|
37
|
-
switch (renderMode.current) {
|
|
38
|
-
case "stream":
|
|
39
|
-
case "string":
|
|
40
|
-
throw {
|
|
41
|
-
[$SUSPENSE_THROW]: { fallback, pending: promiseArray },
|
|
42
|
-
} satisfies SuspenseThrowValue
|
|
43
|
-
|
|
44
|
-
case "dom":
|
|
45
|
-
case "hydrate":
|
|
46
|
-
for (const p of promiseArray) {
|
|
47
|
-
if (p.state === "rejected") throw p.error
|
|
48
|
-
if (p.state === "pending") {
|
|
49
|
-
const n = node.current!
|
|
50
|
-
Promise.allSettled(promiseArray).then(() => requestUpdate(n))
|
|
51
|
-
return fallback
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
const values = promiseArray.map((p) => p.value) as SuspenseChildrenArgs<T>
|
|
55
|
-
|
|
56
|
-
return children(...values)
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
interface SuspenseThrowValue {
|
|
61
|
-
[$SUSPENSE_THROW]: {
|
|
62
|
-
fallback?: JSX.Element
|
|
63
|
-
pending: Kiru.StatefulPromise<unknown>[]
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Returns true if the value was thrown by a Suspense component.
|
|
69
|
-
*/
|
|
70
|
-
function isSuspenseThrowValue(value: unknown): value is SuspenseThrowValue {
|
|
71
|
-
return typeof value === "object" && !!value && $SUSPENSE_THROW in value
|
|
72
|
-
}
|
package/src/signals/jsx.ts
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import type { Signal } from "./base.js"
|
|
2
|
-
import type { SignalValues } from "./types.js"
|
|
3
|
-
|
|
4
|
-
type InferArraySignalItemType<T extends Signal<any[]>> = T extends Signal<
|
|
5
|
-
infer V
|
|
6
|
-
>
|
|
7
|
-
? V extends Array<infer W>
|
|
8
|
-
? W
|
|
9
|
-
: never
|
|
10
|
-
: never
|
|
11
|
-
|
|
12
|
-
type ForProps<T extends Signal<any[]>, U = InferArraySignalItemType<T>> = {
|
|
13
|
-
each: T
|
|
14
|
-
fallback?: JSX.Element
|
|
15
|
-
children: (value: U, index: number, array: U[]) => JSX.Element
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function For<T extends Signal<any[]>>({
|
|
19
|
-
each,
|
|
20
|
-
fallback,
|
|
21
|
-
children,
|
|
22
|
-
}: ForProps<T>) {
|
|
23
|
-
const items = each.value
|
|
24
|
-
if (items.length === 0) return fallback
|
|
25
|
-
return items.map(children)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
type DeriveChildrenArgs<T extends Signal<any> | Signal<any>[]> =
|
|
29
|
-
T extends Signal<any>[]
|
|
30
|
-
? SignalValues<T>
|
|
31
|
-
: [T extends Signal<infer V> ? V : never]
|
|
32
|
-
|
|
33
|
-
export type DeriveProps<T extends Signal<any> | Signal<any>[]> = {
|
|
34
|
-
from: T
|
|
35
|
-
children: (...values: DeriveChildrenArgs<T>) => JSX.Children
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export function Derive<const T extends Signal<any> | Signal<any>[]>({
|
|
39
|
-
from,
|
|
40
|
-
children,
|
|
41
|
-
}: DeriveProps<T>) {
|
|
42
|
-
const args = (Array.isArray(from) ? from : [from]).map(
|
|
43
|
-
(s) => s.value
|
|
44
|
-
) as DeriveChildrenArgs<T>
|
|
45
|
-
return children(...args)
|
|
46
|
-
}
|