@fringeworks/react-defer-rendering 0.8.1 → 0.9.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 (172) hide show
  1. package/README.ja.md +313 -319
  2. package/README.md +313 -319
  3. package/_usePromiseState.cjs +13 -20
  4. package/_usePromiseState.d.cts +5 -2
  5. package/_usePromiseState.d.mts +6 -3
  6. package/_usePromiseState.mjs +10 -16
  7. package/_virtual/_rolldown/runtime.cjs +1 -2
  8. package/constants.cjs +0 -1
  9. package/constants.d.cts +3 -4
  10. package/constants.d.mts +3 -4
  11. package/index.cjs +41 -44
  12. package/index.d.cts +15 -4
  13. package/index.d.mts +15 -4
  14. package/index.mjs +4 -7
  15. package/package.json +112 -31
  16. package/types.cjs +1 -0
  17. package/types.d.cts +5 -7
  18. package/types.d.mts +5 -7
  19. package/useDeferUntilAsyncComplete/index.cjs +4 -4
  20. package/useDeferUntilAsyncComplete/index.d.cts +1 -1
  21. package/useDeferUntilAsyncComplete/index.d.mts +1 -1
  22. package/useDeferUntilAsyncComplete/index.mjs +1 -3
  23. package/useDeferUntilAsyncComplete/types.cjs +1 -0
  24. package/useDeferUntilAsyncComplete/types.d.cts +3 -4
  25. package/useDeferUntilAsyncComplete/types.d.mts +3 -4
  26. package/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.cjs +7 -5
  27. package/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.d.cts +0 -1
  28. package/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.d.mts +2 -4
  29. package/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.mjs +2 -1
  30. package/useDeferUntilBreakpoint/index.cjs +4 -4
  31. package/useDeferUntilBreakpoint/index.d.cts +1 -1
  32. package/useDeferUntilBreakpoint/index.d.mts +1 -1
  33. package/useDeferUntilBreakpoint/index.mjs +1 -3
  34. package/useDeferUntilBreakpoint/types.cjs +1 -0
  35. package/useDeferUntilBreakpoint/types.d.cts +5 -5
  36. package/useDeferUntilBreakpoint/types.d.mts +5 -5
  37. package/useDeferUntilBreakpoint/useDeferUntilBreakpoint.cjs +29 -9
  38. package/useDeferUntilBreakpoint/useDeferUntilBreakpoint.d.cts +0 -1
  39. package/useDeferUntilBreakpoint/useDeferUntilBreakpoint.d.mts +2 -4
  40. package/useDeferUntilBreakpoint/useDeferUntilBreakpoint.mjs +25 -6
  41. package/useDeferUntilCallThreshold/index.cjs +4 -4
  42. package/useDeferUntilCallThreshold/index.d.cts +1 -1
  43. package/useDeferUntilCallThreshold/index.d.mts +1 -1
  44. package/useDeferUntilCallThreshold/index.mjs +1 -3
  45. package/useDeferUntilCallThreshold/types.cjs +1 -0
  46. package/useDeferUntilCallThreshold/types.d.cts +3 -4
  47. package/useDeferUntilCallThreshold/types.d.mts +3 -4
  48. package/useDeferUntilCallThreshold/useDeferUntilCallThreshold.cjs +32 -19
  49. package/useDeferUntilCallThreshold/useDeferUntilCallThreshold.d.cts +0 -1
  50. package/useDeferUntilCallThreshold/useDeferUntilCallThreshold.d.mts +2 -4
  51. package/useDeferUntilCallThreshold/useDeferUntilCallThreshold.mjs +27 -15
  52. package/useDeferUntilChange/index.cjs +4 -4
  53. package/useDeferUntilChange/index.d.cts +1 -1
  54. package/useDeferUntilChange/index.d.mts +1 -1
  55. package/useDeferUntilChange/index.mjs +1 -3
  56. package/useDeferUntilChange/types.cjs +1 -0
  57. package/useDeferUntilChange/types.d.cts +3 -4
  58. package/useDeferUntilChange/types.d.mts +3 -4
  59. package/useDeferUntilChange/useDeferUntilChange.cjs +6 -9
  60. package/useDeferUntilChange/useDeferUntilChange.d.cts +0 -1
  61. package/useDeferUntilChange/useDeferUntilChange.d.mts +2 -4
  62. package/useDeferUntilChange/useDeferUntilChange.mjs +2 -4
  63. package/useDeferUntilDate/index.cjs +4 -4
  64. package/useDeferUntilDate/index.d.cts +1 -1
  65. package/useDeferUntilDate/index.d.mts +1 -1
  66. package/useDeferUntilDate/index.mjs +1 -3
  67. package/useDeferUntilDate/types.cjs +1 -0
  68. package/useDeferUntilDate/types.d.cts +3 -4
  69. package/useDeferUntilDate/types.d.mts +3 -4
  70. package/useDeferUntilDate/useDeferUntilDate.cjs +13 -4
  71. package/useDeferUntilDate/useDeferUntilDate.d.cts +0 -1
  72. package/useDeferUntilDate/useDeferUntilDate.d.mts +2 -4
  73. package/useDeferUntilDate/useDeferUntilDate.mjs +10 -4
  74. package/useDeferUntilIntersected/index.cjs +4 -4
  75. package/useDeferUntilIntersected/index.d.cts +1 -1
  76. package/useDeferUntilIntersected/index.d.mts +1 -1
  77. package/useDeferUntilIntersected/index.mjs +1 -3
  78. package/useDeferUntilIntersected/types.cjs +1 -0
  79. package/useDeferUntilIntersected/types.d.cts +8 -9
  80. package/useDeferUntilIntersected/types.d.mts +8 -9
  81. package/useDeferUntilIntersected/useDeferUntilIntersected.cjs +13 -12
  82. package/useDeferUntilIntersected/useDeferUntilIntersected.d.cts +0 -1
  83. package/useDeferUntilIntersected/useDeferUntilIntersected.d.mts +2 -4
  84. package/useDeferUntilIntersected/useDeferUntilIntersected.mjs +9 -7
  85. package/useDeferUntilOnReady/index.cjs +4 -4
  86. package/useDeferUntilOnReady/index.d.cts +1 -1
  87. package/useDeferUntilOnReady/index.d.mts +1 -1
  88. package/useDeferUntilOnReady/index.mjs +1 -3
  89. package/useDeferUntilOnReady/types.cjs +1 -0
  90. package/useDeferUntilOnReady/types.d.cts +3 -4
  91. package/useDeferUntilOnReady/types.d.mts +3 -4
  92. package/useDeferUntilOnReady/useDeferUntilOnReady.cjs +28 -21
  93. package/useDeferUntilOnReady/useDeferUntilOnReady.d.cts +2 -2
  94. package/useDeferUntilOnReady/useDeferUntilOnReady.d.mts +4 -5
  95. package/useDeferUntilOnReady/useDeferUntilOnReady.mjs +23 -15
  96. package/useDeferUntilReady/index.cjs +4 -4
  97. package/useDeferUntilReady/index.d.cts +1 -1
  98. package/useDeferUntilReady/index.d.mts +1 -1
  99. package/useDeferUntilReady/index.mjs +1 -3
  100. package/useDeferUntilReady/types.cjs +1 -0
  101. package/useDeferUntilReady/types.d.cts +2 -4
  102. package/useDeferUntilReady/types.d.mts +2 -4
  103. package/useDeferUntilReady/useDeferUntilReady.cjs +20 -32
  104. package/useDeferUntilReady/useDeferUntilReady.d.cts +0 -1
  105. package/useDeferUntilReady/useDeferUntilReady.d.mts +2 -4
  106. package/useDeferUntilReady/useDeferUntilReady.mjs +18 -29
  107. package/useDeferUntilRender/index.cjs +4 -4
  108. package/useDeferUntilRender/index.d.cts +1 -1
  109. package/useDeferUntilRender/index.d.mts +1 -1
  110. package/useDeferUntilRender/index.mjs +1 -3
  111. package/useDeferUntilRender/types.cjs +1 -0
  112. package/useDeferUntilRender/types.d.cts +5 -5
  113. package/useDeferUntilRender/types.d.mts +5 -5
  114. package/useDeferUntilRender/useDeferUntilRender.cjs +31 -12
  115. package/useDeferUntilRender/useDeferUntilRender.d.cts +0 -1
  116. package/useDeferUntilRender/useDeferUntilRender.d.mts +2 -4
  117. package/useDeferUntilRender/useDeferUntilRender.mjs +26 -8
  118. package/useDeferUntilResolved/index.cjs +4 -4
  119. package/useDeferUntilResolved/index.d.cts +1 -1
  120. package/useDeferUntilResolved/index.d.mts +1 -1
  121. package/useDeferUntilResolved/index.mjs +1 -3
  122. package/useDeferUntilResolved/types.cjs +1 -0
  123. package/useDeferUntilResolved/types.d.cts +3 -4
  124. package/useDeferUntilResolved/types.d.mts +3 -4
  125. package/useDeferUntilResolved/useDeferUntilResolved.cjs +8 -5
  126. package/useDeferUntilResolved/useDeferUntilResolved.d.cts +0 -1
  127. package/useDeferUntilResolved/useDeferUntilResolved.d.mts +2 -4
  128. package/useDeferUntilResolved/useDeferUntilResolved.mjs +3 -1
  129. package/useDeferUntilTimeout/index.cjs +4 -4
  130. package/useDeferUntilTimeout/index.d.cts +1 -1
  131. package/useDeferUntilTimeout/index.d.mts +1 -1
  132. package/useDeferUntilTimeout/index.mjs +1 -3
  133. package/useDeferUntilTimeout/types.cjs +1 -0
  134. package/useDeferUntilTimeout/types.d.cts +3 -4
  135. package/useDeferUntilTimeout/types.d.mts +3 -4
  136. package/useDeferUntilTimeout/useDeferUntilTimeout.cjs +23 -21
  137. package/useDeferUntilTimeout/useDeferUntilTimeout.d.cts +0 -1
  138. package/useDeferUntilTimeout/useDeferUntilTimeout.d.mts +2 -4
  139. package/useDeferUntilTimeout/useDeferUntilTimeout.mjs +16 -14
  140. package/useDeferUntilTrue/index.cjs +4 -4
  141. package/useDeferUntilTrue/index.d.cts +1 -1
  142. package/useDeferUntilTrue/index.d.mts +1 -1
  143. package/useDeferUntilTrue/index.mjs +1 -3
  144. package/useDeferUntilTrue/types.cjs +1 -0
  145. package/useDeferUntilTrue/types.d.cts +2 -4
  146. package/useDeferUntilTrue/types.d.mts +2 -4
  147. package/useDeferUntilTrue/useDeferUntilTrue.cjs +6 -5
  148. package/useDeferUntilTrue/useDeferUntilTrue.d.cts +0 -1
  149. package/useDeferUntilTrue/useDeferUntilTrue.d.mts +2 -4
  150. package/useDeferUntilWebFontReady/index.cjs +4 -4
  151. package/useDeferUntilWebFontReady/index.d.cts +1 -1
  152. package/useDeferUntilWebFontReady/index.d.mts +1 -1
  153. package/useDeferUntilWebFontReady/index.mjs +1 -3
  154. package/useDeferUntilWebFontReady/types.cjs +1 -0
  155. package/useDeferUntilWebFontReady/types.d.cts +6 -7
  156. package/useDeferUntilWebFontReady/types.d.mts +6 -7
  157. package/useDeferUntilWebFontReady/useDeferUntilWebFontReady.cjs +23 -14
  158. package/useDeferUntilWebFontReady/useDeferUntilWebFontReady.d.cts +0 -1
  159. package/useDeferUntilWebFontReady/useDeferUntilWebFontReady.d.mts +2 -4
  160. package/useDeferUntilWebFontReady/useDeferUntilWebFontReady.mjs +16 -9
  161. package/useDeferUntilScrolled/index.cjs +0 -5
  162. package/useDeferUntilScrolled/index.d.cts +0 -3
  163. package/useDeferUntilScrolled/index.d.mts +0 -3
  164. package/useDeferUntilScrolled/index.mjs +0 -5
  165. package/useDeferUntilScrolled/types.cjs +0 -0
  166. package/useDeferUntilScrolled/types.d.cts +0 -29
  167. package/useDeferUntilScrolled/types.d.mts +0 -29
  168. package/useDeferUntilScrolled/types.mjs +0 -1
  169. package/useDeferUntilScrolled/useDeferUntilScrolled.cjs +0 -94
  170. package/useDeferUntilScrolled/useDeferUntilScrolled.d.cts +0 -14
  171. package/useDeferUntilScrolled/useDeferUntilScrolled.d.mts +0 -15
  172. package/useDeferUntilScrolled/useDeferUntilScrolled.mjs +0 -91
@@ -16,32 +16,50 @@ import debounce from "@fringeworks/utils/timer/debounce";
16
16
  function useDeferUntilRender(target, query, options = {}) {
17
17
  const defaultRootRef = useRef(null);
18
18
  const { rootRef = defaultRootRef, detectionDelay = 100, preserveOnceReady, initialCondition = false, ...opts } = options;
19
- return useDeferUntilTrue(target, useSyncExternalStore(useCallback((onStoreChange) => {
19
+ const snapshotRef = useRef(null);
20
+ const subscribe = useCallback((onStoreChange) => {
20
21
  if (!query) return () => {};
21
22
  const root = rootRef.current ?? document;
22
- if (preserveOnceReady && root.querySelector(query)) return () => {};
23
+ const update = () => {
24
+ const isRendered = root.querySelector(query) != null;
25
+ snapshotRef.current = {
26
+ query,
27
+ root,
28
+ isRendered
29
+ };
30
+ return isRendered;
31
+ };
32
+ if (update() && preserveOnceReady) return () => {};
23
33
  const handleMutation = () => {
34
+ const isRendered = update();
24
35
  onStoreChange();
25
- if (preserveOnceReady && root.querySelector(query)) observer.disconnect();
36
+ if (preserveOnceReady && isRendered) observer.disconnect();
26
37
  };
27
- const debouncedHandleMutation = debounce(handleMutation, detectionDelay);
38
+ const debouncedHandleMutation = debounce(handleMutation, { wait: detectionDelay });
28
39
  const observer = new MutationObserver(debouncedHandleMutation);
29
40
  observer.observe(root, {
30
41
  childList: true,
31
42
  subtree: true
32
43
  });
33
44
  return () => {
45
+ debouncedHandleMutation.cancel();
34
46
  observer.disconnect();
35
47
  };
36
48
  }, [
37
49
  query,
38
- rootRef.current,
50
+ rootRef,
39
51
  detectionDelay,
40
52
  preserveOnceReady
41
- ]), useCallback(() => {
53
+ ]);
54
+ const getSnapshot = useCallback(() => {
42
55
  if (!query) return true;
43
- return (rootRef.current ?? document).querySelector(query) != null;
44
- }, [query, rootRef.current]), useCallback(() => !query || initialCondition, [query, initialCondition])), {
56
+ const root = rootRef.current ?? document;
57
+ const snapshot = snapshotRef.current;
58
+ return snapshot?.query === query && snapshot.root === root ? snapshot.isRendered : root.querySelector(query) != null;
59
+ }, [query, rootRef]);
60
+ const getServerSnapshot = useCallback(() => !query || initialCondition, [query, initialCondition]);
61
+ const condition = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
62
+ return useDeferUntilTrue(target, condition, {
45
63
  preserveOnceReady,
46
64
  ...opts
47
65
  });
@@ -1,5 +1,5 @@
1
- 'use client';
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_useDeferUntilResolved_useDeferUntilResolved = require("./useDeferUntilResolved.cjs");
2
3
 
3
- const require_useDeferUntilResolved_useDeferUntilResolved = require('./useDeferUntilResolved.cjs');
4
-
5
- module.exports = require_useDeferUntilResolved_useDeferUntilResolved;
4
+ exports.default = require_useDeferUntilResolved_useDeferUntilResolved.default;
5
+ exports.useDeferUntilResolved = require_useDeferUntilResolved_useDeferUntilResolved.default;
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilResolvedOptions } from "./types.cjs";
2
2
  import useDeferUntilResolved from "./useDeferUntilResolved.cjs";
3
- export { type UseDeferUntilResolvedOptions, useDeferUntilResolved as default };
3
+ export { type UseDeferUntilResolvedOptions, useDeferUntilResolved as default, useDeferUntilResolved };
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilResolvedOptions } from "./types.mjs";
2
2
  import useDeferUntilResolved from "./useDeferUntilResolved.mjs";
3
- export { type UseDeferUntilResolvedOptions, useDeferUntilResolved as default };
3
+ export { type UseDeferUntilResolvedOptions, useDeferUntilResolved as default, useDeferUntilResolved };
@@ -1,5 +1,3 @@
1
- 'use client';
2
-
3
1
  import useDeferUntilResolved from "./useDeferUntilResolved.mjs";
4
2
 
5
- export { useDeferUntilResolved as default };
3
+ export { useDeferUntilResolved as default, useDeferUntilResolved };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -1,7 +1,6 @@
1
1
  import { UseDeferUntilReadyOptions } from "../useDeferUntilReady/types.cjs";
2
+ import "../useDeferUntilReady/index.cjs";
2
3
  import { ReactNode } from "react";
3
-
4
4
  //#region src/useDeferUntilResolved/types.d.ts
5
- type UseDeferUntilResolvedOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilReadyOptions<P, E>;
6
- //#endregion
7
- export { UseDeferUntilResolvedOptions };
5
+ export type UseDeferUntilResolvedOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilReadyOptions<P, E>;
6
+ //#endregion
@@ -1,7 +1,6 @@
1
1
  import { UseDeferUntilReadyOptions } from "../useDeferUntilReady/types.mjs";
2
+ import "../useDeferUntilReady/index.mjs";
2
3
  import { ReactNode } from "react";
3
-
4
4
  //#region src/useDeferUntilResolved/types.d.ts
5
- type UseDeferUntilResolvedOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilReadyOptions<P, E>;
6
- //#endregion
7
- export { UseDeferUntilResolvedOptions };
5
+ export type UseDeferUntilResolvedOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilReadyOptions<P, E>;
6
+ //#endregion
@@ -1,8 +1,9 @@
1
1
  'use client';
2
2
 
3
- const require__usePromiseState = require('../_usePromiseState.cjs');
4
- const require_useDeferUntilReady_useDeferUntilReady = require('../useDeferUntilReady/useDeferUntilReady.cjs');
5
- require('../useDeferUntilReady/index.cjs');
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
+ const require__usePromiseState = require("../_usePromiseState.cjs");
5
+ const require_useDeferUntilReady_useDeferUntilReady = require("../useDeferUntilReady/useDeferUntilReady.cjs");
6
+ require("../useDeferUntilReady/index.cjs");
6
7
  let react = require("react");
7
8
 
8
9
  //#region src/useDeferUntilResolved/useDeferUntilResolved.tsx
@@ -14,8 +15,10 @@ let react = require("react");
14
15
  * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
15
16
  */
16
17
  function useDeferUntilResolved(target, promise, options = {}) {
17
- return require_useDeferUntilReady_useDeferUntilReady(target, require__usePromiseState((0, react.useMemo)(() => promise ? () => promise : null, [promise])), options);
18
+ const createPromise = (0, react.useMemo)(() => promise ? () => promise : null, [promise]);
19
+ const state = require__usePromiseState.default(createPromise);
20
+ return require_useDeferUntilReady_useDeferUntilReady.default(target, state, options);
18
21
  }
19
22
 
20
23
  //#endregion
21
- module.exports = useDeferUntilResolved;
24
+ exports.default = useDeferUntilResolved;
@@ -1,7 +1,6 @@
1
1
  import { DeferRenderingResult } from "../types.cjs";
2
2
  import { UseDeferUntilResolvedOptions } from "./types.cjs";
3
3
  import { ReactNode } from "react";
4
-
5
4
  //#region src/useDeferUntilResolved/useDeferUntilResolved.d.ts
6
5
  /**
7
6
  * Promiseの完了まで描画を遅延させるhook
@@ -1,7 +1,6 @@
1
1
  import { DeferRenderingResult } from "../types.mjs";
2
2
  import { UseDeferUntilResolvedOptions } from "./types.mjs";
3
3
  import { ReactNode } from "react";
4
-
5
4
  //#region src/useDeferUntilResolved/useDeferUntilResolved.d.ts
6
5
  /**
7
6
  * Promiseの完了まで描画を遅延させるhook
@@ -10,6 +9,5 @@ import { ReactNode } from "react";
10
9
  * @param options オプション
11
10
  * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
12
11
  */
13
- declare function useDeferUntilResolved<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, promise: Promise<unknown> | null | undefined, options?: UseDeferUntilResolvedOptions<P, E>): DeferRenderingResult<T | P | E>;
14
- //#endregion
15
- export { useDeferUntilResolved as default };
12
+ export default function useDeferUntilResolved<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, promise: Promise<unknown> | null | undefined, options?: UseDeferUntilResolvedOptions<P, E>): DeferRenderingResult<T | P | E>;
13
+ //#endregion
@@ -14,7 +14,9 @@ import { useMemo } from "react";
14
14
  * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
15
15
  */
16
16
  function useDeferUntilResolved(target, promise, options = {}) {
17
- return useDeferUntilReady(target, usePromiseState(useMemo(() => promise ? () => promise : null, [promise])), options);
17
+ const createPromise = useMemo(() => promise ? () => promise : null, [promise]);
18
+ const state = usePromiseState(createPromise);
19
+ return useDeferUntilReady(target, state, options);
18
20
  }
19
21
 
20
22
  //#endregion
@@ -1,5 +1,5 @@
1
- 'use client';
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_useDeferUntilTimeout_useDeferUntilTimeout = require("./useDeferUntilTimeout.cjs");
2
3
 
3
- const require_useDeferUntilTimeout_useDeferUntilTimeout = require('./useDeferUntilTimeout.cjs');
4
-
5
- module.exports = require_useDeferUntilTimeout_useDeferUntilTimeout;
4
+ exports.default = require_useDeferUntilTimeout_useDeferUntilTimeout.default;
5
+ exports.useDeferUntilTimeout = require_useDeferUntilTimeout_useDeferUntilTimeout.default;
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilTimeoutOptions } from "./types.cjs";
2
2
  import useDeferUntilTimeout from "./useDeferUntilTimeout.cjs";
3
- export { type UseDeferUntilTimeoutOptions, useDeferUntilTimeout as default };
3
+ export { type UseDeferUntilTimeoutOptions, useDeferUntilTimeout as default, useDeferUntilTimeout };
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilTimeoutOptions } from "./types.mjs";
2
2
  import useDeferUntilTimeout from "./useDeferUntilTimeout.mjs";
3
- export { type UseDeferUntilTimeoutOptions, useDeferUntilTimeout as default };
3
+ export { type UseDeferUntilTimeoutOptions, useDeferUntilTimeout as default, useDeferUntilTimeout };
@@ -1,5 +1,3 @@
1
- 'use client';
2
-
3
1
  import useDeferUntilTimeout from "./useDeferUntilTimeout.mjs";
4
2
 
5
- export { useDeferUntilTimeout as default };
3
+ export { useDeferUntilTimeout as default, useDeferUntilTimeout };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -1,7 +1,6 @@
1
1
  import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.cjs";
2
+ import "../useDeferUntilTrue/index.cjs";
2
3
  import { ReactNode } from "react";
3
-
4
4
  //#region src/useDeferUntilTimeout/types.d.ts
5
- type UseDeferUntilTimeoutOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P>;
6
- //#endregion
7
- export { UseDeferUntilTimeoutOptions };
5
+ export type UseDeferUntilTimeoutOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P>;
6
+ //#endregion
@@ -1,7 +1,6 @@
1
1
  import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.mjs";
2
+ import "../useDeferUntilTrue/index.mjs";
2
3
  import { ReactNode } from "react";
3
-
4
4
  //#region src/useDeferUntilTimeout/types.d.ts
5
- type UseDeferUntilTimeoutOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P>;
6
- //#endregion
7
- export { UseDeferUntilTimeoutOptions };
5
+ export type UseDeferUntilTimeoutOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P>;
6
+ //#endregion
@@ -1,13 +1,12 @@
1
1
  'use client';
2
2
 
3
- const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
4
- const require_useDeferUntilTrue_useDeferUntilTrue = require('../useDeferUntilTrue/useDeferUntilTrue.cjs');
5
- require('../useDeferUntilTrue/index.cjs');
6
- let _fringeworks_react_utils_hooks_useIsMounted = require("@fringeworks/react-utils/hooks/useIsMounted");
7
- _fringeworks_react_utils_hooks_useIsMounted = require_runtime.__toESM(_fringeworks_react_utils_hooks_useIsMounted, 1);
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
+ const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
5
+ const require_useDeferUntilTrue_useDeferUntilTrue = require("../useDeferUntilTrue/useDeferUntilTrue.cjs");
6
+ require("../useDeferUntilTrue/index.cjs");
8
7
  let react = require("react");
9
- let _fringeworks_utils_timer_setTimeoutExtended = require("@fringeworks/utils/timer/setTimeoutExtended");
10
- _fringeworks_utils_timer_setTimeoutExtended = require_runtime.__toESM(_fringeworks_utils_timer_setTimeoutExtended, 1);
8
+ let _fringeworks_utils_timer_setLongTimeout = require("@fringeworks/utils/timer/setLongTimeout");
9
+ _fringeworks_utils_timer_setLongTimeout = require_runtime.__toESM(_fringeworks_utils_timer_setLongTimeout, 1);
11
10
 
12
11
  //#region src/useDeferUntilTimeout/useDeferUntilTimeout.tsx
13
12
  /**
@@ -18,23 +17,26 @@ _fringeworks_utils_timer_setTimeoutExtended = require_runtime.__toESM(_fringewor
18
17
  * @returns state('pending', 'ready')と状態に応じたノード
19
18
  */
20
19
  function useDeferUntilTimeout(target, defer, options = {}) {
21
- const [condition, setCondition] = (0, react.useState)(defer == null || defer <= 0);
22
- const isMounted = (0, _fringeworks_react_utils_hooks_useIsMounted.default)();
20
+ const [wait, setWait] = (0, react.useState)({
21
+ defer,
22
+ isElapsed: false
23
+ });
24
+ if (wait.defer !== defer) setWait({
25
+ defer,
26
+ isElapsed: false
27
+ });
23
28
  (0, react.useEffect)(() => {
24
- if (defer == null || defer <= 0) {
25
- setCondition(true);
26
- return;
27
- }
28
- setCondition(false);
29
- const cancel = (0, _fringeworks_utils_timer_setTimeoutExtended.default)(() => {
30
- if (isMounted()) setCondition(true);
29
+ if (defer == null || defer <= 0) return;
30
+ return (0, _fringeworks_utils_timer_setLongTimeout.default)(() => {
31
+ setWait((current) => current.defer === defer ? {
32
+ defer,
33
+ isElapsed: true
34
+ } : current);
31
35
  }, defer);
32
- return () => {
33
- cancel();
34
- };
35
36
  }, [defer]);
36
- return require_useDeferUntilTrue_useDeferUntilTrue(target, condition, options);
37
+ const condition = defer == null || defer <= 0 || wait.defer === defer && wait.isElapsed;
38
+ return require_useDeferUntilTrue_useDeferUntilTrue.default(target, condition, options);
37
39
  }
38
40
 
39
41
  //#endregion
40
- module.exports = useDeferUntilTimeout;
42
+ exports.default = useDeferUntilTimeout;
@@ -1,7 +1,6 @@
1
1
  import { DeferRenderingResult } from "../types.cjs";
2
2
  import { UseDeferUntilTimeoutOptions } from "./types.cjs";
3
3
  import { ReactNode } from "react";
4
-
5
4
  //#region src/useDeferUntilTimeout/useDeferUntilTimeout.d.ts
6
5
  /**
7
6
  * 指定の時間が経過するまで描画を遅延させるhook
@@ -1,7 +1,6 @@
1
1
  import { DeferRenderingResult } from "../types.mjs";
2
2
  import { UseDeferUntilTimeoutOptions } from "./types.mjs";
3
3
  import { ReactNode } from "react";
4
-
5
4
  //#region src/useDeferUntilTimeout/useDeferUntilTimeout.d.ts
6
5
  /**
7
6
  * 指定の時間が経過するまで描画を遅延させるhook
@@ -10,6 +9,5 @@ import { ReactNode } from "react";
10
9
  * @param options オプション
11
10
  * @returns state('pending', 'ready')と状態に応じたノード
12
11
  */
13
- declare function useDeferUntilTimeout<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, defer: number | null | undefined, options?: UseDeferUntilTimeoutOptions<P>): DeferRenderingResult<T | P>;
14
- //#endregion
15
- export { useDeferUntilTimeout as default };
12
+ export default function useDeferUntilTimeout<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, defer: number | null | undefined, options?: UseDeferUntilTimeoutOptions<P>): DeferRenderingResult<T | P>;
13
+ //#endregion
@@ -2,9 +2,8 @@
2
2
 
3
3
  import useDeferUntilTrue from "../useDeferUntilTrue/useDeferUntilTrue.mjs";
4
4
  import "../useDeferUntilTrue/index.mjs";
5
- import useIsMounted from "@fringeworks/react-utils/hooks/useIsMounted";
6
5
  import { useEffect, useState } from "react";
7
- import setTimeoutExtended from "@fringeworks/utils/timer/setTimeoutExtended";
6
+ import setLongTimeout from "@fringeworks/utils/timer/setLongTimeout";
8
7
 
9
8
  //#region src/useDeferUntilTimeout/useDeferUntilTimeout.tsx
10
9
  /**
@@ -15,21 +14,24 @@ import setTimeoutExtended from "@fringeworks/utils/timer/setTimeoutExtended";
15
14
  * @returns state('pending', 'ready')と状態に応じたノード
16
15
  */
17
16
  function useDeferUntilTimeout(target, defer, options = {}) {
18
- const [condition, setCondition] = useState(defer == null || defer <= 0);
19
- const isMounted = useIsMounted();
17
+ const [wait, setWait] = useState({
18
+ defer,
19
+ isElapsed: false
20
+ });
21
+ if (wait.defer !== defer) setWait({
22
+ defer,
23
+ isElapsed: false
24
+ });
20
25
  useEffect(() => {
21
- if (defer == null || defer <= 0) {
22
- setCondition(true);
23
- return;
24
- }
25
- setCondition(false);
26
- const cancel = setTimeoutExtended(() => {
27
- if (isMounted()) setCondition(true);
26
+ if (defer == null || defer <= 0) return;
27
+ return setLongTimeout(() => {
28
+ setWait((current) => current.defer === defer ? {
29
+ defer,
30
+ isElapsed: true
31
+ } : current);
28
32
  }, defer);
29
- return () => {
30
- cancel();
31
- };
32
33
  }, [defer]);
34
+ const condition = defer == null || defer <= 0 || wait.defer === defer && wait.isElapsed;
33
35
  return useDeferUntilTrue(target, condition, options);
34
36
  }
35
37
 
@@ -1,5 +1,5 @@
1
- 'use client';
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_useDeferUntilTrue_useDeferUntilTrue = require("./useDeferUntilTrue.cjs");
2
3
 
3
- const require_useDeferUntilTrue_useDeferUntilTrue = require('./useDeferUntilTrue.cjs');
4
-
5
- module.exports = require_useDeferUntilTrue_useDeferUntilTrue;
4
+ exports.default = require_useDeferUntilTrue_useDeferUntilTrue.default;
5
+ exports.useDeferUntilTrue = require_useDeferUntilTrue_useDeferUntilTrue.default;
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilTrueOptions } from "./types.cjs";
2
2
  import useDeferUntilTrue from "./useDeferUntilTrue.cjs";
3
- export { type UseDeferUntilTrueOptions, useDeferUntilTrue as default };
3
+ export { type UseDeferUntilTrueOptions, useDeferUntilTrue as default, useDeferUntilTrue };
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilTrueOptions } from "./types.mjs";
2
2
  import useDeferUntilTrue from "./useDeferUntilTrue.mjs";
3
- export { type UseDeferUntilTrueOptions, useDeferUntilTrue as default };
3
+ export { type UseDeferUntilTrueOptions, useDeferUntilTrue as default, useDeferUntilTrue };
@@ -1,5 +1,3 @@
1
- 'use client';
2
-
3
1
  import useDeferUntilTrue from "./useDeferUntilTrue.mjs";
4
2
 
5
- export { useDeferUntilTrue as default };
3
+ export { useDeferUntilTrue as default, useDeferUntilTrue };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -1,7 +1,5 @@
1
1
  import { DeferRenderingOptionsBase } from "../types.cjs";
2
2
  import { ReactNode } from "react";
3
-
4
3
  //#region src/useDeferUntilTrue/types.d.ts
5
- type UseDeferUntilTrueOptions<P extends ReactNode = ReactNode> = DeferRenderingOptionsBase<P>;
6
- //#endregion
7
- export { UseDeferUntilTrueOptions };
4
+ export type UseDeferUntilTrueOptions<P extends ReactNode = ReactNode> = DeferRenderingOptionsBase<P>;
5
+ //#endregion
@@ -1,7 +1,5 @@
1
1
  import { DeferRenderingOptionsBase } from "../types.mjs";
2
2
  import { ReactNode } from "react";
3
-
4
3
  //#region src/useDeferUntilTrue/types.d.ts
5
- type UseDeferUntilTrueOptions<P extends ReactNode = ReactNode> = DeferRenderingOptionsBase<P>;
6
- //#endregion
7
- export { UseDeferUntilTrueOptions };
4
+ export type UseDeferUntilTrueOptions<P extends ReactNode = ReactNode> = DeferRenderingOptionsBase<P>;
5
+ //#endregion
@@ -1,8 +1,9 @@
1
1
  'use client';
2
2
 
3
- const require_constants = require('../constants.cjs');
4
- const require_useDeferUntilReady_useDeferUntilReady = require('../useDeferUntilReady/useDeferUntilReady.cjs');
5
- require('../useDeferUntilReady/index.cjs');
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
+ const require_constants = require("../constants.cjs");
5
+ const require_useDeferUntilReady_useDeferUntilReady = require("../useDeferUntilReady/useDeferUntilReady.cjs");
6
+ require("../useDeferUntilReady/index.cjs");
6
7
 
7
8
  //#region src/useDeferUntilTrue/useDeferUntilTrue.tsx
8
9
  /**
@@ -13,8 +14,8 @@ require('../useDeferUntilReady/index.cjs');
13
14
  * @returns state('pending', 'ready')と状態に応じたノード
14
15
  */
15
16
  function useDeferUntilTrue(target, condition, options = {}) {
16
- return require_useDeferUntilReady_useDeferUntilReady(target, condition ? require_constants.RenderingState.ready : require_constants.RenderingState.pending, options);
17
+ return require_useDeferUntilReady_useDeferUntilReady.default(target, condition ? require_constants.RenderingState.ready : require_constants.RenderingState.pending, options);
17
18
  }
18
19
 
19
20
  //#endregion
20
- module.exports = useDeferUntilTrue;
21
+ exports.default = useDeferUntilTrue;
@@ -1,7 +1,6 @@
1
1
  import { DeferRenderingResult } from "../types.cjs";
2
2
  import { UseDeferUntilTrueOptions } from "./types.cjs";
3
3
  import { ReactNode } from "react";
4
-
5
4
  //#region src/useDeferUntilTrue/useDeferUntilTrue.d.ts
6
5
  /**
7
6
  * 条件がtrueになるまで描画を遅延させるhook
@@ -1,7 +1,6 @@
1
1
  import { DeferRenderingResult } from "../types.mjs";
2
2
  import { UseDeferUntilTrueOptions } from "./types.mjs";
3
3
  import { ReactNode } from "react";
4
-
5
4
  //#region src/useDeferUntilTrue/useDeferUntilTrue.d.ts
6
5
  /**
7
6
  * 条件がtrueになるまで描画を遅延させるhook
@@ -10,6 +9,5 @@ import { ReactNode } from "react";
10
9
  * @param options オプション
11
10
  * @returns state('pending', 'ready')と状態に応じたノード
12
11
  */
13
- declare function useDeferUntilTrue<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, condition: boolean | null | undefined, options?: UseDeferUntilTrueOptions<P>): DeferRenderingResult<T | P>;
14
- //#endregion
15
- export { useDeferUntilTrue as default };
12
+ export default function useDeferUntilTrue<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, condition: boolean | null | undefined, options?: UseDeferUntilTrueOptions<P>): DeferRenderingResult<T | P>;
13
+ //#endregion
@@ -1,5 +1,5 @@
1
- 'use client';
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_useDeferUntilWebFontReady_useDeferUntilWebFontReady = require("./useDeferUntilWebFontReady.cjs");
2
3
 
3
- const require_useDeferUntilWebFontReady_useDeferUntilWebFontReady = require('./useDeferUntilWebFontReady.cjs');
4
-
5
- module.exports = require_useDeferUntilWebFontReady_useDeferUntilWebFontReady;
4
+ exports.default = require_useDeferUntilWebFontReady_useDeferUntilWebFontReady.default;
5
+ exports.useDeferUntilWebFontReady = require_useDeferUntilWebFontReady_useDeferUntilWebFontReady.default;
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilWebFontReadyOptions, WebFont, WebFontTarget, WebFontTargets } from "./types.cjs";
2
2
  import useDeferUntilWebFontReady from "./useDeferUntilWebFontReady.cjs";
3
- export { type UseDeferUntilWebFontReadyOptions, type WebFont, type WebFontTarget, type WebFontTargets, useDeferUntilWebFontReady as default };
3
+ export { type UseDeferUntilWebFontReadyOptions, type WebFont, type WebFontTarget, type WebFontTargets, useDeferUntilWebFontReady as default, useDeferUntilWebFontReady };
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilWebFontReadyOptions, WebFont, WebFontTarget, WebFontTargets } from "./types.mjs";
2
2
  import useDeferUntilWebFontReady from "./useDeferUntilWebFontReady.mjs";
3
- export { type UseDeferUntilWebFontReadyOptions, type WebFont, type WebFontTarget, type WebFontTargets, useDeferUntilWebFontReady as default };
3
+ export { type UseDeferUntilWebFontReadyOptions, type WebFont, type WebFontTarget, type WebFontTargets, useDeferUntilWebFontReady as default, useDeferUntilWebFontReady };
@@ -1,5 +1,3 @@
1
- 'use client';
2
-
3
1
  import useDeferUntilWebFontReady from "./useDeferUntilWebFontReady.mjs";
4
2
 
5
- export { useDeferUntilWebFontReady as default };
3
+ export { useDeferUntilWebFontReady as default, useDeferUntilWebFontReady };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -1,13 +1,13 @@
1
1
  import { RenderingState } from "../constants.cjs";
2
2
  import { UseDeferUntilReadyOptions } from "../useDeferUntilReady/types.cjs";
3
+ import "../useDeferUntilReady/index.cjs";
3
4
  import { ReactNode } from "react";
4
5
  import { WebFontMatchOptions } from "@fringeworks/web-font-observer";
5
-
6
6
  //#region src/useDeferUntilWebFontReady/types.d.ts
7
7
  /**
8
8
  * 太さ等を指定して待つWebフォント
9
9
  */
10
- type WebFont = WebFontMatchOptions & {
10
+ export type WebFont = WebFontMatchOptions & {
11
11
  /**
12
12
  * フォントファミリー
13
13
  */
@@ -17,13 +17,13 @@ type WebFont = WebFontMatchOptions & {
17
17
  * 待つWebフォント\
18
18
  * フォントファミリーのみで良い場合は文字列で指定できる
19
19
  */
20
- type WebFontTarget = string | WebFont;
20
+ export type WebFontTarget = string | WebFont;
21
21
  /**
22
22
  * 待つWebフォントの指定\
23
23
  * 複数のWebフォントを待つ場合は配列で指定する。配列内のnull/undefinedは無視される
24
24
  */
25
- type WebFontTargets = WebFontTarget | readonly (WebFontTarget | null | undefined)[];
26
- type UseDeferUntilWebFontReadyOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilReadyOptions<P, E> & {
25
+ export type WebFontTargets = WebFontTarget | readonly (WebFontTarget | null | undefined)[];
26
+ export type UseDeferUntilWebFontReadyOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilReadyOptions<P, E> & {
27
27
  /**
28
28
  * Webフォントが利用可能にならなかった場合に失敗とみなすまでの時間(ミリ秒)\
29
29
  * Webフォントごとに適用されるが、すべて並行して待つため実質的に全体の待ち時間となる\
@@ -45,5 +45,4 @@ type UseDeferUntilWebFontReadyOptions<P extends ReactNode = ReactNode, E extends
45
45
  */
46
46
  initialState?: RenderingState;
47
47
  };
48
- //#endregion
49
- export { UseDeferUntilWebFontReadyOptions, WebFont, WebFontTarget, WebFontTargets };
48
+ //#endregion
@@ -1,13 +1,13 @@
1
1
  import { RenderingState } from "../constants.mjs";
2
2
  import { UseDeferUntilReadyOptions } from "../useDeferUntilReady/types.mjs";
3
+ import "../useDeferUntilReady/index.mjs";
3
4
  import { ReactNode } from "react";
4
5
  import { WebFontMatchOptions } from "@fringeworks/web-font-observer";
5
-
6
6
  //#region src/useDeferUntilWebFontReady/types.d.ts
7
7
  /**
8
8
  * 太さ等を指定して待つWebフォント
9
9
  */
10
- type WebFont = WebFontMatchOptions & {
10
+ export type WebFont = WebFontMatchOptions & {
11
11
  /**
12
12
  * フォントファミリー
13
13
  */
@@ -17,13 +17,13 @@ type WebFont = WebFontMatchOptions & {
17
17
  * 待つWebフォント\
18
18
  * フォントファミリーのみで良い場合は文字列で指定できる
19
19
  */
20
- type WebFontTarget = string | WebFont;
20
+ export type WebFontTarget = string | WebFont;
21
21
  /**
22
22
  * 待つWebフォントの指定\
23
23
  * 複数のWebフォントを待つ場合は配列で指定する。配列内のnull/undefinedは無視される
24
24
  */
25
- type WebFontTargets = WebFontTarget | readonly (WebFontTarget | null | undefined)[];
26
- type UseDeferUntilWebFontReadyOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilReadyOptions<P, E> & {
25
+ export type WebFontTargets = WebFontTarget | readonly (WebFontTarget | null | undefined)[];
26
+ export type UseDeferUntilWebFontReadyOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilReadyOptions<P, E> & {
27
27
  /**
28
28
  * Webフォントが利用可能にならなかった場合に失敗とみなすまでの時間(ミリ秒)\
29
29
  * Webフォントごとに適用されるが、すべて並行して待つため実質的に全体の待ち時間となる\
@@ -45,5 +45,4 @@ type UseDeferUntilWebFontReadyOptions<P extends ReactNode = ReactNode, E extends
45
45
  */
46
46
  initialState?: RenderingState;
47
47
  };
48
- //#endregion
49
- export { UseDeferUntilWebFontReadyOptions, WebFont, WebFontTarget, WebFontTargets };
48
+ //#endregion