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.
Files changed (61) hide show
  1. package/dist/components/derive.d.ts +4 -0
  2. package/dist/components/derive.d.ts.map +1 -1
  3. package/dist/components/derive.js +8 -4
  4. package/dist/components/derive.js.map +1 -1
  5. package/dist/components/errorBoundary.d.ts +4 -0
  6. package/dist/components/errorBoundary.d.ts.map +1 -1
  7. package/dist/components/errorBoundary.js +4 -0
  8. package/dist/components/errorBoundary.js.map +1 -1
  9. package/dist/{signals/jsx.d.ts → components/for.d.ts} +7 -9
  10. package/dist/components/for.d.ts.map +1 -0
  11. package/dist/components/for.js +13 -0
  12. package/dist/components/for.js.map +1 -0
  13. package/dist/components/index.d.ts +2 -0
  14. package/dist/components/index.d.ts.map +1 -1
  15. package/dist/components/index.js +2 -0
  16. package/dist/components/index.js.map +1 -1
  17. package/dist/components/lazy.d.ts +4 -0
  18. package/dist/components/lazy.d.ts.map +1 -1
  19. package/dist/components/lazy.js +4 -0
  20. package/dist/components/lazy.js.map +1 -1
  21. package/dist/components/portal.d.ts +4 -0
  22. package/dist/components/portal.d.ts.map +1 -1
  23. package/dist/components/portal.js +4 -0
  24. package/dist/components/portal.js.map +1 -1
  25. package/dist/components/show.d.ts +18 -0
  26. package/dist/components/show.d.ts.map +1 -0
  27. package/dist/components/show.js +18 -0
  28. package/dist/components/show.js.map +1 -0
  29. package/dist/components/transition.d.ts +4 -0
  30. package/dist/components/transition.d.ts.map +1 -1
  31. package/dist/components/transition.js +4 -0
  32. package/dist/components/transition.js.map +1 -1
  33. package/dist/hooks/setup.d.ts.map +1 -1
  34. package/dist/hooks/setup.js +3 -3
  35. package/dist/hooks/setup.js.map +1 -1
  36. package/dist/signals/computed.d.ts +1 -2
  37. package/dist/signals/computed.d.ts.map +1 -1
  38. package/dist/signals/computed.js +32 -24
  39. package/dist/signals/computed.js.map +1 -1
  40. package/dist/signals/index.d.ts +0 -6
  41. package/dist/signals/index.d.ts.map +1 -1
  42. package/dist/signals/index.js +0 -6
  43. package/dist/signals/index.js.map +1 -1
  44. package/dist/types.utils.d.ts +2 -0
  45. package/dist/types.utils.d.ts.map +1 -1
  46. package/package.json +1 -1
  47. package/src/components/derive.ts +22 -19
  48. package/src/components/errorBoundary.ts +4 -0
  49. package/src/{signals/jsx.ts → components/for.ts} +34 -40
  50. package/src/components/index.ts +2 -0
  51. package/src/components/lazy.ts +4 -0
  52. package/src/components/portal.ts +4 -0
  53. package/src/components/show.ts +32 -0
  54. package/src/components/transition.ts +4 -0
  55. package/src/hooks/setup.ts +4 -4
  56. package/src/signals/computed.ts +35 -26
  57. package/src/signals/index.ts +0 -7
  58. package/src/types.utils.ts +3 -0
  59. package/dist/signals/jsx.d.ts.map +0 -1
  60. package/dist/signals/jsx.js +0 -11
  61. 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":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAI/C,MAAM,MAAM,SAAS,GACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GACpB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GACjC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAA;AAE5E,KAAK,OAAO,CAAC,CAAC,IACZ,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAC1B,CAAC,GACD,CAAC,SAAS,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,GACzC,CAAC,GACD,KAAK,CAAA;AAEb,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SACtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GACpB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAC7B,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,mBAAmB,CAAC,GAAG,CAAC,CAC9B,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,mBAAmB,CAAC,MAAM,CAAC,CAAC,GACjD,IAAI,SAAS,KAAK,GAChB,gBAAgB,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,GACZ,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,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;IAC9B,QAAQ,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAC9C,GAAG,CAAC,OAAO,GACX,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,gBAAgB,CAAC,CAAC,CAAC,SAAS,IAAI,GAC9B,GAAG,CAAC,OAAO,GACX,KAAK,GACP,KAAK,CAAA;CACZ;AAED,KAAK,MAAM,GAAG;IACZ,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,kBAAkB,GAAG,KAAK,EACxD,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAA;CAC7C,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,MAwDpB,CAAA"}
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 { node } from "../globals.js";
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
- import { ref } from "../ref.js";
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,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,qBAAqB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,iBAAiB,EAAwB,MAAM,uBAAuB,CAAA;AAC/E,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AA8D/B,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"}
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 { Signalable } from "../types.js";
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=jsx.d.ts.map
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"}
@@ -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"}
@@ -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":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAIhD,MAAM,WAAW,KAAK,CAAC,KAAK,SAAS,EAAE;IACrC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,SAAS,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,KAC/D,MAAM,CAAC,CAAC,CAAC,CAAA;IACd,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,SAAS,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,CAkBtD"}
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"}
@@ -1,7 +1,7 @@
1
- import { node, setups } from "../globals.js";
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 = signal(selector(props));
35
+ const sig = computed(() => selector(props));
36
36
  propSyncs.push((p) => (sig.value = selector(p)));
37
37
  return sig;
38
38
  },
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/hooks/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC;;;;;GAKG;AACH,MAAM,UAAU,KAAK;IACnB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAQ,CAAA;IAC3B,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QACnE,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;IAC3B,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAQ,KAAK,CAAC,CAAA;IACvC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACxB,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,WAAW,CAAmB,KAAiB;IACtD,IAAI,EAAkB,CAAA;IAGtB,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAuC,CAAA;IAE9E,IAAI,SAAS,GAAG,CAAC,CAAC,CAAA;IAElB,OAAO;QACL,MAAM,CAAC,QAAQ;YACb,MAAM,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAAmB,CAAA;YACjD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;YACnC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAChD,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,IAAI,EAAE;YACJ,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;gBACjC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAA;gBACvB,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;oBAClB,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;wBAC9B,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;wBAC/B,SAAS,GAAG,KAAK,CAAC,KAAK,CAAA;oBACzB,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,EAAE,CAAA;QACX,CAAC;KACF,CAAA;AACH,CAAC"}
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,IAgBO,CAAC,CAbhB;IAED,QAAQ;IAKR,IAAI;IAMJ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAAI;IAErB,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,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;IAUzE,OAAO,CAAC,MAAM,CAAC,IAAI;IASnB,OAAO,CAAC,MAAM,CAAC,GAAG;IAwBlB,OAAO,CAAC,cAAc;CAgBvB;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"}
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"}
@@ -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
- const { $id, $unsubs } = latest(computed);
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
- const $computed = latest(computed);
71
- const { $id: id, $getter, $unsubs: subs } = $computed;
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($computed.$value),
72
+ fn: () => $getter(computed.$value),
76
73
  onDepChanged: () => {
77
- $computed.$isDirty = true;
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($computed);
87
- if (Object.is($computed.$value, $computed.$prevValue))
83
+ ComputedSignal.run(computed);
84
+ if (Object.is(computed.$value, computed.$prevValue))
88
85
  return;
89
- $computed.notify();
86
+ computed.notify();
90
87
  },
91
88
  });
92
- $computed.sneak(value);
93
- $computed.$isDirty = false;
89
+ computed.sneak(value);
90
+ computed.$isDirty = false;
94
91
  }
95
92
  ensureNotDirty() {
96
- if (!this.$isDirty)
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 (this.$isDisposed)
116
+ if (computed.$isDisposed)
109
117
  return;
110
118
  }
111
- ComputedSignal.run(this);
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":"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"}
1
+ {"version":3,"file":"computed.js","sourceRoot":"","sources":["../../src/signals/computed.ts"],"names":[],"mappings":"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"}
@@ -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;;;;KAIK;AAEL,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,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA"}
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"}
@@ -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;;;;KAIK;AAEL,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,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA"}
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"}
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiru",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "A batteries-included, easy-to-use rendering library with a tiny footprint",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -1,23 +1,22 @@
1
- import { node } from "../globals.js"
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 { ref } from "../ref.js"
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
- T extends Kiru.Signal<infer V>
17
- ? V
18
- : T extends Kiru.StatefulPromiseBase<infer P>
19
- ? P
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
- ? RecordHasPromise<T> extends true
50
- ? Mode extends "swr"
51
- ? ChildFnWithStale<UnwrapDerive<T>>
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
- ? RecordHasPromise<T> extends true
59
- ? JSX.Element
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 { Signalable } from "../types.js"
2
- import type { Signal } from "./base.js"
3
- import { unwrap } from "./utils.js"
4
-
5
- type InferArraySignalItemType<T extends Signal<any[]> | readonly unknown[]> =
6
- T extends Signal<infer V>
7
- ? V extends Array<infer W>
8
- ? W
9
- : never
10
- : T extends unknown[]
11
- ? T[number]
12
- : never
13
-
14
- type ForProps<
15
- T extends Signal<any[]> | readonly unknown[],
16
- U = InferArraySignalItemType<T>,
17
- > = {
18
- each: T
19
- fallback?: JSX.Element
20
- children: (value: U, index: number, array: U[]) => JSX.Element
21
- }
22
-
23
- export function For<T extends Signal<any[]> | unknown[]>({
24
- each,
25
- fallback,
26
- children,
27
- }: ForProps<T>) {
28
- const items = unwrap(each, true)
29
- if (items.length === 0) return fallback
30
- return items.map(children)
31
- }
32
-
33
- export interface ShowProps {
34
- children: JSX.Element
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
+ }
@@ -1,5 +1,7 @@
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"
@@ -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>> {
@@ -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
@@ -1,8 +1,8 @@
1
- import { node, setups } from "../globals.js"
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 = signal(selector(props))
51
+ const sig = computed(() => selector(props))
52
52
  propSyncs.push((p) => (sig.value = selector(p)))
53
53
  return sig
54
54
  },
@@ -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
- const { $id, $unsubs } = latest(computed)
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
- const $computed = latest(computed)
87
- const { $id: id, $getter, $unsubs: subs } = $computed
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($computed.$value),
88
+ fn: () => $getter(computed.$value),
93
89
  onDepChanged: () => {
94
- $computed.$isDirty = true
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($computed)
101
- if (Object.is($computed.$value, $computed.$prevValue)) return
102
- $computed.notify()
96
+ ComputedSignal.run(computed)
97
+ if (Object.is(computed.$value, computed.$prevValue)) return
98
+ computed.notify()
103
99
  },
104
100
  })
105
- $computed.sneak(value)
106
- $computed.$isDirty = false
101
+ computed.sneak(value)
102
+ computed.$isDirty = false
107
103
  }
108
104
 
109
105
  private ensureNotDirty() {
110
- if (!this.$isDirty) return
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 (this.$isDisposed) return
130
+ if (computed.$isDisposed) return
122
131
  }
123
- ComputedSignal.run(this)
132
+ ComputedSignal.run(computed)
124
133
  }
125
134
  }
126
135
 
@@ -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"
@@ -74,3 +74,6 @@ export type RecordHas<T extends Record<string, any>, U> = [
74
74
  ] extends [never]
75
75
  ? false
76
76
  : true
77
+
78
+ export type Falsy = false | 0 | 0n | "" | null | undefined
79
+ export type Truthy<T> = Exclude<T, Falsy>
@@ -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"}
@@ -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
@@ -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"}