@multiplatform.one/core 7.87.1 → 7.88.1
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/dist/cjs/app/TanstackDevtools.cjs +0 -2
- package/dist/cjs/app/TanstackDevtools.native.js +0 -2
- package/dist/cjs/app/TanstackDevtools.native.js.map +1 -1
- package/dist/cjs/app/TanstackProvider.cjs +7 -1
- package/dist/esm/app/TanstackDevtools.mjs +1 -3
- package/dist/esm/app/TanstackDevtools.mjs.map +1 -1
- package/dist/esm/app/TanstackDevtools.native.js +1 -3
- package/dist/esm/app/TanstackDevtools.native.js.map +1 -1
- package/dist/esm/app/TanstackProvider.mjs +7 -1
- package/dist/esm/app/TanstackProvider.mjs.map +1 -1
- package/package.json +13 -13
- package/src/app/TanstackDevtools.tsx +4 -13
- package/src/app/TanstackProvider.devtools.spec.tsx +84 -14
- package/src/app/TanstackProvider.tsx +16 -1
- package/src/app/devtoolsTrigger.spec.ts +13 -4
- package/types/app/TanstackDevtools.d.ts.map +1 -1
- package/types/app/TanstackProvider.d.ts.map +1 -1
|
@@ -106,8 +106,6 @@ function TanstackDevtoolsWrapper({
|
|
|
106
106
|
void syncDevtoolsTheme(resolvedScheme);
|
|
107
107
|
}, [resolvedScheme]);
|
|
108
108
|
const frappePlugin = useFrappePlugin();
|
|
109
|
-
(0, import_devtoolsTrigger.useShakeToOpen)(tanstackConfig.shakeToOpen !== false);
|
|
110
|
-
(0, import_devtoolsTrigger.useDevtoolsKeyboardTrigger)(true);
|
|
111
109
|
const openRequests = (0, import_devtoolsTrigger.useDevtoolsOpenRequests)();
|
|
112
110
|
const plugins = [{
|
|
113
111
|
id: "react-query",
|
|
@@ -112,8 +112,6 @@ function TanstackDevtoolsWrapper(param) {
|
|
|
112
112
|
void syncDevtoolsTheme(resolvedScheme);
|
|
113
113
|
}, [resolvedScheme]);
|
|
114
114
|
var frappePlugin = useFrappePlugin();
|
|
115
|
-
(0, import_devtoolsTrigger.useShakeToOpen)(tanstackConfig.shakeToOpen !== false);
|
|
116
|
-
(0, import_devtoolsTrigger.useDevtoolsKeyboardTrigger)(true);
|
|
117
115
|
var openRequests = (0, import_devtoolsTrigger.useDevtoolsOpenRequests)();
|
|
118
116
|
var plugins = [{
|
|
119
117
|
id: "react-query",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","TanstackDevtools_exports","__export","default","TanstackDevtoolsWrapper","module","exports","import_jsx_runtime","require","import_react","__toESM","import_production","import_react_devtools","import_production2","import_react2","import_production3","import_theme","import_store","import_react3","import_devtoolsTrigger","devtoolsSettingsKey","PacerDevtoolsPanel","createReactPanel","PacerDevtoolsCore","pacerDevtoolsPlugin","createReactPlugin","name","Component","syncDevtoolsTheme","resolvedScheme","raw","Promise","resolve","storage","getItem","settings","JSON","parse","theme","setItem","stringify","unused","useFrappePlugin","plugin","setPlugin","useState","useEffect","cancelled","tryResolve","frappeDevtoolsPlugin","__getActiveSyncModule","all","sync","then","found","attempts","interval","setInterval","_$found","clearInterval","param","tanstackConfig","window","frappePlugin","
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","TanstackDevtools_exports","__export","default","TanstackDevtoolsWrapper","module","exports","import_jsx_runtime","require","import_react","__toESM","import_production","import_react_devtools","import_production2","import_react2","import_production3","import_theme","import_store","import_react3","import_devtoolsTrigger","devtoolsSettingsKey","PacerDevtoolsPanel","createReactPanel","PacerDevtoolsCore","pacerDevtoolsPlugin","createReactPlugin","name","Component","syncDevtoolsTheme","resolvedScheme","raw","Promise","resolve","storage","getItem","settings","JSON","parse","theme","setItem","stringify","unused","useFrappePlugin","plugin","setPlugin","useState","useEffect","cancelled","tryResolve","frappeDevtoolsPlugin","__getActiveSyncModule","all","sync","then","found","attempts","interval","setInterval","_$found","clearInterval","param","tanstackConfig","window","frappePlugin","openRequests","useDevtoolsOpenRequests","plugins","id","render","jsx","ReactQueryDevtools","initialIsOpen","formDevtoolsPlugin","defaultOpen","_el","props","ThemeDevtoolsPanel","useUserScheme","devtoolsTheme","tamaguiConfig","themeColors","currentThemeColor","onThemeColorChange"],"sources":["../../../src/app/TanstackDevtools.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -39,6 +39,7 @@ module.exports = __toCommonJS(TanstackProvider_exports);
|
|
|
39
39
|
var import_react_query = require("@tanstack/react-query");
|
|
40
40
|
var import_react = require("react");
|
|
41
41
|
var import_platform = require("@multiplatform.one/platform");
|
|
42
|
+
var import_devtoolsTrigger = require("./devtoolsTrigger.cjs");
|
|
42
43
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
43
44
|
const LazyDevtools = (0, import_react.lazy)(() => import("./TanstackDevtools"));
|
|
44
45
|
function useHydrated() {
|
|
@@ -63,7 +64,12 @@ function createTanstackProvider(tanstackConfig) {
|
|
|
63
64
|
}) {
|
|
64
65
|
const wantsDevtools = (tanstackConfig.debug ?? (import_platform.isDev || import_platform.config.get("DEBUG") === "1")) && !import_platform.platform.isStorybook;
|
|
65
66
|
const hydrated = useHydrated();
|
|
66
|
-
const
|
|
67
|
+
const armed = wantsDevtools && hydrated;
|
|
68
|
+
(0, import_devtoolsTrigger.useDevtoolsKeyboardTrigger)(armed);
|
|
69
|
+
(0, import_devtoolsTrigger.useShakeToOpen)(armed && tanstackConfig.shakeToOpen !== false);
|
|
70
|
+
const openRequests = (0, import_devtoolsTrigger.useDevtoolsOpenRequests)();
|
|
71
|
+
const [leftOpen] = (0, import_react.useState)(import_devtoolsTrigger.isDevtoolsShellOpen);
|
|
72
|
+
const showDevtools = armed && (openRequests > 0 || leftOpen);
|
|
67
73
|
const scheme = tanstackConfig.useUserScheme?.();
|
|
68
74
|
const resolvedScheme = scheme?.value ?? "light";
|
|
69
75
|
return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_react_query.QueryClientProvider, {
|
|
@@ -6,7 +6,7 @@ import { PacerDevtoolsCore } from "@tanstack/pacer-devtools/production";
|
|
|
6
6
|
import { ThemeDevtoolsPanel } from "@multiplatform.one/theme";
|
|
7
7
|
import { storage } from "@multiplatform.one/store";
|
|
8
8
|
import { useEffect, useState } from "react";
|
|
9
|
-
import { devtoolsOpenHotkey,
|
|
9
|
+
import { devtoolsOpenHotkey, useDevtoolsOpenRequests } from "./devtoolsTrigger.mjs";
|
|
10
10
|
import { jsx } from "react/jsx-runtime";
|
|
11
11
|
const devtoolsSettingsKey = "tanstack_devtools_settings";
|
|
12
12
|
const [PacerDevtoolsPanel] = createReactPanel(PacerDevtoolsCore);
|
|
@@ -68,8 +68,6 @@ function TanstackDevtoolsWrapper({
|
|
|
68
68
|
void syncDevtoolsTheme(resolvedScheme);
|
|
69
69
|
}, [resolvedScheme]);
|
|
70
70
|
const frappePlugin = useFrappePlugin();
|
|
71
|
-
useShakeToOpen(tanstackConfig.shakeToOpen !== false);
|
|
72
|
-
useDevtoolsKeyboardTrigger(true);
|
|
73
71
|
const openRequests = useDevtoolsOpenRequests();
|
|
74
72
|
const plugins = [{
|
|
75
73
|
id: "react-query",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ReactQueryDevtools","TanStackDevtools","formDevtoolsPlugin","createReactPanel","createReactPlugin","PacerDevtoolsCore","ThemeDevtoolsPanel","storage","useEffect","useState","devtoolsOpenHotkey","
|
|
1
|
+
{"version":3,"names":["ReactQueryDevtools","TanStackDevtools","formDevtoolsPlugin","createReactPanel","createReactPlugin","PacerDevtoolsCore","ThemeDevtoolsPanel","storage","useEffect","useState","devtoolsOpenHotkey","useDevtoolsOpenRequests","jsx","devtoolsSettingsKey","PacerDevtoolsPanel","pacerDevtoolsPlugin","name","Component","syncDevtoolsTheme","resolvedScheme","raw","Promise","resolve","getItem","settings","JSON","parse","theme","setItem","stringify","useFrappePlugin","plugin","setPlugin","cancelled","tryResolve","frappeDevtoolsPlugin","__getActiveSyncModule","all","sync","then","found","attempts","interval","setInterval","clearInterval","TanstackDevtoolsWrapper","tanstackConfig","window","frappePlugin","openRequests","plugins","id","render","initialIsOpen","defaultOpen","_el","props","useUserScheme","devtoolsTheme","tamaguiConfig","themeColors","currentThemeColor","onThemeColorChange","config","triggerHidden","openHotkey"],"sources":["../../../src/app/TanstackDevtools.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ import { PacerDevtoolsCore } from "@tanstack/pacer-devtools/production";
|
|
|
8
8
|
import { ThemeDevtoolsPanel } from "@multiplatform.one/theme";
|
|
9
9
|
import { storage } from "@multiplatform.one/store";
|
|
10
10
|
import { useEffect, useState } from "react";
|
|
11
|
-
import { devtoolsOpenHotkey,
|
|
11
|
+
import { devtoolsOpenHotkey, useDevtoolsOpenRequests } from "./devtoolsTrigger.native.js";
|
|
12
12
|
var devtoolsSettingsKey = "tanstack_devtools_settings";
|
|
13
13
|
var [PacerDevtoolsPanel] = createReactPanel(PacerDevtoolsCore);
|
|
14
14
|
var [pacerDevtoolsPlugin] = createReactPlugin({
|
|
@@ -72,8 +72,6 @@ function TanstackDevtoolsWrapper(param) {
|
|
|
72
72
|
void syncDevtoolsTheme(resolvedScheme);
|
|
73
73
|
}, [resolvedScheme]);
|
|
74
74
|
var frappePlugin = useFrappePlugin();
|
|
75
|
-
useShakeToOpen(tanstackConfig.shakeToOpen !== false);
|
|
76
|
-
useDevtoolsKeyboardTrigger(true);
|
|
77
75
|
var openRequests = useDevtoolsOpenRequests();
|
|
78
76
|
var plugins = [{
|
|
79
77
|
id: "react-query",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","_jsx","React","ReactQueryDevtools","TanStackDevtools","formDevtoolsPlugin","createReactPanel","createReactPlugin","PacerDevtoolsCore","ThemeDevtoolsPanel","storage","useEffect","useState","devtoolsOpenHotkey","
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","React","ReactQueryDevtools","TanStackDevtools","formDevtoolsPlugin","createReactPanel","createReactPlugin","PacerDevtoolsCore","ThemeDevtoolsPanel","storage","useEffect","useState","devtoolsOpenHotkey","useDevtoolsOpenRequests","devtoolsSettingsKey","PacerDevtoolsPanel","pacerDevtoolsPlugin","name","Component","syncDevtoolsTheme","resolvedScheme","raw","Promise","resolve","getItem","settings","JSON","parse","theme","setItem","stringify","unused","useFrappePlugin","plugin","setPlugin","cancelled","tryResolve","frappeDevtoolsPlugin","__getActiveSyncModule","all","sync","then","found","attempts","interval","setInterval","_$found","clearInterval","TanstackDevtoolsWrapper","param","tanstackConfig","window","frappePlugin","openRequests","plugins","id","render","initialIsOpen","defaultOpen","_el","props","useUserScheme","devtoolsTheme","tamaguiConfig","themeColors","currentThemeColor","onThemeColorChange"],"sources":["../../../src/app/TanstackDevtools.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
2
2
|
import { Suspense, lazy, useEffect, useState } from "react";
|
|
3
3
|
import { config, isDev, platform } from "@multiplatform.one/platform";
|
|
4
|
+
import { isDevtoolsShellOpen, useDevtoolsKeyboardTrigger, useDevtoolsOpenRequests, useShakeToOpen } from "./devtoolsTrigger.mjs";
|
|
4
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
const LazyDevtools = lazy(() => import("./TanstackDevtools.mjs"));
|
|
6
7
|
function useHydrated() {
|
|
@@ -25,7 +26,12 @@ function createTanstackProvider(tanstackConfig) {
|
|
|
25
26
|
}) {
|
|
26
27
|
const wantsDevtools = (tanstackConfig.debug ?? (isDev || config.get("DEBUG") === "1")) && !platform.isStorybook;
|
|
27
28
|
const hydrated = useHydrated();
|
|
28
|
-
const
|
|
29
|
+
const armed = wantsDevtools && hydrated;
|
|
30
|
+
useDevtoolsKeyboardTrigger(armed);
|
|
31
|
+
useShakeToOpen(armed && tanstackConfig.shakeToOpen !== false);
|
|
32
|
+
const openRequests = useDevtoolsOpenRequests();
|
|
33
|
+
const [leftOpen] = useState(isDevtoolsShellOpen);
|
|
34
|
+
const showDevtools = armed && (openRequests > 0 || leftOpen);
|
|
29
35
|
const scheme = tanstackConfig.useUserScheme?.();
|
|
30
36
|
const resolvedScheme = scheme?.value ?? "light";
|
|
31
37
|
return /* @__PURE__ */jsxs(QueryClientProvider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["QueryClient","QueryClientProvider","Suspense","lazy","useEffect","useState","config","isDev","platform","jsx","jsxs","LazyDevtools","useHydrated","hydrated","setHydrated","createTanstackProvider","tanstackConfig","queryClient","defaultOptions","queries","staleTime","retryDelay","attempt","Math","min","queryClientOptions","TanstackProvider","children","wantsDevtools","debug","get","isStorybook","showDevtools","scheme","useUserScheme","resolvedScheme","value","client","displayName"],"sources":["../../../src/app/TanstackProvider.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,EAAaC,mBAAA,QAA2B;AACjD,SAASC,QAAA,EAAUC,IAAA,EAAMC,SAAA,EAAWC,QAAA,QAAwC;AAC5E,SAASC,MAAA,EAAQC,KAAA,EAAOC,QAAA,QAAgB;
|
|
1
|
+
{"version":3,"names":["QueryClient","QueryClientProvider","Suspense","lazy","useEffect","useState","config","isDev","platform","isDevtoolsShellOpen","useDevtoolsKeyboardTrigger","useDevtoolsOpenRequests","useShakeToOpen","jsx","jsxs","LazyDevtools","useHydrated","hydrated","setHydrated","createTanstackProvider","tanstackConfig","queryClient","defaultOptions","queries","staleTime","retryDelay","attempt","Math","min","queryClientOptions","TanstackProvider","children","wantsDevtools","debug","get","isStorybook","armed","shakeToOpen","openRequests","leftOpen","showDevtools","scheme","useUserScheme","resolvedScheme","value","client","displayName"],"sources":["../../../src/app/TanstackProvider.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,EAAaC,mBAAA,QAA2B;AACjD,SAASC,QAAA,EAAUC,IAAA,EAAMC,SAAA,EAAWC,QAAA,QAAwC;AAC5E,SAASC,MAAA,EAAQC,KAAA,EAAOC,QAAA,QAAgB;AAExC,SACEC,mBAAA,EACAC,0BAAA,EACAC,uBAAA,EACAC,cAAA,QACK;AA2DD,SAGMC,GAAA,EAHNC,IAAA;AAzDN,MAAMC,YAAA,GAAeZ,IAAA,CAAK,MAAM,OAAO,wBAAoB,CAAC;AAO5D,SAASa,YAAA,EAAuB;EAC9B,MAAM,CAACC,QAAA,EAAUC,WAAW,IAAIb,QAAA,CAAS,KAAK;EAC9CD,SAAA,CAAU,MAAM;IACdc,WAAA,CAAY,IAAI;EAClB,GAAG,EAAE;EACL,OAAOD,QAAA;AACT;AAEO,SAASE,uBAAuBC,cAAA,EAAmD;EACxF,MAAMC,WAAA,GAAc,IAAIrB,WAAA,CAAY;IAClCsB,cAAA,EAAgB;MACdC,OAAA,EAAS;QACPC,SAAA,EAAW,KAAK;QAChBC,UAAA,EAAaC,OAAA,IAAYC,IAAA,CAAKC,GAAA,CAAI,MAAO,KAAKF,OAAA,EAAS,GAAM;MAC/D;IACF;IACA,GAAGN,cAAA,CAAeS;EACpB,CAAC;EAED,SAASC,iBAAiB;IAAEC;EAAS,GAAsB;IAIzD,MAAMC,aAAA,IACHZ,cAAA,CAAea,KAAA,KAAU1B,KAAA,IAASD,MAAA,CAAO4B,GAAA,CAAI,OAAO,MAAM,SAAS,CAAC1B,QAAA,CAAS2B,WAAA;IAChF,MAAMlB,QAAA,GAAWD,WAAA,CAAY;IAc7B,MAAMoB,KAAA,GAAQJ,aAAA,IAAiBf,QAAA;IAC/BP,0BAAA,CAA2B0B,KAAK;IAChCxB,cAAA,CAAewB,KAAA,IAAShB,cAAA,CAAeiB,WAAA,KAAgB,KAAK;IAC5D,MAAMC,YAAA,GAAe3B,uBAAA,CAAwB;IAC7C,MAAM,CAAC4B,QAAQ,IAAIlC,QAAA,CAASI,mBAAmB;IAC/C,MAAM+B,YAAA,GAAeJ,KAAA,KAAUE,YAAA,GAAe,KAAKC,QAAA;IAEnD,MAAME,MAAA,GAASrB,cAAA,CAAesB,aAAA,GAAgB;IAC9C,MAAMC,cAAA,GAAiBF,MAAA,EAAQG,KAAA,IAAS;IAExC,OACE,eAAA9B,IAAA,CAACb,mBAAA;MAAoB4C,MAAA,EAAQxB,WAAA;MAC1BU,QAAA,GAAAS,YAAA,IACC,eAAA3B,GAAA,CAACX,QAAA;QACC6B,QAAA,iBAAAlB,GAAA,CAACE,YAAA;UAAa4B,cAAA;UAAgCvB;QAAA,CAAgC;MAAA,CAChF,GAEDW,QAAA;IAAA,CACH;EAEJ;EACAD,gBAAA,CAAiBgB,WAAA,GAAc;EAC/B,OAAOhB,gBAAA;AACT","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/core",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.88.1",
|
|
4
4
|
"description": "Core framework shell, provider composition, and layout factories for multiplatform.one",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"app",
|
|
@@ -56,11 +56,11 @@
|
|
|
56
56
|
"access": "public"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@multiplatform.one/i18n": "^7.
|
|
60
|
-
"@multiplatform.one/logger": "^7.
|
|
61
|
-
"@multiplatform.one/platform": "^7.
|
|
62
|
-
"@multiplatform.one/store": "^7.
|
|
63
|
-
"@multiplatform.one/theme": "^7.
|
|
59
|
+
"@multiplatform.one/i18n": "^7.88.1",
|
|
60
|
+
"@multiplatform.one/logger": "^7.88.1",
|
|
61
|
+
"@multiplatform.one/platform": "^7.88.1",
|
|
62
|
+
"@multiplatform.one/store": "^7.88.1",
|
|
63
|
+
"@multiplatform.one/theme": "^7.88.1",
|
|
64
64
|
"@tanstack/devtools-utils": "^0.4.0",
|
|
65
65
|
"@tanstack/pacer-devtools": "1.6.0",
|
|
66
66
|
"@tanstack/react-devtools": "0.10.13",
|
|
@@ -68,9 +68,9 @@
|
|
|
68
68
|
"react-cookie": "^8.1.2"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
|
-
"@multiplatform.one/frappe": "7.
|
|
72
|
-
"@multiplatform.one/test-utils": "7.
|
|
73
|
-
"@multiplatform.one/web3": "7.
|
|
71
|
+
"@multiplatform.one/frappe": "7.88.1",
|
|
72
|
+
"@multiplatform.one/test-utils": "7.88.1",
|
|
73
|
+
"@multiplatform.one/web3": "7.88.1",
|
|
74
74
|
"@sentry/react": "^10.77.1",
|
|
75
75
|
"@tamagui/build": "2.7.6",
|
|
76
76
|
"@tanstack/react-query": "^5.104.3",
|
|
@@ -89,10 +89,10 @@
|
|
|
89
89
|
"vitest": "^4.1.12"
|
|
90
90
|
},
|
|
91
91
|
"peerDependencies": {
|
|
92
|
-
"@multiplatform.one/frappe": "^7.
|
|
93
|
-
"@multiplatform.one/frappe-ui": "^7.
|
|
94
|
-
"@multiplatform.one/keycloak": "^7.
|
|
95
|
-
"@multiplatform.one/web3": "^7.
|
|
92
|
+
"@multiplatform.one/frappe": "^7.88.1",
|
|
93
|
+
"@multiplatform.one/frappe-ui": "^7.88.1",
|
|
94
|
+
"@multiplatform.one/keycloak": "^7.88.1",
|
|
95
|
+
"@multiplatform.one/web3": "^7.88.1",
|
|
96
96
|
"@sentry/react": "^9.0.0 || ^10.0.0",
|
|
97
97
|
"@tanstack/react-query": "^5.0.0",
|
|
98
98
|
"@tanstack/react-query-devtools": "^5.0.0",
|
|
@@ -14,12 +14,7 @@ import { ThemeDevtoolsPanel } from "@multiplatform.one/theme";
|
|
|
14
14
|
import { storage } from "@multiplatform.one/store";
|
|
15
15
|
import { useEffect, useState } from "react";
|
|
16
16
|
import type { TanstackConfig } from "./CreateApp";
|
|
17
|
-
import {
|
|
18
|
-
devtoolsOpenHotkey,
|
|
19
|
-
useDevtoolsKeyboardTrigger,
|
|
20
|
-
useDevtoolsOpenRequests,
|
|
21
|
-
useShakeToOpen,
|
|
22
|
-
} from "./devtoolsTrigger";
|
|
17
|
+
import { devtoolsOpenHotkey, useDevtoolsOpenRequests } from "./devtoolsTrigger";
|
|
23
18
|
|
|
24
19
|
const devtoolsSettingsKey = "tanstack_devtools_settings";
|
|
25
20
|
|
|
@@ -134,13 +129,9 @@ export default function TanstackDevtoolsWrapper({
|
|
|
134
129
|
|
|
135
130
|
const frappePlugin = useFrappePlugin();
|
|
136
131
|
|
|
137
|
-
// Shake
|
|
138
|
-
//
|
|
139
|
-
//
|
|
140
|
-
useShakeToOpen(tanstackConfig.shakeToOpen !== false);
|
|
141
|
-
// Cmd/Ctrl+Shift+` — capture-phase so apps cannot swallow it. TanStack
|
|
142
|
-
// still receives openHotkey (US-layout e.key sequence) as a fallback.
|
|
143
|
-
useDevtoolsKeyboardTrigger(true);
|
|
132
|
+
// Shake and Cmd/Ctrl+Shift+` listen in TanstackProvider, before this
|
|
133
|
+
// chunk loads (FZ-8553). TanStack still receives openHotkey (US-layout
|
|
134
|
+
// e.key sequence) as a fallback once the shell is up.
|
|
144
135
|
const openRequests = useDevtoolsOpenRequests();
|
|
145
136
|
|
|
146
137
|
const plugins = [
|
|
@@ -21,11 +21,40 @@ vi.mock("@multiplatform.one/platform", () => ({
|
|
|
21
21
|
},
|
|
22
22
|
platform: { isStorybook: false },
|
|
23
23
|
}));
|
|
24
|
-
vi.
|
|
24
|
+
const { loads } = vi.hoisted(() => ({ loads: { count: 0 } }));
|
|
25
|
+
vi.mock("./TanstackDevtools", () => {
|
|
26
|
+
loads.count += 1;
|
|
27
|
+
return { default: () => <div id="tanstack_devtools" /> };
|
|
28
|
+
});
|
|
25
29
|
|
|
26
30
|
(globalThis as { IS_REACT_ACT_ENVIRONMENT?: boolean }).IS_REACT_ACT_ENVIRONMENT = true;
|
|
27
31
|
|
|
28
|
-
async function
|
|
32
|
+
async function settle() {
|
|
33
|
+
await act(async () => {
|
|
34
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function pressHotkey() {
|
|
39
|
+
window.dispatchEvent(
|
|
40
|
+
new KeyboardEvent("keydown", {
|
|
41
|
+
code: "Backquote",
|
|
42
|
+
key: "~",
|
|
43
|
+
shiftKey: true,
|
|
44
|
+
ctrlKey: true,
|
|
45
|
+
bubbles: true,
|
|
46
|
+
}),
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
interface Mounted {
|
|
51
|
+
/** The devtools shell was on the page before any gesture. */
|
|
52
|
+
readonly atLoad: boolean;
|
|
53
|
+
/** The devtools shell was on the page after one Ctrl+Shift+`. */
|
|
54
|
+
readonly afterHotkey: boolean;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async function mountsDevtools(config: TanstackConfig = {}): Promise<Mounted> {
|
|
29
58
|
const Provider = createTanstackProvider(config);
|
|
30
59
|
const host = document.createElement("div");
|
|
31
60
|
document.body.append(host);
|
|
@@ -37,41 +66,82 @@ async function mountsDevtools(config: TanstackConfig = {}): Promise<boolean> {
|
|
|
37
66
|
</Provider>,
|
|
38
67
|
);
|
|
39
68
|
});
|
|
69
|
+
await settle();
|
|
70
|
+
const atLoad = host.querySelector("#tanstack_devtools") !== null;
|
|
40
71
|
await act(async () => {
|
|
41
|
-
|
|
72
|
+
pressHotkey();
|
|
42
73
|
});
|
|
43
|
-
|
|
74
|
+
await settle();
|
|
75
|
+
await settle();
|
|
76
|
+
const afterHotkey = host.querySelector("#tanstack_devtools") !== null;
|
|
44
77
|
act(() => root.unmount());
|
|
45
78
|
host.remove();
|
|
46
|
-
return
|
|
79
|
+
return { atLoad, afterHotkey };
|
|
47
80
|
}
|
|
48
81
|
|
|
49
82
|
afterEach(() => {
|
|
50
83
|
for (const key of Object.keys(env)) delete env[key];
|
|
51
84
|
build.isDev = false;
|
|
85
|
+
localStorage.clear();
|
|
52
86
|
});
|
|
53
87
|
|
|
54
88
|
describe("TanStack devtools", () => {
|
|
55
|
-
|
|
56
|
-
|
|
89
|
+
// First in the file: the module cache keeps the mock imported after this.
|
|
90
|
+
it("import the devtools module only once a gesture asks for it", async () => {
|
|
91
|
+
env.DEBUG = "1";
|
|
92
|
+
const Provider = createTanstackProvider({});
|
|
93
|
+
const host = document.createElement("div");
|
|
94
|
+
document.body.append(host);
|
|
95
|
+
const root = createRoot(host);
|
|
96
|
+
await act(async () => {
|
|
97
|
+
root.render(
|
|
98
|
+
<Provider>
|
|
99
|
+
<main>app</main>
|
|
100
|
+
</Provider>,
|
|
101
|
+
);
|
|
102
|
+
});
|
|
103
|
+
await settle();
|
|
104
|
+
await settle();
|
|
105
|
+
expect(loads.count).toBe(0);
|
|
106
|
+
await act(async () => {
|
|
107
|
+
pressHotkey();
|
|
108
|
+
});
|
|
109
|
+
await settle();
|
|
110
|
+
await settle();
|
|
111
|
+
expect(loads.count).toBe(1);
|
|
112
|
+
act(() => root.unmount());
|
|
113
|
+
host.remove();
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it("stay out of a production build, hotkey or not", async () => {
|
|
117
|
+
expect(await mountsDevtools()).toEqual({ atLoad: false, afterHotkey: false });
|
|
57
118
|
env.DEBUG = "0";
|
|
58
|
-
expect(await mountsDevtools()).
|
|
119
|
+
expect(await mountsDevtools()).toEqual({ atLoad: false, afterHotkey: false });
|
|
59
120
|
});
|
|
60
121
|
|
|
61
|
-
|
|
122
|
+
// FZ-8553: the chunk loads on the open gesture, not after hydration. Before
|
|
123
|
+
// the gesture nothing devtools-related is fetched or on the page.
|
|
124
|
+
it("wait for the open gesture in a dev build, then open on the first press", async () => {
|
|
62
125
|
build.isDev = true;
|
|
63
|
-
expect(await mountsDevtools()).
|
|
126
|
+
expect(await mountsDevtools()).toEqual({ atLoad: false, afterHotkey: true });
|
|
64
127
|
});
|
|
65
128
|
|
|
66
|
-
it("
|
|
129
|
+
it("wait for the open gesture in production when the deployment sets DEBUG=1", async () => {
|
|
67
130
|
env.DEBUG = "1";
|
|
68
|
-
expect(await mountsDevtools()).
|
|
131
|
+
expect(await mountsDevtools()).toEqual({ atLoad: false, afterHotkey: true });
|
|
69
132
|
});
|
|
70
133
|
|
|
71
134
|
it("follow an app that decides for itself", async () => {
|
|
72
135
|
env.DEBUG = "1";
|
|
73
|
-
expect(await mountsDevtools({ debug: false })).
|
|
136
|
+
expect(await mountsDevtools({ debug: false })).toEqual({ atLoad: false, afterHotkey: false });
|
|
137
|
+
localStorage.clear();
|
|
74
138
|
env.DEBUG = "0";
|
|
75
|
-
expect(await mountsDevtools({ debug: true })).
|
|
139
|
+
expect(await mountsDevtools({ debug: true })).toEqual({ atLoad: false, afterHotkey: true });
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
it("reopen a shell the visitor left open, without a gesture", async () => {
|
|
143
|
+
env.DEBUG = "1";
|
|
144
|
+
localStorage.setItem("tanstack_devtools_state", JSON.stringify({ persistOpen: true }));
|
|
145
|
+
expect((await mountsDevtools()).atLoad).toBe(true);
|
|
76
146
|
});
|
|
77
147
|
});
|
|
@@ -2,6 +2,12 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
|
2
2
|
import { Suspense, lazy, useEffect, useState, type PropsWithChildren } from "react";
|
|
3
3
|
import { config, isDev, platform } from "@multiplatform.one/platform";
|
|
4
4
|
import type { ProviderComponent, TanstackConfig } from "./CreateApp";
|
|
5
|
+
import {
|
|
6
|
+
isDevtoolsShellOpen,
|
|
7
|
+
useDevtoolsKeyboardTrigger,
|
|
8
|
+
useDevtoolsOpenRequests,
|
|
9
|
+
useShakeToOpen,
|
|
10
|
+
} from "./devtoolsTrigger";
|
|
5
11
|
|
|
6
12
|
const LazyDevtools = lazy(() => import("./TanstackDevtools"));
|
|
7
13
|
|
|
@@ -45,7 +51,16 @@ export function createTanstackProvider(tanstackConfig: TanstackConfig): Provider
|
|
|
45
51
|
// SSR smoke (SHC-329). Apps worked around it with per-app vite rewrites;
|
|
46
52
|
// gating here retires those. Nothing devtools-related reaches the server
|
|
47
53
|
// renderer now, so the served document is identical with debug on or off.
|
|
48
|
-
|
|
54
|
+
//
|
|
55
|
+
// The chunk itself waits for the open gesture (FZ-8553). The keyboard and
|
|
56
|
+
// shake listeners live here, eagerly, and the shell loads on the first
|
|
57
|
+
// open request, or at once when the visitor left it open last time.
|
|
58
|
+
const armed = wantsDevtools && hydrated;
|
|
59
|
+
useDevtoolsKeyboardTrigger(armed);
|
|
60
|
+
useShakeToOpen(armed && tanstackConfig.shakeToOpen !== false);
|
|
61
|
+
const openRequests = useDevtoolsOpenRequests();
|
|
62
|
+
const [leftOpen] = useState(isDevtoolsShellOpen);
|
|
63
|
+
const showDevtools = armed && (openRequests > 0 || leftOpen);
|
|
49
64
|
|
|
50
65
|
const scheme = tanstackConfig.useUserScheme?.();
|
|
51
66
|
const resolvedScheme = scheme?.value ?? "light";
|
|
@@ -563,6 +563,9 @@ describe("motion arming (deliberate, app-driven grant)", () => {
|
|
|
563
563
|
describe("devtools shell wiring", () => {
|
|
564
564
|
const shellSource = readFileSync(join(here, "TanstackDevtools.tsx"), "utf8");
|
|
565
565
|
const triggerSource = readFileSync(join(here, "devtoolsTrigger.ts"), "utf8");
|
|
566
|
+
// The open-gesture listeners live in the provider, which ships eagerly, so
|
|
567
|
+
// the shell chunk loads on the gesture instead of after hydration (FZ-8553).
|
|
568
|
+
const providerSource = readFileSync(join(here, "TanstackProvider.tsx"), "utf8");
|
|
566
569
|
|
|
567
570
|
it("opens focused on the Theme tab (defaultOpen on the theme plugin)", () => {
|
|
568
571
|
// The theme plugin object carries `defaultOpen: true` so a shake lands
|
|
@@ -576,7 +579,9 @@ describe("devtools shell wiring", () => {
|
|
|
576
579
|
// deliberate arm event and the pointerup grab is gone.
|
|
577
580
|
expect(triggerSource).not.toContain('addEventListener("pointerup"');
|
|
578
581
|
expect(triggerSource).toContain("window.addEventListener(devtoolsArmMotionEvent");
|
|
579
|
-
expect(
|
|
582
|
+
expect(providerSource).toContain(
|
|
583
|
+
"useShakeToOpen(armed && tanstackConfig.shakeToOpen !== false)",
|
|
584
|
+
);
|
|
580
585
|
});
|
|
581
586
|
|
|
582
587
|
it("binds Cmd/Ctrl+Shift+` (TanStack e.key for Shift+Backquote is ~)", () => {
|
|
@@ -589,7 +594,7 @@ describe("devtools shell wiring", () => {
|
|
|
589
594
|
// gets so it agrees on US keyboards.
|
|
590
595
|
expect(devtoolsOpenHotkey).toEqual(["CtrlOrMeta", "Shift", "~"]);
|
|
591
596
|
expect(shellSource).toContain("openHotkey: [...devtoolsOpenHotkey]");
|
|
592
|
-
expect(
|
|
597
|
+
expect(providerSource).toContain("useDevtoolsKeyboardTrigger(armed)");
|
|
593
598
|
});
|
|
594
599
|
|
|
595
600
|
it("the shortcut and a shake open through openDevtoolsShell, and a request remounts the shell", () => {
|
|
@@ -602,8 +607,12 @@ describe("devtools shell wiring", () => {
|
|
|
602
607
|
expect(triggerSource).not.toContain('from "@tanstack/devtools-event-client"');
|
|
603
608
|
});
|
|
604
609
|
|
|
605
|
-
it("mounts shake-to-open with the config opt-out", () => {
|
|
606
|
-
expect(
|
|
610
|
+
it("mounts shake-to-open with the config opt-out, once, in the provider", () => {
|
|
611
|
+
expect(providerSource).toContain(
|
|
612
|
+
"useShakeToOpen(armed && tanstackConfig.shakeToOpen !== false)",
|
|
613
|
+
);
|
|
614
|
+
expect(shellSource).not.toContain("useShakeToOpen(");
|
|
615
|
+
expect(shellSource).not.toContain("useDevtoolsKeyboardTrigger(");
|
|
607
616
|
});
|
|
608
617
|
|
|
609
618
|
it("forwards the accent channel to the theme panel", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TanstackDevtools.d.ts","sourceRoot":"","sources":["../../src/app/TanstackDevtools.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"TanstackDevtools.d.ts","sourceRoot":"","sources":["../../src/app/TanstackDevtools.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAoClD,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;CAChC;AAkED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,cAAc,EACd,cAAc,GACf,EAAE,qBAAqB,2CAiEvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TanstackProvider.d.ts","sourceRoot":"","sources":["../../src/app/TanstackProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"TanstackProvider.d.ts","sourceRoot":"","sources":["../../src/app/TanstackProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAuBrE,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,cAAc,GAAG,iBAAiB,CAsDxF"}
|