@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
const require__usePromiseState = require('../_usePromiseState.cjs');
|
|
4
|
+
const require_useDeferUntilReady_useDeferUntilReady = require('../useDeferUntilReady/useDeferUntilReady.cjs');
|
|
5
|
+
require('../useDeferUntilReady/index.cjs');
|
|
6
|
+
|
|
7
|
+
//#region src/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.tsx
|
|
8
|
+
/**
|
|
9
|
+
* 非同期関数の処理の完了まで描画を遅延させるhook
|
|
10
|
+
* @param target 描画対象のノード
|
|
11
|
+
* @param asyncFn 非同期関数(null/undefinedの場合は待たずに描画する)
|
|
12
|
+
* @param options オプション
|
|
13
|
+
* @returns state('pending', 'ready', 'fallback')と状態に応じたノード
|
|
14
|
+
*/
|
|
15
|
+
function useDeferUntilAsyncComplete(target, asyncFn, options = {}) {
|
|
16
|
+
return require_useDeferUntilReady_useDeferUntilReady(target, require__usePromiseState(asyncFn), options);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
module.exports = useDeferUntilAsyncComplete;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DeferRenderingResult } from "../types.cjs";
|
|
2
|
+
import { UseDeferUntilAsyncCompleteOptions } from "./types.cjs";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* 非同期関数の処理の完了まで描画を遅延させるhook
|
|
8
|
+
* @param target 描画対象のノード
|
|
9
|
+
* @param asyncFn 非同期関数(null/undefinedの場合は待たずに描画する)
|
|
10
|
+
* @param options オプション
|
|
11
|
+
* @returns state('pending', 'ready', 'fallback')と状態に応じたノード
|
|
12
|
+
*/
|
|
13
|
+
declare function useDeferUntilAsyncComplete<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, asyncFn: (() => Promise<void>) | null | undefined, options?: UseDeferUntilAsyncCompleteOptions<P, E>): DeferRenderingResult<T | P | E>;
|
|
14
|
+
export = useDeferUntilAsyncComplete;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DeferRenderingResult } from "../types.mjs";
|
|
2
|
+
import { UseDeferUntilAsyncCompleteOptions } from "./types.mjs";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* 非同期関数の処理の完了まで描画を遅延させるhook
|
|
8
|
+
* @param target 描画対象のノード
|
|
9
|
+
* @param asyncFn 非同期関数(null/undefinedの場合は待たずに描画する)
|
|
10
|
+
* @param options オプション
|
|
11
|
+
* @returns state('pending', 'ready', 'fallback')と状態に応じたノード
|
|
12
|
+
*/
|
|
13
|
+
declare function useDeferUntilAsyncComplete<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, asyncFn: (() => Promise<void>) | null | undefined, options?: UseDeferUntilAsyncCompleteOptions<P, E>): DeferRenderingResult<T | P | E>;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { useDeferUntilAsyncComplete as default };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import usePromiseState from "../_usePromiseState.mjs";
|
|
4
|
+
import useDeferUntilReady from "../useDeferUntilReady/useDeferUntilReady.mjs";
|
|
5
|
+
import "../useDeferUntilReady/index.mjs";
|
|
6
|
+
|
|
7
|
+
//#region src/useDeferUntilAsyncComplete/useDeferUntilAsyncComplete.tsx
|
|
8
|
+
/**
|
|
9
|
+
* 非同期関数の処理の完了まで描画を遅延させるhook
|
|
10
|
+
* @param target 描画対象のノード
|
|
11
|
+
* @param asyncFn 非同期関数(null/undefinedの場合は待たずに描画する)
|
|
12
|
+
* @param options オプション
|
|
13
|
+
* @returns state('pending', 'ready', 'fallback')と状態に応じたノード
|
|
14
|
+
*/
|
|
15
|
+
function useDeferUntilAsyncComplete(target, asyncFn, options = {}) {
|
|
16
|
+
return useDeferUntilReady(target, usePromiseState(asyncFn), options);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { useDeferUntilAsyncComplete as default };
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.cjs";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/useDeferUntilBreakpoint/types.d.ts
|
|
5
|
+
type UseDeferUntilBreakpointOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & {
|
|
6
|
+
/**
|
|
7
|
+
* メディアクエリー変更時のデバウンス時間(ミリ秒)
|
|
8
|
+
* デフォルトは100ms
|
|
9
|
+
* @default 100
|
|
10
|
+
*/
|
|
11
|
+
detectionDelay?: number;
|
|
12
|
+
/**
|
|
13
|
+
* SSR時など、実際のメディアクエリーを判定できない環境での初期値\
|
|
14
|
+
* デフォルトはfalse
|
|
15
|
+
* @default false
|
|
16
|
+
*/
|
|
17
|
+
initialCondition?: boolean;
|
|
18
|
+
};
|
|
19
|
+
//#endregion
|
|
20
|
+
export { UseDeferUntilBreakpointOptions };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.mjs";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/useDeferUntilBreakpoint/types.d.ts
|
|
5
|
+
type UseDeferUntilBreakpointOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P> & {
|
|
6
|
+
/**
|
|
7
|
+
* メディアクエリー変更時のデバウンス時間(ミリ秒)
|
|
8
|
+
* デフォルトは100ms
|
|
9
|
+
* @default 100
|
|
10
|
+
*/
|
|
11
|
+
detectionDelay?: number;
|
|
12
|
+
/**
|
|
13
|
+
* SSR時など、実際のメディアクエリーを判定できない環境での初期値\
|
|
14
|
+
* デフォルトはfalse
|
|
15
|
+
* @default false
|
|
16
|
+
*/
|
|
17
|
+
initialCondition?: boolean;
|
|
18
|
+
};
|
|
19
|
+
//#endregion
|
|
20
|
+
export { UseDeferUntilBreakpointOptions };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
4
|
+
const require_useDeferUntilTrue_useDeferUntilTrue = require('../useDeferUntilTrue/useDeferUntilTrue.cjs');
|
|
5
|
+
require('../useDeferUntilTrue/index.cjs');
|
|
6
|
+
let react = require("react");
|
|
7
|
+
let _fringeworks_utils_timer_debounce = require("@fringeworks/utils/timer/debounce");
|
|
8
|
+
_fringeworks_utils_timer_debounce = require_runtime.__toESM(_fringeworks_utils_timer_debounce, 1);
|
|
9
|
+
|
|
10
|
+
//#region src/useDeferUntilBreakpoint/useDeferUntilBreakpoint.tsx
|
|
11
|
+
/**
|
|
12
|
+
* メディアクエリーが一致するまで描画を遅延させるhook
|
|
13
|
+
* @param target 描画対象のノード
|
|
14
|
+
* @param mediaQuery メディアクエリ(例: '(max-width: 768px)')(null/undefinedの場合は待たずに描画する)
|
|
15
|
+
* @param options オプション
|
|
16
|
+
* @returns state('pending', 'ready')と状態に応じたノード
|
|
17
|
+
*/
|
|
18
|
+
function useDeferUntilBreakpoint(target, mediaQuery, options = {}) {
|
|
19
|
+
const { detectionDelay = 100, preserveOnceReady, initialCondition = false, ...opts } = options;
|
|
20
|
+
return require_useDeferUntilTrue_useDeferUntilTrue(target, (0, react.useSyncExternalStore)((0, react.useCallback)((onStoreChange) => {
|
|
21
|
+
if (!mediaQuery) return () => {};
|
|
22
|
+
const mediaQueryList = window.matchMedia(mediaQuery);
|
|
23
|
+
if (preserveOnceReady && mediaQueryList.matches) return () => {};
|
|
24
|
+
const handleChange = (event) => {
|
|
25
|
+
onStoreChange();
|
|
26
|
+
if (preserveOnceReady && event.matches) mediaQueryList.removeEventListener("change", debouncedHandleChange);
|
|
27
|
+
};
|
|
28
|
+
const debouncedHandleChange = (0, _fringeworks_utils_timer_debounce.default)(handleChange, detectionDelay);
|
|
29
|
+
mediaQueryList.addEventListener("change", debouncedHandleChange);
|
|
30
|
+
return () => {
|
|
31
|
+
mediaQueryList.removeEventListener("change", debouncedHandleChange);
|
|
32
|
+
};
|
|
33
|
+
}, [
|
|
34
|
+
mediaQuery,
|
|
35
|
+
preserveOnceReady,
|
|
36
|
+
detectionDelay
|
|
37
|
+
]), (0, react.useCallback)(() => !mediaQuery || window.matchMedia(mediaQuery).matches, [mediaQuery]), (0, react.useCallback)(() => !mediaQuery || initialCondition, [mediaQuery, initialCondition])), {
|
|
38
|
+
preserveOnceReady,
|
|
39
|
+
...opts
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
module.exports = useDeferUntilBreakpoint;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DeferRenderingResult } from "../types.cjs";
|
|
2
|
+
import { UseDeferUntilBreakpointOptions } from "./types.cjs";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/useDeferUntilBreakpoint/useDeferUntilBreakpoint.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* メディアクエリーが一致するまで描画を遅延させるhook
|
|
8
|
+
* @param target 描画対象のノード
|
|
9
|
+
* @param mediaQuery メディアクエリ(例: '(max-width: 768px)')(null/undefinedの場合は待たずに描画する)
|
|
10
|
+
* @param options オプション
|
|
11
|
+
* @returns state('pending', 'ready')と状態に応じたノード
|
|
12
|
+
*/
|
|
13
|
+
declare function useDeferUntilBreakpoint<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, mediaQuery: string | null | undefined, options?: UseDeferUntilBreakpointOptions<P>): DeferRenderingResult<T | P>;
|
|
14
|
+
export = useDeferUntilBreakpoint;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DeferRenderingResult } from "../types.mjs";
|
|
2
|
+
import { UseDeferUntilBreakpointOptions } from "./types.mjs";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/useDeferUntilBreakpoint/useDeferUntilBreakpoint.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* メディアクエリーが一致するまで描画を遅延させるhook
|
|
8
|
+
* @param target 描画対象のノード
|
|
9
|
+
* @param mediaQuery メディアクエリ(例: '(max-width: 768px)')(null/undefinedの場合は待たずに描画する)
|
|
10
|
+
* @param options オプション
|
|
11
|
+
* @returns state('pending', 'ready')と状態に応じたノード
|
|
12
|
+
*/
|
|
13
|
+
declare function useDeferUntilBreakpoint<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, mediaQuery: string | null | undefined, options?: UseDeferUntilBreakpointOptions<P>): DeferRenderingResult<T | P>;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { useDeferUntilBreakpoint as default };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import useDeferUntilTrue from "../useDeferUntilTrue/useDeferUntilTrue.mjs";
|
|
4
|
+
import "../useDeferUntilTrue/index.mjs";
|
|
5
|
+
import { useCallback, useSyncExternalStore } from "react";
|
|
6
|
+
import debounce from "@fringeworks/utils/timer/debounce";
|
|
7
|
+
|
|
8
|
+
//#region src/useDeferUntilBreakpoint/useDeferUntilBreakpoint.tsx
|
|
9
|
+
/**
|
|
10
|
+
* メディアクエリーが一致するまで描画を遅延させるhook
|
|
11
|
+
* @param target 描画対象のノード
|
|
12
|
+
* @param mediaQuery メディアクエリ(例: '(max-width: 768px)')(null/undefinedの場合は待たずに描画する)
|
|
13
|
+
* @param options オプション
|
|
14
|
+
* @returns state('pending', 'ready')と状態に応じたノード
|
|
15
|
+
*/
|
|
16
|
+
function useDeferUntilBreakpoint(target, mediaQuery, options = {}) {
|
|
17
|
+
const { detectionDelay = 100, preserveOnceReady, initialCondition = false, ...opts } = options;
|
|
18
|
+
return useDeferUntilTrue(target, useSyncExternalStore(useCallback((onStoreChange) => {
|
|
19
|
+
if (!mediaQuery) return () => {};
|
|
20
|
+
const mediaQueryList = window.matchMedia(mediaQuery);
|
|
21
|
+
if (preserveOnceReady && mediaQueryList.matches) return () => {};
|
|
22
|
+
const handleChange = (event) => {
|
|
23
|
+
onStoreChange();
|
|
24
|
+
if (preserveOnceReady && event.matches) mediaQueryList.removeEventListener("change", debouncedHandleChange);
|
|
25
|
+
};
|
|
26
|
+
const debouncedHandleChange = debounce(handleChange, detectionDelay);
|
|
27
|
+
mediaQueryList.addEventListener("change", debouncedHandleChange);
|
|
28
|
+
return () => {
|
|
29
|
+
mediaQueryList.removeEventListener("change", debouncedHandleChange);
|
|
30
|
+
};
|
|
31
|
+
}, [
|
|
32
|
+
mediaQuery,
|
|
33
|
+
preserveOnceReady,
|
|
34
|
+
detectionDelay
|
|
35
|
+
]), useCallback(() => !mediaQuery || window.matchMedia(mediaQuery).matches, [mediaQuery]), useCallback(() => !mediaQuery || initialCondition, [mediaQuery, initialCondition])), {
|
|
36
|
+
preserveOnceReady,
|
|
37
|
+
...opts
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
export { useDeferUntilBreakpoint as default };
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { UseDeferUntilOnReadyOptions } from "../useDeferUntilOnReady/types.cjs";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/useDeferUntilCallThreshold/types.d.ts
|
|
5
|
+
type UseDeferUntilCallThresholdOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilOnReadyOptions<P, E> & {
|
|
6
|
+
/**
|
|
7
|
+
* readyになる為のonReadyの呼び出し回数
|
|
8
|
+
* 未指定の場合は1回
|
|
9
|
+
*/
|
|
10
|
+
onReadyCount?: number;
|
|
11
|
+
/**
|
|
12
|
+
* fallbackになる為のonFallbackの呼び出し回数
|
|
13
|
+
* 未指定の場合は1回
|
|
14
|
+
*/
|
|
15
|
+
onFallbackCount?: number;
|
|
16
|
+
/**
|
|
17
|
+
* pendingになる為のonPendingの呼び出し回数
|
|
18
|
+
* 未指定の場合は1回
|
|
19
|
+
*/
|
|
20
|
+
onPendingCount?: number;
|
|
21
|
+
};
|
|
22
|
+
//#endregion
|
|
23
|
+
export { UseDeferUntilCallThresholdOptions };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { UseDeferUntilOnReadyOptions } from "../useDeferUntilOnReady/types.mjs";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/useDeferUntilCallThreshold/types.d.ts
|
|
5
|
+
type UseDeferUntilCallThresholdOptions<P extends ReactNode = ReactNode, E extends ReactNode = ReactNode> = UseDeferUntilOnReadyOptions<P, E> & {
|
|
6
|
+
/**
|
|
7
|
+
* readyになる為のonReadyの呼び出し回数
|
|
8
|
+
* 未指定の場合は1回
|
|
9
|
+
*/
|
|
10
|
+
onReadyCount?: number;
|
|
11
|
+
/**
|
|
12
|
+
* fallbackになる為のonFallbackの呼び出し回数
|
|
13
|
+
* 未指定の場合は1回
|
|
14
|
+
*/
|
|
15
|
+
onFallbackCount?: number;
|
|
16
|
+
/**
|
|
17
|
+
* pendingになる為のonPendingの呼び出し回数
|
|
18
|
+
* 未指定の場合は1回
|
|
19
|
+
*/
|
|
20
|
+
onPendingCount?: number;
|
|
21
|
+
};
|
|
22
|
+
//#endregion
|
|
23
|
+
export { UseDeferUntilCallThresholdOptions };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
const require_useDeferUntilOnReady_useDeferUntilOnReady = require('../useDeferUntilOnReady/useDeferUntilOnReady.cjs');
|
|
4
|
+
require('../useDeferUntilOnReady/index.cjs');
|
|
5
|
+
let react = require("react");
|
|
6
|
+
|
|
7
|
+
//#region src/useDeferUntilCallThreshold/useDeferUntilCallThreshold.tsx
|
|
8
|
+
/**
|
|
9
|
+
* 戻り値として返す`onReady`等のハンドラーが指定回数呼ばれるまで描画を遅延させるhook
|
|
10
|
+
* @param target 描画対象のノード
|
|
11
|
+
* @param options オプション
|
|
12
|
+
* @returns state('pending', 'ready', 'fallback')と状態に応じたノードと状態変更用のハンドラー
|
|
13
|
+
*/
|
|
14
|
+
function useDeferUntilCallThreshold(target, options = {}) {
|
|
15
|
+
const { onPendingCount = 1, onFallbackCount = 1, onReadyCount = 1, ...opts } = options;
|
|
16
|
+
const { onPending: handlePending, onFallback: handleFallback, onReady: handleReady, ...rest } = require_useDeferUntilOnReady_useDeferUntilOnReady(target, opts);
|
|
17
|
+
const pendingContRef = (0, react.useRef)(0);
|
|
18
|
+
const fallbackContRef = (0, react.useRef)(0);
|
|
19
|
+
const readyContRef = (0, react.useRef)(0);
|
|
20
|
+
const reset = (0, react.useCallback)(() => {
|
|
21
|
+
pendingContRef.current = 0;
|
|
22
|
+
fallbackContRef.current = 0;
|
|
23
|
+
readyContRef.current = 0;
|
|
24
|
+
}, []);
|
|
25
|
+
const onPending = (0, react.useCallback)(() => {
|
|
26
|
+
pendingContRef.current += 1;
|
|
27
|
+
if (onPendingCount <= pendingContRef.current) {
|
|
28
|
+
reset();
|
|
29
|
+
handlePending();
|
|
30
|
+
}
|
|
31
|
+
}, [handlePending, onPendingCount]);
|
|
32
|
+
const onFallback = (0, react.useCallback)(() => {
|
|
33
|
+
fallbackContRef.current += 1;
|
|
34
|
+
if (onFallbackCount <= fallbackContRef.current) {
|
|
35
|
+
reset();
|
|
36
|
+
handleFallback();
|
|
37
|
+
}
|
|
38
|
+
}, [handleFallback, onFallbackCount]);
|
|
39
|
+
const onReady = (0, react.useCallback)(() => {
|
|
40
|
+
readyContRef.current += 1;
|
|
41
|
+
if (onReadyCount <= readyContRef.current) {
|
|
42
|
+
reset();
|
|
43
|
+
handleReady();
|
|
44
|
+
}
|
|
45
|
+
}, [handleReady, onReadyCount]);
|
|
46
|
+
return {
|
|
47
|
+
...rest,
|
|
48
|
+
onPending,
|
|
49
|
+
onFallback,
|
|
50
|
+
onReady
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
module.exports = useDeferUntilCallThreshold;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DeferRenderingWithHandlersResult } from "../types.cjs";
|
|
2
|
+
import { UseDeferUntilCallThresholdOptions } from "./types.cjs";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/useDeferUntilCallThreshold/useDeferUntilCallThreshold.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* 戻り値として返す`onReady`等のハンドラーが指定回数呼ばれるまで描画を遅延させるhook
|
|
8
|
+
* @param target 描画対象のノード
|
|
9
|
+
* @param options オプション
|
|
10
|
+
* @returns state('pending', 'ready', 'fallback')と状態に応じたノードと状態変更用のハンドラー
|
|
11
|
+
*/
|
|
12
|
+
declare function useDeferUntilCallThreshold<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, options?: UseDeferUntilCallThresholdOptions<P, E>): DeferRenderingWithHandlersResult<T | P | E>;
|
|
13
|
+
export = useDeferUntilCallThreshold;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DeferRenderingWithHandlersResult } from "../types.mjs";
|
|
2
|
+
import { UseDeferUntilCallThresholdOptions } from "./types.mjs";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/useDeferUntilCallThreshold/useDeferUntilCallThreshold.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* 戻り値として返す`onReady`等のハンドラーが指定回数呼ばれるまで描画を遅延させるhook
|
|
8
|
+
* @param target 描画対象のノード
|
|
9
|
+
* @param options オプション
|
|
10
|
+
* @returns state('pending', 'ready', 'fallback')と状態に応じたノードと状態変更用のハンドラー
|
|
11
|
+
*/
|
|
12
|
+
declare function useDeferUntilCallThreshold<T extends ReactNode, P extends ReactNode = ReactNode, E extends ReactNode = ReactNode>(target: T, options?: UseDeferUntilCallThresholdOptions<P, E>): DeferRenderingWithHandlersResult<T | P | E>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { useDeferUntilCallThreshold as default };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import useDeferUntilOnReady from "../useDeferUntilOnReady/useDeferUntilOnReady.mjs";
|
|
4
|
+
import "../useDeferUntilOnReady/index.mjs";
|
|
5
|
+
import { useCallback, useRef } from "react";
|
|
6
|
+
|
|
7
|
+
//#region src/useDeferUntilCallThreshold/useDeferUntilCallThreshold.tsx
|
|
8
|
+
/**
|
|
9
|
+
* 戻り値として返す`onReady`等のハンドラーが指定回数呼ばれるまで描画を遅延させるhook
|
|
10
|
+
* @param target 描画対象のノード
|
|
11
|
+
* @param options オプション
|
|
12
|
+
* @returns state('pending', 'ready', 'fallback')と状態に応じたノードと状態変更用のハンドラー
|
|
13
|
+
*/
|
|
14
|
+
function useDeferUntilCallThreshold(target, options = {}) {
|
|
15
|
+
const { onPendingCount = 1, onFallbackCount = 1, onReadyCount = 1, ...opts } = options;
|
|
16
|
+
const { onPending: handlePending, onFallback: handleFallback, onReady: handleReady, ...rest } = useDeferUntilOnReady(target, opts);
|
|
17
|
+
const pendingContRef = useRef(0);
|
|
18
|
+
const fallbackContRef = useRef(0);
|
|
19
|
+
const readyContRef = useRef(0);
|
|
20
|
+
const reset = useCallback(() => {
|
|
21
|
+
pendingContRef.current = 0;
|
|
22
|
+
fallbackContRef.current = 0;
|
|
23
|
+
readyContRef.current = 0;
|
|
24
|
+
}, []);
|
|
25
|
+
const onPending = useCallback(() => {
|
|
26
|
+
pendingContRef.current += 1;
|
|
27
|
+
if (onPendingCount <= pendingContRef.current) {
|
|
28
|
+
reset();
|
|
29
|
+
handlePending();
|
|
30
|
+
}
|
|
31
|
+
}, [handlePending, onPendingCount]);
|
|
32
|
+
const onFallback = useCallback(() => {
|
|
33
|
+
fallbackContRef.current += 1;
|
|
34
|
+
if (onFallbackCount <= fallbackContRef.current) {
|
|
35
|
+
reset();
|
|
36
|
+
handleFallback();
|
|
37
|
+
}
|
|
38
|
+
}, [handleFallback, onFallbackCount]);
|
|
39
|
+
const onReady = useCallback(() => {
|
|
40
|
+
readyContRef.current += 1;
|
|
41
|
+
if (onReadyCount <= readyContRef.current) {
|
|
42
|
+
reset();
|
|
43
|
+
handleReady();
|
|
44
|
+
}
|
|
45
|
+
}, [handleReady, onReadyCount]);
|
|
46
|
+
return {
|
|
47
|
+
...rest,
|
|
48
|
+
onPending,
|
|
49
|
+
onFallback,
|
|
50
|
+
onReady
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
export { useDeferUntilCallThreshold as default };
|
|
File without changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.cjs";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/useDeferUntilChange/types.d.ts
|
|
5
|
+
type UseDeferUntilChangeOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { UseDeferUntilChangeOptions };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { UseDeferUntilTrueOptions } from "../useDeferUntilTrue/types.mjs";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/useDeferUntilChange/types.d.ts
|
|
5
|
+
type UseDeferUntilChangeOptions<P extends ReactNode = ReactNode> = UseDeferUntilTrueOptions<P>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { UseDeferUntilChangeOptions };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
4
|
+
const require_useDeferUntilTrue_useDeferUntilTrue = require('../useDeferUntilTrue/useDeferUntilTrue.cjs');
|
|
5
|
+
require('../useDeferUntilTrue/index.cjs');
|
|
6
|
+
let _fringeworks_react_utils_hooks_useIsMounted = require("@fringeworks/react-utils/hooks/useIsMounted");
|
|
7
|
+
_fringeworks_react_utils_hooks_useIsMounted = require_runtime.__toESM(_fringeworks_react_utils_hooks_useIsMounted, 1);
|
|
8
|
+
let react = require("react");
|
|
9
|
+
|
|
10
|
+
//#region src/useDeferUntilChange/useDeferUntilChange.tsx
|
|
11
|
+
const NO_VALUE = Symbol("NO_VALUE");
|
|
12
|
+
/**
|
|
13
|
+
* 値が変更されるまで描画を遅延させるhook
|
|
14
|
+
* @param target 描画対象のノード
|
|
15
|
+
* @param value 値
|
|
16
|
+
* @param options オプション
|
|
17
|
+
* @returns state('pending', 'ready')と状態に応じたノード
|
|
18
|
+
*/
|
|
19
|
+
function useDeferUntilChange(target, value, options = {}) {
|
|
20
|
+
const [prevValue, setPrevValue] = (0, react.useState)(NO_VALUE);
|
|
21
|
+
const isMounted = (0, _fringeworks_react_utils_hooks_useIsMounted.default)();
|
|
22
|
+
const result = require_useDeferUntilTrue_useDeferUntilTrue(target, prevValue === value, options);
|
|
23
|
+
(0, react.useEffect)(() => {
|
|
24
|
+
if (isMounted()) setPrevValue(value);
|
|
25
|
+
}, [value]);
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
module.exports = useDeferUntilChange;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DeferRenderingResult } from "../types.cjs";
|
|
2
|
+
import { UseDeferUntilChangeOptions } from "./types.cjs";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/useDeferUntilChange/useDeferUntilChange.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* 値が変更されるまで描画を遅延させるhook
|
|
8
|
+
* @param target 描画対象のノード
|
|
9
|
+
* @param value 値
|
|
10
|
+
* @param options オプション
|
|
11
|
+
* @returns state('pending', 'ready')と状態に応じたノード
|
|
12
|
+
*/
|
|
13
|
+
declare function useDeferUntilChange<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, value: unknown, options?: UseDeferUntilChangeOptions<P>): DeferRenderingResult<T | P>;
|
|
14
|
+
export = useDeferUntilChange;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DeferRenderingResult } from "../types.mjs";
|
|
2
|
+
import { UseDeferUntilChangeOptions } from "./types.mjs";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/useDeferUntilChange/useDeferUntilChange.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* 値が変更されるまで描画を遅延させるhook
|
|
8
|
+
* @param target 描画対象のノード
|
|
9
|
+
* @param value 値
|
|
10
|
+
* @param options オプション
|
|
11
|
+
* @returns state('pending', 'ready')と状態に応じたノード
|
|
12
|
+
*/
|
|
13
|
+
declare function useDeferUntilChange<T extends ReactNode, P extends ReactNode = ReactNode>(target: T, value: unknown, options?: UseDeferUntilChangeOptions<P>): DeferRenderingResult<T | P>;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { useDeferUntilChange as default };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import useDeferUntilTrue from "../useDeferUntilTrue/useDeferUntilTrue.mjs";
|
|
4
|
+
import "../useDeferUntilTrue/index.mjs";
|
|
5
|
+
import useIsMounted from "@fringeworks/react-utils/hooks/useIsMounted";
|
|
6
|
+
import { useEffect, useState } from "react";
|
|
7
|
+
|
|
8
|
+
//#region src/useDeferUntilChange/useDeferUntilChange.tsx
|
|
9
|
+
const NO_VALUE = Symbol("NO_VALUE");
|
|
10
|
+
/**
|
|
11
|
+
* 値が変更されるまで描画を遅延させるhook
|
|
12
|
+
* @param target 描画対象のノード
|
|
13
|
+
* @param value 値
|
|
14
|
+
* @param options オプション
|
|
15
|
+
* @returns state('pending', 'ready')と状態に応じたノード
|
|
16
|
+
*/
|
|
17
|
+
function useDeferUntilChange(target, value, options = {}) {
|
|
18
|
+
const [prevValue, setPrevValue] = useState(NO_VALUE);
|
|
19
|
+
const isMounted = useIsMounted();
|
|
20
|
+
const result = useDeferUntilTrue(target, prevValue === value, options);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (isMounted()) setPrevValue(value);
|
|
23
|
+
}, [value]);
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
export { useDeferUntilChange as default };
|