@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
@@ -14,35 +14,47 @@ import { useCallback, useRef } from "react";
14
14
  function useDeferUntilCallThreshold(target, options = {}) {
15
15
  const { onPendingCount = 1, onFallbackCount = 1, onReadyCount = 1, ...opts } = options;
16
16
  const { onPending: handlePending, onFallback: handleFallback, onReady: handleReady, ...rest } = useDeferUntilOnReady(target, opts);
17
- const pendingContRef = useRef(0);
18
- const fallbackContRef = useRef(0);
19
- const readyContRef = useRef(0);
17
+ const pendingCountRef = useRef(0);
18
+ const fallbackCountRef = useRef(0);
19
+ const readyCountRef = useRef(0);
20
20
  const reset = useCallback(() => {
21
- pendingContRef.current = 0;
22
- fallbackContRef.current = 0;
23
- readyContRef.current = 0;
21
+ pendingCountRef.current = 0;
22
+ fallbackCountRef.current = 0;
23
+ readyCountRef.current = 0;
24
24
  }, []);
25
25
  const onPending = useCallback(() => {
26
- pendingContRef.current += 1;
27
- if (onPendingCount <= pendingContRef.current) {
26
+ pendingCountRef.current += 1;
27
+ if (onPendingCount <= pendingCountRef.current) {
28
28
  reset();
29
29
  handlePending();
30
30
  }
31
- }, [handlePending, onPendingCount]);
31
+ }, [
32
+ handlePending,
33
+ onPendingCount,
34
+ reset
35
+ ]);
32
36
  const onFallback = useCallback(() => {
33
- fallbackContRef.current += 1;
34
- if (onFallbackCount <= fallbackContRef.current) {
37
+ fallbackCountRef.current += 1;
38
+ if (onFallbackCount <= fallbackCountRef.current) {
35
39
  reset();
36
40
  handleFallback();
37
41
  }
38
- }, [handleFallback, onFallbackCount]);
42
+ }, [
43
+ handleFallback,
44
+ onFallbackCount,
45
+ reset
46
+ ]);
39
47
  const onReady = useCallback(() => {
40
- readyContRef.current += 1;
41
- if (onReadyCount <= readyContRef.current) {
48
+ readyCountRef.current += 1;
49
+ if (onReadyCount <= readyCountRef.current) {
42
50
  reset();
43
51
  handleReady();
44
52
  }
45
- }, [handleReady, onReadyCount]);
53
+ }, [
54
+ handleReady,
55
+ onReadyCount,
56
+ reset
57
+ ]);
46
58
  return {
47
59
  ...rest,
48
60
  onPending,
@@ -1,5 +1,5 @@
1
- 'use client';
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_useDeferUntilChange_useDeferUntilChange = require("./useDeferUntilChange.cjs");
2
3
 
3
- const require_useDeferUntilChange_useDeferUntilChange = require('./useDeferUntilChange.cjs');
4
-
5
- module.exports = require_useDeferUntilChange_useDeferUntilChange;
4
+ exports.default = require_useDeferUntilChange_useDeferUntilChange.default;
5
+ exports.useDeferUntilChange = require_useDeferUntilChange_useDeferUntilChange.default;
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilChangeOptions } from "./types.cjs";
2
2
  import useDeferUntilChange from "./useDeferUntilChange.cjs";
3
- export { type UseDeferUntilChangeOptions, useDeferUntilChange as default };
3
+ export { type UseDeferUntilChangeOptions, useDeferUntilChange as default, useDeferUntilChange };
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilChangeOptions } from "./types.mjs";
2
2
  import useDeferUntilChange from "./useDeferUntilChange.mjs";
3
- export { type UseDeferUntilChangeOptions, useDeferUntilChange as default };
3
+ export { type UseDeferUntilChangeOptions, useDeferUntilChange as default, useDeferUntilChange };
@@ -1,5 +1,3 @@
1
- 'use client';
2
-
3
1
  import useDeferUntilChange from "./useDeferUntilChange.mjs";
4
2
 
5
- export { useDeferUntilChange as default };
3
+ export { useDeferUntilChange as default, useDeferUntilChange };
@@ -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/useDeferUntilChange/types.d.ts
5
- type UseDeferUntilChangeOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P>;
6
- //#endregion
7
- export { UseDeferUntilChangeOptions };
5
+ export type UseDeferUntilChangeOptions<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/useDeferUntilChange/types.d.ts
5
- type UseDeferUntilChangeOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P>;
6
- //#endregion
7
- export { UseDeferUntilChangeOptions };
5
+ export type UseDeferUntilChangeOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P>;
6
+ //#endregion
@@ -1,10 +1,8 @@
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_useDeferUntilTrue_useDeferUntilTrue = require("../useDeferUntilTrue/useDeferUntilTrue.cjs");
5
+ require("../useDeferUntilTrue/index.cjs");
8
6
  let react = require("react");
9
7
 
10
8
  //#region src/useDeferUntilChange/useDeferUntilChange.tsx
@@ -18,13 +16,12 @@ const NO_VALUE = Symbol("NO_VALUE");
18
16
  */
19
17
  function useDeferUntilChange(target, value, options = {}) {
20
18
  const [prevValue, setPrevValue] = (0, react.useState)(NO_VALUE);
21
- const isMounted = (0, _fringeworks_react_utils_hooks_useIsMounted.default)();
22
- const result = require_useDeferUntilTrue_useDeferUntilTrue(target, prevValue === value, options);
19
+ const result = require_useDeferUntilTrue_useDeferUntilTrue.default(target, Object.is(prevValue, value), options);
23
20
  (0, react.useEffect)(() => {
24
- if (isMounted()) setPrevValue(value);
21
+ setPrevValue(value);
25
22
  }, [value]);
26
23
  return result;
27
24
  }
28
25
 
29
26
  //#endregion
30
- module.exports = useDeferUntilChange;
27
+ exports.default = useDeferUntilChange;
@@ -1,7 +1,6 @@
1
1
  import { DeferRenderingResult } from "../types.cjs";
2
2
  import { UseDeferUntilChangeOptions } from "./types.cjs";
3
3
  import { ReactNode } from "react";
4
-
5
4
  //#region src/useDeferUntilChange/useDeferUntilChange.d.ts
6
5
  /**
7
6
  * 値が変更されるまで描画を遅延させるhook
@@ -1,7 +1,6 @@
1
1
  import { DeferRenderingResult } from "../types.mjs";
2
2
  import { UseDeferUntilChangeOptions } from "./types.mjs";
3
3
  import { ReactNode } from "react";
4
-
5
4
  //#region src/useDeferUntilChange/useDeferUntilChange.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 useDeferUntilChange<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, value: unknown, options?: UseDeferUntilChangeOptions<P>): DeferRenderingResult<T | P>;
14
- //#endregion
15
- export { useDeferUntilChange as default };
12
+ export default function useDeferUntilChange<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, value: unknown, options?: UseDeferUntilChangeOptions<P>): DeferRenderingResult<T | P>;
13
+ //#endregion
@@ -2,7 +2,6 @@
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
6
 
8
7
  //#region src/useDeferUntilChange/useDeferUntilChange.tsx
@@ -16,10 +15,9 @@ const NO_VALUE = Symbol("NO_VALUE");
16
15
  */
17
16
  function useDeferUntilChange(target, value, options = {}) {
18
17
  const [prevValue, setPrevValue] = useState(NO_VALUE);
19
- const isMounted = useIsMounted();
20
- const result = useDeferUntilTrue(target, prevValue === value, options);
18
+ const result = useDeferUntilTrue(target, Object.is(prevValue, value), options);
21
19
  useEffect(() => {
22
- if (isMounted()) setPrevValue(value);
20
+ setPrevValue(value);
23
21
  }, [value]);
24
22
  return result;
25
23
  }
@@ -1,5 +1,5 @@
1
- 'use client';
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_useDeferUntilDate_useDeferUntilDate = require("./useDeferUntilDate.cjs");
2
3
 
3
- const require_useDeferUntilDate_useDeferUntilDate = require('./useDeferUntilDate.cjs');
4
-
5
- module.exports = require_useDeferUntilDate_useDeferUntilDate;
4
+ exports.default = require_useDeferUntilDate_useDeferUntilDate.default;
5
+ exports.useDeferUntilDate = require_useDeferUntilDate_useDeferUntilDate.default;
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilDateOptions } from "./types.cjs";
2
2
  import useDeferUntilDate from "./useDeferUntilDate.cjs";
3
- export { type UseDeferUntilDateOptions, useDeferUntilDate as default };
3
+ export { type UseDeferUntilDateOptions, useDeferUntilDate as default, useDeferUntilDate };
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilDateOptions } from "./types.mjs";
2
2
  import useDeferUntilDate from "./useDeferUntilDate.mjs";
3
- export { type UseDeferUntilDateOptions, useDeferUntilDate as default };
3
+ export { type UseDeferUntilDateOptions, useDeferUntilDate as default, useDeferUntilDate };
@@ -1,5 +1,3 @@
1
- 'use client';
2
-
3
1
  import useDeferUntilDate from "./useDeferUntilDate.mjs";
4
2
 
5
- export { useDeferUntilDate as default };
3
+ export { useDeferUntilDate as default, useDeferUntilDate };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -1,7 +1,6 @@
1
1
  import { UseDeferUntilTimeoutOptions } from "../useDeferUntilTimeout/types.cjs";
2
+ import "../useDeferUntilTimeout/index.cjs";
2
3
  import { ReactNode } from "react";
3
-
4
4
  //#region src/useDeferUntilDate/types.d.ts
5
- type UseDeferUntilDateOptions<P extends ReactNode = ReactNode> = UseDeferUntilTimeoutOptions<P>;
6
- //#endregion
7
- export { UseDeferUntilDateOptions };
5
+ export type UseDeferUntilDateOptions<P extends ReactNode = ReactNode> = UseDeferUntilTimeoutOptions<P>;
6
+ //#endregion
@@ -1,7 +1,6 @@
1
1
  import { UseDeferUntilTimeoutOptions } from "../useDeferUntilTimeout/types.mjs";
2
+ import "../useDeferUntilTimeout/index.mjs";
2
3
  import { ReactNode } from "react";
3
-
4
4
  //#region src/useDeferUntilDate/types.d.ts
5
- type UseDeferUntilDateOptions<P extends ReactNode = ReactNode> = UseDeferUntilTimeoutOptions<P>;
6
- //#endregion
7
- export { UseDeferUntilDateOptions };
5
+ export type UseDeferUntilDateOptions<P extends ReactNode = ReactNode> = UseDeferUntilTimeoutOptions<P>;
6
+ //#endregion
@@ -1,8 +1,12 @@
1
1
  'use client';
2
2
 
3
- const require_useDeferUntilTimeout_useDeferUntilTimeout = require('../useDeferUntilTimeout/useDeferUntilTimeout.cjs');
4
- require('../useDeferUntilTimeout/index.cjs');
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");
5
7
  let react = require("react");
8
+ let _fringeworks_utils_timer_setLongTimeout = require("@fringeworks/utils/timer/setLongTimeout");
9
+ _fringeworks_utils_timer_setLongTimeout = require_runtime.__toESM(_fringeworks_utils_timer_setLongTimeout, 1);
6
10
 
7
11
  //#region src/useDeferUntilDate/useDeferUntilDate.tsx
8
12
  /**
@@ -14,8 +18,13 @@ let react = require("react");
14
18
  */
15
19
  function useDeferUntilDate(target, date, options = {}) {
16
20
  const time = date ? date.getTime() : null;
17
- return require_useDeferUntilTimeout_useDeferUntilTimeout(target, (0, react.useMemo)(() => time != null ? time - Date.now() : null, [time]), options);
21
+ const [reachedTime, setReachedTime] = (0, react.useState)(() => time != null && time <= Date.now() ? time : null);
22
+ (0, react.useEffect)(() => {
23
+ if (time == null) return;
24
+ return (0, _fringeworks_utils_timer_setLongTimeout.default)(() => setReachedTime(time), Math.max(0, time - Date.now()));
25
+ }, [time]);
26
+ return require_useDeferUntilTrue_useDeferUntilTrue.default(target, time == null || reachedTime === time, options);
18
27
  }
19
28
 
20
29
  //#endregion
21
- module.exports = useDeferUntilDate;
30
+ exports.default = useDeferUntilDate;
@@ -1,7 +1,6 @@
1
1
  import { DeferRenderingResult } from "../types.cjs";
2
2
  import { UseDeferUntilDateOptions } from "./types.cjs";
3
3
  import { ReactNode } from "react";
4
-
5
4
  //#region src/useDeferUntilDate/useDeferUntilDate.d.ts
6
5
  /**
7
6
  * 指定の日時まで描画を遅延させるhook
@@ -1,7 +1,6 @@
1
1
  import { DeferRenderingResult } from "../types.mjs";
2
2
  import { UseDeferUntilDateOptions } from "./types.mjs";
3
3
  import { ReactNode } from "react";
4
-
5
4
  //#region src/useDeferUntilDate/useDeferUntilDate.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 useDeferUntilDate<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, date: Date | null | undefined, options?: UseDeferUntilDateOptions<P>): DeferRenderingResult<T | P>;
14
- //#endregion
15
- export { useDeferUntilDate as default };
12
+ export default function useDeferUntilDate<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, date: Date | null | undefined, options?: UseDeferUntilDateOptions<P>): DeferRenderingResult<T | P>;
13
+ //#endregion
@@ -1,8 +1,9 @@
1
1
  'use client';
2
2
 
3
- import useDeferUntilTimeout from "../useDeferUntilTimeout/useDeferUntilTimeout.mjs";
4
- import "../useDeferUntilTimeout/index.mjs";
5
- import { useMemo } from "react";
3
+ import useDeferUntilTrue from "../useDeferUntilTrue/useDeferUntilTrue.mjs";
4
+ import "../useDeferUntilTrue/index.mjs";
5
+ import { useEffect, useState } from "react";
6
+ import setLongTimeout from "@fringeworks/utils/timer/setLongTimeout";
6
7
 
7
8
  //#region src/useDeferUntilDate/useDeferUntilDate.tsx
8
9
  /**
@@ -14,7 +15,12 @@ import { useMemo } from "react";
14
15
  */
15
16
  function useDeferUntilDate(target, date, options = {}) {
16
17
  const time = date ? date.getTime() : null;
17
- return useDeferUntilTimeout(target, useMemo(() => time != null ? time - Date.now() : null, [time]), options);
18
+ const [reachedTime, setReachedTime] = useState(() => time != null && time <= Date.now() ? time : null);
19
+ useEffect(() => {
20
+ if (time == null) return;
21
+ return setLongTimeout(() => setReachedTime(time), Math.max(0, time - Date.now()));
22
+ }, [time]);
23
+ return useDeferUntilTrue(target, time == null || reachedTime === time, options);
18
24
  }
19
25
 
20
26
  //#endregion
@@ -1,5 +1,5 @@
1
- 'use client';
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_useDeferUntilIntersected_useDeferUntilIntersected = require("./useDeferUntilIntersected.cjs");
2
3
 
3
- const require_useDeferUntilIntersected_useDeferUntilIntersected = require('./useDeferUntilIntersected.cjs');
4
-
5
- module.exports = require_useDeferUntilIntersected_useDeferUntilIntersected;
4
+ exports.default = require_useDeferUntilIntersected_useDeferUntilIntersected.default;
5
+ exports.useDeferUntilIntersected = require_useDeferUntilIntersected_useDeferUntilIntersected.default;
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilIntersectedOptions } from "./types.cjs";
2
2
  import useDeferUntilIntersected from "./useDeferUntilIntersected.cjs";
3
- export { type UseDeferUntilIntersectedOptions, useDeferUntilIntersected as default };
3
+ export { type UseDeferUntilIntersectedOptions, useDeferUntilIntersected as default, useDeferUntilIntersected };
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilIntersectedOptions } from "./types.mjs";
2
2
  import useDeferUntilIntersected from "./useDeferUntilIntersected.mjs";
3
- export { type UseDeferUntilIntersectedOptions, useDeferUntilIntersected as default };
3
+ export { type UseDeferUntilIntersectedOptions, useDeferUntilIntersected as default, useDeferUntilIntersected };
@@ -1,5 +1,3 @@
1
- 'use client';
2
-
3
1
  import useDeferUntilIntersected from "./useDeferUntilIntersected.mjs";
4
2
 
5
- export { useDeferUntilIntersected as default };
3
+ export { useDeferUntilIntersected as default, useDeferUntilIntersected };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -1,19 +1,19 @@
1
1
  import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.cjs";
2
- import { CSSProperties, ReactNode, RefObject } from "react";
3
-
2
+ import "../useDeferUntilTrue/index.cjs";
3
+ import { ReactNode, RefObject } from "react";
4
4
  //#region src/useDeferUntilIntersected/types.d.ts
5
- type UseDeferUntilIntersectedOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & IntersectionObserverInit & {
5
+ export type UseDeferUntilIntersectedOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & {
6
6
  /**
7
7
  * 監視するコンテナーの参照
8
8
  * デフォルトはnull(ビューポート)
9
9
  */
10
10
  rootRef?: RefObject<Element | null | undefined>;
11
11
  /**
12
- * ビューポートとの交差判定をする基準になるマージン\
13
- * CSSのmarginと同じ形式で指定\
14
- * 未指定の場合はビューポートの端で判定される
12
+ * 交差を判定する範囲を広げる余白\
13
+ * 数値はピクセル(上下左右に同じ値)、文字列はIntersectionObserverのrootMarginの書式(例: `'10px 0px'`、`'10%'`。単位は`px`と`%`のみ)\
14
+ * 未指定の場合はビューポート(rootRefを指定した場合はコンテナー)の端で判定される
15
15
  */
16
- rootMargin?: CSSProperties['margin'];
16
+ rootMargin?: number | string;
17
17
  /**
18
18
  * ビューポートに基準となる要素がどの程度の割合入ったら描画するか(0~1)\
19
19
  * デフォルトは0.1(10%)
@@ -27,5 +27,4 @@ type UseDeferUntilIntersectedOptions<P extends ReactNode = ReactNode> = UseDefer
27
27
  */
28
28
  initialCondition?: boolean;
29
29
  };
30
- //#endregion
31
- export { UseDeferUntilIntersectedOptions };
30
+ //#endregion
@@ -1,19 +1,19 @@
1
1
  import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.mjs";
2
- import { CSSProperties, ReactNode, RefObject } from "react";
3
-
2
+ import "../useDeferUntilTrue/index.mjs";
3
+ import { ReactNode, RefObject } from "react";
4
4
  //#region src/useDeferUntilIntersected/types.d.ts
5
- type UseDeferUntilIntersectedOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & IntersectionObserverInit & {
5
+ export type UseDeferUntilIntersectedOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & {
6
6
  /**
7
7
  * 監視するコンテナーの参照
8
8
  * デフォルトはnull(ビューポート)
9
9
  */
10
10
  rootRef?: RefObject<Element | null | undefined>;
11
11
  /**
12
- * ビューポートとの交差判定をする基準になるマージン\
13
- * CSSのmarginと同じ形式で指定\
14
- * 未指定の場合はビューポートの端で判定される
12
+ * 交差を判定する範囲を広げる余白\
13
+ * 数値はピクセル(上下左右に同じ値)、文字列はIntersectionObserverのrootMarginの書式(例: `'10px 0px'`、`'10%'`。単位は`px`と`%`のみ)\
14
+ * 未指定の場合はビューポート(rootRefを指定した場合はコンテナー)の端で判定される
15
15
  */
16
- rootMargin?: CSSProperties['margin'];
16
+ rootMargin?: number | string;
17
17
  /**
18
18
  * ビューポートに基準となる要素がどの程度の割合入ったら描画するか(0~1)\
19
19
  * デフォルトは0.1(10%)
@@ -27,5 +27,4 @@ type UseDeferUntilIntersectedOptions<P extends ReactNode = ReactNode> = UseDefer
27
27
  */
28
28
  initialCondition?: boolean;
29
29
  };
30
- //#endregion
31
- export { UseDeferUntilIntersectedOptions };
30
+ //#endregion
@@ -1,11 +1,9 @@
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');
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
+ const require_useDeferUntilTrue_useDeferUntilTrue = require("../useDeferUntilTrue/useDeferUntilTrue.cjs");
5
+ require("../useDeferUntilTrue/index.cjs");
6
6
  let react = require("react");
7
- let _fringeworks_utils_string_unit = require("@fringeworks/utils/string/unit");
8
- _fringeworks_utils_string_unit = require_runtime.__toESM(_fringeworks_utils_string_unit, 1);
9
7
 
10
8
  //#region src/useDeferUntilIntersected/useDeferUntilIntersected.tsx
11
9
  /**
@@ -20,9 +18,8 @@ function useDeferUntilIntersected(target, elementRef, options = {}) {
20
18
  const { rootRef = defaultRootRef, rootMargin, threshold = .1, initialCondition = false, ...opts } = options;
21
19
  const snapshotRef = (0, react.useRef)(initialCondition);
22
20
  const observedElementRef = (0, react.useRef)(null);
23
- return require_useDeferUntilTrue_useDeferUntilTrue(target, (0, react.useSyncExternalStore)((0, react.useCallback)((onStoreChange) => {
21
+ const subscribe = (0, react.useCallback)((onStoreChange) => {
24
22
  const element = elementRef?.current;
25
- const container = rootRef.current;
26
23
  if (observedElementRef.current !== element) {
27
24
  observedElementRef.current = element;
28
25
  if (snapshotRef.current !== initialCondition) {
@@ -31,6 +28,7 @@ function useDeferUntilIntersected(target, elementRef, options = {}) {
31
28
  }
32
29
  }
33
30
  if (!element) return () => {};
31
+ const container = rootRef.current;
34
32
  const observer = new IntersectionObserver((entries) => {
35
33
  const entry = entries[0];
36
34
  if (entry && snapshotRef.current !== entry.isIntersecting) {
@@ -39,7 +37,7 @@ function useDeferUntilIntersected(target, elementRef, options = {}) {
39
37
  }
40
38
  }, {
41
39
  root: container,
42
- rootMargin: (0, _fringeworks_utils_string_unit.default)(rootMargin),
40
+ rootMargin: typeof rootMargin === "number" ? `${rootMargin}px` : rootMargin,
43
41
  threshold
44
42
  });
45
43
  observer.observe(element);
@@ -48,13 +46,16 @@ function useDeferUntilIntersected(target, elementRef, options = {}) {
48
46
  };
49
47
  }, [
50
48
  elementRef,
51
- elementRef?.current,
52
- rootRef.current,
49
+ rootRef,
53
50
  threshold,
54
51
  rootMargin,
55
52
  initialCondition
56
- ]), (0, react.useCallback)(() => !elementRef || snapshotRef.current, [elementRef]), (0, react.useCallback)(() => !elementRef || initialCondition, [elementRef, initialCondition])), opts);
53
+ ]);
54
+ const getSnapshot = (0, react.useCallback)(() => !elementRef || snapshotRef.current, [elementRef]);
55
+ const getServerSnapshot = (0, react.useCallback)(() => !elementRef || initialCondition, [elementRef, initialCondition]);
56
+ const condition = (0, react.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
57
+ return require_useDeferUntilTrue_useDeferUntilTrue.default(target, condition, opts);
57
58
  }
58
59
 
59
60
  //#endregion
60
- module.exports = useDeferUntilIntersected;
61
+ exports.default = useDeferUntilIntersected;
@@ -1,7 +1,6 @@
1
1
  import { DeferRenderingResult } from "../types.cjs";
2
2
  import { UseDeferUntilIntersectedOptions } from "./types.cjs";
3
3
  import { ReactNode, RefObject } from "react";
4
-
5
4
  //#region src/useDeferUntilIntersected/useDeferUntilIntersected.d.ts
6
5
  /**
7
6
  * 基準となる要素がビューポートに入るまで描画を遅延させるhook
@@ -1,7 +1,6 @@
1
1
  import { DeferRenderingResult } from "../types.mjs";
2
2
  import { UseDeferUntilIntersectedOptions } from "./types.mjs";
3
3
  import { ReactNode, RefObject } from "react";
4
-
5
4
  //#region src/useDeferUntilIntersected/useDeferUntilIntersected.d.ts
6
5
  /**
7
6
  * 基準となる要素がビューポートに入るまで描画を遅延させるhook
@@ -10,6 +9,5 @@ import { ReactNode, RefObject } from "react";
10
9
  * @param options オプション
11
10
  * @returns state('pending', 'ready')と状態に応じたノード
12
11
  */
13
- declare function useDeferUntilIntersected<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, elementRef: RefObject<HTMLElement | null | undefined> | null | undefined, options?: UseDeferUntilIntersectedOptions<P>): DeferRenderingResult<T | P>;
14
- //#endregion
15
- export { useDeferUntilIntersected as default };
12
+ export default function useDeferUntilIntersected<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, elementRef: RefObject<HTMLElement | null | undefined> | null | undefined, options?: UseDeferUntilIntersectedOptions<P>): DeferRenderingResult<T | P>;
13
+ //#endregion
@@ -3,7 +3,6 @@
3
3
  import useDeferUntilTrue from "../useDeferUntilTrue/useDeferUntilTrue.mjs";
4
4
  import "../useDeferUntilTrue/index.mjs";
5
5
  import { useCallback, useRef, useSyncExternalStore } from "react";
6
- import unit from "@fringeworks/utils/string/unit";
7
6
 
8
7
  //#region src/useDeferUntilIntersected/useDeferUntilIntersected.tsx
9
8
  /**
@@ -18,9 +17,8 @@ function useDeferUntilIntersected(target, elementRef, options = {}) {
18
17
  const { rootRef = defaultRootRef, rootMargin, threshold = .1, initialCondition = false, ...opts } = options;
19
18
  const snapshotRef = useRef(initialCondition);
20
19
  const observedElementRef = useRef(null);
21
- return useDeferUntilTrue(target, useSyncExternalStore(useCallback((onStoreChange) => {
20
+ const subscribe = useCallback((onStoreChange) => {
22
21
  const element = elementRef?.current;
23
- const container = rootRef.current;
24
22
  if (observedElementRef.current !== element) {
25
23
  observedElementRef.current = element;
26
24
  if (snapshotRef.current !== initialCondition) {
@@ -29,6 +27,7 @@ function useDeferUntilIntersected(target, elementRef, options = {}) {
29
27
  }
30
28
  }
31
29
  if (!element) return () => {};
30
+ const container = rootRef.current;
32
31
  const observer = new IntersectionObserver((entries) => {
33
32
  const entry = entries[0];
34
33
  if (entry && snapshotRef.current !== entry.isIntersecting) {
@@ -37,7 +36,7 @@ function useDeferUntilIntersected(target, elementRef, options = {}) {
37
36
  }
38
37
  }, {
39
38
  root: container,
40
- rootMargin: unit(rootMargin),
39
+ rootMargin: typeof rootMargin === "number" ? `${rootMargin}px` : rootMargin,
41
40
  threshold
42
41
  });
43
42
  observer.observe(element);
@@ -46,12 +45,15 @@ function useDeferUntilIntersected(target, elementRef, options = {}) {
46
45
  };
47
46
  }, [
48
47
  elementRef,
49
- elementRef?.current,
50
- rootRef.current,
48
+ rootRef,
51
49
  threshold,
52
50
  rootMargin,
53
51
  initialCondition
54
- ]), useCallback(() => !elementRef || snapshotRef.current, [elementRef]), useCallback(() => !elementRef || initialCondition, [elementRef, initialCondition])), opts);
52
+ ]);
53
+ const getSnapshot = useCallback(() => !elementRef || snapshotRef.current, [elementRef]);
54
+ const getServerSnapshot = useCallback(() => !elementRef || initialCondition, [elementRef, initialCondition]);
55
+ const condition = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
56
+ return useDeferUntilTrue(target, condition, opts);
55
57
  }
56
58
 
57
59
  //#endregion
@@ -1,5 +1,5 @@
1
- 'use client';
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_useDeferUntilOnReady_useDeferUntilOnReady = require("./useDeferUntilOnReady.cjs");
2
3
 
3
- const require_useDeferUntilOnReady_useDeferUntilOnReady = require('./useDeferUntilOnReady.cjs');
4
-
5
- module.exports = require_useDeferUntilOnReady_useDeferUntilOnReady;
4
+ exports.default = require_useDeferUntilOnReady_useDeferUntilOnReady.default;
5
+ exports.useDeferUntilOnReady = require_useDeferUntilOnReady_useDeferUntilOnReady.default;
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilOnReadyOptions } from "./types.cjs";
2
2
  import useDeferUntilOnReady from "./useDeferUntilOnReady.cjs";
3
- export { type UseDeferUntilOnReadyOptions, useDeferUntilOnReady as default };
3
+ export { type UseDeferUntilOnReadyOptions, useDeferUntilOnReady as default, useDeferUntilOnReady };
@@ -1,3 +1,3 @@
1
1
  import { UseDeferUntilOnReadyOptions } from "./types.mjs";
2
2
  import useDeferUntilOnReady from "./useDeferUntilOnReady.mjs";
3
- export { type UseDeferUntilOnReadyOptions, useDeferUntilOnReady as default };
3
+ export { type UseDeferUntilOnReadyOptions, useDeferUntilOnReady as default, useDeferUntilOnReady };
@@ -1,5 +1,3 @@
1
- 'use client';
2
-
3
1
  import useDeferUntilOnReady from "./useDeferUntilOnReady.mjs";
4
2
 
5
- export { useDeferUntilOnReady as default };
3
+ export { useDeferUntilOnReady as default, useDeferUntilOnReady };