@multiplatform.one/core 7.83.0 → 7.83.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/cjs/app/CreateApp.cjs +233 -0
  2. package/dist/cjs/app/CreateApp.native.js +253 -0
  3. package/dist/cjs/app/CreateApp.native.js.map +1 -0
  4. package/dist/cjs/app/CreateRootLayout.cjs +181 -0
  5. package/dist/cjs/app/CreateRootLayout.native.js +115 -0
  6. package/dist/cjs/app/CreateRootLayout.native.js.map +1 -0
  7. package/dist/cjs/app/RuntimePublicConfigScript.cjs +40 -0
  8. package/dist/cjs/app/RuntimePublicConfigScript.native.js +48 -0
  9. package/dist/cjs/app/RuntimePublicConfigScript.native.js.map +1 -0
  10. package/dist/cjs/app/TanstackDevtools.cjs +145 -0
  11. package/dist/cjs/app/TanstackDevtools.native.js +163 -0
  12. package/dist/cjs/app/TanstackDevtools.native.js.map +1 -0
  13. package/dist/cjs/app/TanstackProvider.cjs +81 -0
  14. package/dist/cjs/app/TanstackProvider.native.js +56 -0
  15. package/dist/cjs/app/TanstackProvider.native.js.map +1 -0
  16. package/dist/cjs/app/deepLinkPath.cjs +41 -0
  17. package/dist/cjs/app/deepLinkPath.native.js +46 -0
  18. package/dist/cjs/app/deepLinkPath.native.js.map +1 -0
  19. package/dist/cjs/app/devtoolsTrigger.cjs +281 -0
  20. package/dist/cjs/app/devtoolsTrigger.native.js +338 -0
  21. package/dist/cjs/app/devtoolsTrigger.native.js.map +1 -0
  22. package/dist/cjs/app/frappeSocketPort.cjs +40 -0
  23. package/dist/cjs/app/frappeSocketPort.native.js +45 -0
  24. package/dist/cjs/app/frappeSocketPort.native.js.map +1 -0
  25. package/dist/cjs/app/frappeSyncOptions.cjs +43 -0
  26. package/dist/cjs/app/frappeSyncOptions.native.js +46 -0
  27. package/dist/cjs/app/frappeSyncOptions.native.js.map +1 -0
  28. package/dist/cjs/app/index.cjs +22 -0
  29. package/dist/cjs/app/index.native.js +25 -0
  30. package/dist/cjs/app/index.native.js.map +1 -0
  31. package/dist/cjs/app/loadWalletProvider.cjs +32 -0
  32. package/dist/cjs/app/loadWalletProvider.native.js +44 -0
  33. package/dist/cjs/app/loadWalletProvider.native.js.map +1 -0
  34. package/dist/cjs/app/oneFrappeNavigation.cjs +45 -0
  35. package/dist/cjs/app/oneFrappeNavigation.native.js +52 -0
  36. package/dist/cjs/app/oneFrappeNavigation.native.js.map +1 -0
  37. package/dist/cjs/app/rootLayoutShared.cjs +18 -0
  38. package/dist/cjs/app/rootLayoutShared.native.js +21 -0
  39. package/dist/cjs/app/rootLayoutShared.native.js.map +1 -0
  40. package/dist/cjs/app/runtimePublicConfigMiddleware.cjs +50 -0
  41. package/dist/cjs/app/runtimePublicConfigMiddleware.native.js +55 -0
  42. package/dist/cjs/app/runtimePublicConfigMiddleware.native.js.map +1 -0
  43. package/dist/cjs/app/useNativeDeepLinks.cjs +28 -0
  44. package/dist/cjs/app/useNativeDeepLinks.native.js +56 -0
  45. package/dist/cjs/app/useNativeDeepLinks.native.js.map +1 -0
  46. package/dist/cjs/healthz.cjs +32 -0
  47. package/dist/cjs/healthz.native.js +35 -0
  48. package/dist/cjs/healthz.native.js.map +1 -0
  49. package/dist/cjs/index.cjs +21 -0
  50. package/dist/cjs/index.native.js +24 -0
  51. package/dist/cjs/index.native.js.map +1 -0
  52. package/dist/cjs/layouts/CreateDefaultLayout.cjs +99 -0
  53. package/dist/cjs/layouts/CreateDefaultLayout.native.js +105 -0
  54. package/dist/cjs/layouts/CreateDefaultLayout.native.js.map +1 -0
  55. package/dist/cjs/layouts/index.cjs +28 -0
  56. package/dist/cjs/layouts/index.native.js +31 -0
  57. package/dist/cjs/layouts/index.native.js.map +1 -0
  58. package/dist/esm/app/CreateApp.mjs +196 -0
  59. package/dist/esm/app/CreateApp.mjs.map +1 -0
  60. package/dist/esm/app/CreateApp.native.js +213 -0
  61. package/dist/esm/app/CreateApp.native.js.map +1 -0
  62. package/dist/esm/app/CreateRootLayout.mjs +145 -0
  63. package/dist/esm/app/CreateRootLayout.mjs.map +1 -0
  64. package/dist/esm/app/CreateRootLayout.native.js +76 -0
  65. package/dist/esm/app/CreateRootLayout.native.js.map +1 -0
  66. package/dist/esm/app/RuntimePublicConfigScript.mjs +15 -0
  67. package/dist/esm/app/RuntimePublicConfigScript.mjs.map +1 -0
  68. package/dist/esm/app/RuntimePublicConfigScript.native.js +20 -0
  69. package/dist/esm/app/RuntimePublicConfigScript.native.js.map +1 -0
  70. package/dist/esm/app/TanstackDevtools.mjs +109 -0
  71. package/dist/esm/app/TanstackDevtools.mjs.map +1 -0
  72. package/dist/esm/app/TanstackDevtools.native.js +124 -0
  73. package/dist/esm/app/TanstackDevtools.native.js.map +1 -0
  74. package/dist/esm/app/TanstackProvider.mjs +45 -0
  75. package/dist/esm/app/TanstackProvider.mjs.map +1 -0
  76. package/dist/esm/app/TanstackProvider.native.js +28 -0
  77. package/dist/esm/app/TanstackProvider.native.js.map +1 -0
  78. package/dist/esm/app/deepLinkPath.mjs +16 -0
  79. package/dist/esm/app/deepLinkPath.mjs.map +1 -0
  80. package/dist/esm/app/deepLinkPath.native.js +18 -0
  81. package/dist/esm/app/deepLinkPath.native.js.map +1 -0
  82. package/dist/esm/app/devtoolsTrigger.mjs +238 -0
  83. package/dist/esm/app/devtoolsTrigger.mjs.map +1 -0
  84. package/dist/esm/app/devtoolsTrigger.native.js +292 -0
  85. package/dist/esm/app/devtoolsTrigger.native.js.map +1 -0
  86. package/dist/esm/app/frappeSocketPort.mjs +15 -0
  87. package/dist/esm/app/frappeSocketPort.mjs.map +1 -0
  88. package/dist/esm/app/frappeSocketPort.native.js +17 -0
  89. package/dist/esm/app/frappeSocketPort.native.js.map +1 -0
  90. package/dist/esm/app/frappeSyncOptions.mjs +18 -0
  91. package/dist/esm/app/frappeSyncOptions.mjs.map +1 -0
  92. package/dist/esm/app/frappeSyncOptions.native.js +18 -0
  93. package/dist/esm/app/frappeSyncOptions.native.js.map +1 -0
  94. package/dist/esm/app/index.mjs +4 -0
  95. package/dist/esm/app/index.mjs.map +1 -0
  96. package/dist/esm/app/index.native.js +4 -0
  97. package/dist/esm/app/index.native.js.map +1 -0
  98. package/dist/esm/app/loadWalletProvider.mjs +7 -0
  99. package/dist/esm/app/loadWalletProvider.mjs.map +1 -0
  100. package/dist/esm/app/loadWalletProvider.native.js +16 -0
  101. package/dist/esm/app/loadWalletProvider.native.js.map +1 -0
  102. package/dist/esm/app/oneFrappeNavigation.mjs +20 -0
  103. package/dist/esm/app/oneFrappeNavigation.mjs.map +1 -0
  104. package/dist/esm/app/oneFrappeNavigation.native.js +24 -0
  105. package/dist/esm/app/oneFrappeNavigation.native.js.map +1 -0
  106. package/dist/esm/app/rootLayoutShared.mjs +2 -0
  107. package/dist/esm/app/rootLayoutShared.mjs.map +1 -0
  108. package/dist/esm/app/rootLayoutShared.native.js +2 -0
  109. package/dist/esm/app/rootLayoutShared.native.js.map +1 -0
  110. package/dist/esm/app/runtimePublicConfigMiddleware.mjs +25 -0
  111. package/dist/esm/app/runtimePublicConfigMiddleware.mjs.map +1 -0
  112. package/dist/esm/app/runtimePublicConfigMiddleware.native.js +27 -0
  113. package/dist/esm/app/runtimePublicConfigMiddleware.native.js.map +1 -0
  114. package/dist/esm/app/useNativeDeepLinks.mjs +3 -0
  115. package/dist/esm/app/useNativeDeepLinks.mjs.map +1 -0
  116. package/dist/esm/app/useNativeDeepLinks.native.js +28 -0
  117. package/dist/esm/app/useNativeDeepLinks.native.js.map +1 -0
  118. package/dist/esm/healthz.mjs +7 -0
  119. package/dist/esm/healthz.mjs.map +1 -0
  120. package/dist/esm/healthz.native.js +7 -0
  121. package/dist/esm/healthz.native.js.map +1 -0
  122. package/dist/esm/index.mjs +3 -0
  123. package/dist/esm/index.mjs.map +1 -0
  124. package/dist/esm/index.native.js +3 -0
  125. package/dist/esm/index.native.js.map +1 -0
  126. package/dist/esm/layouts/CreateDefaultLayout.mjs +74 -0
  127. package/dist/esm/layouts/CreateDefaultLayout.mjs.map +1 -0
  128. package/dist/esm/layouts/CreateDefaultLayout.native.js +77 -0
  129. package/dist/esm/layouts/CreateDefaultLayout.native.js.map +1 -0
  130. package/dist/esm/layouts/index.mjs +3 -0
  131. package/dist/esm/layouts/index.mjs.map +1 -0
  132. package/dist/esm/layouts/index.native.js +3 -0
  133. package/dist/esm/layouts/index.native.js.map +1 -0
  134. package/package.json +32 -16
  135. package/src/app/CreateApp.frappeAuth.spec.tsx +73 -0
  136. package/src/app/CreateApp.tsx +23 -23
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ReactQueryDevtools","TanStackDevtools","formDevtoolsPlugin","createReactPanel","createReactPlugin","PacerDevtoolsCore","ThemeDevtoolsPanel","storage","useEffect","useState","devtoolsOpenHotkey","useDevtoolsKeyboardTrigger","useDevtoolsOpenRequests","useShakeToOpen","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","shakeToOpen","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":"AAOA,SAASA,kBAAA,QAA0B;AACnC,SAASC,gBAAA,QAAwB;AACjC,SAASC,kBAAA,QAA0B;AACnC,SAASC,gBAAA,EAAkBC,iBAAA,QAAyB;AACpD,SAASC,iBAAA,QAAyB;AAClC,SAASC,kBAAA,QAA0B;AACnC,SAASC,OAAA,QAAe;AACxB,SAASC,SAAA,EAAWC,QAAA,QAAgB;AAEpC,SACEC,kBAAA,EACAC,0BAAA,EACAC,uBAAA,EACAC,cAAA,QACK;AAgIO,SAAAC,GAAA;AA9Hd,MAAMC,mBAAA,GAAsB;AAS5B,MAAM,CAACC,kBAAkB,IAAIb,gBAAA,CAAiBE,iBAAiB;AAC/D,MAAM,CAACY,mBAAmB,IAAIb,iBAAA,CAAkB;EAC9Cc,IAAA,EAAM;EACNC,SAAA,EAAWH;AACb,CAAC;AAOD,eAAeI,kBAAkBC,cAAA,EAAkC;EACjE,IAAI;IACF,MAAMC,GAAA,GAAM,MAAMC,OAAA,CAAQC,OAAA,CAAQjB,OAAA,CAAQkB,OAAA,CAAQV,mBAAmB,CAAC;IACtE,MAAMW,QAAA,GAAWJ,GAAA,GAAMK,IAAA,CAAKC,KAAA,CAAMN,GAAG,IAAI,CAAC;IAC1C,IAAII,QAAA,CAASG,KAAA,KAAUR,cAAA,EAAgB;MACrCK,QAAA,CAASG,KAAA,GAAQR,cAAA;MACjB,MAAME,OAAA,CAAQC,OAAA,CAAQjB,OAAA,CAAQuB,OAAA,CAAQf,mBAAA,EAAqBY,IAAA,CAAKI,SAAA,CAAUL,QAAQ,CAAC,CAAC;IACtF;EACF,QAAQ,CAER;AACF;AAmBA,SAASM,gBAAA,EAAkB;EACzB,MAAM,CAACC,MAAA,EAAQC,SAAS,IAAIzB,QAAA,CAElB,IAAI;EAEdD,SAAA,CAAU,MAAM;IACd,IAAI2B,SAAA,GAAY;IAEhB,eAAeC,WAAA,EAAa;MAC1B,IAAI;QACF,MAAM,CAAC;UAAEC;QAAqB,GAAG;UAAEC;QAAsB,CAAC,IAAI,MAAMf,OAAA,CAAQgB,GAAA,CAAI,CAC9E,OAAO,oCAAoC,GAC3C,OAAO,2BAA2B,EACnC;QACD,MAAMC,IAAA,GAAOF,qBAAA,CAAsB;QACnC,IAAIE,IAAA,IAAQ,CAACL,SAAA,EAAW;UAMtBD,SAAA,CACEG,oBAAA,CAAqBG,IAA6D,CACpF;UACA,OAAO;QACT;MACF,QAAQ,CAER;MACA,OAAO;IACT;IAGA,KAAKJ,UAAA,CAAW,EAAEK,IAAA,CAAMC,KAAA,IAAU;MAChC,IAAIA,KAAA,IAASP,SAAA,EAAW;MACxB,IAAIQ,QAAA,GAAW;MACf,MAAMC,QAAA,GAAWC,WAAA,CAAY,YAAY;QACvCF,QAAA;QACA,MAAMD,MAAA,GAAQ,MAAMN,UAAA,CAAW;QAC/B,IAAIM,MAAA,IAASP,SAAA,IAAaQ,QAAA,IAAY,IAAIG,aAAA,CAAcF,QAAQ;MAClE,GAAG,GAAI;MACP,OAAO,MAAME,aAAA,CAAcF,QAAQ;IACrC,CAAC;IAED,OAAO,MAAM;MACXT,SAAA,GAAY;IACd;EACF,GAAG,EAAE;EAEL,OAAOF,MAAA;AACT;AAEe,SAARc,wBAAyC;EAC9C1B,cAAA;EACA2B;AACF,GAA0B;EACxBxC,SAAA,CAAU,MAAM;IACd,IAAI,OAAOyC,MAAA,KAAW,aAAa;IACnC,KAAK7B,iBAAA,CAAkBC,cAAc;EACvC,GAAG,CAACA,cAAc,CAAC;EAEnB,MAAM6B,YAAA,GAAelB,eAAA,CAAgB;EAKrCnB,cAAA,CAAemC,cAAA,CAAeG,WAAA,KAAgB,KAAK;EAGnDxC,0BAAA,CAA2B,IAAI;EAC/B,MAAMyC,YAAA,GAAexC,uBAAA,CAAwB;EAE7C,MAAMyC,OAAA,GAAU,CACd;IACEC,EAAA,EAAI;IACJpC,IAAA,EAAM;IACNqC,MAAA,EAAQ,eAAAzC,GAAA,CAACd,kBAAA;MAAmBwD,aAAA,EAAe;IAAA,CAAO;EACpD,GACAtD,kBAAA,CAAmB,GACnBe,mBAAA,CAAoB,GACpB;IACEqC,EAAA,EAAI;IACJpC,IAAA,EAAM;IAAA;IAAA;IAAA;IAAA;IAAA;IAMNuC,WAAA,EAAa;IACbF,MAAA,EAAQA,CAACG,GAAA,EAAkBC,KAAA,KACzB,eAAA7C,GAAA,CAACR,kBAAA;MACCsD,aAAA,EAAeZ,cAAA,CAAeY,aAAA;MAC9BC,aAAA,EAAeF,KAAA,CAAM9B,KAAA;MACrBiC,aAAA,EAAed,cAAA,CAAec,aAAA;MAU9BC,WAAA,EAAaf,cAAA,CAAee,WAAA;MAC5BC,iBAAA,EAAmBhB,cAAA,CAAegB,iBAAA;MAClCC,kBAAA,EAAoBjB,cAAA,CAAeiB;IAAA,CACrC;EAEJ,GACA,IAAIf,YAAA,GAAe,CAACA,YAAY,IAAI,EAAC,EACvC;EAEA,OACE,eAAApC,GAAA,CAACb,gBAAA;IAECiE,MAAA,EAAQ;MACNT,WAAA,EAAa;MACbU,aAAA,EAAe;MACfC,UAAA,EAAY,CAAC,GAAG1D,kBAAkB;MAClCmB,KAAA,EAAOR;IACT;IACAgC;EAAA,GAPK,GAAGhC,cAAc,IAAI+B,YAAY,EAQxC;AAEJ","ignoreList":[]}
@@ -0,0 +1,124 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { ReactQueryDevtools } from "@tanstack/react-query-devtools/production";
4
+ import { TanStackDevtools } from "@tanstack/react-devtools";
5
+ import { formDevtoolsPlugin } from "@tanstack/react-form-devtools/production";
6
+ import { createReactPanel, createReactPlugin } from "@tanstack/devtools-utils/react";
7
+ import { PacerDevtoolsCore } from "@tanstack/pacer-devtools/production";
8
+ import { ThemeDevtoolsPanel } from "@multiplatform.one/theme";
9
+ import { storage } from "@multiplatform.one/store";
10
+ import { useEffect, useState } from "react";
11
+ import { devtoolsOpenHotkey, useDevtoolsKeyboardTrigger, useDevtoolsOpenRequests, useShakeToOpen } from "./devtoolsTrigger.native.js";
12
+ var devtoolsSettingsKey = "tanstack_devtools_settings";
13
+ var [PacerDevtoolsPanel] = createReactPanel(PacerDevtoolsCore);
14
+ var [pacerDevtoolsPlugin] = createReactPlugin({
15
+ name: "TanStack Pacer",
16
+ Component: PacerDevtoolsPanel
17
+ });
18
+ async function syncDevtoolsTheme(resolvedScheme) {
19
+ try {
20
+ var raw = await Promise.resolve(storage.getItem(devtoolsSettingsKey));
21
+ var settings = raw ? JSON.parse(raw) : {};
22
+ if (settings.theme !== resolvedScheme) {
23
+ settings.theme = resolvedScheme;
24
+ await Promise.resolve(storage.setItem(devtoolsSettingsKey, JSON.stringify(settings)));
25
+ }
26
+ } catch (unused) {}
27
+ }
28
+ function useFrappePlugin() {
29
+ var [plugin, setPlugin] = useState(null);
30
+ useEffect(function () {
31
+ var cancelled = false;
32
+ async function tryResolve() {
33
+ try {
34
+ var [{
35
+ frappeDevtoolsPlugin
36
+ }, {
37
+ __getActiveSyncModule
38
+ }] = await Promise.all([import("@multiplatform.one/frappe/devtools"), import("@multiplatform.one/frappe")]);
39
+ var sync = __getActiveSyncModule();
40
+ if (sync && !cancelled) {
41
+ setPlugin(frappeDevtoolsPlugin(sync));
42
+ return true;
43
+ }
44
+ } catch (unused) {}
45
+ return false;
46
+ }
47
+ void tryResolve().then(function (found) {
48
+ if (found || cancelled) return;
49
+ var attempts = 0;
50
+ var interval = setInterval(async function () {
51
+ attempts++;
52
+ var _$found = await tryResolve();
53
+ if (_$found || cancelled || attempts >= 10) clearInterval(interval);
54
+ }, 2e3);
55
+ return function () {
56
+ return clearInterval(interval);
57
+ };
58
+ });
59
+ return function () {
60
+ cancelled = true;
61
+ };
62
+ }, []);
63
+ return plugin;
64
+ }
65
+ function TanstackDevtoolsWrapper(param) {
66
+ var {
67
+ resolvedScheme,
68
+ tanstackConfig
69
+ } = param;
70
+ useEffect(function () {
71
+ if (typeof window === "undefined") return;
72
+ void syncDevtoolsTheme(resolvedScheme);
73
+ }, [resolvedScheme]);
74
+ var frappePlugin = useFrappePlugin();
75
+ useShakeToOpen(tanstackConfig.shakeToOpen !== false);
76
+ useDevtoolsKeyboardTrigger(true);
77
+ var openRequests = useDevtoolsOpenRequests();
78
+ var plugins = [{
79
+ id: "react-query",
80
+ name: "React Query",
81
+ render: /* @__PURE__ */_jsx(ReactQueryDevtools, {
82
+ initialIsOpen: false
83
+ })
84
+ }, formDevtoolsPlugin(), pacerDevtoolsPlugin(), {
85
+ id: "theme",
86
+ name: "Theme",
87
+ // The panel opens focused on Theme, so a shake (or the hotkey) lands
88
+ // straight on the theme flipper — the whole point of the trigger is
89
+ // to check that everything is themable. `defaultOpen` seeds the tab
90
+ // only on first open, when no layout is persisted yet; once the user
91
+ // moves to another tab their choice is restored on later opens.
92
+ defaultOpen: true,
93
+ render: function render(_el, props) {
94
+ return /* @__PURE__ */_jsx(ThemeDevtoolsPanel, {
95
+ useUserScheme: tanstackConfig.useUserScheme,
96
+ devtoolsTheme: props.theme,
97
+ tamaguiConfig: tanstackConfig.tamaguiConfig,
98
+ // The accent channel. `ThemeDevtoolsPanel` has taken these three
99
+ // props all along and core passed none of them, so the panel's
100
+ // accent dropdown never rendered and its Randomize action skipped
101
+ // the colour — a control that is present in the component and
102
+ // unreachable through the only wrapper that mounts it. They are
103
+ // forwarded, not invented here: a theme colour is app state, so the
104
+ // app supplies the list, the current value and the setter, exactly
105
+ // as it already supplies `useUserScheme`. Undefined stays undefined,
106
+ // so an app that wires nothing sees the panel it sees today.
107
+ themeColors: tanstackConfig.themeColors,
108
+ currentThemeColor: tanstackConfig.currentThemeColor,
109
+ onThemeColorChange: tanstackConfig.onThemeColorChange
110
+ });
111
+ }
112
+ }, ...(frappePlugin ? [frappePlugin] : [])];
113
+ return /* @__PURE__ */_jsx(TanStackDevtools, {
114
+ config: {
115
+ defaultOpen: false,
116
+ triggerHidden: true,
117
+ openHotkey: [...devtoolsOpenHotkey],
118
+ theme: resolvedScheme
119
+ },
120
+ plugins
121
+ }, `${resolvedScheme}:${openRequests}`);
122
+ }
123
+ export { TanstackDevtoolsWrapper as default };
124
+ //# sourceMappingURL=TanstackDevtools.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","React","ReactQueryDevtools","TanStackDevtools","formDevtoolsPlugin","createReactPanel","createReactPlugin","PacerDevtoolsCore","ThemeDevtoolsPanel","storage","useEffect","useState","devtoolsOpenHotkey","useDevtoolsKeyboardTrigger","useDevtoolsOpenRequests","useShakeToOpen","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","shakeToOpen","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":[]}
@@ -0,0 +1,45 @@
1
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
2
+ import { Suspense, lazy, useEffect, useState } from "react";
3
+ import { config, isDev, platform } from "@multiplatform.one/platform";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ const LazyDevtools = lazy(() => import("./TanstackDevtools.mjs"));
6
+ function useHydrated() {
7
+ const [hydrated, setHydrated] = useState(false);
8
+ useEffect(() => {
9
+ setHydrated(true);
10
+ }, []);
11
+ return hydrated;
12
+ }
13
+ function createTanstackProvider(tanstackConfig) {
14
+ const queryClient = new QueryClient({
15
+ defaultOptions: {
16
+ queries: {
17
+ staleTime: 30 * 1e3,
18
+ retryDelay: attempt => Math.min(1e3 * 2 ** attempt, 1e4)
19
+ }
20
+ },
21
+ ...tanstackConfig.queryClientOptions
22
+ });
23
+ function TanstackProvider({
24
+ children
25
+ }) {
26
+ const wantsDevtools = (tanstackConfig.debug ?? (isDev || config.get("DEBUG") === "1")) && !platform.isStorybook;
27
+ const hydrated = useHydrated();
28
+ const showDevtools = wantsDevtools && hydrated;
29
+ const scheme = tanstackConfig.useUserScheme?.();
30
+ const resolvedScheme = scheme?.value ?? "light";
31
+ return /* @__PURE__ */jsxs(QueryClientProvider, {
32
+ client: queryClient,
33
+ children: [showDevtools && /* @__PURE__ */jsx(Suspense, {
34
+ children: /* @__PURE__ */jsx(LazyDevtools, {
35
+ resolvedScheme,
36
+ tanstackConfig
37
+ })
38
+ }), children]
39
+ });
40
+ }
41
+ TanstackProvider.displayName = "TanstackProvider";
42
+ return TanstackProvider;
43
+ }
44
+ export { createTanstackProvider };
45
+ //# sourceMappingURL=TanstackProvider.mjs.map
@@ -0,0 +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;AAmDlC,SAGMC,GAAA,EAHNC,IAAA;AAhDN,MAAMC,YAAA,GAAeR,IAAA,CAAK,MAAM,OAAO,wBAAoB,CAAC;AAO5D,SAASS,YAAA,EAAuB;EAC9B,MAAM,CAACC,QAAA,EAAUC,WAAW,IAAIT,QAAA,CAAS,KAAK;EAC9CD,SAAA,CAAU,MAAM;IACdU,WAAA,CAAY,IAAI;EAClB,GAAG,EAAE;EACL,OAAOD,QAAA;AACT;AAEO,SAASE,uBAAuBC,cAAA,EAAmD;EACxF,MAAMC,WAAA,GAAc,IAAIjB,WAAA,CAAY;IAClCkB,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,KAAUtB,KAAA,IAASD,MAAA,CAAOwB,GAAA,CAAI,OAAO,MAAM,SAAS,CAACtB,QAAA,CAASuB,WAAA;IAChF,MAAMlB,QAAA,GAAWD,WAAA,CAAY;IAU7B,MAAMoB,YAAA,GAAeJ,aAAA,IAAiBf,QAAA;IAEtC,MAAMoB,MAAA,GAASjB,cAAA,CAAekB,aAAA,GAAgB;IAC9C,MAAMC,cAAA,GAAiBF,MAAA,EAAQG,KAAA,IAAS;IAExC,OACE,eAAA1B,IAAA,CAACT,mBAAA;MAAoBoC,MAAA,EAAQpB,WAAA;MAC1BU,QAAA,GAAAK,YAAA,IACC,eAAAvB,GAAA,CAACP,QAAA;QACCyB,QAAA,iBAAAlB,GAAA,CAACE,YAAA;UAAawB,cAAA;UAAgCnB;QAAA,CAAgC;MAAA,CAChF,GAEDW,QAAA;IAAA,CACH;EAEJ;EACAD,gBAAA,CAAiBY,WAAA,GAAc;EAC/B,OAAOZ,gBAAA;AACT","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
3
+ function createTanstackProvider(tanstackConfig) {
4
+ var queryClient = new QueryClient({
5
+ defaultOptions: {
6
+ queries: {
7
+ staleTime: 30 * 1e3,
8
+ retryDelay: function retryDelay(attempt) {
9
+ return Math.min(1e3 * Math.pow(2, attempt), 1e4);
10
+ }
11
+ }
12
+ },
13
+ ...tanstackConfig.queryClientOptions
14
+ });
15
+ function TanstackProvider(param) {
16
+ var {
17
+ children
18
+ } = param;
19
+ return /* @__PURE__ */_jsx(QueryClientProvider, {
20
+ client: queryClient,
21
+ children
22
+ });
23
+ }
24
+ TanstackProvider.displayName = "TanstackProvider";
25
+ return TanstackProvider;
26
+ }
27
+ export { createTanstackProvider };
28
+ //# sourceMappingURL=TanstackProvider.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","QueryClient","QueryClientProvider","createTanstackProvider","tanstackConfig","queryClient","defaultOptions","queries","staleTime","retryDelay","attempt","Math","min","pow","queryClientOptions","TanstackProvider","param","children","client","displayName"],"sources":["../../../src/app/TanstackProvider.native.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,IAAOC,IAAA,QAAY;AAC5B,SAASC,WAAA,EAAaC,mBAAA,QAA2B;AAC1C,SAASC,uBAAuBC,cAAA,EAAgB;EACnD,IAAIC,WAAA,GAAc,IAAIJ,WAAA,CAAY;IAC9BK,cAAA,EAAgB;MACZC,OAAA,EAAS;QACLC,SAAA,EAAW,KAAK;QAChBC,UAAA,EAAY,SAASA,WAAWC,OAAA,EAAS;UACrC,OAAOC,IAAA,CAAKC,GAAA,CAAI,MAAOD,IAAA,CAAKE,GAAA,CAAI,GAAGH,OAAO,GAAG,GAAK;QACtD;MACJ;IACJ;IACA,GAAGN,cAAA,CAAeU;EACtB,CAAC;EACD,SAASC,iBAAiBC,KAAA,EAAO;IAC7B,IAAI;MAAEC;IAAS,IAAID,KAAA;IACnB,OAAqB,eAAAhB,IAAA,CAAKE,mBAAA,EAAqB;MAC3CgB,MAAA,EAAQb,WAAA;MACRY;IACJ,CAAC;EACL;EACAF,gBAAA,CAAiBI,WAAA,GAAc;EAC/B,OAAOJ,gBAAA;AACX","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ function deepLinkUrlToPath(url) {
2
+ if (!url) return null;
3
+ if (/^exps?:\/\//i.test(url)) {
4
+ const route = url.match(/\/--\/(.*)$/)?.[1];
5
+ return route ? toPath(route) : null;
6
+ }
7
+ const rest = url.match(/^[\w.+-]+:\/\/+(.*)$/)?.[1];
8
+ if (!rest || /^expo-development-client(?:[/?#]|$)/i.test(rest)) return null;
9
+ return toPath(rest);
10
+ }
11
+ function toPath(rest) {
12
+ const path = `/${rest.replace(/^\/+/, "").replace(/\/+$/, "")}`;
13
+ return path === "/" ? null : path;
14
+ }
15
+ export { deepLinkUrlToPath };
16
+ //# sourceMappingURL=deepLinkPath.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["deepLinkUrlToPath","url","test","route","match","toPath","rest","path","replace"],"sources":["../../../src/app/deepLinkPath.ts"],"sourcesContent":[null],"mappings":"AAkBO,SAASA,kBAAkBC,GAAA,EAA+C;EAC/E,IAAI,CAACA,GAAA,EAAK,OAAO;EACjB,IAAI,eAAeC,IAAA,CAAKD,GAAG,GAAG;IAC5B,MAAME,KAAA,GAAQF,GAAA,CAAIG,KAAA,CAAM,aAAa,IAAI,CAAC;IAC1C,OAAOD,KAAA,GAAQE,MAAA,CAAOF,KAAK,IAAI;EACjC;EACA,MAAMG,IAAA,GAAOL,GAAA,CAAIG,KAAA,CAAM,sBAAsB,IAAI,CAAC;EAClD,IAAI,CAACE,IAAA,IAAQ,uCAAuCJ,IAAA,CAAKI,IAAI,GAAG,OAAO;EACvE,OAAOD,MAAA,CAAOC,IAAI;AACpB;AAEA,SAASD,OAAOC,IAAA,EAA6B;EAC3C,MAAMC,IAAA,GAAO,IAAID,IAAA,CAAKE,OAAA,CAAQ,QAAQ,EAAE,EAAEA,OAAA,CAAQ,QAAQ,EAAE,CAAC;EAC7D,OAAOD,IAAA,KAAS,MAAM,OAAOA,IAAA;AAC/B","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ function deepLinkUrlToPath(url) {
2
+ var _url_match;
3
+ if (!url) return null;
4
+ if (/^exps?:\/\//i.test(url)) {
5
+ var _url_match1;
6
+ var route = (_url_match1 = url.match(/\/--\/(.*)$/)) === null || _url_match1 === void 0 ? void 0 : _url_match1[1];
7
+ return route ? toPath(route) : null;
8
+ }
9
+ var rest = (_url_match = url.match(/^[\w.+-]+:\/\/+(.*)$/)) === null || _url_match === void 0 ? void 0 : _url_match[1];
10
+ if (!rest || /^expo-development-client(?:[/?#]|$)/i.test(rest)) return null;
11
+ return toPath(rest);
12
+ }
13
+ function toPath(rest) {
14
+ var path = `/${rest.replace(/^\/+/, "").replace(/\/+$/, "")}`;
15
+ return path === "/" ? null : path;
16
+ }
17
+ export { deepLinkUrlToPath };
18
+ //# sourceMappingURL=deepLinkPath.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["deepLinkUrlToPath","url","_url_match","test","_url_match1","route","match","toPath","rest","path","replace"],"sources":["../../../src/app/deepLinkPath.ts"],"sourcesContent":[null],"mappings":"AAkBO,SAASA,kBAAkBC,GAAA,EAA+C;EAC/E,IAAIC,UAAM;EACV,IAAI,CAAAD,GAAA,aAAe;EACjB,kBAAc,CAAAE,IAAI,CAAAF,GAAM;IACxB,IAAAG,WAAe;IACjB,IAAAC,KAAA,IAAAD,WAAA,GAAAH,GAAA,CAAAK,KAAA,6BAAAF,WAAA,uBAAAA,WAAA;IACA,OAAMC,KAAO,GAAIE,MAAM,CAAAF,KAAA;EACvB;EACA,IAAAG,IAAO,IAAAN,UAAW,GAAAD,GAAA,CAAAK,KAAA,sCAAAJ,UAAA,uBAAAA,UAAA;EACpB,KAAAM,IAAA,2CAAAL,IAAA,CAAAK,IAAA;EAEA,OAASD,MAAA,CAAOC,IAAA;AACd;AACA,SAAOD,OAAAC,IAAS;EAClB,IAAAC,IAAA,OAAAD,IAAA,CAAAE,OAAA,aAAAA,OAAA","ignoreList":[]}
@@ -0,0 +1,238 @@
1
+ import { useEffect, useState } from "react";
2
+ const devtoolsOpenHotkey = ["CtrlOrMeta", "Shift", "~"];
3
+ function isDevtoolsOpenHotkeyEvent(event) {
4
+ if (!(event.metaKey || event.ctrlKey) || !event.shiftKey || event.altKey) {
5
+ return false;
6
+ }
7
+ if (event.code === "Backquote") return true;
8
+ return event.key === "`" || event.key === "~";
9
+ }
10
+ function useDevtoolsKeyboardTrigger(enabled) {
11
+ useEffect(() => {
12
+ if (!enabled || typeof window === "undefined" || typeof window.addEventListener !== "function") return;
13
+ const onKeyDown = event => {
14
+ if (!isDevtoolsOpenHotkeyEvent(event)) return;
15
+ event.preventDefault();
16
+ event.stopImmediatePropagation();
17
+ openDevtoolsShell();
18
+ };
19
+ window.addEventListener("keydown", onKeyDown, {
20
+ capture: true
21
+ });
22
+ return () => window.removeEventListener("keydown", onKeyDown, {
23
+ capture: true
24
+ });
25
+ }, [enabled]);
26
+ }
27
+ const devtoolsShellStateKey = "tanstack_devtools_state";
28
+ const devtoolsOpenRequestEvent = "mpo:devtools-open";
29
+ function shellStorage() {
30
+ try {
31
+ return typeof localStorage === "undefined" ? void 0 : localStorage;
32
+ } catch {
33
+ return void 0;
34
+ }
35
+ }
36
+ function readShellState(storage) {
37
+ try {
38
+ const parsed = JSON.parse(storage.getItem(devtoolsShellStateKey) ?? "null");
39
+ return parsed && typeof parsed === "object" ? parsed : {};
40
+ } catch {
41
+ return {};
42
+ }
43
+ }
44
+ function isDevtoolsShellOpen(storage = shellStorage()) {
45
+ return storage ? readShellState(storage).persistOpen === true : false;
46
+ }
47
+ function openDevtoolsShell(storage = shellStorage()) {
48
+ if (!storage || isDevtoolsShellOpen(storage)) return;
49
+ try {
50
+ storage.setItem(devtoolsShellStateKey, JSON.stringify({
51
+ ...readShellState(storage),
52
+ persistOpen: true
53
+ }));
54
+ } catch {
55
+ return;
56
+ }
57
+ if (typeof window !== "undefined" && typeof window.dispatchEvent === "function") window.dispatchEvent(new Event(devtoolsOpenRequestEvent));
58
+ }
59
+ function useDevtoolsOpenRequests() {
60
+ const [requests, setRequests] = useState(0);
61
+ useEffect(() => {
62
+ if (typeof window === "undefined" || typeof window.addEventListener !== "function") return;
63
+ const onRequest = () => setRequests(n => n + 1);
64
+ window.addEventListener(devtoolsOpenRequestEvent, onRequest);
65
+ return () => window.removeEventListener(devtoolsOpenRequestEvent, onRequest);
66
+ }, []);
67
+ return requests;
68
+ }
69
+ const gravityMs2 = 9.81;
70
+ const shakeDefaults = {
71
+ /** m/s² a sample must exceed to count as a shake peak. */
72
+ threshold: 12,
73
+ /** Minimum ms between counted peaks (one swing = one peak, not many samples). */
74
+ minPeakGapMs: 80,
75
+ /** Peaks required inside the rolling window to fire. */
76
+ peakCount: 3,
77
+ /** Rolling window (ms) the peaks must land in. */
78
+ windowMs: 1e3,
79
+ /** Dead time (ms) after firing before the detector re-arms. */
80
+ cooldownMs: 2e3
81
+ };
82
+ function motionMagnitude(event) {
83
+ const a = event.acceleration;
84
+ if (a && (a.x != null || a.y != null || a.z != null)) {
85
+ return Math.hypot(a.x ?? 0, a.y ?? 0, a.z ?? 0);
86
+ }
87
+ const g = event.accelerationIncludingGravity;
88
+ if (g && (g.x != null || g.y != null || g.z != null)) {
89
+ return Math.abs(Math.hypot(g.x ?? 0, g.y ?? 0, g.z ?? 0) - gravityMs2);
90
+ }
91
+ return null;
92
+ }
93
+ function createShakeDetector({
94
+ onShake,
95
+ threshold = shakeDefaults.threshold,
96
+ minPeakGapMs = shakeDefaults.minPeakGapMs,
97
+ peakCount = shakeDefaults.peakCount,
98
+ windowMs = shakeDefaults.windowMs,
99
+ cooldownMs = shakeDefaults.cooldownMs
100
+ }) {
101
+ let peaks = [];
102
+ let lastPeakAt = Number.NEGATIVE_INFINITY;
103
+ let cooldownUntil = Number.NEGATIVE_INFINITY;
104
+ function reset() {
105
+ peaks = [];
106
+ lastPeakAt = Number.NEGATIVE_INFINITY;
107
+ cooldownUntil = Number.NEGATIVE_INFINITY;
108
+ }
109
+ function handleMotion(event, now = Date.now()) {
110
+ if (now < cooldownUntil) return;
111
+ const magnitude = motionMagnitude(event);
112
+ if (magnitude == null || magnitude <= threshold) return;
113
+ if (now - lastPeakAt < minPeakGapMs) return;
114
+ lastPeakAt = now;
115
+ peaks = peaks.filter(at => now - at <= windowMs);
116
+ peaks.push(now);
117
+ if (peaks.length < peakCount) return;
118
+ peaks = [];
119
+ lastPeakAt = Number.NEGATIVE_INFINITY;
120
+ cooldownUntil = now + cooldownMs;
121
+ onShake();
122
+ }
123
+ return {
124
+ handleMotion,
125
+ reset
126
+ };
127
+ }
128
+ function createMotionPermissionFlow({
129
+ requestPermission,
130
+ onGranted,
131
+ onDenied
132
+ }) {
133
+ let state = requestPermission ? "awaiting-gesture" : "granted";
134
+ if (state === "granted") onGranted();
135
+ async function handleGesture() {
136
+ if (state !== "awaiting-gesture" || !requestPermission) return;
137
+ state = "requesting";
138
+ let result;
139
+ try {
140
+ result = await requestPermission();
141
+ } catch {
142
+ result = "denied";
143
+ }
144
+ if (result === "granted") {
145
+ state = "granted";
146
+ onGranted();
147
+ } else {
148
+ state = "denied";
149
+ onDenied?.();
150
+ }
151
+ }
152
+ return {
153
+ get state() {
154
+ return state;
155
+ },
156
+ handleGesture
157
+ };
158
+ }
159
+ function motionEventCtor() {
160
+ return globalThis.DeviceMotionEvent;
161
+ }
162
+ function isMotionPermissionRequired() {
163
+ return typeof motionEventCtor()?.requestPermission === "function";
164
+ }
165
+ const devtoolsArmMotionEvent = "mpo:devtools-arm-motion";
166
+ const devtoolsMotionArmedEvent = "mpo:devtools-motion-armed";
167
+ let motionGranted = false;
168
+ const motionAttachers = /* @__PURE__ */new Set();
169
+ function registerMotionAttacher(attach) {
170
+ if (motionGranted) {
171
+ attach();
172
+ return () => {};
173
+ }
174
+ motionAttachers.add(attach);
175
+ return () => {
176
+ motionAttachers.delete(attach);
177
+ };
178
+ }
179
+ function grantAndAttachAll() {
180
+ motionGranted = true;
181
+ for (const attach of motionAttachers) attach();
182
+ }
183
+ function __resetMotionArming() {
184
+ motionGranted = false;
185
+ motionAttachers.clear();
186
+ }
187
+ async function requestMotionPermissionFromGesture() {
188
+ if (motionGranted) return "granted";
189
+ const ctor = motionEventCtor();
190
+ const flow = createMotionPermissionFlow({
191
+ // Invoke as a static method on the constructor — a detached reference
192
+ // throws in WebKit.
193
+ requestPermission: typeof ctor?.requestPermission === "function" ? () => ctor.requestPermission() : void 0,
194
+ onGranted: grantAndAttachAll
195
+ });
196
+ if (flow.state !== "granted") await flow.handleGesture();
197
+ if (typeof window !== "undefined" && typeof window.dispatchEvent === "function") {
198
+ window.dispatchEvent(new CustomEvent(devtoolsMotionArmedEvent, {
199
+ detail: {
200
+ granted: flow.state === "granted"
201
+ }
202
+ }));
203
+ }
204
+ return flow.state;
205
+ }
206
+ function armDevtoolsMotion() {
207
+ if (typeof window === "undefined" || typeof window.dispatchEvent !== "function") return;
208
+ window.dispatchEvent(new Event(devtoolsArmMotionEvent));
209
+ }
210
+ function useShakeToOpen(enabled, onShake = openDevtoolsShell) {
211
+ useEffect(() => {
212
+ if (!enabled || typeof window === "undefined" || typeof window.addEventListener !== "function") return;
213
+ const detector = createShakeDetector({
214
+ onShake
215
+ });
216
+ const motionListener = event => detector.handleMotion(event);
217
+ const attach = () => window.addEventListener("devicemotion", motionListener, {
218
+ passive: true
219
+ });
220
+ const detach = () => window.removeEventListener("devicemotion", motionListener);
221
+ if (!isMotionPermissionRequired()) {
222
+ attach();
223
+ return detach;
224
+ }
225
+ const removeAttacher = registerMotionAttacher(attach);
226
+ const armListener = () => {
227
+ void requestMotionPermissionFromGesture();
228
+ };
229
+ window.addEventListener(devtoolsArmMotionEvent, armListener);
230
+ return () => {
231
+ detach();
232
+ removeAttacher();
233
+ window.removeEventListener(devtoolsArmMotionEvent, armListener);
234
+ };
235
+ }, [enabled, onShake]);
236
+ }
237
+ export { __resetMotionArming, armDevtoolsMotion, createMotionPermissionFlow, createShakeDetector, devtoolsArmMotionEvent, devtoolsMotionArmedEvent, devtoolsOpenHotkey, devtoolsOpenRequestEvent, devtoolsShellStateKey, isDevtoolsOpenHotkeyEvent, isDevtoolsShellOpen, isMotionPermissionRequired, motionMagnitude, openDevtoolsShell, requestMotionPermissionFromGesture, shakeDefaults, useDevtoolsKeyboardTrigger, useDevtoolsOpenRequests, useShakeToOpen };
238
+ //# sourceMappingURL=devtoolsTrigger.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useState","devtoolsOpenHotkey","isDevtoolsOpenHotkeyEvent","event","metaKey","ctrlKey","shiftKey","altKey","code","key","useDevtoolsKeyboardTrigger","enabled","window","addEventListener","onKeyDown","preventDefault","stopImmediatePropagation","openDevtoolsShell","capture","removeEventListener","devtoolsShellStateKey","devtoolsOpenRequestEvent","shellStorage","localStorage","readShellState","storage","parsed","JSON","parse","getItem","isDevtoolsShellOpen","persistOpen","setItem","stringify","dispatchEvent","Event","useDevtoolsOpenRequests","requests","setRequests","onRequest","n","gravityMs2","shakeDefaults","threshold","minPeakGapMs","peakCount","windowMs","cooldownMs","motionMagnitude","a","acceleration","x","y","z","Math","hypot","g","accelerationIncludingGravity","abs","createShakeDetector","onShake","peaks","lastPeakAt","Number","NEGATIVE_INFINITY","cooldownUntil","reset","handleMotion","now","Date","magnitude","filter","at","push","length","createMotionPermissionFlow","requestPermission","onGranted","onDenied","state","handleGesture","result","motionEventCtor","globalThis","DeviceMotionEvent","isMotionPermissionRequired","devtoolsArmMotionEvent","devtoolsMotionArmedEvent","motionGranted","motionAttachers","Set","registerMotionAttacher","attach","add","delete","grantAndAttachAll","__resetMotionArming","clear","requestMotionPermissionFromGesture","ctor","flow","CustomEvent","detail","granted","armDevtoolsMotion","useShakeToOpen","detector","motionListener","passive","detach","removeAttacher","armListener"],"sources":["../../../src/app/devtoolsTrigger.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}