@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.
- package/LICENSE +21 -0
- package/README.ja.md +319 -0
- package/README.md +319 -0
- package/_usePromiseState.cjs +42 -0
- package/_usePromiseState.d.cts +11 -0
- package/_usePromiseState.d.mts +12 -0
- package/_usePromiseState.mjs +40 -0
- package/_virtual/_rolldown/runtime.cjs +29 -0
- package/constants.cjs +14 -0
- package/constants.d.cts +15 -0
- package/constants.d.mts +15 -0
- package/constants.mjs +12 -0
- package/index.cjs +46 -0
- package/index.d.cts +31 -0
- package/index.d.mts +31 -0
- package/index.mjs +32 -0
- package/package.json +91 -0
- package/types.cjs +0 -0
- package/types.d.cts +82 -0
- package/types.d.mts +82 -0
- package/types.mjs +1 -0
- package/useDeferUntilAsyncComplete/index.cjs +5 -0
- package/useDeferUntilAsyncComplete/index.d.cts +3 -0
- package/useDeferUntilAsyncComplete/index.d.mts +3 -0
- package/useDeferUntilAsyncComplete/index.mjs +5 -0
- package/useDeferUntilAsyncComplete/types.cjs +0 -0
- package/useDeferUntilAsyncComplete/types.d.cts +7 -0
- package/useDeferUntilAsyncComplete/types.d.mts +7 -0
- package/useDeferUntilAsyncComplete/types.mjs +1 -0
- package/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.cjs +20 -0
- package/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.d.cts +14 -0
- package/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.d.mts +15 -0
- package/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.mjs +20 -0
- package/useDeferUntilBreakpoint/index.cjs +5 -0
- package/useDeferUntilBreakpoint/index.d.cts +3 -0
- package/useDeferUntilBreakpoint/index.d.mts +3 -0
- package/useDeferUntilBreakpoint/index.mjs +5 -0
- package/useDeferUntilBreakpoint/types.cjs +0 -0
- package/useDeferUntilBreakpoint/types.d.cts +20 -0
- package/useDeferUntilBreakpoint/types.d.mts +20 -0
- package/useDeferUntilBreakpoint/types.mjs +1 -0
- package/useDeferUntilBreakpoint/useDeferUntilBreakpoint.cjs +44 -0
- package/useDeferUntilBreakpoint/useDeferUntilBreakpoint.d.cts +14 -0
- package/useDeferUntilBreakpoint/useDeferUntilBreakpoint.d.mts +15 -0
- package/useDeferUntilBreakpoint/useDeferUntilBreakpoint.mjs +42 -0
- package/useDeferUntilCallThreshold/index.cjs +5 -0
- package/useDeferUntilCallThreshold/index.d.cts +3 -0
- package/useDeferUntilCallThreshold/index.d.mts +3 -0
- package/useDeferUntilCallThreshold/index.mjs +5 -0
- package/useDeferUntilCallThreshold/types.cjs +0 -0
- package/useDeferUntilCallThreshold/types.d.cts +23 -0
- package/useDeferUntilCallThreshold/types.d.mts +23 -0
- package/useDeferUntilCallThreshold/types.mjs +1 -0
- package/useDeferUntilCallThreshold/useDeferUntilCallThreshold.cjs +55 -0
- package/useDeferUntilCallThreshold/useDeferUntilCallThreshold.d.cts +13 -0
- package/useDeferUntilCallThreshold/useDeferUntilCallThreshold.d.mts +14 -0
- package/useDeferUntilCallThreshold/useDeferUntilCallThreshold.mjs +55 -0
- package/useDeferUntilChange/index.cjs +5 -0
- package/useDeferUntilChange/index.d.cts +3 -0
- package/useDeferUntilChange/index.d.mts +3 -0
- package/useDeferUntilChange/index.mjs +5 -0
- package/useDeferUntilChange/types.cjs +0 -0
- package/useDeferUntilChange/types.d.cts +7 -0
- package/useDeferUntilChange/types.d.mts +7 -0
- package/useDeferUntilChange/types.mjs +1 -0
- package/useDeferUntilChange/useDeferUntilChange.cjs +30 -0
- package/useDeferUntilChange/useDeferUntilChange.d.cts +14 -0
- package/useDeferUntilChange/useDeferUntilChange.d.mts +15 -0
- package/useDeferUntilChange/useDeferUntilChange.mjs +28 -0
- package/useDeferUntilDate/index.cjs +5 -0
- package/useDeferUntilDate/index.d.cts +3 -0
- package/useDeferUntilDate/index.d.mts +3 -0
- package/useDeferUntilDate/index.mjs +5 -0
- package/useDeferUntilDate/types.cjs +0 -0
- package/useDeferUntilDate/types.d.cts +7 -0
- package/useDeferUntilDate/types.d.mts +7 -0
- package/useDeferUntilDate/types.mjs +1 -0
- package/useDeferUntilDate/useDeferUntilDate.cjs +21 -0
- package/useDeferUntilDate/useDeferUntilDate.d.cts +14 -0
- package/useDeferUntilDate/useDeferUntilDate.d.mts +15 -0
- package/useDeferUntilDate/useDeferUntilDate.mjs +21 -0
- package/useDeferUntilIntersected/index.cjs +5 -0
- package/useDeferUntilIntersected/index.d.cts +3 -0
- package/useDeferUntilIntersected/index.d.mts +3 -0
- package/useDeferUntilIntersected/index.mjs +5 -0
- package/useDeferUntilIntersected/types.cjs +0 -0
- package/useDeferUntilIntersected/types.d.cts +31 -0
- package/useDeferUntilIntersected/types.d.mts +31 -0
- package/useDeferUntilIntersected/types.mjs +1 -0
- package/useDeferUntilIntersected/useDeferUntilIntersected.cjs +60 -0
- package/useDeferUntilIntersected/useDeferUntilIntersected.d.cts +14 -0
- package/useDeferUntilIntersected/useDeferUntilIntersected.d.mts +15 -0
- package/useDeferUntilIntersected/useDeferUntilIntersected.mjs +58 -0
- package/useDeferUntilOnReady/index.cjs +5 -0
- package/useDeferUntilOnReady/index.d.cts +3 -0
- package/useDeferUntilOnReady/index.d.mts +3 -0
- package/useDeferUntilOnReady/index.mjs +5 -0
- package/useDeferUntilOnReady/types.cjs +0 -0
- package/useDeferUntilOnReady/types.d.cts +23 -0
- package/useDeferUntilOnReady/types.d.mts +23 -0
- package/useDeferUntilOnReady/types.mjs +1 -0
- package/useDeferUntilOnReady/useDeferUntilOnReady.cjs +42 -0
- package/useDeferUntilOnReady/useDeferUntilOnReady.d.cts +13 -0
- package/useDeferUntilOnReady/useDeferUntilOnReady.d.mts +14 -0
- package/useDeferUntilOnReady/useDeferUntilOnReady.mjs +40 -0
- package/useDeferUntilReady/index.cjs +5 -0
- package/useDeferUntilReady/index.d.cts +3 -0
- package/useDeferUntilReady/index.d.mts +3 -0
- package/useDeferUntilReady/index.mjs +5 -0
- package/useDeferUntilReady/types.cjs +0 -0
- package/useDeferUntilReady/types.d.cts +7 -0
- package/useDeferUntilReady/types.d.mts +7 -0
- package/useDeferUntilReady/types.mjs +1 -0
- package/useDeferUntilReady/useDeferUntilReady.cjs +60 -0
- package/useDeferUntilReady/useDeferUntilReady.d.cts +15 -0
- package/useDeferUntilReady/useDeferUntilReady.d.mts +16 -0
- package/useDeferUntilReady/useDeferUntilReady.mjs +58 -0
- package/useDeferUntilRender/index.cjs +5 -0
- package/useDeferUntilRender/index.d.cts +3 -0
- package/useDeferUntilRender/index.d.mts +3 -0
- package/useDeferUntilRender/index.mjs +5 -0
- package/useDeferUntilRender/types.cjs +0 -0
- package/useDeferUntilRender/types.d.cts +25 -0
- package/useDeferUntilRender/types.d.mts +25 -0
- package/useDeferUntilRender/types.mjs +1 -0
- package/useDeferUntilRender/useDeferUntilRender.cjs +53 -0
- package/useDeferUntilRender/useDeferUntilRender.d.cts +14 -0
- package/useDeferUntilRender/useDeferUntilRender.d.mts +15 -0
- package/useDeferUntilRender/useDeferUntilRender.mjs +51 -0
- package/useDeferUntilResolved/index.cjs +5 -0
- package/useDeferUntilResolved/index.d.cts +3 -0
- package/useDeferUntilResolved/index.d.mts +3 -0
- package/useDeferUntilResolved/index.mjs +5 -0
- package/useDeferUntilResolved/types.cjs +0 -0
- package/useDeferUntilResolved/types.d.cts +7 -0
- package/useDeferUntilResolved/types.d.mts +7 -0
- package/useDeferUntilResolved/types.mjs +1 -0
- package/useDeferUntilResolved/useDeferUntilResolved.cjs +21 -0
- package/useDeferUntilResolved/useDeferUntilResolved.d.cts +14 -0
- package/useDeferUntilResolved/useDeferUntilResolved.d.mts +15 -0
- package/useDeferUntilResolved/useDeferUntilResolved.mjs +21 -0
- package/useDeferUntilScrolled/index.cjs +5 -0
- package/useDeferUntilScrolled/index.d.cts +3 -0
- package/useDeferUntilScrolled/index.d.mts +3 -0
- package/useDeferUntilScrolled/index.mjs +5 -0
- package/useDeferUntilScrolled/types.cjs +0 -0
- package/useDeferUntilScrolled/types.d.cts +29 -0
- package/useDeferUntilScrolled/types.d.mts +29 -0
- package/useDeferUntilScrolled/types.mjs +1 -0
- package/useDeferUntilScrolled/useDeferUntilScrolled.cjs +94 -0
- package/useDeferUntilScrolled/useDeferUntilScrolled.d.cts +14 -0
- package/useDeferUntilScrolled/useDeferUntilScrolled.d.mts +15 -0
- package/useDeferUntilScrolled/useDeferUntilScrolled.mjs +91 -0
- package/useDeferUntilTimeout/index.cjs +5 -0
- package/useDeferUntilTimeout/index.d.cts +3 -0
- package/useDeferUntilTimeout/index.d.mts +3 -0
- package/useDeferUntilTimeout/index.mjs +5 -0
- package/useDeferUntilTimeout/types.cjs +0 -0
- package/useDeferUntilTimeout/types.d.cts +7 -0
- package/useDeferUntilTimeout/types.d.mts +7 -0
- package/useDeferUntilTimeout/types.mjs +1 -0
- package/useDeferUntilTimeout/useDeferUntilTimeout.cjs +40 -0
- package/useDeferUntilTimeout/useDeferUntilTimeout.d.cts +14 -0
- package/useDeferUntilTimeout/useDeferUntilTimeout.d.mts +15 -0
- package/useDeferUntilTimeout/useDeferUntilTimeout.mjs +37 -0
- package/useDeferUntilTrue/index.cjs +5 -0
- package/useDeferUntilTrue/index.d.cts +3 -0
- package/useDeferUntilTrue/index.d.mts +3 -0
- package/useDeferUntilTrue/index.mjs +5 -0
- package/useDeferUntilTrue/types.cjs +0 -0
- package/useDeferUntilTrue/types.d.cts +7 -0
- package/useDeferUntilTrue/types.d.mts +7 -0
- package/useDeferUntilTrue/types.mjs +1 -0
- package/useDeferUntilTrue/useDeferUntilTrue.cjs +20 -0
- package/useDeferUntilTrue/useDeferUntilTrue.d.cts +14 -0
- package/useDeferUntilTrue/useDeferUntilTrue.d.mts +15 -0
- package/useDeferUntilTrue/useDeferUntilTrue.mjs +20 -0
- package/useDeferUntilWebFontReady/index.cjs +5 -0
- package/useDeferUntilWebFontReady/index.d.cts +3 -0
- package/useDeferUntilWebFontReady/index.d.mts +3 -0
- package/useDeferUntilWebFontReady/index.mjs +5 -0
- package/useDeferUntilWebFontReady/types.cjs +0 -0
- package/useDeferUntilWebFontReady/types.d.cts +49 -0
- package/useDeferUntilWebFontReady/types.d.mts +49 -0
- package/useDeferUntilWebFontReady/types.mjs +1 -0
- package/useDeferUntilWebFontReady/useDeferUntilWebFontReady.cjs +93 -0
- package/useDeferUntilWebFontReady/useDeferUntilWebFontReady.d.cts +16 -0
- package/useDeferUntilWebFontReady/useDeferUntilWebFontReady.d.mts +17 -0
- package/useDeferUntilWebFontReady/useDeferUntilWebFontReady.mjs +90 -0
|
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 };
|
|
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 };
|
|
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 };
|
|
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 { };
|