@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,60 @@
1
+ 'use client';
2
+
3
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
4
+ const require_constants = require('../constants.cjs');
5
+ let _fringeworks_react_utils_hooks_useIsMounted = require("@fringeworks/react-utils/hooks/useIsMounted");
6
+ _fringeworks_react_utils_hooks_useIsMounted = require_runtime.__toESM(_fringeworks_react_utils_hooks_useIsMounted, 1);
7
+ let react = require("react");
8
+
9
+ //#region src/useDeferUntilReady/useDeferUntilReady.tsx
10
+ /**
11
+ * ステートが'ready'になるまで描画を遅延させるhook
12
+ * @param target 描画対象のノード
13
+ * @param state ステート('pending', 'ready', 'fallback')
14
+ * @param options オプション
15
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
16
+ */
17
+ function useDeferUntilReady(target, state, options = {}) {
18
+ const { pending, fallback, pendingDefer, fallbackDefer, readyDefer, preserveOnceFallback, preserveOnceReady } = options;
19
+ const latestStateRef = (0, react.useRef)(null);
20
+ const latestState = latestStateRef.current;
21
+ let currentState = state;
22
+ if (preserveOnceReady && latestState === require_constants.RenderingState.ready) currentState = latestState;
23
+ else if (preserveOnceFallback && latestState === require_constants.RenderingState.fallback) currentState = latestState;
24
+ latestStateRef.current = currentState;
25
+ const defer = {
26
+ pending: pendingDefer,
27
+ fallback: fallbackDefer,
28
+ ready: readyDefer
29
+ }[currentState];
30
+ const deferRef = (0, react.useRef)(defer);
31
+ deferRef.current = defer;
32
+ const [shownState, setShownState] = (0, react.useState)(() => defer == null ? currentState : null);
33
+ const isMounted = (0, _fringeworks_react_utils_hooks_useIsMounted.default)();
34
+ (0, react.useEffect)(() => {
35
+ const defer = deferRef.current;
36
+ if (defer == null) {
37
+ setShownState(currentState);
38
+ return;
39
+ } else {
40
+ const timeoutId = setTimeout(() => {
41
+ if (isMounted()) setShownState(currentState);
42
+ }, defer);
43
+ return () => {
44
+ clearTimeout(timeoutId);
45
+ };
46
+ }
47
+ }, [currentState]);
48
+ const node = shownState == null ? null : {
49
+ pending,
50
+ fallback,
51
+ ready: target
52
+ }[shownState];
53
+ return {
54
+ state: currentState,
55
+ node
56
+ };
57
+ }
58
+
59
+ //#endregion
60
+ module.exports = useDeferUntilReady;
@@ -0,0 +1,15 @@
1
+ import { RenderingState } from "../constants.cjs";
2
+ import { DeferRenderingResult } from "../types.cjs";
3
+ import { UseDeferUntilReadyOptions } from "./types.cjs";
4
+ import { ReactNode } from "react";
5
+
6
+ //#region src/useDeferUntilReady/useDeferUntilReady.d.ts
7
+ /**
8
+ * ステートが'ready'になるまで描画を遅延させるhook
9
+ * @param target 描画対象のノード
10
+ * @param state ステート('pending', 'ready', 'fallback')
11
+ * @param options オプション
12
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
13
+ */
14
+ declare function useDeferUntilReady<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, state: RenderingState, options?: UseDeferUntilReadyOptions<P, E>): DeferRenderingResult<T | P | E>;
15
+ export = useDeferUntilReady;
@@ -0,0 +1,16 @@
1
+ import { RenderingState } from "../constants.mjs";
2
+ import { DeferRenderingResult } from "../types.mjs";
3
+ import { UseDeferUntilReadyOptions } from "./types.mjs";
4
+ import { ReactNode } from "react";
5
+
6
+ //#region src/useDeferUntilReady/useDeferUntilReady.d.ts
7
+ /**
8
+ * ステートが'ready'になるまで描画を遅延させるhook
9
+ * @param target 描画対象のノード
10
+ * @param state ステート('pending', 'ready', 'fallback')
11
+ * @param options オプション
12
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
13
+ */
14
+ declare function useDeferUntilReady<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, state: RenderingState, options?: UseDeferUntilReadyOptions<P, E>): DeferRenderingResult<T | P | E>;
15
+ //#endregion
16
+ export { useDeferUntilReady as default };
@@ -0,0 +1,58 @@
1
+ 'use client';
2
+
3
+ import { RenderingState } from "../constants.mjs";
4
+ import useIsMounted from "@fringeworks/react-utils/hooks/useIsMounted";
5
+ import { useEffect, useRef, useState } from "react";
6
+
7
+ //#region src/useDeferUntilReady/useDeferUntilReady.tsx
8
+ /**
9
+ * ステートが'ready'になるまで描画を遅延させるhook
10
+ * @param target 描画対象のノード
11
+ * @param state ステート('pending', 'ready', 'fallback')
12
+ * @param options オプション
13
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
14
+ */
15
+ function useDeferUntilReady(target, state, options = {}) {
16
+ const { pending, fallback, pendingDefer, fallbackDefer, readyDefer, preserveOnceFallback, preserveOnceReady } = options;
17
+ const latestStateRef = useRef(null);
18
+ const latestState = latestStateRef.current;
19
+ let currentState = state;
20
+ if (preserveOnceReady && latestState === RenderingState.ready) currentState = latestState;
21
+ else if (preserveOnceFallback && latestState === RenderingState.fallback) currentState = latestState;
22
+ latestStateRef.current = currentState;
23
+ const defer = {
24
+ pending: pendingDefer,
25
+ fallback: fallbackDefer,
26
+ ready: readyDefer
27
+ }[currentState];
28
+ const deferRef = useRef(defer);
29
+ deferRef.current = defer;
30
+ const [shownState, setShownState] = useState(() => defer == null ? currentState : null);
31
+ const isMounted = useIsMounted();
32
+ useEffect(() => {
33
+ const defer = deferRef.current;
34
+ if (defer == null) {
35
+ setShownState(currentState);
36
+ return;
37
+ } else {
38
+ const timeoutId = setTimeout(() => {
39
+ if (isMounted()) setShownState(currentState);
40
+ }, defer);
41
+ return () => {
42
+ clearTimeout(timeoutId);
43
+ };
44
+ }
45
+ }, [currentState]);
46
+ const node = shownState == null ? null : {
47
+ pending,
48
+ fallback,
49
+ ready: target
50
+ }[shownState];
51
+ return {
52
+ state: currentState,
53
+ node
54
+ };
55
+ }
56
+
57
+ //#endregion
58
+ export { useDeferUntilReady as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ const require_useDeferUntilRender_useDeferUntilRender = require('./useDeferUntilRender.cjs');
4
+
5
+ module.exports = require_useDeferUntilRender_useDeferUntilRender;
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilRenderOptions } from "./types.cjs";
2
+ import useDeferUntilRender from "./useDeferUntilRender.cjs";
3
+ export { type UseDeferUntilRenderOptions, useDeferUntilRender as default };
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilRenderOptions } from "./types.mjs";
2
+ import useDeferUntilRender from "./useDeferUntilRender.mjs";
3
+ export { type UseDeferUntilRenderOptions, useDeferUntilRender as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilRender from "./useDeferUntilRender.mjs";
4
+
5
+ export { useDeferUntilRender as default };
File without changes
@@ -0,0 +1,25 @@
1
+ import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.cjs";
2
+ import { ReactNode, RefObject } from "react";
3
+
4
+ //#region src/useDeferUntilRender/types.d.ts
5
+ type UseDeferUntilRenderOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & {
6
+ /**
7
+ * 監視するコンテナーの参照\
8
+ * デフォルトはdocument(文書全体)
9
+ */
10
+ rootRef?: RefObject<Element | Document | null | undefined>;
11
+ /**
12
+ * DOM変更検知時のデバウンス時間(ミリ秒)
13
+ * デフォルトは100ms
14
+ * @default 100
15
+ */
16
+ detectionDelay?: number;
17
+ /**
18
+ * SSR時など、実際のエレメントの描画状態を判定できない環境での初期値\
19
+ * デフォルトはfalse
20
+ * @default false
21
+ */
22
+ initialCondition?: boolean;
23
+ };
24
+ //#endregion
25
+ export { UseDeferUntilRenderOptions };
@@ -0,0 +1,25 @@
1
+ import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.mjs";
2
+ import { ReactNode, RefObject } from "react";
3
+
4
+ //#region src/useDeferUntilRender/types.d.ts
5
+ type UseDeferUntilRenderOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & {
6
+ /**
7
+ * 監視するコンテナーの参照\
8
+ * デフォルトはdocument(文書全体)
9
+ */
10
+ rootRef?: RefObject<Element | Document | null | undefined>;
11
+ /**
12
+ * DOM変更検知時のデバウンス時間(ミリ秒)
13
+ * デフォルトは100ms
14
+ * @default 100
15
+ */
16
+ detectionDelay?: number;
17
+ /**
18
+ * SSR時など、実際のエレメントの描画状態を判定できない環境での初期値\
19
+ * デフォルトはfalse
20
+ * @default false
21
+ */
22
+ initialCondition?: boolean;
23
+ };
24
+ //#endregion
25
+ export { UseDeferUntilRenderOptions };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,53 @@
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/useDeferUntilRender/useDeferUntilRender.tsx
11
+ /**
12
+ * セレクターに一致するエレメントが描画されるまで描画を遅延させるhook
13
+ * @param target 描画対象のノード
14
+ * @param query クエリセレクター(例: '.my-class')(null/undefinedの場合は待たずに描画する)
15
+ * @param options オプション
16
+ * @returns state('pending', 'ready')と状態に応じたノード
17
+ */
18
+ function useDeferUntilRender(target, query, options = {}) {
19
+ const defaultRootRef = (0, react.useRef)(null);
20
+ const { rootRef = defaultRootRef, detectionDelay = 100, preserveOnceReady, initialCondition = false, ...opts } = options;
21
+ return require_useDeferUntilTrue_useDeferUntilTrue(target, (0, react.useSyncExternalStore)((0, react.useCallback)((onStoreChange) => {
22
+ if (!query) return () => {};
23
+ const root = rootRef.current ?? document;
24
+ if (preserveOnceReady && root.querySelector(query)) return () => {};
25
+ const handleMutation = () => {
26
+ onStoreChange();
27
+ if (preserveOnceReady && root.querySelector(query)) observer.disconnect();
28
+ };
29
+ const debouncedHandleMutation = (0, _fringeworks_utils_timer_debounce.default)(handleMutation, detectionDelay);
30
+ const observer = new MutationObserver(debouncedHandleMutation);
31
+ observer.observe(root, {
32
+ childList: true,
33
+ subtree: true
34
+ });
35
+ return () => {
36
+ observer.disconnect();
37
+ };
38
+ }, [
39
+ query,
40
+ rootRef.current,
41
+ detectionDelay,
42
+ preserveOnceReady
43
+ ]), (0, react.useCallback)(() => {
44
+ if (!query) return true;
45
+ return (rootRef.current ?? document).querySelector(query) != null;
46
+ }, [query, rootRef.current]), (0, react.useCallback)(() => !query || initialCondition, [query, initialCondition])), {
47
+ preserveOnceReady,
48
+ ...opts
49
+ });
50
+ }
51
+
52
+ //#endregion
53
+ module.exports = useDeferUntilRender;
@@ -0,0 +1,14 @@
1
+ import { DeferRenderingResult } from "../types.cjs";
2
+ import { UseDeferUntilRenderOptions } from "./types.cjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilRender/useDeferUntilRender.d.ts
6
+ /**
7
+ * セレクターに一致するエレメントが描画されるまで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param query クエリセレクター(例: '.my-class')(null/undefinedの場合は待たずに描画する)
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready')と状態に応じたノード
12
+ */
13
+ declare function useDeferUntilRender<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, query: string | null | undefined, options?: UseDeferUntilRenderOptions<P>): DeferRenderingResult<T | P>;
14
+ export = useDeferUntilRender;
@@ -0,0 +1,15 @@
1
+ import { DeferRenderingResult } from "../types.mjs";
2
+ import { UseDeferUntilRenderOptions } from "./types.mjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilRender/useDeferUntilRender.d.ts
6
+ /**
7
+ * セレクターに一致するエレメントが描画されるまで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param query クエリセレクター(例: '.my-class')(null/undefinedの場合は待たずに描画する)
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready')と状態に応じたノード
12
+ */
13
+ declare function useDeferUntilRender<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, query: string | null | undefined, options?: UseDeferUntilRenderOptions<P>): DeferRenderingResult<T | P>;
14
+ //#endregion
15
+ export { useDeferUntilRender as default };
@@ -0,0 +1,51 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilTrue from "../useDeferUntilTrue/useDeferUntilTrue.mjs";
4
+ import "../useDeferUntilTrue/index.mjs";
5
+ import { useCallback, useRef, useSyncExternalStore } from "react";
6
+ import debounce from "@fringeworks/utils/timer/debounce";
7
+
8
+ //#region src/useDeferUntilRender/useDeferUntilRender.tsx
9
+ /**
10
+ * セレクターに一致するエレメントが描画されるまで描画を遅延させるhook
11
+ * @param target 描画対象のノード
12
+ * @param query クエリセレクター(例: '.my-class')(null/undefinedの場合は待たずに描画する)
13
+ * @param options オプション
14
+ * @returns state('pending', 'ready')と状態に応じたノード
15
+ */
16
+ function useDeferUntilRender(target, query, options = {}) {
17
+ const defaultRootRef = useRef(null);
18
+ const { rootRef = defaultRootRef, detectionDelay = 100, preserveOnceReady, initialCondition = false, ...opts } = options;
19
+ return useDeferUntilTrue(target, useSyncExternalStore(useCallback((onStoreChange) => {
20
+ if (!query) return () => {};
21
+ const root = rootRef.current ?? document;
22
+ if (preserveOnceReady && root.querySelector(query)) return () => {};
23
+ const handleMutation = () => {
24
+ onStoreChange();
25
+ if (preserveOnceReady && root.querySelector(query)) observer.disconnect();
26
+ };
27
+ const debouncedHandleMutation = debounce(handleMutation, detectionDelay);
28
+ const observer = new MutationObserver(debouncedHandleMutation);
29
+ observer.observe(root, {
30
+ childList: true,
31
+ subtree: true
32
+ });
33
+ return () => {
34
+ observer.disconnect();
35
+ };
36
+ }, [
37
+ query,
38
+ rootRef.current,
39
+ detectionDelay,
40
+ preserveOnceReady
41
+ ]), useCallback(() => {
42
+ if (!query) return true;
43
+ return (rootRef.current ?? document).querySelector(query) != null;
44
+ }, [query, rootRef.current]), useCallback(() => !query || initialCondition, [query, initialCondition])), {
45
+ preserveOnceReady,
46
+ ...opts
47
+ });
48
+ }
49
+
50
+ //#endregion
51
+ export { useDeferUntilRender as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ const require_useDeferUntilResolved_useDeferUntilResolved = require('./useDeferUntilResolved.cjs');
4
+
5
+ module.exports = require_useDeferUntilResolved_useDeferUntilResolved;
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilResolvedOptions } from "./types.cjs";
2
+ import useDeferUntilResolved from "./useDeferUntilResolved.cjs";
3
+ export { type UseDeferUntilResolvedOptions, useDeferUntilResolved as default };
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilResolvedOptions } from "./types.mjs";
2
+ import useDeferUntilResolved from "./useDeferUntilResolved.mjs";
3
+ export { type UseDeferUntilResolvedOptions, useDeferUntilResolved as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilResolved from "./useDeferUntilResolved.mjs";
4
+
5
+ export { useDeferUntilResolved as default };
File without changes
@@ -0,0 +1,7 @@
1
+ import { UseDeferUntilReadyOptions } from "../useDeferUntilReady/types.cjs";
2
+ import { ReactNode } from "react";
3
+
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 };
@@ -0,0 +1,7 @@
1
+ import { UseDeferUntilReadyOptions } from "../useDeferUntilReady/types.mjs";
2
+ import { ReactNode } from "react";
3
+
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 };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,21 @@
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
+ let react = require("react");
7
+
8
+ //#region src/useDeferUntilResolved/useDeferUntilResolved.tsx
9
+ /**
10
+ * Promiseの完了まで描画を遅延させるhook
11
+ * @param target 描画対象のノード
12
+ * @param promise プロミス(null/undefinedの場合は待たずに描画する)
13
+ * @param options オプション
14
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
15
+ */
16
+ function useDeferUntilResolved(target, promise, options = {}) {
17
+ return require_useDeferUntilReady_useDeferUntilReady(target, require__usePromiseState((0, react.useMemo)(() => promise ? () => promise : null, [promise])), options);
18
+ }
19
+
20
+ //#endregion
21
+ module.exports = useDeferUntilResolved;
@@ -0,0 +1,14 @@
1
+ import { DeferRenderingResult } from "../types.cjs";
2
+ import { UseDeferUntilResolvedOptions } from "./types.cjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilResolved/useDeferUntilResolved.d.ts
6
+ /**
7
+ * Promiseの完了まで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param promise プロミス(null/undefinedの場合は待たずに描画する)
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
12
+ */
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
+ export = useDeferUntilResolved;
@@ -0,0 +1,15 @@
1
+ import { DeferRenderingResult } from "../types.mjs";
2
+ import { UseDeferUntilResolvedOptions } from "./types.mjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilResolved/useDeferUntilResolved.d.ts
6
+ /**
7
+ * Promiseの完了まで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param promise プロミス(null/undefinedの場合は待たずに描画する)
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
12
+ */
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 };
@@ -0,0 +1,21 @@
1
+ 'use client';
2
+
3
+ import usePromiseState from "../_usePromiseState.mjs";
4
+ import useDeferUntilReady from "../useDeferUntilReady/useDeferUntilReady.mjs";
5
+ import "../useDeferUntilReady/index.mjs";
6
+ import { useMemo } from "react";
7
+
8
+ //#region src/useDeferUntilResolved/useDeferUntilResolved.tsx
9
+ /**
10
+ * Promiseの完了まで描画を遅延させるhook
11
+ * @param target 描画対象のノード
12
+ * @param promise プロミス(null/undefinedの場合は待たずに描画する)
13
+ * @param options オプション
14
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノード
15
+ */
16
+ function useDeferUntilResolved(target, promise, options = {}) {
17
+ return useDeferUntilReady(target, usePromiseState(useMemo(() => promise ? () => promise : null, [promise])), options);
18
+ }
19
+
20
+ //#endregion
21
+ export { useDeferUntilResolved as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ const require_useDeferUntilScrolled_useDeferUntilScrolled = require('./useDeferUntilScrolled.cjs');
4
+
5
+ module.exports = require_useDeferUntilScrolled_useDeferUntilScrolled;
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilScrolledOptions } from "./types.cjs";
2
+ import useDeferUntilScrolled from "./useDeferUntilScrolled.cjs";
3
+ export { type UseDeferUntilScrolledOptions, useDeferUntilScrolled as default };
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilScrolledOptions } from "./types.mjs";
2
+ import useDeferUntilScrolled from "./useDeferUntilScrolled.mjs";
3
+ export { type UseDeferUntilScrolledOptions, useDeferUntilScrolled as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilScrolled from "./useDeferUntilScrolled.mjs";
4
+
5
+ export { useDeferUntilScrolled as default };
File without changes
@@ -0,0 +1,29 @@
1
+ import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.cjs";
2
+ import { ReactNode, RefObject } from "react";
3
+
4
+ //#region src/useDeferUntilScrolled/types.d.ts
5
+ type UseDeferUntilScrolledOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & {
6
+ /**
7
+ * 監視するコンテナーの参照
8
+ */
9
+ rootRef?: RefObject<Element | null | undefined>;
10
+ rootMargin?: number;
11
+ /**
12
+ * スクロールイベントのデバウンス時間(ミリ秒)
13
+ * デフォルトは100ms
14
+ * @default 100
15
+ */
16
+ detectionDelay?: number;
17
+ /**
18
+ * 検知するスクロールの方向
19
+ */
20
+ direction?: 'vertical' | 'horizontal';
21
+ /**
22
+ * SSR時など、実際のスクロール位置を判定できない環境での初期値\
23
+ * デフォルトはfalse
24
+ * @default false
25
+ */
26
+ initialCondition?: boolean;
27
+ };
28
+ //#endregion
29
+ export { UseDeferUntilScrolledOptions };
@@ -0,0 +1,29 @@
1
+ import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.mjs";
2
+ import { ReactNode, RefObject } from "react";
3
+
4
+ //#region src/useDeferUntilScrolled/types.d.ts
5
+ type UseDeferUntilScrolledOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & {
6
+ /**
7
+ * 監視するコンテナーの参照
8
+ */
9
+ rootRef?: RefObject<Element | null | undefined>;
10
+ rootMargin?: number;
11
+ /**
12
+ * スクロールイベントのデバウンス時間(ミリ秒)
13
+ * デフォルトは100ms
14
+ * @default 100
15
+ */
16
+ detectionDelay?: number;
17
+ /**
18
+ * 検知するスクロールの方向
19
+ */
20
+ direction?: 'vertical' | 'horizontal';
21
+ /**
22
+ * SSR時など、実際のスクロール位置を判定できない環境での初期値\
23
+ * デフォルトはfalse
24
+ * @default false
25
+ */
26
+ initialCondition?: boolean;
27
+ };
28
+ //#endregion
29
+ export { UseDeferUntilScrolledOptions };
@@ -0,0 +1 @@
1
+ export { };