@fringeworks/react-utils 0.9.2 → 0.11.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 (105) hide show
  1. package/README.ja.md +191 -11
  2. package/README.md +204 -24
  3. package/{_helpers → _internal}/_traverseChildren.cjs +1 -1
  4. package/{_helpers → _internal}/_traverseChildren.d.cts +1 -1
  5. package/{_helpers → _internal}/_traverseChildren.d.mts +1 -1
  6. package/{_helpers → _internal}/_traverseChildren.mjs +1 -1
  7. package/_internal/_useChangeHandler.cjs +48 -0
  8. package/_internal/_useChangeHandler.d.cts +18 -0
  9. package/_internal/_useChangeHandler.d.mts +18 -0
  10. package/_internal/_useChangeHandler.mjs +47 -0
  11. package/_internal/_useExecutionHandler.cjs +38 -0
  12. package/_internal/_useExecutionHandler.d.cts +20 -0
  13. package/_internal/_useExecutionHandler.d.mts +20 -0
  14. package/_internal/_useExecutionHandler.mjs +37 -0
  15. package/hooks/index.cjs +26 -2
  16. package/hooks/index.d.cts +13 -3
  17. package/hooks/index.d.mts +13 -3
  18. package/hooks/index.mjs +19 -3
  19. package/hooks/useChangeEffect/index.cjs +5 -0
  20. package/hooks/useChangeEffect/index.d.cts +3 -0
  21. package/hooks/useChangeEffect/index.d.mts +3 -0
  22. package/hooks/useChangeEffect/index.mjs +3 -0
  23. package/hooks/useChangeEffect/types.cjs +1 -0
  24. package/hooks/useChangeEffect/types.d.cts +11 -0
  25. package/hooks/useChangeEffect/types.d.mts +11 -0
  26. package/hooks/useChangeEffect/types.mjs +1 -0
  27. package/hooks/useChangeEffect/useChangeEffect.cjs +37 -0
  28. package/hooks/useChangeEffect/useChangeEffect.d.cts +27 -0
  29. package/hooks/useChangeEffect/useChangeEffect.d.mts +27 -0
  30. package/hooks/useChangeEffect/useChangeEffect.mjs +36 -0
  31. package/hooks/useChangeLayoutEffect/index.cjs +5 -0
  32. package/hooks/useChangeLayoutEffect/index.d.cts +2 -0
  33. package/hooks/useChangeLayoutEffect/index.d.mts +2 -0
  34. package/hooks/useChangeLayoutEffect/index.mjs +3 -0
  35. package/hooks/useChangeLayoutEffect/useChangeLayoutEffect.cjs +24 -0
  36. package/hooks/useChangeLayoutEffect/useChangeLayoutEffect.d.cts +14 -0
  37. package/hooks/useChangeLayoutEffect/useChangeLayoutEffect.d.mts +14 -0
  38. package/hooks/useChangeLayoutEffect/useChangeLayoutEffect.mjs +23 -0
  39. package/hooks/useExecutionEffect/index.cjs +5 -0
  40. package/hooks/useExecutionEffect/index.d.cts +2 -0
  41. package/hooks/useExecutionEffect/index.d.mts +2 -0
  42. package/hooks/useExecutionEffect/index.mjs +3 -0
  43. package/hooks/useExecutionEffect/useExecutionEffect.cjs +39 -0
  44. package/hooks/useExecutionEffect/useExecutionEffect.d.cts +30 -0
  45. package/hooks/useExecutionEffect/useExecutionEffect.d.mts +30 -0
  46. package/hooks/useExecutionEffect/useExecutionEffect.mjs +38 -0
  47. package/hooks/useExecutionLayoutEffect/index.cjs +5 -0
  48. package/hooks/useExecutionLayoutEffect/index.d.cts +2 -0
  49. package/hooks/useExecutionLayoutEffect/index.d.mts +2 -0
  50. package/hooks/useExecutionLayoutEffect/index.mjs +3 -0
  51. package/hooks/useExecutionLayoutEffect/useExecutionLayoutEffect.cjs +24 -0
  52. package/hooks/useExecutionLayoutEffect/useExecutionLayoutEffect.d.cts +15 -0
  53. package/hooks/useExecutionLayoutEffect/useExecutionLayoutEffect.d.mts +15 -0
  54. package/hooks/useExecutionLayoutEffect/useExecutionLayoutEffect.mjs +23 -0
  55. package/hooks/useExecutionMark/index.cjs +5 -0
  56. package/hooks/useExecutionMark/index.d.cts +3 -0
  57. package/hooks/useExecutionMark/index.d.mts +3 -0
  58. package/hooks/useExecutionMark/index.mjs +3 -0
  59. package/hooks/useExecutionMark/types.cjs +1 -0
  60. package/hooks/useExecutionMark/types.d.cts +15 -0
  61. package/hooks/useExecutionMark/types.d.mts +15 -0
  62. package/hooks/useExecutionMark/types.mjs +1 -0
  63. package/hooks/useExecutionMark/useExecutionMark.cjs +29 -0
  64. package/hooks/useExecutionMark/useExecutionMark.d.cts +19 -0
  65. package/hooks/useExecutionMark/useExecutionMark.d.mts +19 -0
  66. package/hooks/useExecutionMark/useExecutionMark.mjs +28 -0
  67. package/hooks/useIsHydrated/index.cjs +5 -0
  68. package/hooks/useIsHydrated/index.d.cts +2 -0
  69. package/hooks/useIsHydrated/index.d.mts +2 -0
  70. package/hooks/useIsHydrated/index.mjs +3 -0
  71. package/hooks/useIsHydrated/useIsHydrated.cjs +28 -0
  72. package/hooks/useIsHydrated/useIsHydrated.d.cts +15 -0
  73. package/hooks/useIsHydrated/useIsHydrated.d.mts +15 -0
  74. package/hooks/useIsHydrated/useIsHydrated.mjs +27 -0
  75. package/hooks/useRerender/index.cjs +5 -0
  76. package/hooks/useRerender/index.d.cts +2 -0
  77. package/hooks/useRerender/index.d.mts +2 -0
  78. package/hooks/useRerender/index.mjs +3 -0
  79. package/hooks/useRerender/useRerender.cjs +19 -0
  80. package/hooks/useRerender/useRerender.d.cts +11 -0
  81. package/hooks/useRerender/useRerender.d.mts +11 -0
  82. package/hooks/useRerender/useRerender.mjs +18 -0
  83. package/hooks/useStableCallback/index.cjs +5 -0
  84. package/hooks/useStableCallback/index.d.cts +2 -0
  85. package/hooks/useStableCallback/index.d.mts +2 -0
  86. package/hooks/useStableCallback/index.mjs +3 -0
  87. package/hooks/useStableCallback/useStableCallback.cjs +25 -0
  88. package/hooks/useStableCallback/useStableCallback.d.cts +15 -0
  89. package/hooks/useStableCallback/useStableCallback.d.mts +15 -0
  90. package/hooks/useStableCallback/useStableCallback.mjs +24 -0
  91. package/index.cjs +17 -1
  92. package/index.d.cts +13 -3
  93. package/index.d.mts +13 -3
  94. package/index.mjs +10 -2
  95. package/package.json +81 -1
  96. package/utils/forEachContent/forEachContent.cjs +2 -2
  97. package/utils/forEachContent/forEachContent.mjs +1 -1
  98. package/utils/forEachElement/forEachElement.cjs +2 -2
  99. package/utils/forEachElement/forEachElement.mjs +1 -1
  100. package/utils/markAt/types.d.cts +3 -0
  101. package/utils/markAt/types.d.mts +3 -0
  102. package/utils/transformContent/transformContent.cjs +2 -2
  103. package/utils/transformContent/transformContent.mjs +1 -1
  104. package/utils/transformElement/transformElement.cjs +2 -2
  105. package/utils/transformElement/transformElement.mjs +1 -1
@@ -0,0 +1,2 @@
1
+ import useExecutionEffect from "./useExecutionEffect.cjs";
2
+ export { useExecutionEffect as default, useExecutionEffect };
@@ -0,0 +1,2 @@
1
+ import useExecutionEffect from "./useExecutionEffect.mjs";
2
+ export { useExecutionEffect as default, useExecutionEffect };
@@ -0,0 +1,3 @@
1
+ import useExecutionEffect from "./useExecutionEffect.mjs";
2
+
3
+ export { useExecutionEffect as default, useExecutionEffect };
@@ -0,0 +1,39 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require__internal__useExecutionHandler = require("../../_internal/_useExecutionHandler.cjs");
3
+ let react = require("react");
4
+
5
+ //#region src/hooks/useExecutionEffect/useExecutionEffect.ts
6
+ /**
7
+ * Execution Request プロパティ(xxxAt)を受け取り、要求があったときに処理を実行するフック
8
+ *
9
+ * `useExecutionAt`・`useExecutionMark` と対になる、受け取る側のフック。
10
+ * 命令的なコンポーネントをラップした React のコンポーネントで、プロパティを通じてメソッドを実行する。
11
+ * 処理は画面に表示した後(`useEffect`)に実行する。表示する前に実行する場合は `useExecutionLayoutEffect` を使う。
12
+ *
13
+ * - 印(`at`、または ExecutionMark の値)が変わったときだけ実行する(`payload` は比べない)
14
+ * - マウントしたときに渡されていた要求は実行しない(マウントしたときの印を基準にする)
15
+ * - 印が `0`(まだ要求していない)や undefined の場合は実行しない
16
+ * - ExecutionMark を受け取った場合、コールバックの payload は undefined
17
+ * - 次のレンダリングまでに複数回要求した場合は、最後の要求だけを実行する
18
+ * - コールバックは最新のものを呼ぶ。参照が変わっても実行しない
19
+ *
20
+ * @param request 受け取った Execution Request(`useExecutionAt` の値、または payload の無い ExecutionMark)。undefined の場合は要求なし
21
+ * @param callback 要求があったときに実行する処理。要求の payload を受け取る
22
+ * @example
23
+ * // 呼び出す側
24
+ * const [undoAt, undo] = useExecutionAt<string>();
25
+ * <WrappedImperativeComponent undoAt={undoAt} />
26
+ * // 受け取る側(WrappedImperativeComponent の中)
27
+ * useExecutionEffect(props.undoAt, (payload) => {
28
+ * instance.undo(payload);
29
+ * });
30
+ */
31
+ function useExecutionEffect(request, callback) {
32
+ const handle = require__internal__useExecutionHandler.default(request, callback);
33
+ (0, react.useEffect)(() => {
34
+ handle();
35
+ }, [handle]);
36
+ }
37
+
38
+ //#endregion
39
+ exports.default = useExecutionEffect;
@@ -0,0 +1,30 @@
1
+ import { ExecutionRequest } from "../useExecutionAt/types.cjs";
2
+ import { ExecutionMark } from "../useExecutionMark/types.cjs";
3
+ //#region src/hooks/useExecutionEffect/useExecutionEffect.d.ts
4
+ /**
5
+ * Execution Request プロパティ(xxxAt)を受け取り、要求があったときに処理を実行するフック
6
+ *
7
+ * `useExecutionAt`・`useExecutionMark` と対になる、受け取る側のフック。
8
+ * 命令的なコンポーネントをラップした React のコンポーネントで、プロパティを通じてメソッドを実行する。
9
+ * 処理は画面に表示した後(`useEffect`)に実行する。表示する前に実行する場合は `useExecutionLayoutEffect` を使う。
10
+ *
11
+ * - 印(`at`、または ExecutionMark の値)が変わったときだけ実行する(`payload` は比べない)
12
+ * - マウントしたときに渡されていた要求は実行しない(マウントしたときの印を基準にする)
13
+ * - 印が `0`(まだ要求していない)や undefined の場合は実行しない
14
+ * - ExecutionMark を受け取った場合、コールバックの payload は undefined
15
+ * - 次のレンダリングまでに複数回要求した場合は、最後の要求だけを実行する
16
+ * - コールバックは最新のものを呼ぶ。参照が変わっても実行しない
17
+ *
18
+ * @param request 受け取った Execution Request(`useExecutionAt` の値、または payload の無い ExecutionMark)。undefined の場合は要求なし
19
+ * @param callback 要求があったときに実行する処理。要求の payload を受け取る
20
+ * @example
21
+ * // 呼び出す側
22
+ * const [undoAt, undo] = useExecutionAt<string>();
23
+ * <WrappedImperativeComponent undoAt={undoAt} />
24
+ * // 受け取る側(WrappedImperativeComponent の中)
25
+ * useExecutionEffect(props.undoAt, (payload) => {
26
+ * instance.undo(payload);
27
+ * });
28
+ */
29
+ declare function useExecutionEffect<P = void>(request: ExecutionRequest<P> | ExecutionMark | undefined, callback: (payload: P | undefined) => void): void;
30
+ export = useExecutionEffect;
@@ -0,0 +1,30 @@
1
+ import { ExecutionRequest } from "../useExecutionAt/types.mjs";
2
+ import { ExecutionMark } from "../useExecutionMark/types.mjs";
3
+ //#region src/hooks/useExecutionEffect/useExecutionEffect.d.ts
4
+ /**
5
+ * Execution Request プロパティ(xxxAt)を受け取り、要求があったときに処理を実行するフック
6
+ *
7
+ * `useExecutionAt`・`useExecutionMark` と対になる、受け取る側のフック。
8
+ * 命令的なコンポーネントをラップした React のコンポーネントで、プロパティを通じてメソッドを実行する。
9
+ * 処理は画面に表示した後(`useEffect`)に実行する。表示する前に実行する場合は `useExecutionLayoutEffect` を使う。
10
+ *
11
+ * - 印(`at`、または ExecutionMark の値)が変わったときだけ実行する(`payload` は比べない)
12
+ * - マウントしたときに渡されていた要求は実行しない(マウントしたときの印を基準にする)
13
+ * - 印が `0`(まだ要求していない)や undefined の場合は実行しない
14
+ * - ExecutionMark を受け取った場合、コールバックの payload は undefined
15
+ * - 次のレンダリングまでに複数回要求した場合は、最後の要求だけを実行する
16
+ * - コールバックは最新のものを呼ぶ。参照が変わっても実行しない
17
+ *
18
+ * @param request 受け取った Execution Request(`useExecutionAt` の値、または payload の無い ExecutionMark)。undefined の場合は要求なし
19
+ * @param callback 要求があったときに実行する処理。要求の payload を受け取る
20
+ * @example
21
+ * // 呼び出す側
22
+ * const [undoAt, undo] = useExecutionAt<string>();
23
+ * <WrappedImperativeComponent undoAt={undoAt} />
24
+ * // 受け取る側(WrappedImperativeComponent の中)
25
+ * useExecutionEffect(props.undoAt, (payload) => {
26
+ * instance.undo(payload);
27
+ * });
28
+ */
29
+ export default function useExecutionEffect<P = void>(request: ExecutionRequest<P> | ExecutionMark | undefined, callback: (payload: P | undefined) => void): void;
30
+ //#endregion
@@ -0,0 +1,38 @@
1
+ import useExecutionHandler from "../../_internal/_useExecutionHandler.mjs";
2
+ import { useEffect } from "react";
3
+
4
+ //#region src/hooks/useExecutionEffect/useExecutionEffect.ts
5
+ /**
6
+ * Execution Request プロパティ(xxxAt)を受け取り、要求があったときに処理を実行するフック
7
+ *
8
+ * `useExecutionAt`・`useExecutionMark` と対になる、受け取る側のフック。
9
+ * 命令的なコンポーネントをラップした React のコンポーネントで、プロパティを通じてメソッドを実行する。
10
+ * 処理は画面に表示した後(`useEffect`)に実行する。表示する前に実行する場合は `useExecutionLayoutEffect` を使う。
11
+ *
12
+ * - 印(`at`、または ExecutionMark の値)が変わったときだけ実行する(`payload` は比べない)
13
+ * - マウントしたときに渡されていた要求は実行しない(マウントしたときの印を基準にする)
14
+ * - 印が `0`(まだ要求していない)や undefined の場合は実行しない
15
+ * - ExecutionMark を受け取った場合、コールバックの payload は undefined
16
+ * - 次のレンダリングまでに複数回要求した場合は、最後の要求だけを実行する
17
+ * - コールバックは最新のものを呼ぶ。参照が変わっても実行しない
18
+ *
19
+ * @param request 受け取った Execution Request(`useExecutionAt` の値、または payload の無い ExecutionMark)。undefined の場合は要求なし
20
+ * @param callback 要求があったときに実行する処理。要求の payload を受け取る
21
+ * @example
22
+ * // 呼び出す側
23
+ * const [undoAt, undo] = useExecutionAt<string>();
24
+ * <WrappedImperativeComponent undoAt={undoAt} />
25
+ * // 受け取る側(WrappedImperativeComponent の中)
26
+ * useExecutionEffect(props.undoAt, (payload) => {
27
+ * instance.undo(payload);
28
+ * });
29
+ */
30
+ function useExecutionEffect(request, callback) {
31
+ const handle = useExecutionHandler(request, callback);
32
+ useEffect(() => {
33
+ handle();
34
+ }, [handle]);
35
+ }
36
+
37
+ //#endregion
38
+ export { useExecutionEffect as default };
@@ -0,0 +1,5 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_hooks_useExecutionLayoutEffect_useExecutionLayoutEffect = require("./useExecutionLayoutEffect.cjs");
3
+
4
+ exports.default = require_hooks_useExecutionLayoutEffect_useExecutionLayoutEffect.default;
5
+ exports.useExecutionLayoutEffect = require_hooks_useExecutionLayoutEffect_useExecutionLayoutEffect.default;
@@ -0,0 +1,2 @@
1
+ import useExecutionLayoutEffect from "./useExecutionLayoutEffect.cjs";
2
+ export { useExecutionLayoutEffect as default, useExecutionLayoutEffect };
@@ -0,0 +1,2 @@
1
+ import useExecutionLayoutEffect from "./useExecutionLayoutEffect.mjs";
2
+ export { useExecutionLayoutEffect as default, useExecutionLayoutEffect };
@@ -0,0 +1,3 @@
1
+ import useExecutionLayoutEffect from "./useExecutionLayoutEffect.mjs";
2
+
3
+ export { useExecutionLayoutEffect as default, useExecutionLayoutEffect };
@@ -0,0 +1,24 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require__internal__useExecutionHandler = require("../../_internal/_useExecutionHandler.cjs");
3
+ let react = require("react");
4
+
5
+ //#region src/hooks/useExecutionLayoutEffect/useExecutionLayoutEffect.ts
6
+ /**
7
+ * Execution Request プロパティ(xxxAt)を受け取り、要求があったときに画面に表示する前に処理を実行するフック
8
+ *
9
+ * `useExecutionEffect` の、処理を `useLayoutEffect` で実行する版。
10
+ * スクロールの位置を合わせる、計測し直すなど、結果を画面に表示する前に反映したい処理に使う。
11
+ * 要求の扱いは `useExecutionEffect` と同じ。
12
+ *
13
+ * @param request 受け取った Execution Request(`useExecutionAt` の値、または payload の無い ExecutionMark)。undefined の場合は要求なし
14
+ * @param callback 要求があったときに実行する処理。要求の payload を受け取る
15
+ */
16
+ function useExecutionLayoutEffect(request, callback) {
17
+ const handle = require__internal__useExecutionHandler.default(request, callback);
18
+ (0, react.useLayoutEffect)(() => {
19
+ handle();
20
+ }, [handle]);
21
+ }
22
+
23
+ //#endregion
24
+ exports.default = useExecutionLayoutEffect;
@@ -0,0 +1,15 @@
1
+ import { ExecutionRequest } from "../useExecutionAt/types.cjs";
2
+ import { ExecutionMark } from "../useExecutionMark/types.cjs";
3
+ //#region src/hooks/useExecutionLayoutEffect/useExecutionLayoutEffect.d.ts
4
+ /**
5
+ * Execution Request プロパティ(xxxAt)を受け取り、要求があったときに画面に表示する前に処理を実行するフック
6
+ *
7
+ * `useExecutionEffect` の、処理を `useLayoutEffect` で実行する版。
8
+ * スクロールの位置を合わせる、計測し直すなど、結果を画面に表示する前に反映したい処理に使う。
9
+ * 要求の扱いは `useExecutionEffect` と同じ。
10
+ *
11
+ * @param request 受け取った Execution Request(`useExecutionAt` の値、または payload の無い ExecutionMark)。undefined の場合は要求なし
12
+ * @param callback 要求があったときに実行する処理。要求の payload を受け取る
13
+ */
14
+ declare function useExecutionLayoutEffect<P = void>(request: ExecutionRequest<P> | ExecutionMark | undefined, callback: (payload: P | undefined) => void): void;
15
+ export = useExecutionLayoutEffect;
@@ -0,0 +1,15 @@
1
+ import { ExecutionRequest } from "../useExecutionAt/types.mjs";
2
+ import { ExecutionMark } from "../useExecutionMark/types.mjs";
3
+ //#region src/hooks/useExecutionLayoutEffect/useExecutionLayoutEffect.d.ts
4
+ /**
5
+ * Execution Request プロパティ(xxxAt)を受け取り、要求があったときに画面に表示する前に処理を実行するフック
6
+ *
7
+ * `useExecutionEffect` の、処理を `useLayoutEffect` で実行する版。
8
+ * スクロールの位置を合わせる、計測し直すなど、結果を画面に表示する前に反映したい処理に使う。
9
+ * 要求の扱いは `useExecutionEffect` と同じ。
10
+ *
11
+ * @param request 受け取った Execution Request(`useExecutionAt` の値、または payload の無い ExecutionMark)。undefined の場合は要求なし
12
+ * @param callback 要求があったときに実行する処理。要求の payload を受け取る
13
+ */
14
+ export default function useExecutionLayoutEffect<P = void>(request: ExecutionRequest<P> | ExecutionMark | undefined, callback: (payload: P | undefined) => void): void;
15
+ //#endregion
@@ -0,0 +1,23 @@
1
+ import useExecutionHandler from "../../_internal/_useExecutionHandler.mjs";
2
+ import { useLayoutEffect } from "react";
3
+
4
+ //#region src/hooks/useExecutionLayoutEffect/useExecutionLayoutEffect.ts
5
+ /**
6
+ * Execution Request プロパティ(xxxAt)を受け取り、要求があったときに画面に表示する前に処理を実行するフック
7
+ *
8
+ * `useExecutionEffect` の、処理を `useLayoutEffect` で実行する版。
9
+ * スクロールの位置を合わせる、計測し直すなど、結果を画面に表示する前に反映したい処理に使う。
10
+ * 要求の扱いは `useExecutionEffect` と同じ。
11
+ *
12
+ * @param request 受け取った Execution Request(`useExecutionAt` の値、または payload の無い ExecutionMark)。undefined の場合は要求なし
13
+ * @param callback 要求があったときに実行する処理。要求の payload を受け取る
14
+ */
15
+ function useExecutionLayoutEffect(request, callback) {
16
+ const handle = useExecutionHandler(request, callback);
17
+ useLayoutEffect(() => {
18
+ handle();
19
+ }, [handle]);
20
+ }
21
+
22
+ //#endregion
23
+ export { useExecutionLayoutEffect as default };
@@ -0,0 +1,5 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_hooks_useExecutionMark_useExecutionMark = require("./useExecutionMark.cjs");
3
+
4
+ exports.default = require_hooks_useExecutionMark_useExecutionMark.default;
5
+ exports.useExecutionMark = require_hooks_useExecutionMark_useExecutionMark.default;
@@ -0,0 +1,3 @@
1
+ import { ExecutionMark, UseExecutionMarkResult } from "./types.cjs";
2
+ import useExecutionMark from "./useExecutionMark.cjs";
3
+ export { type ExecutionMark, type UseExecutionMarkResult, useExecutionMark as default, useExecutionMark };
@@ -0,0 +1,3 @@
1
+ import { ExecutionMark, UseExecutionMarkResult } from "./types.mjs";
2
+ import useExecutionMark from "./useExecutionMark.mjs";
3
+ export { type ExecutionMark, type UseExecutionMarkResult, useExecutionMark as default, useExecutionMark };
@@ -0,0 +1,3 @@
1
+ import useExecutionMark from "./useExecutionMark.mjs";
2
+
3
+ export { useExecutionMark as default, useExecutionMark };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -0,0 +1,15 @@
1
+ //#region src/hooks/useExecutionMark/types.d.ts
2
+ /**
3
+ * payload の無い Execution Request(実行の印)
4
+ *
5
+ * 実体は数値。Execution Request プロパティ(xxxAt)に渡し、値が変わるたびに1回の要求とみなす。
6
+ * **要求のたびに、前回と異なる値にすること**(同じ値を続けて渡しても、2回目は要求とみなさない)。
7
+ * `markAt()` で作ると、呼ぶたびに異なる値になる。`useExecutionMark` を使うと、`markAt()` で作った値と、要求する関数を受け取れる。
8
+ * `0` は「まだ要求していない」を表し、実行しない。
9
+ */
10
+ export type ExecutionMark = number;
11
+ /**
12
+ * useExecutionMark の戻り値
13
+ */
14
+ export type UseExecutionMarkResult = readonly [mark: ExecutionMark, execute: () => void];
15
+ //#endregion
@@ -0,0 +1,15 @@
1
+ //#region src/hooks/useExecutionMark/types.d.ts
2
+ /**
3
+ * payload の無い Execution Request(実行の印)
4
+ *
5
+ * 実体は数値。Execution Request プロパティ(xxxAt)に渡し、値が変わるたびに1回の要求とみなす。
6
+ * **要求のたびに、前回と異なる値にすること**(同じ値を続けて渡しても、2回目は要求とみなさない)。
7
+ * `markAt()` で作ると、呼ぶたびに異なる値になる。`useExecutionMark` を使うと、`markAt()` で作った値と、要求する関数を受け取れる。
8
+ * `0` は「まだ要求していない」を表し、実行しない。
9
+ */
10
+ export type ExecutionMark = number;
11
+ /**
12
+ * useExecutionMark の戻り値
13
+ */
14
+ export type UseExecutionMarkResult = readonly [mark: ExecutionMark, execute: () => void];
15
+ //#endregion
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,29 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_utils_markAt_markAt = require("../../utils/markAt/markAt.cjs");
3
+ let react = require("react");
4
+
5
+ //#region src/hooks/useExecutionMark/useExecutionMark.ts
6
+ /**
7
+ * payload の無い Execution Request(実行の印)と、要求する関数を返すフック
8
+ *
9
+ * `useExecutionAt` の payload を持たない版。命令的なコンポーネントの `focus()`・`reset()` のような、
10
+ * 引数の要らないメソッドを、プロパティを通じて実行する場合に使う。
11
+ *
12
+ * - 印は初期状態では `0`(まだ要求していない)で、`execute` を呼ぶたびに `markAt()` で作った新しい値になる
13
+ * - `execute` の参照は常に同じ
14
+ *
15
+ * @returns [mark, execute]
16
+ * @example
17
+ * const [focusAt, focus] = useExecutionMark();
18
+ * <button onClick={focus}>Focus</button>
19
+ * <WrappedImperativeComponent focusAt={focusAt} />
20
+ */
21
+ function useExecutionMark() {
22
+ const [mark, setMark] = (0, react.useState)(0);
23
+ return [mark, (0, react.useCallback)(() => {
24
+ setMark(require_utils_markAt_markAt.default());
25
+ }, [])];
26
+ }
27
+
28
+ //#endregion
29
+ exports.default = useExecutionMark;
@@ -0,0 +1,19 @@
1
+ import { UseExecutionMarkResult } from "./types.cjs";
2
+ //#region src/hooks/useExecutionMark/useExecutionMark.d.ts
3
+ /**
4
+ * payload の無い Execution Request(実行の印)と、要求する関数を返すフック
5
+ *
6
+ * `useExecutionAt` の payload を持たない版。命令的なコンポーネントの `focus()`・`reset()` のような、
7
+ * 引数の要らないメソッドを、プロパティを通じて実行する場合に使う。
8
+ *
9
+ * - 印は初期状態では `0`(まだ要求していない)で、`execute` を呼ぶたびに `markAt()` で作った新しい値になる
10
+ * - `execute` の参照は常に同じ
11
+ *
12
+ * @returns [mark, execute]
13
+ * @example
14
+ * const [focusAt, focus] = useExecutionMark();
15
+ * <button onClick={focus}>Focus</button>
16
+ * <WrappedImperativeComponent focusAt={focusAt} />
17
+ */
18
+ declare function useExecutionMark(): UseExecutionMarkResult;
19
+ export = useExecutionMark;
@@ -0,0 +1,19 @@
1
+ import { UseExecutionMarkResult } from "./types.mjs";
2
+ //#region src/hooks/useExecutionMark/useExecutionMark.d.ts
3
+ /**
4
+ * payload の無い Execution Request(実行の印)と、要求する関数を返すフック
5
+ *
6
+ * `useExecutionAt` の payload を持たない版。命令的なコンポーネントの `focus()`・`reset()` のような、
7
+ * 引数の要らないメソッドを、プロパティを通じて実行する場合に使う。
8
+ *
9
+ * - 印は初期状態では `0`(まだ要求していない)で、`execute` を呼ぶたびに `markAt()` で作った新しい値になる
10
+ * - `execute` の参照は常に同じ
11
+ *
12
+ * @returns [mark, execute]
13
+ * @example
14
+ * const [focusAt, focus] = useExecutionMark();
15
+ * <button onClick={focus}>Focus</button>
16
+ * <WrappedImperativeComponent focusAt={focusAt} />
17
+ */
18
+ export default function useExecutionMark(): UseExecutionMarkResult;
19
+ //#endregion
@@ -0,0 +1,28 @@
1
+ import markAt from "../../utils/markAt/markAt.mjs";
2
+ import { useCallback, useState } from "react";
3
+
4
+ //#region src/hooks/useExecutionMark/useExecutionMark.ts
5
+ /**
6
+ * payload の無い Execution Request(実行の印)と、要求する関数を返すフック
7
+ *
8
+ * `useExecutionAt` の payload を持たない版。命令的なコンポーネントの `focus()`・`reset()` のような、
9
+ * 引数の要らないメソッドを、プロパティを通じて実行する場合に使う。
10
+ *
11
+ * - 印は初期状態では `0`(まだ要求していない)で、`execute` を呼ぶたびに `markAt()` で作った新しい値になる
12
+ * - `execute` の参照は常に同じ
13
+ *
14
+ * @returns [mark, execute]
15
+ * @example
16
+ * const [focusAt, focus] = useExecutionMark();
17
+ * <button onClick={focus}>Focus</button>
18
+ * <WrappedImperativeComponent focusAt={focusAt} />
19
+ */
20
+ function useExecutionMark() {
21
+ const [mark, setMark] = useState(0);
22
+ return [mark, useCallback(() => {
23
+ setMark(markAt());
24
+ }, [])];
25
+ }
26
+
27
+ //#endregion
28
+ export { useExecutionMark as default };
@@ -0,0 +1,5 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_hooks_useIsHydrated_useIsHydrated = require("./useIsHydrated.cjs");
3
+
4
+ exports.default = require_hooks_useIsHydrated_useIsHydrated.default;
5
+ exports.useIsHydrated = require_hooks_useIsHydrated_useIsHydrated.default;
@@ -0,0 +1,2 @@
1
+ import useIsHydrated from "./useIsHydrated.cjs";
2
+ export { useIsHydrated as default, useIsHydrated };
@@ -0,0 +1,2 @@
1
+ import useIsHydrated from "./useIsHydrated.mjs";
2
+ export { useIsHydrated as default, useIsHydrated };
@@ -0,0 +1,3 @@
1
+ import useIsHydrated from "./useIsHydrated.mjs";
2
+
3
+ export { useIsHydrated as default, useIsHydrated };
@@ -0,0 +1,28 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ let react = require("react");
3
+
4
+ //#region src/hooks/useIsHydrated/useIsHydrated.ts
5
+ /**
6
+ * 購読しない(値が変わることは無い)
7
+ */
8
+ const subscribe = () => () => {};
9
+ const getSnapshot = () => true;
10
+ const getServerSnapshot = () => false;
11
+ /**
12
+ * ハイドレーションが終わっているかを返すフック
13
+ *
14
+ * - サーバーの描画とハイドレーション中は false、その後は true を返す
15
+ * - ハイドレーションの後にマウントしたコンポーネントや、クライアントだけで描画した場合は、最初から true を返す
16
+ *
17
+ * クライアントにしか無い値(`window`・`localStorage`・画面の幅など)を、ハイドレーションの不一致を起こさずに描画するために使う。
18
+ * `typeof window` による判定と違い、クライアントでもハイドレーション中は false になる。
19
+ * `useSyncExternalStore` の、サーバーとハイドレーション中は `getServerSnapshot` の値を使う性質を利用している。
20
+ *
21
+ * @returns ハイドレーションが終わっている場合は true
22
+ */
23
+ function useIsHydrated() {
24
+ return (0, react.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
25
+ }
26
+
27
+ //#endregion
28
+ exports.default = useIsHydrated;
@@ -0,0 +1,15 @@
1
+ //#region src/hooks/useIsHydrated/useIsHydrated.d.ts
2
+ /**
3
+ * ハイドレーションが終わっているかを返すフック
4
+ *
5
+ * - サーバーの描画とハイドレーション中は false、その後は true を返す
6
+ * - ハイドレーションの後にマウントしたコンポーネントや、クライアントだけで描画した場合は、最初から true を返す
7
+ *
8
+ * クライアントにしか無い値(`window`・`localStorage`・画面の幅など)を、ハイドレーションの不一致を起こさずに描画するために使う。
9
+ * `typeof window` による判定と違い、クライアントでもハイドレーション中は false になる。
10
+ * `useSyncExternalStore` の、サーバーとハイドレーション中は `getServerSnapshot` の値を使う性質を利用している。
11
+ *
12
+ * @returns ハイドレーションが終わっている場合は true
13
+ */
14
+ declare function useIsHydrated(): boolean;
15
+ export = useIsHydrated;
@@ -0,0 +1,15 @@
1
+ //#region src/hooks/useIsHydrated/useIsHydrated.d.ts
2
+ /**
3
+ * ハイドレーションが終わっているかを返すフック
4
+ *
5
+ * - サーバーの描画とハイドレーション中は false、その後は true を返す
6
+ * - ハイドレーションの後にマウントしたコンポーネントや、クライアントだけで描画した場合は、最初から true を返す
7
+ *
8
+ * クライアントにしか無い値(`window`・`localStorage`・画面の幅など)を、ハイドレーションの不一致を起こさずに描画するために使う。
9
+ * `typeof window` による判定と違い、クライアントでもハイドレーション中は false になる。
10
+ * `useSyncExternalStore` の、サーバーとハイドレーション中は `getServerSnapshot` の値を使う性質を利用している。
11
+ *
12
+ * @returns ハイドレーションが終わっている場合は true
13
+ */
14
+ export default function useIsHydrated(): boolean;
15
+ //#endregion
@@ -0,0 +1,27 @@
1
+ import { useSyncExternalStore } from "react";
2
+
3
+ //#region src/hooks/useIsHydrated/useIsHydrated.ts
4
+ /**
5
+ * 購読しない(値が変わることは無い)
6
+ */
7
+ const subscribe = () => () => {};
8
+ const getSnapshot = () => true;
9
+ const getServerSnapshot = () => false;
10
+ /**
11
+ * ハイドレーションが終わっているかを返すフック
12
+ *
13
+ * - サーバーの描画とハイドレーション中は false、その後は true を返す
14
+ * - ハイドレーションの後にマウントしたコンポーネントや、クライアントだけで描画した場合は、最初から true を返す
15
+ *
16
+ * クライアントにしか無い値(`window`・`localStorage`・画面の幅など)を、ハイドレーションの不一致を起こさずに描画するために使う。
17
+ * `typeof window` による判定と違い、クライアントでもハイドレーション中は false になる。
18
+ * `useSyncExternalStore` の、サーバーとハイドレーション中は `getServerSnapshot` の値を使う性質を利用している。
19
+ *
20
+ * @returns ハイドレーションが終わっている場合は true
21
+ */
22
+ function useIsHydrated() {
23
+ return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
24
+ }
25
+
26
+ //#endregion
27
+ export { useIsHydrated as default };
@@ -0,0 +1,5 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_hooks_useRerender_useRerender = require("./useRerender.cjs");
3
+
4
+ exports.default = require_hooks_useRerender_useRerender.default;
5
+ exports.useRerender = require_hooks_useRerender_useRerender.default;
@@ -0,0 +1,2 @@
1
+ import useRerender from "./useRerender.cjs";
2
+ export { useRerender as default, useRerender };
@@ -0,0 +1,2 @@
1
+ import useRerender from "./useRerender.mjs";
2
+ export { useRerender as default, useRerender };
@@ -0,0 +1,3 @@
1
+ import useRerender from "./useRerender.mjs";
2
+
3
+ export { useRerender as default, useRerender };
@@ -0,0 +1,19 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ let react = require("react");
3
+
4
+ //#region src/hooks/useRerender/useRerender.ts
5
+ /**
6
+ * 再レンダリングだけを起こす関数を返すフック
7
+ *
8
+ * 値を持たずに描画し直したい場合(外部の状態を読み直して表示するときなど)に使う。
9
+ * `useReducer` のカウンターを進めることで、再レンダリングを要求する。
10
+ *
11
+ * @returns 呼ぶと再レンダリングを要求する関数。参照は常に同じ
12
+ */
13
+ function useRerender() {
14
+ const [, rerender] = (0, react.useReducer)((count) => count + 1, 0);
15
+ return rerender;
16
+ }
17
+
18
+ //#endregion
19
+ exports.default = useRerender;
@@ -0,0 +1,11 @@
1
+ //#region src/hooks/useRerender/useRerender.d.ts
2
+ /**
3
+ * 再レンダリングだけを起こす関数を返すフック
4
+ *
5
+ * 値を持たずに描画し直したい場合(外部の状態を読み直して表示するときなど)に使う。
6
+ * `useReducer` のカウンターを進めることで、再レンダリングを要求する。
7
+ *
8
+ * @returns 呼ぶと再レンダリングを要求する関数。参照は常に同じ
9
+ */
10
+ declare function useRerender(): () => void;
11
+ export = useRerender;
@@ -0,0 +1,11 @@
1
+ //#region src/hooks/useRerender/useRerender.d.ts
2
+ /**
3
+ * 再レンダリングだけを起こす関数を返すフック
4
+ *
5
+ * 値を持たずに描画し直したい場合(外部の状態を読み直して表示するときなど)に使う。
6
+ * `useReducer` のカウンターを進めることで、再レンダリングを要求する。
7
+ *
8
+ * @returns 呼ぶと再レンダリングを要求する関数。参照は常に同じ
9
+ */
10
+ export default function useRerender(): () => void;
11
+ //#endregion
@@ -0,0 +1,18 @@
1
+ import { useReducer } from "react";
2
+
3
+ //#region src/hooks/useRerender/useRerender.ts
4
+ /**
5
+ * 再レンダリングだけを起こす関数を返すフック
6
+ *
7
+ * 値を持たずに描画し直したい場合(外部の状態を読み直して表示するときなど)に使う。
8
+ * `useReducer` のカウンターを進めることで、再レンダリングを要求する。
9
+ *
10
+ * @returns 呼ぶと再レンダリングを要求する関数。参照は常に同じ
11
+ */
12
+ function useRerender() {
13
+ const [, rerender] = useReducer((count) => count + 1, 0);
14
+ return rerender;
15
+ }
16
+
17
+ //#endregion
18
+ export { useRerender as default };
@@ -0,0 +1,5 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_hooks_useStableCallback_useStableCallback = require("./useStableCallback.cjs");
3
+
4
+ exports.default = require_hooks_useStableCallback_useStableCallback.default;
5
+ exports.useStableCallback = require_hooks_useStableCallback_useStableCallback.default;