kiru 1.1.1 → 1.2.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/components/derive.d.ts +4 -0
- package/dist/components/derive.d.ts.map +1 -1
- package/dist/components/derive.js +8 -4
- package/dist/components/derive.js.map +1 -1
- package/dist/components/errorBoundary.d.ts +4 -0
- package/dist/components/errorBoundary.d.ts.map +1 -1
- package/dist/components/errorBoundary.js +4 -0
- package/dist/components/errorBoundary.js.map +1 -1
- package/dist/{signals/jsx.d.ts → components/for.d.ts} +7 -9
- package/dist/components/for.d.ts.map +1 -0
- package/dist/components/for.js +13 -0
- package/dist/components/for.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/lazy.d.ts +4 -0
- package/dist/components/lazy.d.ts.map +1 -1
- package/dist/components/lazy.js +4 -0
- package/dist/components/lazy.js.map +1 -1
- package/dist/components/portal.d.ts +4 -0
- package/dist/components/portal.d.ts.map +1 -1
- package/dist/components/portal.js +4 -0
- package/dist/components/portal.js.map +1 -1
- package/dist/components/show.d.ts +18 -0
- package/dist/components/show.d.ts.map +1 -0
- package/dist/components/show.js +18 -0
- package/dist/components/show.js.map +1 -0
- package/dist/components/transition.d.ts +4 -0
- package/dist/components/transition.d.ts.map +1 -1
- package/dist/components/transition.js +4 -0
- package/dist/components/transition.js.map +1 -1
- package/dist/hooks/setup.d.ts.map +1 -1
- package/dist/hooks/setup.js +3 -3
- package/dist/hooks/setup.js.map +1 -1
- package/dist/signals/computed.d.ts +1 -2
- package/dist/signals/computed.d.ts.map +1 -1
- package/dist/signals/computed.js +32 -24
- package/dist/signals/computed.js.map +1 -1
- package/dist/signals/index.d.ts +0 -6
- package/dist/signals/index.d.ts.map +1 -1
- package/dist/signals/index.js +0 -6
- package/dist/signals/index.js.map +1 -1
- package/dist/types.utils.d.ts +2 -0
- package/dist/types.utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/derive.ts +22 -19
- package/src/components/errorBoundary.ts +4 -0
- package/src/{signals/jsx.ts → components/for.ts} +34 -40
- package/src/components/index.ts +2 -0
- package/src/components/lazy.ts +4 -0
- package/src/components/portal.ts +4 -0
- package/src/components/show.ts +32 -0
- package/src/components/transition.ts +4 -0
- package/src/hooks/setup.ts +4 -4
- package/src/signals/computed.ts +35 -26
- package/src/signals/index.ts +0 -7
- package/src/types.utils.ts +3 -0
- package/dist/signals/jsx.d.ts.map +0 -1
- package/dist/signals/jsx.js +0 -11
- package/dist/signals/jsx.js.map +0 -1
|
@@ -17,6 +17,10 @@ export interface DeriveProps<T extends Derivable, Mode extends DeriveFallbackMod
|
|
|
17
17
|
type Derive = {
|
|
18
18
|
<T extends Derivable, U extends DeriveFallbackMode = "swr">(props: DeriveProps<T, U>): (props: DeriveProps<T, U>) => JSX.Element;
|
|
19
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* Derives a value from a signal or stateful promise and renders a child component.
|
|
22
|
+
* @see https://kirujs.dev/docs/api/components/derive
|
|
23
|
+
*/
|
|
20
24
|
export declare const Derive: Derive;
|
|
21
25
|
export {};
|
|
22
26
|
//# sourceMappingURL=derive.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/components/derive.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/components/derive.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { sideEffectsEnabled } from "../utils/index.js";
|
|
2
|
+
import { Signal } from "../signals/index.js";
|
|
2
3
|
import { $STREAM_DATA } from "../constants.js";
|
|
4
|
+
import { node } from "../globals.js";
|
|
5
|
+
import { ref } from "../ref.js";
|
|
3
6
|
import { requestUpdate } from "../scheduler.js";
|
|
4
|
-
import { Signal } from "../signals/index.js";
|
|
5
|
-
import { sideEffectsEnabled } from "../utils/index.js";
|
|
6
7
|
import { isStatefulPromise } from "../statefulPromise.js";
|
|
7
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Derives a value from a signal or stateful promise and renders a child component.
|
|
10
|
+
* @see https://kirujs.dev/docs/api/components/derive
|
|
11
|
+
*/
|
|
8
12
|
export const Derive = () => {
|
|
9
13
|
return (props) => {
|
|
10
14
|
const { from, children, fallback, mode } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive.js","sourceRoot":"","sources":["../../src/components/derive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"derive.js","sourceRoot":"","sources":["../../src/components/derive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAwB,MAAM,uBAAuB,CAAA;AA8D/E;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAW,GAAG,EAAE;IACjC,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;QAChD,MAAM,WAAW,GAAG,GAAG,CAAU,IAAI,CAAC,CAAA;QAEtC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAA;QACzD,IAAI,KAAc,CAAA;QAElB,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAClB,KAAK,GAAG,IAAI,CAAC,KAAgB,CAAA;QAC/B,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,KAAK,GAAG,IAAI,CAAC,KAAgB,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAwB,EAAE,CAAA;YACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;gBACnB,IAAI,iBAAiB,CAAC,CAAC,CAAC;oBAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBACzC,GAAG,CAAC,GAAG,CAAC,GACN,CACD,CAAC,KAAK,CAAA;YACT,CAAC;YACD,KAAK,GAAG,GAAc,CAAA;QACxB,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACxB,OAAQ,QAA6B,CAAC,KAAK,CAAC,CAAA;QAC9C,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC1B,MAAM;gBACJ,CAAC,YAAY,CAAC,EAAE;oBACd,QAAQ;oBACR,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAC3B;aAC6B,CAAA;QAClC,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC3B,MAAM,CAAC,CAAC,KAAK,CAAA;YACf,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAQ,CAAA;gBAC7B,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;gBAE/D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAQ,CAAA;gBACjC,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,EAAE,CAAC;oBAChC,OAAQ,QAAsC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBAC5D,CAAC;gBACD,OAAO,QAAQ,CAAA;YACjB,CAAC;QACH,CAAC;QAED,WAAW,CAAC,OAAO,GAAG,KAAK,CAAA;QAC3B,OAAQ,QAAsC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC9D,CAAC,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -3,5 +3,9 @@ export interface ErrorBoundaryProps {
|
|
|
3
3
|
fallback?: JSX.Element | ((error: Error) => JSX.Element);
|
|
4
4
|
onError?: (error: Error) => void;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* Catches errors in the children and renders a fallback component.
|
|
8
|
+
* @see https://kirujs.dev/docs/api/components/error-boundary
|
|
9
|
+
*/
|
|
6
10
|
export declare function ErrorBoundary({ children, fallback, onError, }: ErrorBoundaryProps): Kiru.Element;
|
|
7
11
|
//# 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,gBAEpB"}
|
|
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;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,kBAAkB,gBAEpB"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { $ERROR_BOUNDARY } from "../constants.js";
|
|
2
2
|
import { createElement } from "../index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Catches errors in the children and renders a fallback component.
|
|
5
|
+
* @see https://kirujs.dev/docs/api/components/error-boundary
|
|
6
|
+
*/
|
|
3
7
|
export function ErrorBoundary({ children, fallback, onError, }) {
|
|
4
8
|
return createElement($ERROR_BOUNDARY, { children, fallback, onError });
|
|
5
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorBoundary.js","sourceRoot":"","sources":["../../src/components/errorBoundary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAQ3C,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,OAAO,GACY;IACnB,OAAO,aAAa,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;AACxE,CAAC"}
|
|
1
|
+
{"version":3,"file":"errorBoundary.js","sourceRoot":"","sources":["../../src/components/errorBoundary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAQ3C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,OAAO,GACY;IACnB,OAAO,aAAa,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;AACxE,CAAC"}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { Signal } from "./base.js";
|
|
1
|
+
import { type Signal } from "../signals/index.js";
|
|
3
2
|
type InferArraySignalItemType<T extends Signal<any[]> | readonly unknown[]> = T extends Signal<infer V> ? V extends Array<infer W> ? W : never : T extends unknown[] ? T[number] : never;
|
|
4
3
|
type ForProps<T extends Signal<any[]> | readonly unknown[], U = InferArraySignalItemType<T>> = {
|
|
5
4
|
each: T;
|
|
6
5
|
fallback?: JSX.Element;
|
|
7
6
|
children: (value: U, index: number, array: U[]) => JSX.Element;
|
|
8
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* Renders a list of items. If the list a Signal, it creates an automatically-updating list with fine-grained reactivity.
|
|
10
|
+
* If the list is empty, the fallback is rendered.
|
|
11
|
+
* @see https://kirujs.dev/docs/api/components/for
|
|
12
|
+
*/
|
|
9
13
|
export declare function For<T extends Signal<any[]> | unknown[]>({ each, fallback, children, }: ForProps<T>): JSX.Element;
|
|
10
|
-
export interface ShowProps {
|
|
11
|
-
children: JSX.Element;
|
|
12
|
-
when: Signalable<unknown>;
|
|
13
|
-
fallback?: JSX.Element;
|
|
14
|
-
}
|
|
15
|
-
export declare function Show({ children, when, fallback }: ShowProps): JSX.Element;
|
|
16
14
|
export {};
|
|
17
|
-
//# sourceMappingURL=
|
|
15
|
+
//# sourceMappingURL=for.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"for.d.ts","sourceRoot":"","sources":["../../src/components/for.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEzD,KAAK,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,OAAO,EAAE,IACxE,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GACrB,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACtB,CAAC,GACD,KAAK,GACP,CAAC,SAAS,OAAO,EAAE,GACnB,CAAC,CAAC,MAAM,CAAC,GACT,KAAK,CAAA;AAEX,KAAK,QAAQ,CACX,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,OAAO,EAAE,EAC5C,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,IAC7B;IACF,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;;;;GAIG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,EACvD,IAAI,EACJ,QAAQ,EACR,QAAQ,GACT,EAAE,QAAQ,CAAC,CAAC,CAAC,eAIb"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { unwrap } from "../signals/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Renders a list of items. If the list a Signal, it creates an automatically-updating list with fine-grained reactivity.
|
|
4
|
+
* If the list is empty, the fallback is rendered.
|
|
5
|
+
* @see https://kirujs.dev/docs/api/components/for
|
|
6
|
+
*/
|
|
7
|
+
export function For({ each, fallback, children, }) {
|
|
8
|
+
const items = unwrap(each, true);
|
|
9
|
+
if (items.length === 0)
|
|
10
|
+
return fallback;
|
|
11
|
+
return items.map(children);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=for.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"for.js","sourceRoot":"","sources":["../../src/components/for.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAA;AAoBzD;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAsC,EACvD,IAAI,EACJ,QAAQ,EACR,QAAQ,GACI;IACZ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAA;IACvC,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AAC5B,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { ErrorBoundary, type ErrorBoundaryProps } from "./errorBoundary.js";
|
|
2
2
|
export * from "./derive.js";
|
|
3
|
+
export * from "./for.js";
|
|
3
4
|
export * from "./lazy.js";
|
|
4
5
|
export * from "./portal.js";
|
|
6
|
+
export * from "./show.js";
|
|
5
7
|
export * from "./transition.js";
|
|
6
8
|
//# 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,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
|
|
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,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
|
package/dist/components/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { ErrorBoundary } from "./errorBoundary.js";
|
|
2
2
|
export * from "./derive.js";
|
|
3
|
+
export * from "./for.js";
|
|
3
4
|
export * from "./lazy.js";
|
|
4
5
|
export * from "./portal.js";
|
|
6
|
+
export * from "./show.js";
|
|
5
7
|
export * from "./transition.js";
|
|
6
8
|
//# 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,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
|
|
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,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
|
|
@@ -6,6 +6,10 @@ type InferLazyImportProps<T extends LazyImportValue> = T extends FCModule ? Kiru
|
|
|
6
6
|
type LazyComponentProps<T extends LazyImportValue> = InferLazyImportProps<T> & {
|
|
7
7
|
fallback?: JSX.Element;
|
|
8
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* Lazy loads a component and renders it when it is ready.
|
|
11
|
+
* @see https://kirujs.dev/docs/api/components/lazy
|
|
12
|
+
*/
|
|
9
13
|
export declare function lazy<T extends LazyImportValue>(componentPromiseFn: () => Promise<T>): Kiru.FC<LazyComponentProps<T>>;
|
|
10
14
|
export {};
|
|
11
15
|
//# sourceMappingURL=lazy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/components/lazy.ts"],"names":[],"mappings":"AAMA,UAAU,QAAQ;IAChB,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CACtB;AAED,KAAK,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAA;AAE9C,KAAK,oBAAoB,CAAC,CAAC,SAAS,eAAe,IAAI,CAAC,SAAS,QAAQ,GACrE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAC7B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAOtB,KAAK,kBAAkB,CAAC,CAAC,SAAS,eAAe,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG;IAC7E,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB,CAAA;AAOD,wBAAgB,IAAI,CAAC,CAAC,SAAS,eAAe,EAC5C,kBAAkB,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAwChC"}
|
|
1
|
+
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/components/lazy.ts"],"names":[],"mappings":"AAMA,UAAU,QAAQ;IAChB,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CACtB;AAED,KAAK,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAA;AAE9C,KAAK,oBAAoB,CAAC,CAAC,SAAS,eAAe,IAAI,CAAC,SAAS,QAAQ,GACrE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAC7B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAOtB,KAAK,kBAAkB,CAAC,CAAC,SAAS,eAAe,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG;IAC7E,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB,CAAA;AAOD;;;GAGG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,eAAe,EAC5C,kBAAkB,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAwChC"}
|
package/dist/components/lazy.js
CHANGED
|
@@ -7,6 +7,10 @@ const lazyCache = isBrowser
|
|
|
7
7
|
? // @ts-ignore - we're shamefully polluting the global scope here and hiding it 🥲
|
|
8
8
|
(window.__KIRU_LAZY_CACHE ?? (window.__KIRU_LAZY_CACHE = new Map()))
|
|
9
9
|
: new Map();
|
|
10
|
+
/**
|
|
11
|
+
* Lazy loads a component and renders it when it is ready.
|
|
12
|
+
* @see https://kirujs.dev/docs/api/components/lazy
|
|
13
|
+
*/
|
|
10
14
|
export function lazy(componentPromiseFn) {
|
|
11
15
|
function LazyWrapper(props) {
|
|
12
16
|
const { fallback = null, ...rest } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../src/components/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAqB/C,MAAM,SAAS,GAA2B,SAAS;IACjD,CAAC,CAAC,iFAAiF;QACjF,CAAC,MAAM,CAAC,iBAAiB,KAAxB,MAAM,CAAC,iBAAiB,GAAK,IAAI,GAAG,EAAqB,EAAC;IAC7D,CAAC,CAAC,IAAI,GAAG,EAAqB,CAAA;AAEhC,MAAM,UAAU,IAAI,CAClB,kBAAoC;IAEpC,SAAS,WAAW,CAAC,KAA4B;QAC/C,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAQ,CAAA;QAC7B,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,MAAM,EAAE,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC3D,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAErC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAA;YACpC,MAAM,KAAK,GAAc;gBACvB,OAAO;gBACP,MAAM,EAAE,IAAI;aACb,CAAA;YACD,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,EAAE;gBACjC,KAAK,CAAC,MAAM;oBACV,OAAO,iBAAiB,KAAK,UAAU;wBACrC,CAAC,CAAC,iBAAiB;wBACnB,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAA;gBAC/B,aAAa,CAAC,OAAO,CAAC,CAAA;YACxB,CAAC,CAAC,CAAA;YACF,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAChC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;YACtD,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,OAAO,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,WAAW,CAAC,WAAW,GAAG,WAAW,CAAA;IACvC,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAU,EAAE,CAClD,KAAK,CAAC,OAAO,CACX,uCAAuC,EACvC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,CACtD,CAAA"}
|
|
1
|
+
{"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../src/components/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAqB/C,MAAM,SAAS,GAA2B,SAAS;IACjD,CAAC,CAAC,iFAAiF;QACjF,CAAC,MAAM,CAAC,iBAAiB,KAAxB,MAAM,CAAC,iBAAiB,GAAK,IAAI,GAAG,EAAqB,EAAC;IAC7D,CAAC,CAAC,IAAI,GAAG,EAAqB,CAAA;AAEhC;;;GAGG;AACH,MAAM,UAAU,IAAI,CAClB,kBAAoC;IAEpC,SAAS,WAAW,CAAC,KAA4B;QAC/C,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAQ,CAAA;QAC7B,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,MAAM,EAAE,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC3D,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAErC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAA;YACpC,MAAM,KAAK,GAAc;gBACvB,OAAO;gBACP,MAAM,EAAE,IAAI;aACb,CAAA;YACD,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,EAAE;gBACjC,KAAK,CAAC,MAAM;oBACV,OAAO,iBAAiB,KAAK,UAAU;wBACrC,CAAC,CAAC,iBAAiB;wBACnB,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAA;gBAC/B,aAAa,CAAC,OAAO,CAAC,CAAA;YACxB,CAAC,CAAC,CAAA;YACF,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAChC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;YACtD,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,OAAO,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,WAAW,CAAC,WAAW,GAAG,WAAW,CAAA;IACvC,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAU,EAAE,CAClD,KAAK,CAAC,OAAO,CACX,uCAAuC,EACvC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,CACtD,CAAA"}
|
|
@@ -2,6 +2,10 @@ interface PortalProps {
|
|
|
2
2
|
children?: JSX.Children;
|
|
3
3
|
container: HTMLElement | (() => HTMLElement);
|
|
4
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* Escapes the application DOM tree and renders a child component in the given container.
|
|
7
|
+
* @see https://kirujs.dev/docs/api/components/portal
|
|
8
|
+
*/
|
|
5
9
|
export declare function Portal({ children, container }: PortalProps): JSX.Children;
|
|
6
10
|
export {};
|
|
7
11
|
//# sourceMappingURL=portal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../src/components/portal.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAA;IACvB,SAAS,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAA;CAC7C;AAED,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,WAAW,gBAyB1D"}
|
|
1
|
+
{"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../src/components/portal.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAA;IACvB,SAAS,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAA;CAC7C;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,WAAW,gBAyB1D"}
|
|
@@ -3,6 +3,10 @@ import { __DEV__ } from "../env.js";
|
|
|
3
3
|
import { KiruError } from "../error.js";
|
|
4
4
|
import { node, renderMode } from "../globals.js";
|
|
5
5
|
import { nextIdle, requestUpdate } from "../scheduler.js";
|
|
6
|
+
/**
|
|
7
|
+
* Escapes the application DOM tree and renders a child component in the given container.
|
|
8
|
+
* @see https://kirujs.dev/docs/api/components/portal
|
|
9
|
+
*/
|
|
6
10
|
export function Portal({ children, container }) {
|
|
7
11
|
const vNode = node.current;
|
|
8
12
|
if (!vNode.dom) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal.js","sourceRoot":"","sources":["../../src/components/portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAOzD,MAAM,UAAU,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAe;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAQ,CAAA;IAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACf,KAAK,CAAC,KAAK,IAAI,eAAe,CAAA;QAC9B,QAAQ,UAAU,CAAC,OAAO,EAAE,CAAC;YAC3B,KAAK,KAAK;gBACR,KAAK,CAAC,GAAG,GAAG,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;gBACrE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,YAAY,WAAW,CAAC,EAAE,CAAC;oBACxC,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,IAAI,SAAS,CAAC;4BAClB,OAAO,EAAE,uDAAuD,KAAK,CAAC,GAAG,EAAE;4BAC3E,KAAK,EAAE,KAAK;yBACb,CAAC,CAAA;oBACJ,CAAC;oBACD,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,OAAO,QAAQ,CAAA;YACjB,KAAK,SAAS;gBACZ,QAAQ,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;YACtC,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAA;QACf,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"portal.js","sourceRoot":"","sources":["../../src/components/portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAOzD;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAe;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAQ,CAAA;IAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACf,KAAK,CAAC,KAAK,IAAI,eAAe,CAAA;QAC9B,QAAQ,UAAU,CAAC,OAAO,EAAE,CAAC;YAC3B,KAAK,KAAK;gBACR,KAAK,CAAC,GAAG,GAAG,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;gBACrE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,YAAY,WAAW,CAAC,EAAE,CAAC;oBACxC,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,IAAI,SAAS,CAAC;4BAClB,OAAO,EAAE,uDAAuD,KAAK,CAAC,GAAG,EAAE;4BAC3E,KAAK,EAAE,KAAK;yBACb,CAAC,CAAA;oBACJ,CAAC;oBACD,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,OAAO,QAAQ,CAAA;YACjB,KAAK,SAAS;gBACZ,QAAQ,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;YACtC,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAA;QACf,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Truthy } from "../types.utils.js";
|
|
2
|
+
import type { Signalable } from "../types.js";
|
|
3
|
+
type ShowChildren<T> = (value: Truthy<T>) => JSX.Element;
|
|
4
|
+
export interface ShowProps<T> {
|
|
5
|
+
children: ShowChildren<T> | Exclude<JSX.Element, ShowChildren<T>>;
|
|
6
|
+
when: Signalable<T>;
|
|
7
|
+
fallback?: JSX.Element;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Conditionally renders a child component based on the 'when' prop.
|
|
11
|
+
* If the 'when' prop is truthy, the child component is rendered.
|
|
12
|
+
* If the 'when' prop is falsy, the fallback component is rendered.
|
|
13
|
+
* If the 'when' prop is a Signal, it creates an automatically-updating component with fine-grained reactivity.
|
|
14
|
+
* @see https://kirujs.dev/docs/api/components/show
|
|
15
|
+
*/
|
|
16
|
+
export declare function Show<T>({ children, when, fallback, }: ShowProps<T>): JSX.Element;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=show.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/components/show.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAA;AAExD,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IACjE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,EACtB,QAAQ,EACR,IAAI,EACJ,QAAQ,GACT,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAQ5B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { unwrap } from "../signals/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Conditionally renders a child component based on the 'when' prop.
|
|
4
|
+
* If the 'when' prop is truthy, the child component is rendered.
|
|
5
|
+
* If the 'when' prop is falsy, the fallback component is rendered.
|
|
6
|
+
* If the 'when' prop is a Signal, it creates an automatically-updating component with fine-grained reactivity.
|
|
7
|
+
* @see https://kirujs.dev/docs/api/components/show
|
|
8
|
+
*/
|
|
9
|
+
export function Show({ children, when, fallback, }) {
|
|
10
|
+
const value = unwrap(when, true);
|
|
11
|
+
if (!!value) {
|
|
12
|
+
return typeof children === "function"
|
|
13
|
+
? children(value)
|
|
14
|
+
: children;
|
|
15
|
+
}
|
|
16
|
+
return fallback;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/components/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAY5C;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAAI,EACtB,QAAQ,EACR,IAAI,EACJ,QAAQ,GACK;IACb,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAChC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,OAAO,QAAQ,KAAK,UAAU;YACnC,CAAC,CAAC,QAAQ,CAAC,KAAkB,CAAC;YAC9B,CAAC,CAAC,QAAQ,CAAA;IACd,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -14,6 +14,10 @@ interface TransitionProps {
|
|
|
14
14
|
element: (state: "entering" | "entered" | "exiting" | "exited") => JSX.Element;
|
|
15
15
|
onTransitionEnd?: (state: "entered" | "exited") => void;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Animates the DOM in a procedural/coroutine-like fashion. Useful for modals, drawers, dialogs and more.
|
|
19
|
+
* @see https://kirujs.dev/docs/api/components/transition
|
|
20
|
+
*/
|
|
17
21
|
export declare const Transition: Kiru.FC<TransitionProps>;
|
|
18
22
|
export {};
|
|
19
23
|
//# sourceMappingURL=transition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../src/components/transition.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAInD,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;AAC3E,UAAU,eAAe;IACvB,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IACnC,QAAQ,CAAC,EACL,MAAM,GACN;QACE,EAAE,EAAE,MAAM,CAAA;QACV,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACL,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,KAAK,GAAG,CAAC,OAAO,CAAA;IAC9E,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,KAAK,IAAI,CAAA;CACxD;AAED,eAAO,MAAM,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,eAAe,CAoC/C,CAAA"}
|
|
1
|
+
{"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../src/components/transition.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAInD,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;AAC3E,UAAU,eAAe;IACvB,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IACnC,QAAQ,CAAC,EACL,MAAM,GACN;QACE,EAAE,EAAE,MAAM,CAAA;QACV,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACL,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,KAAK,GAAG,CAAC,OAAO,CAAA;IAC9E,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,KAAK,IAAI,CAAA;CACxD;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,eAAe,CAoC/C,CAAA"}
|
|
@@ -2,6 +2,10 @@ import { onCleanup } from "../hooks/onCleanup.js";
|
|
|
2
2
|
import { signal } from "../signals/base.js";
|
|
3
3
|
import { effect } from "../signals/effect.js";
|
|
4
4
|
import { unwrap } from "../signals/utils.js";
|
|
5
|
+
/**
|
|
6
|
+
* Animates the DOM in a procedural/coroutine-like fashion. Useful for modals, drawers, dialogs and more.
|
|
7
|
+
* @see https://kirujs.dev/docs/api/components/transition
|
|
8
|
+
*/
|
|
5
9
|
export const Transition = (props) => {
|
|
6
10
|
const tState = signal(props.initialState || "exited");
|
|
7
11
|
let timeoutRef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transition.js","sourceRoot":"","sources":["../../src/components/transition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAU,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAoB5C,MAAM,CAAC,MAAM,UAAU,GAA6B,CAAC,KAAK,EAAE,EAAE;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAkB,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAA;IACtE,IAAI,UAA8B,CAAA;IAElC,MAAM,kBAAkB,GAAG,CAAC,eAAgC,EAAE,EAAE;QAC9D,YAAY,CAAC,UAAU,CAAC,CAAA;QACxB,MAAM,CAAC,KAAK,GAAG,eAAe,CAAA;QAC9B,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,QAAQ,EAAE,CAAC;YAClE,IAAI,KAAK,CAAC,eAAe;gBAAE,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;QACnE,CAAC;IACH,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,eAAqC,EAAE,EAAE;QACjE,UAAU,GAAG,MAAM,CAAC,UAAU,CAC5B,GAAG,EAAE,CAAC,kBAAkB,CAAC,eAAe,CAAC,EACzC,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,CAC3C,CAAA;IACH,CAAC,CAAA;IAED,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;QAC7B,IAAI,KAAK,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAC7D,kBAAkB,CAAC,UAAU,CAAC,CAAA;YAC9B,gBAAgB,CAAC,SAAS,CAAC,CAAA;QAC7B,CAAC;aAAM,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACnE,kBAAkB,CAAC,SAAS,CAAC,CAAA;YAC7B,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAA;IAEzC,OAAO,CAAC,QAAQ,EAAE,EAAE;QAClB,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,CAAA;AAC3B,SAAS,SAAS,CAChB,eAAqC,EACrC,QAAqC;IAErC,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IACjD,QAAQ,eAAe,EAAE,CAAC;QACxB,KAAK,SAAS;YACZ,OAAO,QAAQ,EAAE,EAAE,IAAI,eAAe,CAAA;QACxC,KAAK,QAAQ;YACX,OAAO,QAAQ,EAAE,GAAG,IAAI,eAAe,CAAA;IAC3C,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"transition.js","sourceRoot":"","sources":["../../src/components/transition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAU,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAoB5C;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAA6B,CAAC,KAAK,EAAE,EAAE;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAkB,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAA;IACtE,IAAI,UAA8B,CAAA;IAElC,MAAM,kBAAkB,GAAG,CAAC,eAAgC,EAAE,EAAE;QAC9D,YAAY,CAAC,UAAU,CAAC,CAAA;QACxB,MAAM,CAAC,KAAK,GAAG,eAAe,CAAA;QAC9B,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,QAAQ,EAAE,CAAC;YAClE,IAAI,KAAK,CAAC,eAAe;gBAAE,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;QACnE,CAAC;IACH,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,eAAqC,EAAE,EAAE;QACjE,UAAU,GAAG,MAAM,CAAC,UAAU,CAC5B,GAAG,EAAE,CAAC,kBAAkB,CAAC,eAAe,CAAC,EACzC,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,CAC3C,CAAA;IACH,CAAC,CAAA;IAED,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;QAC7B,IAAI,KAAK,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAC7D,kBAAkB,CAAC,UAAU,CAAC,CAAA;YAC9B,gBAAgB,CAAC,SAAS,CAAC,CAAA;QAC7B,CAAC;aAAM,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACnE,kBAAkB,CAAC,SAAS,CAAC,CAAA;YAC7B,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAA;IAEzC,OAAO,CAAC,QAAQ,EAAE,EAAE;QAClB,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,CAAA;AAC3B,SAAS,SAAS,CAChB,eAAqC,EACrC,QAAqC;IAErC,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IACjD,QAAQ,eAAe,EAAE,CAAC;QACxB,KAAK,SAAS;YACZ,OAAO,QAAQ,EAAE,EAAE,IAAI,eAAe,CAAA;QACxC,KAAK,QAAQ;YACX,OAAO,QAAQ,EAAE,GAAG,IAAI,eAAe,CAAA;IAC3C,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/hooks/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/hooks/setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,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"}
|
package/dist/hooks/setup.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { signal } from "../signals/index.js";
|
|
1
|
+
import { computed, signal } from "../signals/index.js";
|
|
3
2
|
import { createVNodeId } from "../utils/vdom.js";
|
|
4
3
|
import { __DEV__ } from "../env.js";
|
|
4
|
+
import { node, setups } from "../globals.js";
|
|
5
5
|
/**
|
|
6
6
|
* Creates a per‑VNode setup context that can be used during
|
|
7
7
|
* component setup to derive props into signals.
|
|
@@ -32,7 +32,7 @@ function createSetup(vNode) {
|
|
|
32
32
|
return {
|
|
33
33
|
derive(selector) {
|
|
34
34
|
const props = { ...vNode.props };
|
|
35
|
-
const sig =
|
|
35
|
+
const sig = computed(() => selector(props));
|
|
36
36
|
propSyncs.push((p) => (sig.value = selector(p)));
|
|
37
37
|
return sig;
|
|
38
38
|
},
|
package/dist/hooks/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/hooks/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/hooks/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAU5C;;;;;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,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;YAC3C,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"}
|
|
@@ -5,12 +5,11 @@ export declare class ComputedSignal<T> extends Signal<T> {
|
|
|
5
5
|
protected $isDirty: boolean;
|
|
6
6
|
constructor(getter: (prev?: T) => T, displayName?: string);
|
|
7
7
|
get value(): T;
|
|
8
|
+
set value(next: T);
|
|
8
9
|
toString(): string;
|
|
9
10
|
peek(): T;
|
|
10
|
-
set value(next: T);
|
|
11
11
|
subscribe(cb: (state: T, prevState?: T) => void): () => void;
|
|
12
12
|
static dispose(signal: ComputedSignal<any>): void;
|
|
13
|
-
static updateGetter<T>(signal: ComputedSignal<T>, getter: (prev?: T) => T): void;
|
|
14
13
|
private static stop;
|
|
15
14
|
private static run;
|
|
16
15
|
private ensureNotDirty;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../src/signals/computed.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAC9C,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAClC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACxC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAA;gBACf,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM;IAuBzD,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../src/signals/computed.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAC9C,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAClC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACxC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAA;gBACf,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM;IAuBzD,IAAI,KAAK,IAKO,CAAC,CAFhB;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAEhB;IAED,QAAQ;IAKR,IAAI;IAKJ,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAO5D,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI;IAKjD,OAAO,CAAC,MAAM,CAAC,IAAI;IAYnB,OAAO,CAAC,MAAM,CAAC,GAAG;IA0BlB,OAAO,CAAC,cAAc;CA6BvB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EACxB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EACvB,WAAW,CAAC,EAAE,MAAM,GACnB,cAAc,CAAC,CAAC,CAAC,CAEnB"}
|
package/dist/signals/computed.js
CHANGED
|
@@ -30,6 +30,9 @@ export class ComputedSignal extends Signal {
|
|
|
30
30
|
this.ensureNotDirty();
|
|
31
31
|
return super.value;
|
|
32
32
|
}
|
|
33
|
+
set value(next) {
|
|
34
|
+
super.value = next;
|
|
35
|
+
}
|
|
33
36
|
toString() {
|
|
34
37
|
this.ensureNotDirty();
|
|
35
38
|
return super.toString();
|
|
@@ -38,8 +41,6 @@ export class ComputedSignal extends Signal {
|
|
|
38
41
|
this.ensureNotDirty();
|
|
39
42
|
return super.peek();
|
|
40
43
|
}
|
|
41
|
-
// @ts-expect-error
|
|
42
|
-
set value(next) { }
|
|
43
44
|
subscribe(cb) {
|
|
44
45
|
if (this.$isDirty) {
|
|
45
46
|
ComputedSignal.run(this);
|
|
@@ -50,31 +51,27 @@ export class ComputedSignal extends Signal {
|
|
|
50
51
|
ComputedSignal.stop(signal);
|
|
51
52
|
Signal.dispose(signal);
|
|
52
53
|
}
|
|
53
|
-
static updateGetter(signal, getter) {
|
|
54
|
-
const $computed = latest(signal);
|
|
55
|
-
$computed.$getter = getter;
|
|
56
|
-
$computed.$isDirty = true;
|
|
57
|
-
ComputedSignal.run($computed);
|
|
58
|
-
if (Object.is($computed.$value, $computed.$prevValue))
|
|
59
|
-
return;
|
|
60
|
-
$computed.notify();
|
|
61
|
-
}
|
|
62
54
|
static stop(computed) {
|
|
63
|
-
|
|
55
|
+
if (__DEV__) {
|
|
56
|
+
computed = latest(computed);
|
|
57
|
+
}
|
|
58
|
+
const { $id, $unsubs } = computed;
|
|
64
59
|
effectQueue.delete($id);
|
|
65
60
|
$unsubs.forEach(call);
|
|
66
61
|
$unsubs.clear();
|
|
67
62
|
computed.$isDirty = true;
|
|
68
63
|
}
|
|
69
64
|
static run(computed) {
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
if (__DEV__) {
|
|
66
|
+
computed = latest(computed);
|
|
67
|
+
}
|
|
68
|
+
const { $id: id, $getter, $unsubs: subs } = computed;
|
|
72
69
|
const value = executeWithTracking({
|
|
73
70
|
id,
|
|
74
71
|
subs,
|
|
75
|
-
fn: () => $getter(
|
|
72
|
+
fn: () => $getter(computed.$value),
|
|
76
73
|
onDepChanged: () => {
|
|
77
|
-
|
|
74
|
+
computed.$isDirty = true;
|
|
78
75
|
if (__DEV__) {
|
|
79
76
|
if (!signalSubsMap?.get(id)?.size)
|
|
80
77
|
return;
|
|
@@ -83,17 +80,28 @@ export class ComputedSignal extends Signal {
|
|
|
83
80
|
if (!computed.$subs.size)
|
|
84
81
|
return;
|
|
85
82
|
}
|
|
86
|
-
ComputedSignal.run(
|
|
87
|
-
if (Object.is(
|
|
83
|
+
ComputedSignal.run(computed);
|
|
84
|
+
if (Object.is(computed.$value, computed.$prevValue))
|
|
88
85
|
return;
|
|
89
|
-
|
|
86
|
+
computed.notify();
|
|
90
87
|
},
|
|
91
88
|
});
|
|
92
|
-
|
|
93
|
-
|
|
89
|
+
computed.sneak(value);
|
|
90
|
+
computed.$isDirty = false;
|
|
94
91
|
}
|
|
95
92
|
ensureNotDirty() {
|
|
96
|
-
|
|
93
|
+
let computed = this;
|
|
94
|
+
if (__DEV__) {
|
|
95
|
+
computed = latest(this);
|
|
96
|
+
}
|
|
97
|
+
if (!computed.$isDirty) {
|
|
98
|
+
const pending = effectQueue.get(computed.$id);
|
|
99
|
+
if (pending) {
|
|
100
|
+
pending();
|
|
101
|
+
effectQueue.delete(computed.$id);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (!computed.$isDirty)
|
|
97
105
|
return;
|
|
98
106
|
if (__DEV__) {
|
|
99
107
|
/**
|
|
@@ -105,10 +113,10 @@ export class ComputedSignal extends Signal {
|
|
|
105
113
|
* the previous signal's ID and not disposing it / deleting the
|
|
106
114
|
* map entry.
|
|
107
115
|
*/
|
|
108
|
-
if (
|
|
116
|
+
if (computed.$isDisposed)
|
|
109
117
|
return;
|
|
110
118
|
}
|
|
111
|
-
ComputedSignal.run(
|
|
119
|
+
ComputedSignal.run(computed);
|
|
112
120
|
}
|
|
113
121
|
}
|
|
114
122
|
export function computed(getter, displayName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed.js","sourceRoot":"","sources":["../../src/signals/computed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,MAAM,OAAO,cAAkB,SAAQ,MAAS;IAI9C,YAAY,MAAuB,EAAE,WAAoB;QACvD,KAAK,CAAC,KAAK,CAAM,EAAE,WAAW,CAAC,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QAEpB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAE,CAAC,MAAO,CAAA;YACzC,mCAAmC;YACnC,IAAI,CAAC,WAAW,CAAC,GAAG;gBAClB,OAAO,EAAE,GAAG,EAAE;oBACZ,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACf,MAAM,CAAC,IAAI,CAAC,CAAA;oBACZ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;gBAC/B,CAAC;gBACD,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;aACqB,CAAA;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;IACzB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,OAAO,KAAK,CAAC,IAAI,EAAE,CAAA;IACrB,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"computed.js","sourceRoot":"","sources":["../../src/signals/computed.ts"],"names":[],"mappings":"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"}
|
package/dist/signals/index.d.ts
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ISSUES:
|
|
3
|
-
* 1. signal subscription when mixing local and global signals get reversed in hmr for ONLY the first update after HMR is dom
|
|
4
|
-
* 2. global computed will lose its vNode subscription on HMR
|
|
5
|
-
* */
|
|
6
1
|
export { Signal, signal } from "./base.js";
|
|
7
2
|
export { ComputedSignal, computed } from "./computed.js";
|
|
8
3
|
export { Effect, effect } from "./effect.js";
|
|
9
4
|
export { unwrap, tick } from "./utils.js";
|
|
10
|
-
export * from "./jsx.js";
|
|
11
5
|
export * from "./types.js";
|
|
12
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACzC,cAAc,YAAY,CAAA"}
|
package/dist/signals/index.js
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ISSUES:
|
|
3
|
-
* 1. signal subscription when mixing local and global signals get reversed in hmr for ONLY the first update after HMR is dom
|
|
4
|
-
* 2. global computed will lose its vNode subscription on HMR
|
|
5
|
-
* */
|
|
6
1
|
export { Signal, signal } from "./base.js";
|
|
7
2
|
export { ComputedSignal, computed } from "./computed.js";
|
|
8
3
|
export { Effect, effect } from "./effect.js";
|
|
9
4
|
export { unwrap, tick } from "./utils.js";
|
|
10
|
-
export * from "./jsx.js";
|
|
11
5
|
export * from "./types.js";
|
|
12
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACzC,cAAc,YAAY,CAAA"}
|
package/dist/types.utils.d.ts
CHANGED
|
@@ -55,4 +55,6 @@ export type ArrayHas<T extends any[], U> = Extract<T[number], U> extends never ?
|
|
|
55
55
|
export type RecordHas<T extends Record<string, any>, U> = [
|
|
56
56
|
Extract<T[keyof T], U>
|
|
57
57
|
] extends [never] ? false : true;
|
|
58
|
+
export type Falsy = false | 0 | 0n | "" | null | undefined;
|
|
59
|
+
export type Truthy<T> = Exclude<T, Falsy>;
|
|
58
60
|
//# sourceMappingURL=types.utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.utils.d.ts","sourceRoot":"","sources":["../src/types.utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.utils.d.ts","sourceRoot":"","sources":["../src/types.utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/components/derive.ts
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { sideEffectsEnabled } from "../utils/index.js"
|
|
2
|
+
import { Signal } from "../signals/index.js"
|
|
2
3
|
import { $STREAM_DATA } from "../constants.js"
|
|
4
|
+
import { node } from "../globals.js"
|
|
5
|
+
import { ref } from "../ref.js"
|
|
3
6
|
import { requestUpdate } from "../scheduler.js"
|
|
4
|
-
import { Signal } from "../signals/index.js"
|
|
5
|
-
import { sideEffectsEnabled } from "../utils/index.js"
|
|
6
|
-
import type { RecordHas } from "../types.utils"
|
|
7
7
|
import { isStatefulPromise, StreamDataThrowValue } from "../statefulPromise.js"
|
|
8
|
-
import {
|
|
8
|
+
import type { RecordHas } from "../types.utils"
|
|
9
9
|
|
|
10
10
|
export type Derivable =
|
|
11
11
|
| Kiru.Signal<unknown>
|
|
12
12
|
| Kiru.StatefulPromiseBase<unknown>
|
|
13
13
|
| Record<string, Kiru.Signal<unknown> | Kiru.StatefulPromiseBase<unknown>>
|
|
14
14
|
|
|
15
|
-
type InnerOf<T> =
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
: never
|
|
15
|
+
type InnerOf<T> = T extends Kiru.Signal<infer V>
|
|
16
|
+
? V
|
|
17
|
+
: T extends Kiru.StatefulPromiseBase<infer P>
|
|
18
|
+
? P
|
|
19
|
+
: never
|
|
21
20
|
|
|
22
21
|
type UnwrapDerive<T extends Derivable> = T extends
|
|
23
22
|
| Kiru.Signal<unknown>
|
|
@@ -37,7 +36,7 @@ export type DeriveFallbackMode = "swr" | "fallback"
|
|
|
37
36
|
|
|
38
37
|
export interface DeriveProps<
|
|
39
38
|
T extends Derivable,
|
|
40
|
-
Mode extends DeriveFallbackMode = "fallback"
|
|
39
|
+
Mode extends DeriveFallbackMode = "fallback"
|
|
41
40
|
> {
|
|
42
41
|
from: T
|
|
43
42
|
mode?: Mode
|
|
@@ -46,19 +45,19 @@ export interface DeriveProps<
|
|
|
46
45
|
? ChildFnWithStale<U>
|
|
47
46
|
: ChildFn<U>
|
|
48
47
|
: T extends Record<string, any>
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
: ChildFn<UnwrapDerive<T>>
|
|
48
|
+
? RecordHasPromise<T> extends true
|
|
49
|
+
? Mode extends "swr"
|
|
50
|
+
? ChildFnWithStale<UnwrapDerive<T>>
|
|
53
51
|
: ChildFn<UnwrapDerive<T>>
|
|
54
52
|
: ChildFn<UnwrapDerive<T>>
|
|
53
|
+
: ChildFn<UnwrapDerive<T>>
|
|
55
54
|
fallback?: T extends Kiru.StatefulPromiseBase<any>
|
|
56
55
|
? JSX.Element
|
|
57
56
|
: T extends Record<string, any>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
: never
|
|
57
|
+
? RecordHasPromise<T> extends true
|
|
58
|
+
? JSX.Element
|
|
61
59
|
: never
|
|
60
|
+
: never
|
|
62
61
|
}
|
|
63
62
|
|
|
64
63
|
type Derive = {
|
|
@@ -67,6 +66,10 @@ type Derive = {
|
|
|
67
66
|
): (props: DeriveProps<T, U>) => JSX.Element
|
|
68
67
|
}
|
|
69
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Derives a value from a signal or stateful promise and renders a child component.
|
|
71
|
+
* @see https://kirujs.dev/docs/api/components/derive
|
|
72
|
+
*/
|
|
70
73
|
export const Derive: Derive = () => {
|
|
71
74
|
return (props) => {
|
|
72
75
|
const { from, children, fallback, mode } = props
|
|
@@ -7,6 +7,10 @@ export interface ErrorBoundaryProps {
|
|
|
7
7
|
onError?: (error: Error) => void
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Catches errors in the children and renders a fallback component.
|
|
12
|
+
* @see https://kirujs.dev/docs/api/components/error-boundary
|
|
13
|
+
*/
|
|
10
14
|
export function ErrorBoundary({
|
|
11
15
|
children,
|
|
12
16
|
fallback,
|
|
@@ -1,40 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
when: Signalable<unknown>
|
|
36
|
-
fallback?: JSX.Element
|
|
37
|
-
}
|
|
38
|
-
export function Show({ children, when, fallback }: ShowProps): JSX.Element {
|
|
39
|
-
return !!unwrap(when, true) ? children : fallback
|
|
40
|
-
}
|
|
1
|
+
import { unwrap, type Signal } from "../signals/index.js"
|
|
2
|
+
|
|
3
|
+
type InferArraySignalItemType<T extends Signal<any[]> | readonly unknown[]> =
|
|
4
|
+
T extends Signal<infer V>
|
|
5
|
+
? V extends Array<infer W>
|
|
6
|
+
? W
|
|
7
|
+
: never
|
|
8
|
+
: T extends unknown[]
|
|
9
|
+
? T[number]
|
|
10
|
+
: never
|
|
11
|
+
|
|
12
|
+
type ForProps<
|
|
13
|
+
T extends Signal<any[]> | readonly unknown[],
|
|
14
|
+
U = InferArraySignalItemType<T>
|
|
15
|
+
> = {
|
|
16
|
+
each: T
|
|
17
|
+
fallback?: JSX.Element
|
|
18
|
+
children: (value: U, index: number, array: U[]) => JSX.Element
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Renders a list of items. If the list a Signal, it creates an automatically-updating list with fine-grained reactivity.
|
|
23
|
+
* If the list is empty, the fallback is rendered.
|
|
24
|
+
* @see https://kirujs.dev/docs/api/components/for
|
|
25
|
+
*/
|
|
26
|
+
export function For<T extends Signal<any[]> | unknown[]>({
|
|
27
|
+
each,
|
|
28
|
+
fallback,
|
|
29
|
+
children,
|
|
30
|
+
}: ForProps<T>) {
|
|
31
|
+
const items = unwrap(each, true)
|
|
32
|
+
if (items.length === 0) return fallback
|
|
33
|
+
return items.map(children)
|
|
34
|
+
}
|
package/src/components/index.ts
CHANGED
package/src/components/lazy.ts
CHANGED
|
@@ -28,6 +28,10 @@ const lazyCache: Map<string, LazyState> = isBrowser
|
|
|
28
28
|
(window.__KIRU_LAZY_CACHE ??= new Map<string, LazyState>())
|
|
29
29
|
: new Map<string, LazyState>()
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Lazy loads a component and renders it when it is ready.
|
|
33
|
+
* @see https://kirujs.dev/docs/api/components/lazy
|
|
34
|
+
*/
|
|
31
35
|
export function lazy<T extends LazyImportValue>(
|
|
32
36
|
componentPromiseFn: () => Promise<T>
|
|
33
37
|
): Kiru.FC<LazyComponentProps<T>> {
|
package/src/components/portal.ts
CHANGED
|
@@ -9,6 +9,10 @@ interface PortalProps {
|
|
|
9
9
|
container: HTMLElement | (() => HTMLElement)
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Escapes the application DOM tree and renders a child component in the given container.
|
|
14
|
+
* @see https://kirujs.dev/docs/api/components/portal
|
|
15
|
+
*/
|
|
12
16
|
export function Portal({ children, container }: PortalProps) {
|
|
13
17
|
const vNode = node.current!
|
|
14
18
|
if (!vNode.dom) {
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { unwrap } from "../signals/index.js"
|
|
2
|
+
import type { Truthy } from "../types.utils.js"
|
|
3
|
+
import type { Signalable } from "../types.js"
|
|
4
|
+
|
|
5
|
+
type ShowChildren<T> = (value: Truthy<T>) => JSX.Element
|
|
6
|
+
|
|
7
|
+
export interface ShowProps<T> {
|
|
8
|
+
children: ShowChildren<T> | Exclude<JSX.Element, ShowChildren<T>>
|
|
9
|
+
when: Signalable<T>
|
|
10
|
+
fallback?: JSX.Element
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Conditionally renders a child component based on the 'when' prop.
|
|
15
|
+
* If the 'when' prop is truthy, the child component is rendered.
|
|
16
|
+
* If the 'when' prop is falsy, the fallback component is rendered.
|
|
17
|
+
* If the 'when' prop is a Signal, it creates an automatically-updating component with fine-grained reactivity.
|
|
18
|
+
* @see https://kirujs.dev/docs/api/components/show
|
|
19
|
+
*/
|
|
20
|
+
export function Show<T>({
|
|
21
|
+
children,
|
|
22
|
+
when,
|
|
23
|
+
fallback,
|
|
24
|
+
}: ShowProps<T>): JSX.Element {
|
|
25
|
+
const value = unwrap(when, true)
|
|
26
|
+
if (!!value) {
|
|
27
|
+
return typeof children === "function"
|
|
28
|
+
? children(value as Truthy<T>)
|
|
29
|
+
: children
|
|
30
|
+
}
|
|
31
|
+
return fallback
|
|
32
|
+
}
|
|
@@ -21,6 +21,10 @@ interface TransitionProps {
|
|
|
21
21
|
onTransitionEnd?: (state: "entered" | "exited") => void
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Animates the DOM in a procedural/coroutine-like fashion. Useful for modals, drawers, dialogs and more.
|
|
26
|
+
* @see https://kirujs.dev/docs/api/components/transition
|
|
27
|
+
*/
|
|
24
28
|
export const Transition: Kiru.FC<TransitionProps> = (props) => {
|
|
25
29
|
const tState = signal<TransitionState>(props.initialState || "exited")
|
|
26
30
|
let timeoutRef: number | undefined
|
package/src/hooks/setup.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { signal } from "../signals/index.js"
|
|
3
|
-
import type { Signal } from "../signals/base.js"
|
|
1
|
+
import { computed, signal } from "../signals/index.js"
|
|
4
2
|
import { createVNodeId } from "../utils/vdom.js"
|
|
5
3
|
import { __DEV__ } from "../env.js"
|
|
4
|
+
import { node, setups } from "../globals.js"
|
|
5
|
+
import type { Signal } from "../signals/base.js"
|
|
6
6
|
|
|
7
7
|
export interface Setup<Props extends {}> {
|
|
8
8
|
readonly derive: <T>(
|
|
@@ -48,7 +48,7 @@ function createSetup<Props extends {}>(vNode: Kiru.VNode): Setup<Props> {
|
|
|
48
48
|
return {
|
|
49
49
|
derive(selector) {
|
|
50
50
|
const props = { ...vNode.props } as InferredProps
|
|
51
|
-
const sig =
|
|
51
|
+
const sig = computed(() => selector(props))
|
|
52
52
|
propSyncs.push((p) => (sig.value = selector(p)))
|
|
53
53
|
return sig
|
|
54
54
|
},
|
package/src/signals/computed.ts
CHANGED
|
@@ -38,6 +38,10 @@ export class ComputedSignal<T> extends Signal<T> {
|
|
|
38
38
|
return super.value
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
set value(next: T) {
|
|
42
|
+
super.value = next
|
|
43
|
+
}
|
|
44
|
+
|
|
41
45
|
toString() {
|
|
42
46
|
this.ensureNotDirty()
|
|
43
47
|
return super.toString()
|
|
@@ -48,9 +52,6 @@ export class ComputedSignal<T> extends Signal<T> {
|
|
|
48
52
|
return super.peek()
|
|
49
53
|
}
|
|
50
54
|
|
|
51
|
-
// @ts-expect-error
|
|
52
|
-
set value(next: T) {}
|
|
53
|
-
|
|
54
55
|
subscribe(cb: (state: T, prevState?: T) => void): () => void {
|
|
55
56
|
if (this.$isDirty) {
|
|
56
57
|
ComputedSignal.run(this)
|
|
@@ -63,18 +64,11 @@ export class ComputedSignal<T> extends Signal<T> {
|
|
|
63
64
|
Signal.dispose(signal)
|
|
64
65
|
}
|
|
65
66
|
|
|
66
|
-
static updateGetter<T>(signal: ComputedSignal<T>, getter: (prev?: T) => T) {
|
|
67
|
-
const $computed = latest(signal)
|
|
68
|
-
$computed.$getter = getter
|
|
69
|
-
$computed.$isDirty = true
|
|
70
|
-
|
|
71
|
-
ComputedSignal.run($computed)
|
|
72
|
-
if (Object.is($computed.$value, $computed.$prevValue)) return
|
|
73
|
-
$computed.notify()
|
|
74
|
-
}
|
|
75
|
-
|
|
76
67
|
private static stop<T>(computed: ComputedSignal<T>) {
|
|
77
|
-
|
|
68
|
+
if (__DEV__) {
|
|
69
|
+
computed = latest(computed)
|
|
70
|
+
}
|
|
71
|
+
const { $id, $unsubs } = computed
|
|
78
72
|
|
|
79
73
|
effectQueue.delete($id)
|
|
80
74
|
$unsubs.forEach(call)
|
|
@@ -83,31 +77,46 @@ export class ComputedSignal<T> extends Signal<T> {
|
|
|
83
77
|
}
|
|
84
78
|
|
|
85
79
|
private static run<T>(computed: ComputedSignal<T>) {
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
if (__DEV__) {
|
|
81
|
+
computed = latest(computed)
|
|
82
|
+
}
|
|
83
|
+
const { $id: id, $getter, $unsubs: subs } = computed
|
|
88
84
|
|
|
89
85
|
const value = executeWithTracking({
|
|
90
86
|
id,
|
|
91
87
|
subs,
|
|
92
|
-
fn: () => $getter(
|
|
88
|
+
fn: () => $getter(computed.$value),
|
|
93
89
|
onDepChanged: () => {
|
|
94
|
-
|
|
90
|
+
computed.$isDirty = true
|
|
95
91
|
if (__DEV__) {
|
|
96
92
|
if (!signalSubsMap?.get(id)?.size) return
|
|
97
93
|
} else {
|
|
98
94
|
if (!computed.$subs!.size) return
|
|
99
95
|
}
|
|
100
|
-
ComputedSignal.run(
|
|
101
|
-
if (Object.is(
|
|
102
|
-
|
|
96
|
+
ComputedSignal.run(computed)
|
|
97
|
+
if (Object.is(computed.$value, computed.$prevValue)) return
|
|
98
|
+
computed.notify()
|
|
103
99
|
},
|
|
104
100
|
})
|
|
105
|
-
|
|
106
|
-
|
|
101
|
+
computed.sneak(value)
|
|
102
|
+
computed.$isDirty = false
|
|
107
103
|
}
|
|
108
104
|
|
|
109
105
|
private ensureNotDirty() {
|
|
110
|
-
|
|
106
|
+
let computed = this
|
|
107
|
+
if (__DEV__) {
|
|
108
|
+
computed = latest(this)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (!computed.$isDirty) {
|
|
112
|
+
const pending = effectQueue.get(computed.$id)
|
|
113
|
+
if (pending) {
|
|
114
|
+
pending()
|
|
115
|
+
effectQueue.delete(computed.$id)
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (!computed.$isDirty) return
|
|
111
120
|
if (__DEV__) {
|
|
112
121
|
/**
|
|
113
122
|
* This is a safeguard for dev-mode only, where a 'read' on an
|
|
@@ -118,9 +127,9 @@ export class ComputedSignal<T> extends Signal<T> {
|
|
|
118
127
|
* the previous signal's ID and not disposing it / deleting the
|
|
119
128
|
* map entry.
|
|
120
129
|
*/
|
|
121
|
-
if (
|
|
130
|
+
if (computed.$isDisposed) return
|
|
122
131
|
}
|
|
123
|
-
ComputedSignal.run(
|
|
132
|
+
ComputedSignal.run(computed)
|
|
124
133
|
}
|
|
125
134
|
}
|
|
126
135
|
|
package/src/signals/index.ts
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ISSUES:
|
|
3
|
-
* 1. signal subscription when mixing local and global signals get reversed in hmr for ONLY the first update after HMR is dom
|
|
4
|
-
* 2. global computed will lose its vNode subscription on HMR
|
|
5
|
-
* */
|
|
6
|
-
|
|
7
1
|
export { Signal, signal } from "./base.js"
|
|
8
2
|
export { ComputedSignal, computed } from "./computed.js"
|
|
9
3
|
export { Effect, effect } from "./effect.js"
|
|
10
4
|
export { unwrap, tick } from "./utils.js"
|
|
11
|
-
export * from "./jsx.js"
|
|
12
5
|
export * from "./types.js"
|
package/src/types.utils.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../../src/signals/jsx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGvC,KAAK,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,OAAO,EAAE,IACxE,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GACrB,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACtB,CAAC,GACD,KAAK,GACP,CAAC,SAAS,OAAO,EAAE,GACjB,CAAC,CAAC,MAAM,CAAC,GACT,KAAK,CAAA;AAEb,KAAK,QAAQ,CACX,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,OAAO,EAAE,EAC5C,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,IAC7B;IACF,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,GAAG,OAAO,EAAE,EAAE,EACvD,IAAI,EACJ,QAAQ,EACR,QAAQ,GACT,EAAE,QAAQ,CAAC,CAAC,CAAC,eAIb;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;IACrB,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB;AACD,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAEzE"}
|
package/dist/signals/jsx.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { unwrap } from "./utils.js";
|
|
2
|
-
export function For({ each, fallback, children, }) {
|
|
3
|
-
const items = unwrap(each, true);
|
|
4
|
-
if (items.length === 0)
|
|
5
|
-
return fallback;
|
|
6
|
-
return items.map(children);
|
|
7
|
-
}
|
|
8
|
-
export function Show({ children, when, fallback }) {
|
|
9
|
-
return !!unwrap(when, true) ? children : fallback;
|
|
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":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAoBnC,MAAM,UAAU,GAAG,CAAsC,EACvD,IAAI,EACJ,QAAQ,EACR,QAAQ,GACI;IACZ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAA;IACvC,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AAC5B,CAAC;AAOD,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAa;IAC1D,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;AACnD,CAAC"}
|