@fringeworks/react-defer-rendering 0.8.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 (189) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +319 -0
  3. package/README.md +319 -0
  4. package/_usePromiseState.cjs +42 -0
  5. package/_usePromiseState.d.cts +11 -0
  6. package/_usePromiseState.d.mts +12 -0
  7. package/_usePromiseState.mjs +40 -0
  8. package/_virtual/_rolldown/runtime.cjs +29 -0
  9. package/constants.cjs +14 -0
  10. package/constants.d.cts +15 -0
  11. package/constants.d.mts +15 -0
  12. package/constants.mjs +12 -0
  13. package/index.cjs +46 -0
  14. package/index.d.cts +31 -0
  15. package/index.d.mts +31 -0
  16. package/index.mjs +32 -0
  17. package/package.json +91 -0
  18. package/types.cjs +0 -0
  19. package/types.d.cts +82 -0
  20. package/types.d.mts +82 -0
  21. package/types.mjs +1 -0
  22. package/useDeferUntilAsyncComplete/index.cjs +5 -0
  23. package/useDeferUntilAsyncComplete/index.d.cts +3 -0
  24. package/useDeferUntilAsyncComplete/index.d.mts +3 -0
  25. package/useDeferUntilAsyncComplete/index.mjs +5 -0
  26. package/useDeferUntilAsyncComplete/types.cjs +0 -0
  27. package/useDeferUntilAsyncComplete/types.d.cts +7 -0
  28. package/useDeferUntilAsyncComplete/types.d.mts +7 -0
  29. package/useDeferUntilAsyncComplete/types.mjs +1 -0
  30. package/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.cjs +20 -0
  31. package/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.d.cts +14 -0
  32. package/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.d.mts +15 -0
  33. package/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.mjs +20 -0
  34. package/useDeferUntilBreakpoint/index.cjs +5 -0
  35. package/useDeferUntilBreakpoint/index.d.cts +3 -0
  36. package/useDeferUntilBreakpoint/index.d.mts +3 -0
  37. package/useDeferUntilBreakpoint/index.mjs +5 -0
  38. package/useDeferUntilBreakpoint/types.cjs +0 -0
  39. package/useDeferUntilBreakpoint/types.d.cts +20 -0
  40. package/useDeferUntilBreakpoint/types.d.mts +20 -0
  41. package/useDeferUntilBreakpoint/types.mjs +1 -0
  42. package/useDeferUntilBreakpoint/useDeferUntilBreakpoint.cjs +44 -0
  43. package/useDeferUntilBreakpoint/useDeferUntilBreakpoint.d.cts +14 -0
  44. package/useDeferUntilBreakpoint/useDeferUntilBreakpoint.d.mts +15 -0
  45. package/useDeferUntilBreakpoint/useDeferUntilBreakpoint.mjs +42 -0
  46. package/useDeferUntilCallThreshold/index.cjs +5 -0
  47. package/useDeferUntilCallThreshold/index.d.cts +3 -0
  48. package/useDeferUntilCallThreshold/index.d.mts +3 -0
  49. package/useDeferUntilCallThreshold/index.mjs +5 -0
  50. package/useDeferUntilCallThreshold/types.cjs +0 -0
  51. package/useDeferUntilCallThreshold/types.d.cts +23 -0
  52. package/useDeferUntilCallThreshold/types.d.mts +23 -0
  53. package/useDeferUntilCallThreshold/types.mjs +1 -0
  54. package/useDeferUntilCallThreshold/useDeferUntilCallThreshold.cjs +55 -0
  55. package/useDeferUntilCallThreshold/useDeferUntilCallThreshold.d.cts +13 -0
  56. package/useDeferUntilCallThreshold/useDeferUntilCallThreshold.d.mts +14 -0
  57. package/useDeferUntilCallThreshold/useDeferUntilCallThreshold.mjs +55 -0
  58. package/useDeferUntilChange/index.cjs +5 -0
  59. package/useDeferUntilChange/index.d.cts +3 -0
  60. package/useDeferUntilChange/index.d.mts +3 -0
  61. package/useDeferUntilChange/index.mjs +5 -0
  62. package/useDeferUntilChange/types.cjs +0 -0
  63. package/useDeferUntilChange/types.d.cts +7 -0
  64. package/useDeferUntilChange/types.d.mts +7 -0
  65. package/useDeferUntilChange/types.mjs +1 -0
  66. package/useDeferUntilChange/useDeferUntilChange.cjs +30 -0
  67. package/useDeferUntilChange/useDeferUntilChange.d.cts +14 -0
  68. package/useDeferUntilChange/useDeferUntilChange.d.mts +15 -0
  69. package/useDeferUntilChange/useDeferUntilChange.mjs +28 -0
  70. package/useDeferUntilDate/index.cjs +5 -0
  71. package/useDeferUntilDate/index.d.cts +3 -0
  72. package/useDeferUntilDate/index.d.mts +3 -0
  73. package/useDeferUntilDate/index.mjs +5 -0
  74. package/useDeferUntilDate/types.cjs +0 -0
  75. package/useDeferUntilDate/types.d.cts +7 -0
  76. package/useDeferUntilDate/types.d.mts +7 -0
  77. package/useDeferUntilDate/types.mjs +1 -0
  78. package/useDeferUntilDate/useDeferUntilDate.cjs +21 -0
  79. package/useDeferUntilDate/useDeferUntilDate.d.cts +14 -0
  80. package/useDeferUntilDate/useDeferUntilDate.d.mts +15 -0
  81. package/useDeferUntilDate/useDeferUntilDate.mjs +21 -0
  82. package/useDeferUntilIntersected/index.cjs +5 -0
  83. package/useDeferUntilIntersected/index.d.cts +3 -0
  84. package/useDeferUntilIntersected/index.d.mts +3 -0
  85. package/useDeferUntilIntersected/index.mjs +5 -0
  86. package/useDeferUntilIntersected/types.cjs +0 -0
  87. package/useDeferUntilIntersected/types.d.cts +31 -0
  88. package/useDeferUntilIntersected/types.d.mts +31 -0
  89. package/useDeferUntilIntersected/types.mjs +1 -0
  90. package/useDeferUntilIntersected/useDeferUntilIntersected.cjs +60 -0
  91. package/useDeferUntilIntersected/useDeferUntilIntersected.d.cts +14 -0
  92. package/useDeferUntilIntersected/useDeferUntilIntersected.d.mts +15 -0
  93. package/useDeferUntilIntersected/useDeferUntilIntersected.mjs +58 -0
  94. package/useDeferUntilOnReady/index.cjs +5 -0
  95. package/useDeferUntilOnReady/index.d.cts +3 -0
  96. package/useDeferUntilOnReady/index.d.mts +3 -0
  97. package/useDeferUntilOnReady/index.mjs +5 -0
  98. package/useDeferUntilOnReady/types.cjs +0 -0
  99. package/useDeferUntilOnReady/types.d.cts +23 -0
  100. package/useDeferUntilOnReady/types.d.mts +23 -0
  101. package/useDeferUntilOnReady/types.mjs +1 -0
  102. package/useDeferUntilOnReady/useDeferUntilOnReady.cjs +42 -0
  103. package/useDeferUntilOnReady/useDeferUntilOnReady.d.cts +13 -0
  104. package/useDeferUntilOnReady/useDeferUntilOnReady.d.mts +14 -0
  105. package/useDeferUntilOnReady/useDeferUntilOnReady.mjs +40 -0
  106. package/useDeferUntilReady/index.cjs +5 -0
  107. package/useDeferUntilReady/index.d.cts +3 -0
  108. package/useDeferUntilReady/index.d.mts +3 -0
  109. package/useDeferUntilReady/index.mjs +5 -0
  110. package/useDeferUntilReady/types.cjs +0 -0
  111. package/useDeferUntilReady/types.d.cts +7 -0
  112. package/useDeferUntilReady/types.d.mts +7 -0
  113. package/useDeferUntilReady/types.mjs +1 -0
  114. package/useDeferUntilReady/useDeferUntilReady.cjs +60 -0
  115. package/useDeferUntilReady/useDeferUntilReady.d.cts +15 -0
  116. package/useDeferUntilReady/useDeferUntilReady.d.mts +16 -0
  117. package/useDeferUntilReady/useDeferUntilReady.mjs +58 -0
  118. package/useDeferUntilRender/index.cjs +5 -0
  119. package/useDeferUntilRender/index.d.cts +3 -0
  120. package/useDeferUntilRender/index.d.mts +3 -0
  121. package/useDeferUntilRender/index.mjs +5 -0
  122. package/useDeferUntilRender/types.cjs +0 -0
  123. package/useDeferUntilRender/types.d.cts +25 -0
  124. package/useDeferUntilRender/types.d.mts +25 -0
  125. package/useDeferUntilRender/types.mjs +1 -0
  126. package/useDeferUntilRender/useDeferUntilRender.cjs +53 -0
  127. package/useDeferUntilRender/useDeferUntilRender.d.cts +14 -0
  128. package/useDeferUntilRender/useDeferUntilRender.d.mts +15 -0
  129. package/useDeferUntilRender/useDeferUntilRender.mjs +51 -0
  130. package/useDeferUntilResolved/index.cjs +5 -0
  131. package/useDeferUntilResolved/index.d.cts +3 -0
  132. package/useDeferUntilResolved/index.d.mts +3 -0
  133. package/useDeferUntilResolved/index.mjs +5 -0
  134. package/useDeferUntilResolved/types.cjs +0 -0
  135. package/useDeferUntilResolved/types.d.cts +7 -0
  136. package/useDeferUntilResolved/types.d.mts +7 -0
  137. package/useDeferUntilResolved/types.mjs +1 -0
  138. package/useDeferUntilResolved/useDeferUntilResolved.cjs +21 -0
  139. package/useDeferUntilResolved/useDeferUntilResolved.d.cts +14 -0
  140. package/useDeferUntilResolved/useDeferUntilResolved.d.mts +15 -0
  141. package/useDeferUntilResolved/useDeferUntilResolved.mjs +21 -0
  142. package/useDeferUntilScrolled/index.cjs +5 -0
  143. package/useDeferUntilScrolled/index.d.cts +3 -0
  144. package/useDeferUntilScrolled/index.d.mts +3 -0
  145. package/useDeferUntilScrolled/index.mjs +5 -0
  146. package/useDeferUntilScrolled/types.cjs +0 -0
  147. package/useDeferUntilScrolled/types.d.cts +29 -0
  148. package/useDeferUntilScrolled/types.d.mts +29 -0
  149. package/useDeferUntilScrolled/types.mjs +1 -0
  150. package/useDeferUntilScrolled/useDeferUntilScrolled.cjs +94 -0
  151. package/useDeferUntilScrolled/useDeferUntilScrolled.d.cts +14 -0
  152. package/useDeferUntilScrolled/useDeferUntilScrolled.d.mts +15 -0
  153. package/useDeferUntilScrolled/useDeferUntilScrolled.mjs +91 -0
  154. package/useDeferUntilTimeout/index.cjs +5 -0
  155. package/useDeferUntilTimeout/index.d.cts +3 -0
  156. package/useDeferUntilTimeout/index.d.mts +3 -0
  157. package/useDeferUntilTimeout/index.mjs +5 -0
  158. package/useDeferUntilTimeout/types.cjs +0 -0
  159. package/useDeferUntilTimeout/types.d.cts +7 -0
  160. package/useDeferUntilTimeout/types.d.mts +7 -0
  161. package/useDeferUntilTimeout/types.mjs +1 -0
  162. package/useDeferUntilTimeout/useDeferUntilTimeout.cjs +40 -0
  163. package/useDeferUntilTimeout/useDeferUntilTimeout.d.cts +14 -0
  164. package/useDeferUntilTimeout/useDeferUntilTimeout.d.mts +15 -0
  165. package/useDeferUntilTimeout/useDeferUntilTimeout.mjs +37 -0
  166. package/useDeferUntilTrue/index.cjs +5 -0
  167. package/useDeferUntilTrue/index.d.cts +3 -0
  168. package/useDeferUntilTrue/index.d.mts +3 -0
  169. package/useDeferUntilTrue/index.mjs +5 -0
  170. package/useDeferUntilTrue/types.cjs +0 -0
  171. package/useDeferUntilTrue/types.d.cts +7 -0
  172. package/useDeferUntilTrue/types.d.mts +7 -0
  173. package/useDeferUntilTrue/types.mjs +1 -0
  174. package/useDeferUntilTrue/useDeferUntilTrue.cjs +20 -0
  175. package/useDeferUntilTrue/useDeferUntilTrue.d.cts +14 -0
  176. package/useDeferUntilTrue/useDeferUntilTrue.d.mts +15 -0
  177. package/useDeferUntilTrue/useDeferUntilTrue.mjs +20 -0
  178. package/useDeferUntilWebFontReady/index.cjs +5 -0
  179. package/useDeferUntilWebFontReady/index.d.cts +3 -0
  180. package/useDeferUntilWebFontReady/index.d.mts +3 -0
  181. package/useDeferUntilWebFontReady/index.mjs +5 -0
  182. package/useDeferUntilWebFontReady/types.cjs +0 -0
  183. package/useDeferUntilWebFontReady/types.d.cts +49 -0
  184. package/useDeferUntilWebFontReady/types.d.mts +49 -0
  185. package/useDeferUntilWebFontReady/types.mjs +1 -0
  186. package/useDeferUntilWebFontReady/useDeferUntilWebFontReady.cjs +93 -0
  187. package/useDeferUntilWebFontReady/useDeferUntilWebFontReady.d.cts +16 -0
  188. package/useDeferUntilWebFontReady/useDeferUntilWebFontReady.d.mts +17 -0
  189. package/useDeferUntilWebFontReady/useDeferUntilWebFontReady.mjs +90 -0
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,20 @@
1
+ 'use client';
2
+
3
+ const require__usePromiseState = require('../_usePromiseState.cjs');
4
+ const require_useDeferUntilReady_useDeferUntilReady = require('../useDeferUntilReady/useDeferUntilReady.cjs');
5
+ require('../useDeferUntilReady/index.cjs');
6
+
7
+ //#region src/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.tsx
8
+ /**
9
+ * 非同期関数の処理の完了まで描画を遅延させるhook
10
+ * @param target 描画対象のノード
11
+ * @param asyncFn 非同期関数(null/undefinedの場合は待たずに描画する)
12
+ * @param options オプション
13
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
14
+ */
15
+ function useDeferUntilAsyncComplete(target, asyncFn, options = {}) {
16
+ return require_useDeferUntilReady_useDeferUntilReady(target, require__usePromiseState(asyncFn), options);
17
+ }
18
+
19
+ //#endregion
20
+ module.exports = useDeferUntilAsyncComplete;
@@ -0,0 +1,14 @@
1
+ import { DeferRenderingResult } from "../types.cjs";
2
+ import { UseDeferUntilAsyncCompleteOptions } from "./types.cjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.d.ts
6
+ /**
7
+ * 非同期関数の処理の完了まで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param asyncFn 非同期関数(null/undefinedの場合は待たずに描画する)
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
12
+ */
13
+ declare function useDeferUntilAsyncComplete<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, asyncFn: (() => Promise<void>) | null | undefined, options?: UseDeferUntilAsyncCompleteOptions<P, E>): DeferRenderingResult<T | P | E>;
14
+ export = useDeferUntilAsyncComplete;
@@ -0,0 +1,15 @@
1
+ import { DeferRenderingResult } from "../types.mjs";
2
+ import { UseDeferUntilAsyncCompleteOptions } from "./types.mjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.d.ts
6
+ /**
7
+ * 非同期関数の処理の完了まで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param asyncFn 非同期関数(null/undefinedの場合は待たずに描画する)
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
12
+ */
13
+ declare function useDeferUntilAsyncComplete<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, asyncFn: (() => Promise<void>) | null | undefined, options?: UseDeferUntilAsyncCompleteOptions<P, E>): DeferRenderingResult<T | P | E>;
14
+ //#endregion
15
+ export { useDeferUntilAsyncComplete as default };
@@ -0,0 +1,20 @@
1
+ 'use client';
2
+
3
+ import usePromiseState from "../_usePromiseState.mjs";
4
+ import useDeferUntilReady from "../useDeferUntilReady/useDeferUntilReady.mjs";
5
+ import "../useDeferUntilReady/index.mjs";
6
+
7
+ //#region src/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.tsx
8
+ /**
9
+ * 非同期関数の処理の完了まで描画を遅延させるhook
10
+ * @param target 描画対象のノード
11
+ * @param asyncFn 非同期関数(null/undefinedの場合は待たずに描画する)
12
+ * @param options オプション
13
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
14
+ */
15
+ function useDeferUntilAsyncComplete(target, asyncFn, options = {}) {
16
+ return useDeferUntilReady(target, usePromiseState(asyncFn), options);
17
+ }
18
+
19
+ //#endregion
20
+ export { useDeferUntilAsyncComplete as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ const require_useDeferUntilBreakpoint_useDeferUntilBreakpoint = require('./useDeferUntilBreakpoint.cjs');
4
+
5
+ module.exports = require_useDeferUntilBreakpoint_useDeferUntilBreakpoint;
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilBreakpointOptions } from "./types.cjs";
2
+ import useDeferUntilBreakpoint from "./useDeferUntilBreakpoint.cjs";
3
+ export { type UseDeferUntilBreakpointOptions, useDeferUntilBreakpoint as default };
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilBreakpointOptions } from "./types.mjs";
2
+ import useDeferUntilBreakpoint from "./useDeferUntilBreakpoint.mjs";
3
+ export { type UseDeferUntilBreakpointOptions, useDeferUntilBreakpoint as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilBreakpoint from "./useDeferUntilBreakpoint.mjs";
4
+
5
+ export { useDeferUntilBreakpoint as default };
File without changes
@@ -0,0 +1,20 @@
1
+ import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.cjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/useDeferUntilBreakpoint/types.d.ts
5
+ type UseDeferUntilBreakpointOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & {
6
+ /**
7
+ * メディアクエリー変更時のデバウンス時間(ミリ秒)
8
+ * デフォルトは100ms
9
+ * @default 100
10
+ */
11
+ detectionDelay?: number;
12
+ /**
13
+ * SSR時など、実際のメディアクエリーを判定できない環境での初期値\
14
+ * デフォルトはfalse
15
+ * @default false
16
+ */
17
+ initialCondition?: boolean;
18
+ };
19
+ //#endregion
20
+ export { UseDeferUntilBreakpointOptions };
@@ -0,0 +1,20 @@
1
+ import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.mjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/useDeferUntilBreakpoint/types.d.ts
5
+ type UseDeferUntilBreakpointOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & {
6
+ /**
7
+ * メディアクエリー変更時のデバウンス時間(ミリ秒)
8
+ * デフォルトは100ms
9
+ * @default 100
10
+ */
11
+ detectionDelay?: number;
12
+ /**
13
+ * SSR時など、実際のメディアクエリーを判定できない環境での初期値\
14
+ * デフォルトはfalse
15
+ * @default false
16
+ */
17
+ initialCondition?: boolean;
18
+ };
19
+ //#endregion
20
+ export { UseDeferUntilBreakpointOptions };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,44 @@
1
+ 'use client';
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 react = require("react");
7
+ let _fringeworks_utils_timer_debounce = require("@fringeworks/utils/timer/debounce");
8
+ _fringeworks_utils_timer_debounce = require_runtime.__toESM(_fringeworks_utils_timer_debounce, 1);
9
+
10
+ //#region src/useDeferUntilBreakpoint/useDeferUntilBreakpoint.tsx
11
+ /**
12
+ * メディアクエリーが一致するまで描画を遅延させるhook
13
+ * @param target 描画対象のノード
14
+ * @param mediaQuery メディアクエリ(例: '(max-width: 768px)')(null/undefinedの場合は待たずに描画する)
15
+ * @param options オプション
16
+ * @returns state('pending', 'ready')と状態に応じたノード
17
+ */
18
+ function useDeferUntilBreakpoint(target, mediaQuery, options = {}) {
19
+ const { detectionDelay = 100, preserveOnceReady, initialCondition = false, ...opts } = options;
20
+ return require_useDeferUntilTrue_useDeferUntilTrue(target, (0, react.useSyncExternalStore)((0, react.useCallback)((onStoreChange) => {
21
+ if (!mediaQuery) return () => {};
22
+ const mediaQueryList = window.matchMedia(mediaQuery);
23
+ if (preserveOnceReady && mediaQueryList.matches) return () => {};
24
+ const handleChange = (event) => {
25
+ onStoreChange();
26
+ if (preserveOnceReady && event.matches) mediaQueryList.removeEventListener("change", debouncedHandleChange);
27
+ };
28
+ const debouncedHandleChange = (0, _fringeworks_utils_timer_debounce.default)(handleChange, detectionDelay);
29
+ mediaQueryList.addEventListener("change", debouncedHandleChange);
30
+ return () => {
31
+ mediaQueryList.removeEventListener("change", debouncedHandleChange);
32
+ };
33
+ }, [
34
+ mediaQuery,
35
+ preserveOnceReady,
36
+ detectionDelay
37
+ ]), (0, react.useCallback)(() => !mediaQuery || window.matchMedia(mediaQuery).matches, [mediaQuery]), (0, react.useCallback)(() => !mediaQuery || initialCondition, [mediaQuery, initialCondition])), {
38
+ preserveOnceReady,
39
+ ...opts
40
+ });
41
+ }
42
+
43
+ //#endregion
44
+ module.exports = useDeferUntilBreakpoint;
@@ -0,0 +1,14 @@
1
+ import { DeferRenderingResult } from "../types.cjs";
2
+ import { UseDeferUntilBreakpointOptions } from "./types.cjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilBreakpoint/useDeferUntilBreakpoint.d.ts
6
+ /**
7
+ * メディアクエリーが一致するまで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param mediaQuery メディアクエリ(例: '(max-width: 768px)')(null/undefinedの場合は待たずに描画する)
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready')と状態に応じたノード
12
+ */
13
+ declare function useDeferUntilBreakpoint<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, mediaQuery: string | null | undefined, options?: UseDeferUntilBreakpointOptions<P>): DeferRenderingResult<T | P>;
14
+ export = useDeferUntilBreakpoint;
@@ -0,0 +1,15 @@
1
+ import { DeferRenderingResult } from "../types.mjs";
2
+ import { UseDeferUntilBreakpointOptions } from "./types.mjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilBreakpoint/useDeferUntilBreakpoint.d.ts
6
+ /**
7
+ * メディアクエリーが一致するまで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param mediaQuery メディアクエリ(例: '(max-width: 768px)')(null/undefinedの場合は待たずに描画する)
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready')と状態に応じたノード
12
+ */
13
+ declare function useDeferUntilBreakpoint<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, mediaQuery: string | null | undefined, options?: UseDeferUntilBreakpointOptions<P>): DeferRenderingResult<T | P>;
14
+ //#endregion
15
+ export { useDeferUntilBreakpoint as default };
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilTrue from "../useDeferUntilTrue/useDeferUntilTrue.mjs";
4
+ import "../useDeferUntilTrue/index.mjs";
5
+ import { useCallback, useSyncExternalStore } from "react";
6
+ import debounce from "@fringeworks/utils/timer/debounce";
7
+
8
+ //#region src/useDeferUntilBreakpoint/useDeferUntilBreakpoint.tsx
9
+ /**
10
+ * メディアクエリーが一致するまで描画を遅延させるhook
11
+ * @param target 描画対象のノード
12
+ * @param mediaQuery メディアクエリ(例: '(max-width: 768px)')(null/undefinedの場合は待たずに描画する)
13
+ * @param options オプション
14
+ * @returns state('pending', 'ready')と状態に応じたノード
15
+ */
16
+ function useDeferUntilBreakpoint(target, mediaQuery, options = {}) {
17
+ const { detectionDelay = 100, preserveOnceReady, initialCondition = false, ...opts } = options;
18
+ return useDeferUntilTrue(target, useSyncExternalStore(useCallback((onStoreChange) => {
19
+ if (!mediaQuery) return () => {};
20
+ const mediaQueryList = window.matchMedia(mediaQuery);
21
+ if (preserveOnceReady && mediaQueryList.matches) return () => {};
22
+ const handleChange = (event) => {
23
+ onStoreChange();
24
+ if (preserveOnceReady && event.matches) mediaQueryList.removeEventListener("change", debouncedHandleChange);
25
+ };
26
+ const debouncedHandleChange = debounce(handleChange, detectionDelay);
27
+ mediaQueryList.addEventListener("change", debouncedHandleChange);
28
+ return () => {
29
+ mediaQueryList.removeEventListener("change", debouncedHandleChange);
30
+ };
31
+ }, [
32
+ mediaQuery,
33
+ preserveOnceReady,
34
+ detectionDelay
35
+ ]), useCallback(() => !mediaQuery || window.matchMedia(mediaQuery).matches, [mediaQuery]), useCallback(() => !mediaQuery || initialCondition, [mediaQuery, initialCondition])), {
36
+ preserveOnceReady,
37
+ ...opts
38
+ });
39
+ }
40
+
41
+ //#endregion
42
+ export { useDeferUntilBreakpoint as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ const require_useDeferUntilCallThreshold_useDeferUntilCallThreshold = require('./useDeferUntilCallThreshold.cjs');
4
+
5
+ module.exports = require_useDeferUntilCallThreshold_useDeferUntilCallThreshold;
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilCallThresholdOptions } from "./types.cjs";
2
+ import useDeferUntilCallThreshold from "./useDeferUntilCallThreshold.cjs";
3
+ export { type UseDeferUntilCallThresholdOptions, useDeferUntilCallThreshold as default };
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilCallThresholdOptions } from "./types.mjs";
2
+ import useDeferUntilCallThreshold from "./useDeferUntilCallThreshold.mjs";
3
+ export { type UseDeferUntilCallThresholdOptions, useDeferUntilCallThreshold as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilCallThreshold from "./useDeferUntilCallThreshold.mjs";
4
+
5
+ export { useDeferUntilCallThreshold as default };
File without changes
@@ -0,0 +1,23 @@
1
+ import { UseDeferUntilOnReadyOptions } from "../useDeferUntilOnReady/types.cjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/useDeferUntilCallThreshold/types.d.ts
5
+ type UseDeferUntilCallThresholdOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilOnReadyOptions<P, E> & {
6
+ /**
7
+ * readyになる為のonReadyの呼び出し回数
8
+ * 未指定の場合は1回
9
+ */
10
+ onReadyCount?: number;
11
+ /**
12
+ * fallbackになる為のonFallbackの呼び出し回数
13
+ * 未指定の場合は1回
14
+ */
15
+ onFallbackCount?: number;
16
+ /**
17
+ * pendingになる為のonPendingの呼び出し回数
18
+ * 未指定の場合は1回
19
+ */
20
+ onPendingCount?: number;
21
+ };
22
+ //#endregion
23
+ export { UseDeferUntilCallThresholdOptions };
@@ -0,0 +1,23 @@
1
+ import { UseDeferUntilOnReadyOptions } from "../useDeferUntilOnReady/types.mjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/useDeferUntilCallThreshold/types.d.ts
5
+ type UseDeferUntilCallThresholdOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilOnReadyOptions<P, E> & {
6
+ /**
7
+ * readyになる為のonReadyの呼び出し回数
8
+ * 未指定の場合は1回
9
+ */
10
+ onReadyCount?: number;
11
+ /**
12
+ * fallbackになる為のonFallbackの呼び出し回数
13
+ * 未指定の場合は1回
14
+ */
15
+ onFallbackCount?: number;
16
+ /**
17
+ * pendingになる為のonPendingの呼び出し回数
18
+ * 未指定の場合は1回
19
+ */
20
+ onPendingCount?: number;
21
+ };
22
+ //#endregion
23
+ export { UseDeferUntilCallThresholdOptions };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,55 @@
1
+ 'use client';
2
+
3
+ const require_useDeferUntilOnReady_useDeferUntilOnReady = require('../useDeferUntilOnReady/useDeferUntilOnReady.cjs');
4
+ require('../useDeferUntilOnReady/index.cjs');
5
+ let react = require("react");
6
+
7
+ //#region src/useDeferUntilCallThreshold/useDeferUntilCallThreshold.tsx
8
+ /**
9
+ * 戻り値として返す`onReady`等のハンドラーが指定回数呼ばれるまで描画を遅延させるhook
10
+ * @param target 描画対象のノード
11
+ * @param options オプション
12
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノードと状態変更用のハンドラー
13
+ */
14
+ function useDeferUntilCallThreshold(target, options = {}) {
15
+ const { onPendingCount = 1, onFallbackCount = 1, onReadyCount = 1, ...opts } = options;
16
+ const { onPending: handlePending, onFallback: handleFallback, onReady: handleReady, ...rest } = require_useDeferUntilOnReady_useDeferUntilOnReady(target, opts);
17
+ const pendingContRef = (0, react.useRef)(0);
18
+ const fallbackContRef = (0, react.useRef)(0);
19
+ const readyContRef = (0, react.useRef)(0);
20
+ const reset = (0, react.useCallback)(() => {
21
+ pendingContRef.current = 0;
22
+ fallbackContRef.current = 0;
23
+ readyContRef.current = 0;
24
+ }, []);
25
+ const onPending = (0, react.useCallback)(() => {
26
+ pendingContRef.current += 1;
27
+ if (onPendingCount <= pendingContRef.current) {
28
+ reset();
29
+ handlePending();
30
+ }
31
+ }, [handlePending, onPendingCount]);
32
+ const onFallback = (0, react.useCallback)(() => {
33
+ fallbackContRef.current += 1;
34
+ if (onFallbackCount <= fallbackContRef.current) {
35
+ reset();
36
+ handleFallback();
37
+ }
38
+ }, [handleFallback, onFallbackCount]);
39
+ const onReady = (0, react.useCallback)(() => {
40
+ readyContRef.current += 1;
41
+ if (onReadyCount <= readyContRef.current) {
42
+ reset();
43
+ handleReady();
44
+ }
45
+ }, [handleReady, onReadyCount]);
46
+ return {
47
+ ...rest,
48
+ onPending,
49
+ onFallback,
50
+ onReady
51
+ };
52
+ }
53
+
54
+ //#endregion
55
+ module.exports = useDeferUntilCallThreshold;
@@ -0,0 +1,13 @@
1
+ import { DeferRenderingWithHandlersResult } from "../types.cjs";
2
+ import { UseDeferUntilCallThresholdOptions } from "./types.cjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilCallThreshold/useDeferUntilCallThreshold.d.ts
6
+ /**
7
+ * 戻り値として返す`onReady`等のハンドラーが指定回数呼ばれるまで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param options オプション
10
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノードと状態変更用のハンドラー
11
+ */
12
+ declare function useDeferUntilCallThreshold<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, options?: UseDeferUntilCallThresholdOptions<P, E>): DeferRenderingWithHandlersResult<T | P | E>;
13
+ export = useDeferUntilCallThreshold;
@@ -0,0 +1,14 @@
1
+ import { DeferRenderingWithHandlersResult } from "../types.mjs";
2
+ import { UseDeferUntilCallThresholdOptions } from "./types.mjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilCallThreshold/useDeferUntilCallThreshold.d.ts
6
+ /**
7
+ * 戻り値として返す`onReady`等のハンドラーが指定回数呼ばれるまで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param options オプション
10
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノードと状態変更用のハンドラー
11
+ */
12
+ declare function useDeferUntilCallThreshold<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, options?: UseDeferUntilCallThresholdOptions<P, E>): DeferRenderingWithHandlersResult<T | P | E>;
13
+ //#endregion
14
+ export { useDeferUntilCallThreshold as default };
@@ -0,0 +1,55 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilOnReady from "../useDeferUntilOnReady/useDeferUntilOnReady.mjs";
4
+ import "../useDeferUntilOnReady/index.mjs";
5
+ import { useCallback, useRef } from "react";
6
+
7
+ //#region src/useDeferUntilCallThreshold/useDeferUntilCallThreshold.tsx
8
+ /**
9
+ * 戻り値として返す`onReady`等のハンドラーが指定回数呼ばれるまで描画を遅延させるhook
10
+ * @param target 描画対象のノード
11
+ * @param options オプション
12
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノードと状態変更用のハンドラー
13
+ */
14
+ function useDeferUntilCallThreshold(target, options = {}) {
15
+ const { onPendingCount = 1, onFallbackCount = 1, onReadyCount = 1, ...opts } = options;
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);
20
+ const reset = useCallback(() => {
21
+ pendingContRef.current = 0;
22
+ fallbackContRef.current = 0;
23
+ readyContRef.current = 0;
24
+ }, []);
25
+ const onPending = useCallback(() => {
26
+ pendingContRef.current += 1;
27
+ if (onPendingCount <= pendingContRef.current) {
28
+ reset();
29
+ handlePending();
30
+ }
31
+ }, [handlePending, onPendingCount]);
32
+ const onFallback = useCallback(() => {
33
+ fallbackContRef.current += 1;
34
+ if (onFallbackCount <= fallbackContRef.current) {
35
+ reset();
36
+ handleFallback();
37
+ }
38
+ }, [handleFallback, onFallbackCount]);
39
+ const onReady = useCallback(() => {
40
+ readyContRef.current += 1;
41
+ if (onReadyCount <= readyContRef.current) {
42
+ reset();
43
+ handleReady();
44
+ }
45
+ }, [handleReady, onReadyCount]);
46
+ return {
47
+ ...rest,
48
+ onPending,
49
+ onFallback,
50
+ onReady
51
+ };
52
+ }
53
+
54
+ //#endregion
55
+ export { useDeferUntilCallThreshold as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ const require_useDeferUntilChange_useDeferUntilChange = require('./useDeferUntilChange.cjs');
4
+
5
+ module.exports = require_useDeferUntilChange_useDeferUntilChange;
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilChangeOptions } from "./types.cjs";
2
+ import useDeferUntilChange from "./useDeferUntilChange.cjs";
3
+ export { type UseDeferUntilChangeOptions, useDeferUntilChange as default };
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilChangeOptions } from "./types.mjs";
2
+ import useDeferUntilChange from "./useDeferUntilChange.mjs";
3
+ export { type UseDeferUntilChangeOptions, useDeferUntilChange as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilChange from "./useDeferUntilChange.mjs";
4
+
5
+ export { useDeferUntilChange as default };
File without changes
@@ -0,0 +1,7 @@
1
+ import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.cjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/useDeferUntilChange/types.d.ts
5
+ type UseDeferUntilChangeOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P>;
6
+ //#endregion
7
+ export { UseDeferUntilChangeOptions };
@@ -0,0 +1,7 @@
1
+ import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.mjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/useDeferUntilChange/types.d.ts
5
+ type UseDeferUntilChangeOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P>;
6
+ //#endregion
7
+ export { UseDeferUntilChangeOptions };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,30 @@
1
+ 'use client';
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);
8
+ let react = require("react");
9
+
10
+ //#region src/useDeferUntilChange/useDeferUntilChange.tsx
11
+ const NO_VALUE = Symbol("NO_VALUE");
12
+ /**
13
+ * 値が変更されるまで描画を遅延させるhook
14
+ * @param target 描画対象のノード
15
+ * @param value 値
16
+ * @param options オプション
17
+ * @returns state('pending', 'ready')と状態に応じたノード
18
+ */
19
+ function useDeferUntilChange(target, value, options = {}) {
20
+ 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);
23
+ (0, react.useEffect)(() => {
24
+ if (isMounted()) setPrevValue(value);
25
+ }, [value]);
26
+ return result;
27
+ }
28
+
29
+ //#endregion
30
+ module.exports = useDeferUntilChange;
@@ -0,0 +1,14 @@
1
+ import { DeferRenderingResult } from "../types.cjs";
2
+ import { UseDeferUntilChangeOptions } from "./types.cjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilChange/useDeferUntilChange.d.ts
6
+ /**
7
+ * 値が変更されるまで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param value 値
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready')と状態に応じたノード
12
+ */
13
+ declare function useDeferUntilChange<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, value: unknown, options?: UseDeferUntilChangeOptions<P>): DeferRenderingResult<T | P>;
14
+ export = useDeferUntilChange;
@@ -0,0 +1,15 @@
1
+ import { DeferRenderingResult } from "../types.mjs";
2
+ import { UseDeferUntilChangeOptions } from "./types.mjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilChange/useDeferUntilChange.d.ts
6
+ /**
7
+ * 値が変更されるまで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param value 値
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready')と状態に応じたノード
12
+ */
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 };
@@ -0,0 +1,28 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilTrue from "../useDeferUntilTrue/useDeferUntilTrue.mjs";
4
+ import "../useDeferUntilTrue/index.mjs";
5
+ import useIsMounted from "@fringeworks/react-utils/hooks/useIsMounted";
6
+ import { useEffect, useState } from "react";
7
+
8
+ //#region src/useDeferUntilChange/useDeferUntilChange.tsx
9
+ const NO_VALUE = Symbol("NO_VALUE");
10
+ /**
11
+ * 値が変更されるまで描画を遅延させるhook
12
+ * @param target 描画対象のノード
13
+ * @param value 値
14
+ * @param options オプション
15
+ * @returns state('pending', 'ready')と状態に応じたノード
16
+ */
17
+ function useDeferUntilChange(target, value, options = {}) {
18
+ const [prevValue, setPrevValue] = useState(NO_VALUE);
19
+ const isMounted = useIsMounted();
20
+ const result = useDeferUntilTrue(target, prevValue === value, options);
21
+ useEffect(() => {
22
+ if (isMounted()) setPrevValue(value);
23
+ }, [value]);
24
+ return result;
25
+ }
26
+
27
+ //#endregion
28
+ export { useDeferUntilChange as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ const require_useDeferUntilDate_useDeferUntilDate = require('./useDeferUntilDate.cjs');
4
+
5
+ module.exports = require_useDeferUntilDate_useDeferUntilDate;