@qiaopeng/tanstack-query-plus 0.5.8 → 0.5.10
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/README.md +155 -95
- package/dist/{types/base.d.ts → base-CHnwqfyz.d.cts} +12 -14
- package/dist/base-CHnwqfyz.d.ts +52 -0
- package/dist/chunk-52ZO6Y67.cjs +1121 -0
- package/dist/chunk-52ZO6Y67.cjs.map +1 -0
- package/dist/chunk-5J6OXSLW.cjs +36 -0
- package/dist/chunk-5J6OXSLW.cjs.map +1 -0
- package/dist/chunk-6MAYHLTE.cjs +310 -0
- package/dist/chunk-6MAYHLTE.cjs.map +1 -0
- package/dist/chunk-ADS2QTMP.js +144 -0
- package/dist/chunk-ADS2QTMP.js.map +1 -0
- package/dist/chunk-APXNNHBD.cjs +374 -0
- package/dist/chunk-APXNNHBD.cjs.map +1 -0
- package/dist/chunk-AXMWOGNX.js +134 -0
- package/dist/chunk-AXMWOGNX.js.map +1 -0
- package/dist/chunk-B4KO3K3E.cjs +521 -0
- package/dist/chunk-B4KO3K3E.cjs.map +1 -0
- package/dist/chunk-BK3OTIBD.cjs +15 -0
- package/dist/chunk-BK3OTIBD.cjs.map +1 -0
- package/dist/chunk-BYAOQALW.js +13 -0
- package/dist/chunk-BYAOQALW.js.map +1 -0
- package/dist/chunk-CRTVS7VI.cjs +162 -0
- package/dist/chunk-CRTVS7VI.cjs.map +1 -0
- package/dist/chunk-EXITP7QO.js +288 -0
- package/dist/chunk-EXITP7QO.js.map +1 -0
- package/dist/chunk-GMO3PRZZ.js +565 -0
- package/dist/chunk-GMO3PRZZ.js.map +1 -0
- package/dist/chunk-HRO2DWKZ.js +12 -0
- package/dist/chunk-HRO2DWKZ.js.map +1 -0
- package/dist/chunk-JHDKUQSB.js +1069 -0
- package/dist/chunk-JHDKUQSB.js.map +1 -0
- package/dist/chunk-JN2Y6RSY.js +23 -0
- package/dist/chunk-JN2Y6RSY.js.map +1 -0
- package/dist/chunk-JRJSKRZW.cjs +29 -0
- package/dist/chunk-JRJSKRZW.cjs.map +1 -0
- package/dist/chunk-KC62H4VJ.js +123 -0
- package/dist/chunk-KC62H4VJ.js.map +1 -0
- package/dist/chunk-LHEHSLD5.js +31 -0
- package/dist/chunk-LHEHSLD5.js.map +1 -0
- package/dist/chunk-N4264P7N.cjs +156 -0
- package/dist/chunk-N4264P7N.cjs.map +1 -0
- package/dist/chunk-NF5QYPYC.cjs +133 -0
- package/dist/chunk-NF5QYPYC.cjs.map +1 -0
- package/dist/chunk-OFLCHKKE.cjs +28 -0
- package/dist/chunk-OFLCHKKE.cjs.map +1 -0
- package/dist/chunk-PCNSWVA5.cjs +602 -0
- package/dist/chunk-PCNSWVA5.cjs.map +1 -0
- package/dist/chunk-STOMAA2X.js +85 -0
- package/dist/chunk-STOMAA2X.js.map +1 -0
- package/dist/chunk-UVF5S6LX.cjs +15 -0
- package/dist/chunk-UVF5S6LX.cjs.map +1 -0
- package/dist/chunk-WEIXCDCA.cjs +90 -0
- package/dist/chunk-WEIXCDCA.cjs.map +1 -0
- package/dist/chunk-X3ZTSLBQ.js +355 -0
- package/dist/chunk-X3ZTSLBQ.js.map +1 -0
- package/dist/chunk-YEV73J4J.js +504 -0
- package/dist/chunk-YEV73J4J.js.map +1 -0
- package/dist/chunk-YW5PNTRU.cjs +14 -0
- package/dist/chunk-YW5PNTRU.cjs.map +1 -0
- package/dist/chunk-ZNXSWUIS.js +12 -0
- package/dist/chunk-ZNXSWUIS.js.map +1 -0
- package/dist/chunk-ZUEMBY4W.js +21 -0
- package/dist/chunk-ZUEMBY4W.js.map +1 -0
- package/dist/components/index.cjs +60 -0
- package/dist/components/index.cjs.map +1 -0
- package/dist/components/index.d.cts +43 -0
- package/dist/components/index.d.ts +43 -4
- package/dist/components/index.js +3 -4
- package/dist/components/index.js.map +1 -0
- package/dist/core/devtools.cjs +25 -0
- package/dist/core/devtools.cjs.map +1 -0
- package/dist/core/devtools.d.cts +17 -0
- package/dist/core/devtools.d.ts +9 -7
- package/dist/core/devtools.js +4 -16
- package/dist/core/devtools.js.map +1 -0
- package/dist/core/index.cjs +220 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.cts +196 -0
- package/dist/core/index.d.ts +196 -9
- package/dist/core/index.js +7 -8
- package/dist/core/index.js.map +1 -0
- package/dist/features/index.cjs +76 -0
- package/dist/features/index.cjs.map +1 -0
- package/dist/features/index.d.cts +86 -0
- package/dist/features/index.d.ts +86 -4
- package/dist/features/index.js +7 -3
- package/dist/features/index.js.map +1 -0
- package/dist/hooks/index.cjs +209 -0
- package/dist/hooks/index.cjs.map +1 -0
- package/dist/hooks/index.d.cts +377 -0
- package/dist/hooks/index.d.ts +377 -10
- package/dist/hooks/index.js +8 -9
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useInViewPrefetch.cjs +33 -0
- package/dist/hooks/useInViewPrefetch.cjs.map +1 -0
- package/dist/hooks/useInViewPrefetch.d.cts +12 -0
- package/dist/hooks/useInViewPrefetch.d.ts +6 -4
- package/dist/hooks/useInViewPrefetch.js +30 -20
- package/dist/hooks/useInViewPrefetch.js.map +1 -0
- package/dist/index.cjs +811 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +36 -0
- package/dist/index.d.ts +36 -8
- package/dist/index.js +89 -7
- package/dist/index.js.map +1 -0
- package/dist/{types/offline.d.ts → offline-DVPtgoAS.d.ts} +15 -13
- package/dist/offline-xxeA_-6V.d.cts +99 -0
- package/dist/persistence-MRtkmhqq.d.cts +216 -0
- package/dist/persistence-tIrEb0pR.d.ts +216 -0
- package/dist/react-query/index.cjs +52 -0
- package/dist/react-query/index.cjs.map +1 -0
- package/dist/react-query/index.d.cts +1 -0
- package/dist/react-query/index.d.ts +1 -3
- package/dist/react-query/index.js +3 -1
- package/dist/react-query/index.js.map +1 -0
- package/dist/types/index.cjs +43 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +157 -0
- package/dist/types/index.d.ts +116 -12
- package/dist/types/index.js +6 -8
- package/dist/types/index.js.map +1 -0
- package/dist/utils/index.cjs +234 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +272 -0
- package/dist/utils/index.d.ts +272 -10
- package/dist/utils/index.js +9 -9
- package/dist/utils/index.js.map +1 -0
- package/package.json +13 -3
- package/dist/PersistQueryClientProvider.d.ts +0 -22
- package/dist/PersistQueryClientProvider.d.ts.map +0 -1
- package/dist/PersistQueryClientProvider.js +0 -47
- package/dist/components/LoadingFallback.d.ts +0 -16
- package/dist/components/LoadingFallback.d.ts.map +0 -1
- package/dist/components/LoadingFallback.js +0 -27
- package/dist/components/QueryErrorBoundary.d.ts +0 -12
- package/dist/components/QueryErrorBoundary.d.ts.map +0 -1
- package/dist/components/QueryErrorBoundary.js +0 -9
- package/dist/components/SuspenseWrapper.d.ts +0 -14
- package/dist/components/SuspenseWrapper.d.ts.map +0 -1
- package/dist/components/SuspenseWrapper.js +0 -9
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/internal/ErrorBoundary.d.ts +0 -27
- package/dist/components/internal/ErrorBoundary.d.ts.map +0 -1
- package/dist/components/internal/ErrorBoundary.js +0 -37
- package/dist/core/config.d.ts +0 -80
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -321
- package/dist/core/devtools.d.ts.map +0 -1
- package/dist/core/env.d.ts +0 -4
- package/dist/core/env.d.ts.map +0 -1
- package/dist/core/env.js +0 -26
- package/dist/core/focusManager.d.ts +0 -33
- package/dist/core/focusManager.d.ts.map +0 -1
- package/dist/core/focusManager.js +0 -122
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/keys.d.ts +0 -59
- package/dist/core/keys.d.ts.map +0 -1
- package/dist/core/keys.js +0 -107
- package/dist/core/queryOptions.d.ts +0 -19
- package/dist/core/queryOptions.d.ts.map +0 -1
- package/dist/core/queryOptions.js +0 -44
- package/dist/features/index.d.ts.map +0 -1
- package/dist/features/offline.d.ts +0 -48
- package/dist/features/offline.d.ts.map +0 -1
- package/dist/features/offline.js +0 -269
- package/dist/features/persistence.d.ts +0 -36
- package/dist/features/persistence.d.ts.map +0 -1
- package/dist/features/persistence.js +0 -186
- package/dist/hooks/batchQueries.d.ts +0 -129
- package/dist/hooks/batchQueries.d.ts.map +0 -1
- package/dist/hooks/batchQueries.js +0 -301
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/useDataGuardMutation.d.ts +0 -39
- package/dist/hooks/useDataGuardMutation.d.ts.map +0 -1
- package/dist/hooks/useDataGuardMutation.js +0 -151
- package/dist/hooks/useDataGuardQuery.d.ts +0 -28
- package/dist/hooks/useDataGuardQuery.d.ts.map +0 -1
- package/dist/hooks/useDataGuardQuery.js +0 -71
- package/dist/hooks/useFocusManager.d.ts +0 -41
- package/dist/hooks/useFocusManager.d.ts.map +0 -1
- package/dist/hooks/useFocusManager.js +0 -109
- package/dist/hooks/useInViewPrefetch.d.ts.map +0 -1
- package/dist/hooks/useInfiniteQuery.d.ts +0 -33
- package/dist/hooks/useInfiniteQuery.d.ts.map +0 -1
- package/dist/hooks/useInfiniteQuery.js +0 -61
- package/dist/hooks/useMutation.d.ts +0 -25
- package/dist/hooks/useMutation.d.ts.map +0 -1
- package/dist/hooks/useMutation.js +0 -180
- package/dist/hooks/usePrefetch.d.ts +0 -54
- package/dist/hooks/usePrefetch.d.ts.map +0 -1
- package/dist/hooks/usePrefetch.js +0 -229
- package/dist/hooks/useQuery.d.ts +0 -21
- package/dist/hooks/useQuery.d.ts.map +0 -1
- package/dist/hooks/useQuery.js +0 -46
- package/dist/hooks/useSuspenseQuery.d.ts +0 -11
- package/dist/hooks/useSuspenseQuery.d.ts.map +0 -1
- package/dist/hooks/useSuspenseQuery.js +0 -19
- package/dist/index.d.ts.map +0 -1
- package/dist/react-query/index.d.ts.map +0 -1
- package/dist/types/base.d.ts.map +0 -1
- package/dist/types/base.js +0 -26
- package/dist/types/dataGuard.d.ts +0 -69
- package/dist/types/dataGuard.d.ts.map +0 -1
- package/dist/types/dataGuard.js +0 -10
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/infinite.d.ts +0 -39
- package/dist/types/infinite.d.ts.map +0 -1
- package/dist/types/infinite.js +0 -1
- package/dist/types/offline.d.ts.map +0 -1
- package/dist/types/offline.js +0 -8
- package/dist/types/optimistic.d.ts +0 -126
- package/dist/types/optimistic.d.ts.map +0 -1
- package/dist/types/optimistic.js +0 -7
- package/dist/types/persistence.d.ts +0 -9
- package/dist/types/persistence.d.ts.map +0 -1
- package/dist/types/persistence.js +0 -1
- package/dist/types/selectors.d.ts +0 -11
- package/dist/types/selectors.d.ts.map +0 -1
- package/dist/types/selectors.js +0 -1
- package/dist/types/suspense.d.ts +0 -67
- package/dist/types/suspense.d.ts.map +0 -1
- package/dist/types/suspense.js +0 -1
- package/dist/utils/dataGuard.d.ts +0 -37
- package/dist/utils/dataGuard.d.ts.map +0 -1
- package/dist/utils/dataGuard.js +0 -257
- package/dist/utils/fieldMapper.d.ts +0 -9
- package/dist/utils/fieldMapper.d.ts.map +0 -1
- package/dist/utils/fieldMapper.js +0 -27
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/network.d.ts +0 -9
- package/dist/utils/network.d.ts.map +0 -1
- package/dist/utils/network.js +0 -43
- package/dist/utils/optimisticUtils.d.ts +0 -45
- package/dist/utils/optimisticUtils.d.ts.map +0 -1
- package/dist/utils/optimisticUtils.js +0 -116
- package/dist/utils/placeholderData.d.ts +0 -3
- package/dist/utils/placeholderData.d.ts.map +0 -1
- package/dist/utils/placeholderData.js +0 -28
- package/dist/utils/prefetchManager.d.ts +0 -111
- package/dist/utils/prefetchManager.d.ts.map +0 -1
- package/dist/utils/prefetchManager.js +0 -246
- package/dist/utils/queryKey.d.ts +0 -24
- package/dist/utils/queryKey.d.ts.map +0 -1
- package/dist/utils/queryKey.js +0 -77
- package/dist/utils/selectors.d.ts +0 -30
- package/dist/utils/selectors.d.ts.map +0 -1
- package/dist/utils/selectors.js +0 -18
- package/dist/utils/storage.d.ts +0 -7
- package/dist/utils/storage.d.ts.map +0 -1
- package/dist/utils/storage.js +0 -84
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var reactQuery = require('@tanstack/react-query');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
|
|
7
|
+
// src/components/LoadingFallback.tsx
|
|
8
|
+
function DefaultLoadingFallback() {
|
|
9
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
|
|
10
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-12 h-12 mx-auto mb-3 border-4 border-primary/20 border-t-primary rounded-full animate-spin" }),
|
|
11
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "\u52A0\u8F7D\u4E2D..." })
|
|
12
|
+
] }) });
|
|
13
|
+
}
|
|
14
|
+
function TextSkeletonFallback({ lines = 3 }) {
|
|
15
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3 p-4", children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "animate-pulse", children: [
|
|
16
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 bg-input rounded w-3/4 mb-2" }),
|
|
17
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 bg-input rounded w-1/2" })
|
|
18
|
+
] }, i)) });
|
|
19
|
+
}
|
|
20
|
+
function CardSkeletonFallback() {
|
|
21
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border border-border rounded-lg p-4 animate-pulse bg-card", children: [
|
|
22
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-6 bg-input rounded w-1/2 mb-4" }),
|
|
23
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
24
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 bg-input rounded" }),
|
|
25
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 bg-input rounded w-5/6" }),
|
|
26
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 bg-input rounded w-4/6" })
|
|
27
|
+
] })
|
|
28
|
+
] });
|
|
29
|
+
}
|
|
30
|
+
function ListSkeletonFallback({ items = 3 }) {
|
|
31
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4 p-4", children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-4 animate-pulse", children: [
|
|
32
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-12 h-12 bg-input rounded-full shrink-0" }),
|
|
33
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-2", children: [
|
|
34
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 bg-input rounded w-3/4" }),
|
|
35
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 bg-input rounded w-1/2" })
|
|
36
|
+
] })
|
|
37
|
+
] }, i)) });
|
|
38
|
+
}
|
|
39
|
+
function PageSkeletonFallback() {
|
|
40
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full p-6 space-y-6", children: [
|
|
41
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "animate-pulse", children: [
|
|
42
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-8 bg-input rounded w-1/3 mb-2" }),
|
|
43
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 bg-input rounded w-1/2" })
|
|
44
|
+
] }),
|
|
45
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-6", children: [
|
|
46
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "md:col-span-2 space-y-4", children: [
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardSkeletonFallback, {}),
|
|
48
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardSkeletonFallback, {})
|
|
49
|
+
] }),
|
|
50
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border border-border rounded-lg p-4 animate-pulse bg-card", children: [
|
|
51
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 bg-input rounded w-2/3 mb-3" }),
|
|
52
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
53
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 bg-input rounded" }),
|
|
54
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 bg-input rounded w-5/6" }),
|
|
55
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 bg-input rounded w-4/6" })
|
|
56
|
+
] })
|
|
57
|
+
] }) })
|
|
58
|
+
] })
|
|
59
|
+
] });
|
|
60
|
+
}
|
|
61
|
+
function SmallLoadingIndicator({ size = "md" }) {
|
|
62
|
+
const sizeClasses = {
|
|
63
|
+
sm: "w-4 h-4 border-2",
|
|
64
|
+
md: "w-6 h-6 border-2",
|
|
65
|
+
lg: "w-8 h-8 border-3"
|
|
66
|
+
};
|
|
67
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${sizeClasses[size]} border-primary/20 border-t-primary rounded-full animate-spin` });
|
|
68
|
+
}
|
|
69
|
+
function FullScreenLoading({ message = "\u52A0\u8F7D\u4E2D..." }) {
|
|
70
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 bg-background/90 flex items-center justify-center z-50", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
|
|
71
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-16 h-16 mx-auto mb-4 border-4 border-primary/20 border-t-primary rounded-full animate-spin" }),
|
|
72
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-lg text-foreground", children: message })
|
|
73
|
+
] }) });
|
|
74
|
+
}
|
|
75
|
+
var ErrorBoundary = class extends react.Component {
|
|
76
|
+
constructor(props) {
|
|
77
|
+
super(props);
|
|
78
|
+
this.resetErrorBoundary = () => {
|
|
79
|
+
this.props.onReset?.();
|
|
80
|
+
this.setState({ hasError: false, error: void 0 });
|
|
81
|
+
};
|
|
82
|
+
this.state = { hasError: false };
|
|
83
|
+
}
|
|
84
|
+
static getDerivedStateFromError(error) {
|
|
85
|
+
return { hasError: true, error };
|
|
86
|
+
}
|
|
87
|
+
componentDidCatch(error, errorInfo) {
|
|
88
|
+
this.props.onError?.(error, errorInfo);
|
|
89
|
+
}
|
|
90
|
+
componentDidUpdate(prevProps) {
|
|
91
|
+
if (this.state.hasError && this.props.resetKeys && prevProps.resetKeys) {
|
|
92
|
+
const hasResetKeyChanged = this.props.resetKeys.length !== prevProps.resetKeys.length || this.props.resetKeys.some((key, index) => key !== prevProps.resetKeys?.[index]);
|
|
93
|
+
if (hasResetKeyChanged) {
|
|
94
|
+
this.resetErrorBoundary();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
render() {
|
|
99
|
+
const { hasError, error } = this.state;
|
|
100
|
+
const { children, fallback } = this.props;
|
|
101
|
+
if (hasError && error) {
|
|
102
|
+
if (fallback) return fallback(error, this.resetErrorBoundary);
|
|
103
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center max-w-md", children: [
|
|
104
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold text-foreground mb-2", children: "\u53D1\u751F\u9519\u8BEF" }),
|
|
105
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-4", children: error.message || "\u8BF7\u7A0D\u540E\u91CD\u8BD5" }),
|
|
106
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { onClick: this.resetErrorBoundary, className: "px-4 py-2 bg-primary text-primary-foreground rounded-md", children: "\u91CD\u8BD5" })
|
|
107
|
+
] }) });
|
|
108
|
+
}
|
|
109
|
+
return children;
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
function QueryErrorBoundary({ children, fallback, onError, resetKeys, ...props }) {
|
|
113
|
+
return /* @__PURE__ */ jsxRuntime.jsx(reactQuery.QueryErrorResetBoundary, { children: ({ reset }) => /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { fallback: fallback || QueryErrorFallback, onError, onReset: reset, resetKeys, ...props, children }) });
|
|
114
|
+
}
|
|
115
|
+
function QueryErrorFallback(error, resetErrorBoundary) {
|
|
116
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center max-w-md", children: [
|
|
117
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-12 h-12 mx-auto mb-3 bg-orange-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "w-6 h-6 text-orange-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }) }) }),
|
|
118
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold text-foreground mb-2", children: "\u67E5\u8BE2\u5931\u8D25" }),
|
|
119
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-4", children: error.message || "\u6570\u636E\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" }),
|
|
120
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-x-2", children: [
|
|
121
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { onClick: resetErrorBoundary, className: "px-4 py-2 bg-primary text-primary-foreground rounded-md", children: "\u91CD\u65B0\u52A0\u8F7D" }),
|
|
122
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { onClick: () => window.location.reload(), className: "px-4 py-2 bg-muted text-foreground rounded-md", children: "\u5237\u65B0\u9875\u9762" })
|
|
123
|
+
] })
|
|
124
|
+
] }) });
|
|
125
|
+
}
|
|
126
|
+
function SuspenseWrapper({ children, fallback = /* @__PURE__ */ jsxRuntime.jsx("div", { children: "Loading..." }), errorFallback, onError, resetKeys }) {
|
|
127
|
+
return /* @__PURE__ */ jsxRuntime.jsx(QueryErrorBoundary, { fallback: errorFallback, onError, resetKeys, children: /* @__PURE__ */ jsxRuntime.jsx(react.Suspense, { fallback, children }) });
|
|
128
|
+
}
|
|
129
|
+
function QuerySuspenseWrapper({ children, fallback = /* @__PURE__ */ jsxRuntime.jsx("div", { children: "Loading query..." }), errorFallback, onError, resetKeys }) {
|
|
130
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SuspenseWrapper, { fallback, errorFallback, onError, resetKeys, children });
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
Object.defineProperty(exports, "HydrationBoundary", {
|
|
134
|
+
enumerable: true,
|
|
135
|
+
get: function () { return reactQuery.HydrationBoundary; }
|
|
136
|
+
});
|
|
137
|
+
Object.defineProperty(exports, "dehydrate", {
|
|
138
|
+
enumerable: true,
|
|
139
|
+
get: function () { return reactQuery.dehydrate; }
|
|
140
|
+
});
|
|
141
|
+
Object.defineProperty(exports, "hydrate", {
|
|
142
|
+
enumerable: true,
|
|
143
|
+
get: function () { return reactQuery.hydrate; }
|
|
144
|
+
});
|
|
145
|
+
exports.CardSkeletonFallback = CardSkeletonFallback;
|
|
146
|
+
exports.DefaultLoadingFallback = DefaultLoadingFallback;
|
|
147
|
+
exports.FullScreenLoading = FullScreenLoading;
|
|
148
|
+
exports.ListSkeletonFallback = ListSkeletonFallback;
|
|
149
|
+
exports.PageSkeletonFallback = PageSkeletonFallback;
|
|
150
|
+
exports.QueryErrorBoundary = QueryErrorBoundary;
|
|
151
|
+
exports.QuerySuspenseWrapper = QuerySuspenseWrapper;
|
|
152
|
+
exports.SmallLoadingIndicator = SmallLoadingIndicator;
|
|
153
|
+
exports.SuspenseWrapper = SuspenseWrapper;
|
|
154
|
+
exports.TextSkeletonFallback = TextSkeletonFallback;
|
|
155
|
+
//# sourceMappingURL=chunk-N4264P7N.cjs.map
|
|
156
|
+
//# sourceMappingURL=chunk-N4264P7N.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/LoadingFallback.tsx","../src/components/internal/ErrorBoundary.tsx","../src/components/QueryErrorBoundary.tsx","../src/components/SuspenseWrapper.tsx"],"names":["jsxs","jsx","Component","QueryErrorResetBoundary","Suspense"],"mappings":"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","file":"chunk-N4264P7N.cjs","sourcesContent":["export function DefaultLoadingFallback() {\n return (\n <div className=\"flex items-center justify-center p-6\">\n <div className=\"text-center\">\n <div className=\"w-12 h-12 mx-auto mb-3 border-4 border-primary/20 border-t-primary rounded-full animate-spin\" />\n <p className=\"text-sm text-muted-foreground\">加载中...</p>\n </div>\n </div>\n );\n}\nexport function TextSkeletonFallback({ lines = 3 }: { lines?: number }) {\n return (\n <div className=\"space-y-3 p-4\">\n {Array.from({ length: lines }).map((_, i) => (\n <div key={i} className=\"animate-pulse\">\n <div className=\"h-4 bg-input rounded w-3/4 mb-2\" />\n <div className=\"h-4 bg-input rounded w-1/2\" />\n </div>\n ))}\n </div>\n );\n}\nexport function CardSkeletonFallback() {\n return (\n <div className=\"border border-border rounded-lg p-4 animate-pulse bg-card\">\n <div className=\"h-6 bg-input rounded w-1/2 mb-4\" />\n <div className=\"space-y-2\">\n <div className=\"h-4 bg-input rounded\" />\n <div className=\"h-4 bg-input rounded w-5/6\" />\n <div className=\"h-4 bg-input rounded w-4/6\" />\n </div>\n </div>\n );\n}\nexport function ListSkeletonFallback({ items = 3 }: { items?: number }) {\n return (\n <div className=\"space-y-4 p-4\">\n {Array.from({ length: items }).map((_, i) => (\n <div key={i} className=\"flex items-center space-x-4 animate-pulse\">\n <div className=\"w-12 h-12 bg-input rounded-full shrink-0\" />\n <div className=\"flex-1 space-y-2\">\n <div className=\"h-4 bg-input rounded w-3/4\" />\n <div className=\"h-3 bg-input rounded w-1/2\" />\n </div>\n </div>\n ))}\n </div>\n );\n}\nexport function PageSkeletonFallback() {\n return (\n <div className=\"w-full p-6 space-y-6\">\n <div className=\"animate-pulse\">\n <div className=\"h-8 bg-input rounded w-1/3 mb-2\" />\n <div className=\"h-4 bg-input rounded w-1/2\" />\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div className=\"md:col-span-2 space-y-4\">\n <CardSkeletonFallback />\n <CardSkeletonFallback />\n </div>\n <div className=\"space-y-4\">\n <div className=\"border border-border rounded-lg p-4 animate-pulse bg-card\">\n <div className=\"h-4 bg-input rounded w-2/3 mb-3\" />\n <div className=\"space-y-2\">\n <div className=\"h-3 bg-input rounded\" />\n <div className=\"h-3 bg-input rounded w-5/6\" />\n <div className=\"h-3 bg-input rounded w-4/6\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\nexport function SmallLoadingIndicator({ size = \"md\" }: { size?: \"sm\" | \"md\" | \"lg\" }) {\n const sizeClasses = {\n sm: \"w-4 h-4 border-2\",\n md: \"w-6 h-6 border-2\",\n lg: \"w-8 h-8 border-3\"\n } as const;\n return <div className={`${sizeClasses[size]} border-primary/20 border-t-primary rounded-full animate-spin`} />;\n}\nexport function FullScreenLoading({ message = \"加载中...\" }: { message?: string }) {\n return (\n <div className=\"fixed inset-0 bg-background/90 flex items-center justify-center z-50\">\n <div className=\"text-center\">\n <div className=\"w-16 h-16 mx-auto mb-4 border-4 border-primary/20 border-t-primary rounded-full animate-spin\" />\n <p className=\"text-lg text-foreground\">{message}</p>\n </div>\n </div>\n );\n}","import type { ReactNode } from \"react\";\nimport { Component } from \"react\";\n\nexport interface ErrorBoundaryProps {\n children: ReactNode;\n fallback?: (error: Error, resetErrorBoundary: () => void) => ReactNode;\n onError?: (error: Error, errorInfo: { componentStack: string }) => void;\n onReset?: () => void;\n resetKeys?: Array<string | number>;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error?: Error;\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false };\n }\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n componentDidCatch(error: Error, errorInfo: { componentStack: string }) {\n this.props.onError?.(error, errorInfo);\n }\n componentDidUpdate(prevProps: ErrorBoundaryProps) {\n if (this.state.hasError && this.props.resetKeys && prevProps.resetKeys) {\n const hasResetKeyChanged = this.props.resetKeys.length !== prevProps.resetKeys.length ||\n this.props.resetKeys.some((key, index) => key !== prevProps.resetKeys?.[index]);\n if (hasResetKeyChanged) {\n this.resetErrorBoundary();\n }\n }\n }\n resetErrorBoundary = () => {\n this.props.onReset?.();\n this.setState({ hasError: false, error: undefined });\n };\n render() {\n const { hasError, error } = this.state;\n const { children, fallback } = this.props;\n if (hasError && error) {\n if (fallback) return fallback(error, this.resetErrorBoundary);\n return (\n <div className=\"flex items-center justify-center p-6\">\n <div className=\"text-center max-w-md\">\n <h3 className=\"text-lg font-semibold text-foreground mb-2\">发生错误</h3>\n <p className=\"text-sm text-muted-foreground mb-4\">{error.message || \"请稍后重试\"}</p>\n <button onClick={this.resetErrorBoundary} className=\"px-4 py-2 bg-primary text-primary-foreground rounded-md\">\n 重试\n </button>\n </div>\n </div>\n );\n }\n return children;\n }\n}","import type { ReactNode } from \"react\";\nimport { QueryErrorResetBoundary } from \"@tanstack/react-query\";\nimport { ErrorBoundary } from \"./internal/ErrorBoundary.js\";\n\nexport interface QueryErrorBoundaryProps {\n children: ReactNode;\n fallback?: (error: Error, resetErrorBoundary: () => void) => ReactNode;\n onError?: (error: Error, errorInfo: { componentStack: string }) => void;\n resetKeys?: Array<string | number>;\n}\n\nexport function QueryErrorBoundary({ children, fallback, onError, resetKeys, ...props }: QueryErrorBoundaryProps) {\n return (\n <QueryErrorResetBoundary>\n {({ reset }) => (\n <ErrorBoundary fallback={fallback || QueryErrorFallback} onError={onError} onReset={reset} resetKeys={resetKeys} {...props}>\n {children}\n </ErrorBoundary>\n )}\n </QueryErrorResetBoundary>\n );\n}\n\nexport function QueryErrorFallback(error: Error, resetErrorBoundary: () => void) {\n return (\n <div className=\"flex items-center justify-center p-6\">\n <div className=\"text-center max-w-md\">\n <div className=\"mb-4\">\n <div className=\"w-12 h-12 mx-auto mb-3 bg-orange-100 rounded-full flex items-center justify-center\">\n <svg className=\"w-6 h-6 text-orange-600\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n </div>\n </div>\n <h3 className=\"text-lg font-semibold text-foreground mb-2\">查询失败</h3>\n <p className=\"text-sm text-muted-foreground mb-4\">{error.message || \"数据加载失败,请稍后重试\"}</p>\n <div className=\"space-x-2\">\n <button onClick={resetErrorBoundary} className=\"px-4 py-2 bg-primary text-primary-foreground rounded-md\">\n 重新加载\n </button>\n <button onClick={() => window.location.reload()} className=\"px-4 py-2 bg-muted text-foreground rounded-md\">\n 刷新页面\n </button>\n </div>\n </div>\n </div>\n );\n}","import type { ReactNode } from \"react\";\nimport { Suspense } from \"react\";\nimport { QueryErrorBoundary } from \"./QueryErrorBoundary.js\";\n\ninterface SuspenseWrapperProps {\n children: ReactNode;\n fallback?: ReactNode;\n errorFallback?: (error: Error, resetErrorBoundary: () => void) => ReactNode;\n onError?: (error: Error, errorInfo: { componentStack: string }) => void;\n resetKeys?: Array<string | number>;\n}\n\nexport function SuspenseWrapper({ children, fallback = <div>Loading...</div>, errorFallback, onError, resetKeys }: SuspenseWrapperProps) {\n return (\n <QueryErrorBoundary fallback={errorFallback} onError={onError} resetKeys={resetKeys}>\n <Suspense fallback={fallback}>{children}</Suspense>\n </QueryErrorBoundary>\n );\n}\n\nexport function QuerySuspenseWrapper({ children, fallback = <div>Loading query...</div>, errorFallback, onError, resetKeys }: SuspenseWrapperProps) {\n return (\n <SuspenseWrapper fallback={fallback} errorFallback={errorFallback} onError={onError} resetKeys={resetKeys}>\n {children}\n </SuspenseWrapper>\n );\n}\n\nexport type { SuspenseWrapperProps };"]}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var reactQuery = require('@tanstack/react-query');
|
|
4
|
+
|
|
5
|
+
// src/core/focusManager.ts
|
|
6
|
+
function setupFocusManager(config = {}) {
|
|
7
|
+
const { enabled = true, customEventListener } = config;
|
|
8
|
+
if (!enabled) {
|
|
9
|
+
reactQuery.focusManager.setEventListener(() => () => {
|
|
10
|
+
});
|
|
11
|
+
reactQuery.focusManager.setFocused(false);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (customEventListener) {
|
|
15
|
+
reactQuery.focusManager.setEventListener(customEventListener);
|
|
16
|
+
} else {
|
|
17
|
+
reactQuery.focusManager.setEventListener((handleFocus) => {
|
|
18
|
+
if (typeof window === "undefined" || !window.addEventListener) {
|
|
19
|
+
return () => {
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const handleVisibilityChange = () => {
|
|
23
|
+
handleFocus();
|
|
24
|
+
};
|
|
25
|
+
const handleWindowFocus = () => handleFocus();
|
|
26
|
+
window.addEventListener("visibilitychange", handleVisibilityChange, false);
|
|
27
|
+
window.addEventListener("focus", handleWindowFocus, false);
|
|
28
|
+
return () => {
|
|
29
|
+
window.removeEventListener("visibilitychange", handleVisibilityChange);
|
|
30
|
+
window.removeEventListener("focus", handleWindowFocus);
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function pauseFocusManager() {
|
|
36
|
+
reactQuery.focusManager.setFocused(false);
|
|
37
|
+
}
|
|
38
|
+
function resumeFocusManager() {
|
|
39
|
+
const isVisible = typeof document !== "undefined" ? !document.hidden : true;
|
|
40
|
+
reactQuery.focusManager.setFocused(isVisible);
|
|
41
|
+
}
|
|
42
|
+
var SmartFocusManager = class {
|
|
43
|
+
constructor() {
|
|
44
|
+
this.pauseCount = 0;
|
|
45
|
+
this.refetchHistory = /* @__PURE__ */ new Map();
|
|
46
|
+
}
|
|
47
|
+
serializeKey(queryKey) {
|
|
48
|
+
try {
|
|
49
|
+
return JSON.stringify(queryKey);
|
|
50
|
+
} catch {
|
|
51
|
+
return Array.isArray(queryKey) ? queryKey.map((v) => {
|
|
52
|
+
try {
|
|
53
|
+
return JSON.stringify(v);
|
|
54
|
+
} catch {
|
|
55
|
+
return String(v);
|
|
56
|
+
}
|
|
57
|
+
}).join("|") : String(queryKey);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
pause() {
|
|
61
|
+
if (this.pauseCount === 0) {
|
|
62
|
+
this.originalFocusState = reactQuery.focusManager.isFocused();
|
|
63
|
+
reactQuery.focusManager.setFocused(false);
|
|
64
|
+
}
|
|
65
|
+
this.pauseCount++;
|
|
66
|
+
}
|
|
67
|
+
resume() {
|
|
68
|
+
if (this.pauseCount > 0) {
|
|
69
|
+
this.pauseCount--;
|
|
70
|
+
if (this.pauseCount === 0) {
|
|
71
|
+
reactQuery.focusManager.setFocused(this.originalFocusState);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
reset() {
|
|
76
|
+
if (this.pauseCount > 0) {
|
|
77
|
+
this.pauseCount = 0;
|
|
78
|
+
reactQuery.focusManager.setFocused(this.originalFocusState);
|
|
79
|
+
this.originalFocusState = void 0;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
destroy() {
|
|
83
|
+
this.reset();
|
|
84
|
+
this.clearHistory();
|
|
85
|
+
}
|
|
86
|
+
shouldRefetch(queryKey, minInterval = 5e3) {
|
|
87
|
+
const key = this.serializeKey(queryKey);
|
|
88
|
+
const lastRefetchTime = this.refetchHistory.has(key) ? this.refetchHistory.get(key) : -Infinity;
|
|
89
|
+
const now = Date.now();
|
|
90
|
+
if (now - lastRefetchTime < minInterval) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
this.refetchHistory.set(key, now);
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
clearHistory() {
|
|
97
|
+
this.refetchHistory.clear();
|
|
98
|
+
}
|
|
99
|
+
clearHistoryByKey(queryKey) {
|
|
100
|
+
const key = this.serializeKey(queryKey);
|
|
101
|
+
this.refetchHistory.delete(key);
|
|
102
|
+
}
|
|
103
|
+
getLastRefetchTime(queryKey) {
|
|
104
|
+
const key = this.serializeKey(queryKey);
|
|
105
|
+
return this.refetchHistory.get(key);
|
|
106
|
+
}
|
|
107
|
+
getStats() {
|
|
108
|
+
return { isPaused: this.pauseCount > 0, pauseCount: this.pauseCount, isFocused: reactQuery.focusManager.isFocused() };
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
var smartFocusManagerInstance = null;
|
|
112
|
+
function getSmartFocusManager() {
|
|
113
|
+
if (!smartFocusManagerInstance) {
|
|
114
|
+
smartFocusManagerInstance = new SmartFocusManager();
|
|
115
|
+
}
|
|
116
|
+
return smartFocusManagerInstance;
|
|
117
|
+
}
|
|
118
|
+
function resetSmartFocusManager() {
|
|
119
|
+
smartFocusManagerInstance = null;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
Object.defineProperty(exports, "focusManager", {
|
|
123
|
+
enumerable: true,
|
|
124
|
+
get: function () { return reactQuery.focusManager; }
|
|
125
|
+
});
|
|
126
|
+
exports.SmartFocusManager = SmartFocusManager;
|
|
127
|
+
exports.getSmartFocusManager = getSmartFocusManager;
|
|
128
|
+
exports.pauseFocusManager = pauseFocusManager;
|
|
129
|
+
exports.resetSmartFocusManager = resetSmartFocusManager;
|
|
130
|
+
exports.resumeFocusManager = resumeFocusManager;
|
|
131
|
+
exports.setupFocusManager = setupFocusManager;
|
|
132
|
+
//# sourceMappingURL=chunk-NF5QYPYC.cjs.map
|
|
133
|
+
//# sourceMappingURL=chunk-NF5QYPYC.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/focusManager.ts"],"names":["focusManager"],"mappings":"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","file":"chunk-NF5QYPYC.cjs","sourcesContent":["import type { QueryKey } from \"@tanstack/react-query\";\nimport { focusManager } from \"@tanstack/react-query\";\nexport { focusManager };\n\nexport interface FocusManagerConfig {\n enabled?: boolean;\n customEventListener?: (handleFocus: () => void) => () => void;\n refetchOnWindowFocus?: boolean;\n}\n\nexport function setupFocusManager(config: FocusManagerConfig = {}) {\n const { enabled = true, customEventListener } = config;\n if (!enabled) {\n focusManager.setEventListener(() => () => {});\n focusManager.setFocused(false);\n return;\n }\n if (customEventListener) {\n focusManager.setEventListener(customEventListener);\n } else {\n focusManager.setEventListener((handleFocus) => {\n if (typeof window === \"undefined\" || !window.addEventListener) {\n return () => {};\n }\n const handleVisibilityChange = () => {\n handleFocus();\n };\n const handleWindowFocus = () => handleFocus();\n window.addEventListener(\"visibilitychange\", handleVisibilityChange, false);\n window.addEventListener(\"focus\", handleWindowFocus, false);\n return () => {\n window.removeEventListener(\"visibilitychange\", handleVisibilityChange);\n window.removeEventListener(\"focus\", handleWindowFocus);\n };\n });\n }\n}\n\nexport function pauseFocusManager() {\n focusManager.setFocused(false);\n}\n\nexport function resumeFocusManager() {\n const isVisible = typeof document !== \"undefined\" ? !document.hidden : true;\n focusManager.setFocused(isVisible);\n}\n\nexport class SmartFocusManager {\n private pauseCount = 0;\n private originalFocusState: boolean | undefined;\n private refetchHistory: Map<string, number> = new Map();\n private serializeKey(queryKey: QueryKey): string {\n try {\n return JSON.stringify(queryKey);\n } catch {\n return Array.isArray(queryKey)\n ? queryKey\n .map((v) => {\n try {\n return JSON.stringify(v);\n } catch {\n return String(v);\n }\n })\n .join(\"|\")\n : String(queryKey);\n }\n }\n pause(): void {\n if (this.pauseCount === 0) {\n this.originalFocusState = focusManager.isFocused();\n focusManager.setFocused(false);\n }\n this.pauseCount++;\n }\n resume(): void {\n if (this.pauseCount > 0) {\n this.pauseCount--;\n if (this.pauseCount === 0) {\n focusManager.setFocused(this.originalFocusState);\n }\n }\n }\n reset(): void {\n if (this.pauseCount > 0) {\n this.pauseCount = 0;\n focusManager.setFocused(this.originalFocusState);\n this.originalFocusState = undefined;\n }\n }\n destroy(): void {\n this.reset();\n this.clearHistory();\n }\n shouldRefetch(queryKey: QueryKey, minInterval: number = 5000): boolean {\n const key = this.serializeKey(queryKey);\n const lastRefetchTime = this.refetchHistory.has(key) ? this.refetchHistory.get(key)! : -Infinity;\n const now = Date.now();\n if (now - lastRefetchTime < minInterval) {\n return false;\n }\n this.refetchHistory.set(key, now);\n return true;\n }\n clearHistory(): void {\n this.refetchHistory.clear();\n }\n clearHistoryByKey(queryKey: QueryKey): void {\n const key = this.serializeKey(queryKey);\n this.refetchHistory.delete(key);\n }\n getLastRefetchTime(queryKey: QueryKey): number | undefined {\n const key = this.serializeKey(queryKey);\n return this.refetchHistory.get(key);\n }\n getStats(): { isPaused: boolean; pauseCount: number; isFocused: boolean } {\n return { isPaused: this.pauseCount > 0, pauseCount: this.pauseCount, isFocused: focusManager.isFocused() };\n }\n}\n\nlet smartFocusManagerInstance: SmartFocusManager | null = null;\nexport function getSmartFocusManager(): SmartFocusManager {\n if (!smartFocusManagerInstance) {\n smartFocusManagerInstance = new SmartFocusManager();\n }\n return smartFocusManagerInstance;\n}\nexport function resetSmartFocusManager(): void {\n smartFocusManagerInstance = null;\n}"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
4
|
+
// src/core/env.ts
|
|
5
|
+
function getEnvironment() {
|
|
6
|
+
if (typeof process !== "undefined" && process?.env?.NODE_ENV) {
|
|
7
|
+
return process.env.NODE_ENV;
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
if (typeof ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-OFLCHKKE.cjs', document.baseURI).href)) }) !== "undefined" && undefined) {
|
|
11
|
+
const env = undefined;
|
|
12
|
+
if (env.MODE) return env.MODE;
|
|
13
|
+
if (typeof env.PROD === "boolean") return env.PROD ? "production" : "development";
|
|
14
|
+
}
|
|
15
|
+
} catch {
|
|
16
|
+
}
|
|
17
|
+
return void 0;
|
|
18
|
+
}
|
|
19
|
+
var nodeEnv = getEnvironment();
|
|
20
|
+
var isProd = nodeEnv === "production";
|
|
21
|
+
var isDev = nodeEnv === "development" || !isProd && nodeEnv !== "test";
|
|
22
|
+
var isTest = nodeEnv === "test";
|
|
23
|
+
|
|
24
|
+
exports.isDev = isDev;
|
|
25
|
+
exports.isProd = isProd;
|
|
26
|
+
exports.isTest = isTest;
|
|
27
|
+
//# sourceMappingURL=chunk-OFLCHKKE.cjs.map
|
|
28
|
+
//# sourceMappingURL=chunk-OFLCHKKE.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/env.ts"],"names":[],"mappings":";;;;AAAA,SAAS,cAAA,GAAqC;AAE5C,EAAA,IAAI,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,EAAS,KAAK,QAAA,EAAU;AAC5D,IAAA,OAAO,QAAQ,GAAA,CAAI,QAAA;AAAA,EACrB;AAEA,EAAA,IAAI;AAEF,IAAA,IAAI,OAAO,+QAAA,KAAgB,WAAA,IAAe,SAAY,EAAK;AAEzD,MAAA,MAAM,MAAM,SAAY;AACxB,MAAA,IAAI,GAAA,CAAI,IAAA,EAAM,OAAO,GAAA,CAAI,IAAA;AACzB,MAAA,IAAI,OAAO,GAAA,CAAI,IAAA,KAAS,WAAW,OAAO,GAAA,CAAI,OAAO,YAAA,GAAe,aAAA;AAAA,IACtE;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AACA,EAAA,OAAO,MAAA;AACT;AAEA,IAAM,UAAU,cAAA,EAAe;AACxB,IAAM,SAAS,OAAA,KAAY;AAC3B,IAAM,KAAA,GAAQ,OAAA,KAAY,aAAA,IAAkB,CAAC,UAAU,OAAA,KAAY;AACnE,IAAM,SAAS,OAAA,KAAY","file":"chunk-OFLCHKKE.cjs","sourcesContent":["function getEnvironment(): string | undefined {\n // Node.js / Webpack / CRA\n if (typeof process !== \"undefined\" && process?.env?.NODE_ENV) {\n return process.env.NODE_ENV;\n }\n // Vite / modern bundlers\n try {\n // @ts-expect-error import.meta.env may not exist in all environments\n if (typeof import.meta !== \"undefined\" && import.meta.env) {\n // @ts-expect-error accessing Vite-specific env\n const env = import.meta.env;\n if (env.MODE) return env.MODE;\n if (typeof env.PROD === \"boolean\") return env.PROD ? \"production\" : \"development\";\n }\n } catch {\n // import.meta not supported\n }\n return undefined;\n}\n\nconst nodeEnv = getEnvironment();\nexport const isProd = nodeEnv === \"production\";\nexport const isDev = nodeEnv === \"development\" || (!isProd && nodeEnv !== \"test\");\nexport const isTest = nodeEnv === \"test\";"]}
|