@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,3 @@
1
+ import { UseDeferUntilDateOptions } from "./types.cjs";
2
+ import useDeferUntilDate from "./useDeferUntilDate.cjs";
3
+ export { type UseDeferUntilDateOptions, useDeferUntilDate as default };
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilDateOptions } from "./types.mjs";
2
+ import useDeferUntilDate from "./useDeferUntilDate.mjs";
3
+ export { type UseDeferUntilDateOptions, useDeferUntilDate as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilDate from "./useDeferUntilDate.mjs";
4
+
5
+ export { useDeferUntilDate as default };
File without changes
@@ -0,0 +1,7 @@
1
+ import { UseDeferUntilTimeoutOptions } from "../useDeferUntilTimeout/types.cjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/useDeferUntilDate/types.d.ts
5
+ type UseDeferUntilDateOptions<P extends ReactNode = ReactNode> = UseDeferUntilTimeoutOptions<P>;
6
+ //#endregion
7
+ export { UseDeferUntilDateOptions };
@@ -0,0 +1,7 @@
1
+ import { UseDeferUntilTimeoutOptions } from "../useDeferUntilTimeout/types.mjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/useDeferUntilDate/types.d.ts
5
+ type UseDeferUntilDateOptions<P extends ReactNode = ReactNode> = UseDeferUntilTimeoutOptions<P>;
6
+ //#endregion
7
+ export { UseDeferUntilDateOptions };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,21 @@
1
+ 'use client';
2
+
3
+ const require_useDeferUntilTimeout_useDeferUntilTimeout = require('../useDeferUntilTimeout/useDeferUntilTimeout.cjs');
4
+ require('../useDeferUntilTimeout/index.cjs');
5
+ let react = require("react");
6
+
7
+ //#region src/useDeferUntilDate/useDeferUntilDate.tsx
8
+ /**
9
+ * 指定の日時まで描画を遅延させるhook
10
+ * @param target 描画対象のノード
11
+ * @param date 描画する日時(null/undefinedの場合は待たずに描画する)
12
+ * @param options オプション
13
+ * @returns state('pending', 'ready')と状態に応じたノード
14
+ */
15
+ function useDeferUntilDate(target, date, options = {}) {
16
+ const time = date ? date.getTime() : null;
17
+ return require_useDeferUntilTimeout_useDeferUntilTimeout(target, (0, react.useMemo)(() => time != null ? time - Date.now() : null, [time]), options);
18
+ }
19
+
20
+ //#endregion
21
+ module.exports = useDeferUntilDate;
@@ -0,0 +1,14 @@
1
+ import { DeferRenderingResult } from "../types.cjs";
2
+ import { UseDeferUntilDateOptions } from "./types.cjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilDate/useDeferUntilDate.d.ts
6
+ /**
7
+ * 指定の日時まで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param date 描画する日時(null/undefinedの場合は待たずに描画する)
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready')と状態に応じたノード
12
+ */
13
+ declare function useDeferUntilDate<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, date: Date | null | undefined, options?: UseDeferUntilDateOptions<P>): DeferRenderingResult<T | P>;
14
+ export = useDeferUntilDate;
@@ -0,0 +1,15 @@
1
+ import { DeferRenderingResult } from "../types.mjs";
2
+ import { UseDeferUntilDateOptions } from "./types.mjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilDate/useDeferUntilDate.d.ts
6
+ /**
7
+ * 指定の日時まで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param date 描画する日時(null/undefinedの場合は待たずに描画する)
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready')と状態に応じたノード
12
+ */
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 };
@@ -0,0 +1,21 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilTimeout from "../useDeferUntilTimeout/useDeferUntilTimeout.mjs";
4
+ import "../useDeferUntilTimeout/index.mjs";
5
+ import { useMemo } from "react";
6
+
7
+ //#region src/useDeferUntilDate/useDeferUntilDate.tsx
8
+ /**
9
+ * 指定の日時まで描画を遅延させるhook
10
+ * @param target 描画対象のノード
11
+ * @param date 描画する日時(null/undefinedの場合は待たずに描画する)
12
+ * @param options オプション
13
+ * @returns state('pending', 'ready')と状態に応じたノード
14
+ */
15
+ function useDeferUntilDate(target, date, options = {}) {
16
+ const time = date ? date.getTime() : null;
17
+ return useDeferUntilTimeout(target, useMemo(() => time != null ? time - Date.now() : null, [time]), options);
18
+ }
19
+
20
+ //#endregion
21
+ export { useDeferUntilDate as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ const require_useDeferUntilIntersected_useDeferUntilIntersected = require('./useDeferUntilIntersected.cjs');
4
+
5
+ module.exports = require_useDeferUntilIntersected_useDeferUntilIntersected;
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilIntersectedOptions } from "./types.cjs";
2
+ import useDeferUntilIntersected from "./useDeferUntilIntersected.cjs";
3
+ export { type UseDeferUntilIntersectedOptions, useDeferUntilIntersected as default };
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilIntersectedOptions } from "./types.mjs";
2
+ import useDeferUntilIntersected from "./useDeferUntilIntersected.mjs";
3
+ export { type UseDeferUntilIntersectedOptions, useDeferUntilIntersected as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilIntersected from "./useDeferUntilIntersected.mjs";
4
+
5
+ export { useDeferUntilIntersected as default };
File without changes
@@ -0,0 +1,31 @@
1
+ import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.cjs";
2
+ import { CSSProperties, ReactNode, RefObject } from "react";
3
+
4
+ //#region src/useDeferUntilIntersected/types.d.ts
5
+ type UseDeferUntilIntersectedOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & IntersectionObserverInit & {
6
+ /**
7
+ * 監視するコンテナーの参照
8
+ * デフォルトはnull(ビューポート)
9
+ */
10
+ rootRef?: RefObject<Element | null | undefined>;
11
+ /**
12
+ * ビューポートとの交差判定をする基準になるマージン\
13
+ * CSSのmarginと同じ形式で指定\
14
+ * 未指定の場合はビューポートの端で判定される
15
+ */
16
+ rootMargin?: CSSProperties['margin'];
17
+ /**
18
+ * ビューポートに基準となる要素がどの程度の割合入ったら描画するか(0~1)\
19
+ * デフォルトは0.1(10%)
20
+ * @default 0.1
21
+ */
22
+ threshold?: number;
23
+ /**
24
+ * SSR時など、実際の交差状態を判定できない環境での初期値\
25
+ * デフォルトはfalse
26
+ * @default false
27
+ */
28
+ initialCondition?: boolean;
29
+ };
30
+ //#endregion
31
+ export { UseDeferUntilIntersectedOptions };
@@ -0,0 +1,31 @@
1
+ import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.mjs";
2
+ import { CSSProperties, ReactNode, RefObject } from "react";
3
+
4
+ //#region src/useDeferUntilIntersected/types.d.ts
5
+ type UseDeferUntilIntersectedOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & IntersectionObserverInit & {
6
+ /**
7
+ * 監視するコンテナーの参照
8
+ * デフォルトはnull(ビューポート)
9
+ */
10
+ rootRef?: RefObject<Element | null | undefined>;
11
+ /**
12
+ * ビューポートとの交差判定をする基準になるマージン\
13
+ * CSSのmarginと同じ形式で指定\
14
+ * 未指定の場合はビューポートの端で判定される
15
+ */
16
+ rootMargin?: CSSProperties['margin'];
17
+ /**
18
+ * ビューポートに基準となる要素がどの程度の割合入ったら描画するか(0~1)\
19
+ * デフォルトは0.1(10%)
20
+ * @default 0.1
21
+ */
22
+ threshold?: number;
23
+ /**
24
+ * SSR時など、実際の交差状態を判定できない環境での初期値\
25
+ * デフォルトはfalse
26
+ * @default false
27
+ */
28
+ initialCondition?: boolean;
29
+ };
30
+ //#endregion
31
+ export { UseDeferUntilIntersectedOptions };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,60 @@
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_string_unit = require("@fringeworks/utils/string/unit");
8
+ _fringeworks_utils_string_unit = require_runtime.__toESM(_fringeworks_utils_string_unit, 1);
9
+
10
+ //#region src/useDeferUntilIntersected/useDeferUntilIntersected.tsx
11
+ /**
12
+ * 基準となる要素がビューポートに入るまで描画を遅延させるhook
13
+ * @param target 描画対象のノード
14
+ * @param elementRef 基準となる要素の参照(参照自体がnull/undefinedの場合は待たずに描画する)
15
+ * @param options オプション
16
+ * @returns state('pending', 'ready')と状態に応じたノード
17
+ */
18
+ function useDeferUntilIntersected(target, elementRef, options = {}) {
19
+ const defaultRootRef = (0, react.useRef)(null);
20
+ const { rootRef = defaultRootRef, rootMargin, threshold = .1, initialCondition = false, ...opts } = options;
21
+ const snapshotRef = (0, react.useRef)(initialCondition);
22
+ const observedElementRef = (0, react.useRef)(null);
23
+ return require_useDeferUntilTrue_useDeferUntilTrue(target, (0, react.useSyncExternalStore)((0, react.useCallback)((onStoreChange) => {
24
+ const element = elementRef?.current;
25
+ const container = rootRef.current;
26
+ if (observedElementRef.current !== element) {
27
+ observedElementRef.current = element;
28
+ if (snapshotRef.current !== initialCondition) {
29
+ snapshotRef.current = initialCondition;
30
+ onStoreChange();
31
+ }
32
+ }
33
+ if (!element) return () => {};
34
+ const observer = new IntersectionObserver((entries) => {
35
+ const entry = entries[0];
36
+ if (snapshotRef.current !== entry.isIntersecting) {
37
+ snapshotRef.current = entry.isIntersecting;
38
+ onStoreChange();
39
+ }
40
+ }, {
41
+ root: container,
42
+ rootMargin: (0, _fringeworks_utils_string_unit.default)(rootMargin),
43
+ threshold
44
+ });
45
+ observer.observe(element);
46
+ return () => {
47
+ observer.disconnect();
48
+ };
49
+ }, [
50
+ elementRef,
51
+ elementRef?.current,
52
+ rootRef.current,
53
+ threshold,
54
+ rootMargin,
55
+ initialCondition
56
+ ]), (0, react.useCallback)(() => !elementRef || snapshotRef.current, [elementRef]), (0, react.useCallback)(() => !elementRef || initialCondition, [elementRef, initialCondition])), opts);
57
+ }
58
+
59
+ //#endregion
60
+ module.exports = useDeferUntilIntersected;
@@ -0,0 +1,14 @@
1
+ import { DeferRenderingResult } from "../types.cjs";
2
+ import { UseDeferUntilIntersectedOptions } from "./types.cjs";
3
+ import { ReactNode, RefObject } from "react";
4
+
5
+ //#region src/useDeferUntilIntersected/useDeferUntilIntersected.d.ts
6
+ /**
7
+ * 基準となる要素がビューポートに入るまで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param elementRef 基準となる要素の参照(参照自体がnull/undefinedの場合は待たずに描画する)
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready')と状態に応じたノード
12
+ */
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
+ export = useDeferUntilIntersected;
@@ -0,0 +1,15 @@
1
+ import { DeferRenderingResult } from "../types.mjs";
2
+ import { UseDeferUntilIntersectedOptions } from "./types.mjs";
3
+ import { ReactNode, RefObject } from "react";
4
+
5
+ //#region src/useDeferUntilIntersected/useDeferUntilIntersected.d.ts
6
+ /**
7
+ * 基準となる要素がビューポートに入るまで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param elementRef 基準となる要素の参照(参照自体がnull/undefinedの場合は待たずに描画する)
10
+ * @param options オプション
11
+ * @returns state('pending', 'ready')と状態に応じたノード
12
+ */
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 };
@@ -0,0 +1,58 @@
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 unit from "@fringeworks/utils/string/unit";
7
+
8
+ //#region src/useDeferUntilIntersected/useDeferUntilIntersected.tsx
9
+ /**
10
+ * 基準となる要素がビューポートに入るまで描画を遅延させるhook
11
+ * @param target 描画対象のノード
12
+ * @param elementRef 基準となる要素の参照(参照自体がnull/undefinedの場合は待たずに描画する)
13
+ * @param options オプション
14
+ * @returns state('pending', 'ready')と状態に応じたノード
15
+ */
16
+ function useDeferUntilIntersected(target, elementRef, options = {}) {
17
+ const defaultRootRef = useRef(null);
18
+ const { rootRef = defaultRootRef, rootMargin, threshold = .1, initialCondition = false, ...opts } = options;
19
+ const snapshotRef = useRef(initialCondition);
20
+ const observedElementRef = useRef(null);
21
+ return useDeferUntilTrue(target, useSyncExternalStore(useCallback((onStoreChange) => {
22
+ const element = elementRef?.current;
23
+ const container = rootRef.current;
24
+ if (observedElementRef.current !== element) {
25
+ observedElementRef.current = element;
26
+ if (snapshotRef.current !== initialCondition) {
27
+ snapshotRef.current = initialCondition;
28
+ onStoreChange();
29
+ }
30
+ }
31
+ if (!element) return () => {};
32
+ const observer = new IntersectionObserver((entries) => {
33
+ const entry = entries[0];
34
+ if (snapshotRef.current !== entry.isIntersecting) {
35
+ snapshotRef.current = entry.isIntersecting;
36
+ onStoreChange();
37
+ }
38
+ }, {
39
+ root: container,
40
+ rootMargin: unit(rootMargin),
41
+ threshold
42
+ });
43
+ observer.observe(element);
44
+ return () => {
45
+ observer.disconnect();
46
+ };
47
+ }, [
48
+ elementRef,
49
+ elementRef?.current,
50
+ rootRef.current,
51
+ threshold,
52
+ rootMargin,
53
+ initialCondition
54
+ ]), useCallback(() => !elementRef || snapshotRef.current, [elementRef]), useCallback(() => !elementRef || initialCondition, [elementRef, initialCondition])), opts);
55
+ }
56
+
57
+ //#endregion
58
+ export { useDeferUntilIntersected as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ const require_useDeferUntilOnReady_useDeferUntilOnReady = require('./useDeferUntilOnReady.cjs');
4
+
5
+ module.exports = require_useDeferUntilOnReady_useDeferUntilOnReady;
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilOnReadyOptions } from "./types.cjs";
2
+ import useDeferUntilOnReady from "./useDeferUntilOnReady.cjs";
3
+ export { type UseDeferUntilOnReadyOptions, useDeferUntilOnReady as default };
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilOnReadyOptions } from "./types.mjs";
2
+ import useDeferUntilOnReady from "./useDeferUntilOnReady.mjs";
3
+ export { type UseDeferUntilOnReadyOptions, useDeferUntilOnReady as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilOnReady from "./useDeferUntilOnReady.mjs";
4
+
5
+ export { useDeferUntilOnReady as default };
File without changes
@@ -0,0 +1,23 @@
1
+ import { UseDeferUntilReadyOptions } from "../useDeferUntilReady/types.cjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/useDeferUntilOnReady/types.d.ts
5
+ type UseDeferUntilOnReadyOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilReadyOptions<P, E> & {
6
+ /**
7
+ * onReadyのデバウンス時間(ミリ秒)
8
+ * 未指定の場合は即時処理
9
+ */
10
+ onReadyDelay?: number;
11
+ /**
12
+ * onFallbackのデバウンス時間(ミリ秒)
13
+ * 未指定の場合は即時処理
14
+ */
15
+ onFallbackDelay?: number;
16
+ /**
17
+ * onPendingのデバウンス時間(ミリ秒)
18
+ * 未指定の場合は即時処理
19
+ */
20
+ onPendingDelay?: number;
21
+ };
22
+ //#endregion
23
+ export { UseDeferUntilOnReadyOptions };
@@ -0,0 +1,23 @@
1
+ import { UseDeferUntilReadyOptions } from "../useDeferUntilReady/types.mjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/useDeferUntilOnReady/types.d.ts
5
+ type UseDeferUntilOnReadyOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilReadyOptions<P, E> & {
6
+ /**
7
+ * onReadyのデバウンス時間(ミリ秒)
8
+ * 未指定の場合は即時処理
9
+ */
10
+ onReadyDelay?: number;
11
+ /**
12
+ * onFallbackのデバウンス時間(ミリ秒)
13
+ * 未指定の場合は即時処理
14
+ */
15
+ onFallbackDelay?: number;
16
+ /**
17
+ * onPendingのデバウンス時間(ミリ秒)
18
+ * 未指定の場合は即時処理
19
+ */
20
+ onPendingDelay?: number;
21
+ };
22
+ //#endregion
23
+ export { UseDeferUntilOnReadyOptions };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+
3
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
4
+ const require_constants = require('../constants.cjs');
5
+ const require_useDeferUntilReady_useDeferUntilReady = require('../useDeferUntilReady/useDeferUntilReady.cjs');
6
+ require('../useDeferUntilReady/index.cjs');
7
+ let react = require("react");
8
+ let _fringeworks_utils_timer_debounce = require("@fringeworks/utils/timer/debounce");
9
+ _fringeworks_utils_timer_debounce = require_runtime.__toESM(_fringeworks_utils_timer_debounce, 1);
10
+
11
+ //#region src/useDeferUntilOnReady/useDeferUntilOnReady.tsx
12
+ /**
13
+ * 戻り値として返す`onReady`が実行されるまで描画を遅延させるhook
14
+ * @param target 描画対象のノード
15
+ * @param options オプション
16
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノードと状態変更用のハンドラー
17
+ */
18
+ function useDeferUntilOnReady(target, options = {}) {
19
+ const { onReadyDelay, onFallbackDelay, onPendingDelay, ...opts } = options;
20
+ const [state, setState] = (0, react.useState)(require_constants.RenderingState.pending);
21
+ const onReady = (0, react.useMemo)(() => {
22
+ const fn = () => setState(require_constants.RenderingState.ready);
23
+ return onReadyDelay != null ? (0, _fringeworks_utils_timer_debounce.default)(fn, onReadyDelay) : fn;
24
+ }, [onReadyDelay]);
25
+ const onFallback = (0, react.useMemo)(() => {
26
+ const fn = () => setState(require_constants.RenderingState.fallback);
27
+ return onFallbackDelay != null ? (0, _fringeworks_utils_timer_debounce.default)(fn, onFallbackDelay) : fn;
28
+ }, [onFallbackDelay]);
29
+ const onPending = (0, react.useMemo)(() => {
30
+ const fn = () => setState(require_constants.RenderingState.pending);
31
+ return onPendingDelay != null ? (0, _fringeworks_utils_timer_debounce.default)(fn, onPendingDelay) : fn;
32
+ }, [onPendingDelay]);
33
+ return {
34
+ ...require_useDeferUntilReady_useDeferUntilReady(target, state, opts),
35
+ onPending,
36
+ onFallback,
37
+ onReady
38
+ };
39
+ }
40
+
41
+ //#endregion
42
+ module.exports = useDeferUntilOnReady;
@@ -0,0 +1,13 @@
1
+ import { DeferRenderingWithHandlersResult } from "../types.cjs";
2
+ import { UseDeferUntilOnReadyOptions } from "./types.cjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilOnReady/useDeferUntilOnReady.d.ts
6
+ /**
7
+ * 戻り値として返す`onReady`が実行されるまで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param options オプション
10
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノードと状態変更用のハンドラー
11
+ */
12
+ declare function useDeferUntilOnReady<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, options?: UseDeferUntilOnReadyOptions<P, E>): DeferRenderingWithHandlersResult<T | P | E>;
13
+ export = useDeferUntilOnReady;
@@ -0,0 +1,14 @@
1
+ import { DeferRenderingWithHandlersResult } from "../types.mjs";
2
+ import { UseDeferUntilOnReadyOptions } from "./types.mjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/useDeferUntilOnReady/useDeferUntilOnReady.d.ts
6
+ /**
7
+ * 戻り値として返す`onReady`が実行されるまで描画を遅延させるhook
8
+ * @param target 描画対象のノード
9
+ * @param options オプション
10
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノードと状態変更用のハンドラー
11
+ */
12
+ declare function useDeferUntilOnReady<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, options?: UseDeferUntilOnReadyOptions<P, E>): DeferRenderingWithHandlersResult<T | P | E>;
13
+ //#endregion
14
+ export { useDeferUntilOnReady as default };
@@ -0,0 +1,40 @@
1
+ 'use client';
2
+
3
+ import { RenderingState } from "../constants.mjs";
4
+ import useDeferUntilReady from "../useDeferUntilReady/useDeferUntilReady.mjs";
5
+ import "../useDeferUntilReady/index.mjs";
6
+ import { useMemo, useState } from "react";
7
+ import debounce from "@fringeworks/utils/timer/debounce";
8
+
9
+ //#region src/useDeferUntilOnReady/useDeferUntilOnReady.tsx
10
+ /**
11
+ * 戻り値として返す`onReady`が実行されるまで描画を遅延させるhook
12
+ * @param target 描画対象のノード
13
+ * @param options オプション
14
+ * @returns state('pending', 'ready', 'fallback')と状態に応じたノードと状態変更用のハンドラー
15
+ */
16
+ function useDeferUntilOnReady(target, options = {}) {
17
+ const { onReadyDelay, onFallbackDelay, onPendingDelay, ...opts } = options;
18
+ const [state, setState] = useState(RenderingState.pending);
19
+ const onReady = useMemo(() => {
20
+ const fn = () => setState(RenderingState.ready);
21
+ return onReadyDelay != null ? debounce(fn, onReadyDelay) : fn;
22
+ }, [onReadyDelay]);
23
+ const onFallback = useMemo(() => {
24
+ const fn = () => setState(RenderingState.fallback);
25
+ return onFallbackDelay != null ? debounce(fn, onFallbackDelay) : fn;
26
+ }, [onFallbackDelay]);
27
+ const onPending = useMemo(() => {
28
+ const fn = () => setState(RenderingState.pending);
29
+ return onPendingDelay != null ? debounce(fn, onPendingDelay) : fn;
30
+ }, [onPendingDelay]);
31
+ return {
32
+ ...useDeferUntilReady(target, state, opts),
33
+ onPending,
34
+ onFallback,
35
+ onReady
36
+ };
37
+ }
38
+
39
+ //#endregion
40
+ export { useDeferUntilOnReady as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ const require_useDeferUntilReady_useDeferUntilReady = require('./useDeferUntilReady.cjs');
4
+
5
+ module.exports = require_useDeferUntilReady_useDeferUntilReady;
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilReadyOptions } from "./types.cjs";
2
+ import useDeferUntilReady from "./useDeferUntilReady.cjs";
3
+ export { type UseDeferUntilReadyOptions, useDeferUntilReady as default };
@@ -0,0 +1,3 @@
1
+ import { UseDeferUntilReadyOptions } from "./types.mjs";
2
+ import useDeferUntilReady from "./useDeferUntilReady.mjs";
3
+ export { type UseDeferUntilReadyOptions, useDeferUntilReady as default };
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ import useDeferUntilReady from "./useDeferUntilReady.mjs";
4
+
5
+ export { useDeferUntilReady as default };
File without changes
@@ -0,0 +1,7 @@
1
+ import { DeferRenderingWithFallbackOptionsBase } from "../types.cjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/useDeferUntilReady/types.d.ts
5
+ type UseDeferUntilReadyOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = DeferRenderingWithFallbackOptionsBase<P, E>;
6
+ //#endregion
7
+ export { UseDeferUntilReadyOptions };
@@ -0,0 +1,7 @@
1
+ import { DeferRenderingWithFallbackOptionsBase } from "../types.mjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/useDeferUntilReady/types.d.ts
5
+ type UseDeferUntilReadyOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = DeferRenderingWithFallbackOptionsBase<P, E>;
6
+ //#endregion
7
+ export { UseDeferUntilReadyOptions };
@@ -0,0 +1 @@
1
+ export { };