@multiplatform.one/core 7.83.1 → 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,213 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React, { Suspense, createContext, lazy, useContext, useMemo } from "react";
3
+ import { config, isDev, isWeb } from "@multiplatform.one/platform";
4
+ import { ThemeProvider } from "@multiplatform.one/theme";
5
+ import { FrappeProvider } from "@multiplatform.one/frappe-ui";
6
+ import { frappeSocketPort } from "./frappeSocketPort.native.js";
7
+ import { frappeSyncOptions } from "./frappeSyncOptions.native.js";
8
+ import { oneFrappeNavigation } from "./oneFrappeNavigation.native.js";
9
+ import { createTanstackProvider } from "./TanstackProvider.native.js";
10
+ import LazyWalletProvider from "./loadWalletProvider.native.js";
11
+ var LOOPBACK_HOSTS = /* @__PURE__ */new Set(["localhost", "127.0.0.1", "[::1]"]);
12
+ function currentPageLocation() {
13
+ var _window_location;
14
+ if (typeof window === "undefined" || !((_window_location = window.location) === null || _window_location === void 0 ? void 0 : _window_location.hostname)) return void 0;
15
+ return window.location;
16
+ }
17
+ function followPageOriginForLoopback(configured) {
18
+ var page = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : currentPageLocation(),
19
+ dev = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : isDev;
20
+ if (!(page === null || page === void 0 ? void 0 : page.hostname)) return configured;
21
+ try {
22
+ var url = new URL(configured);
23
+ if (!LOOPBACK_HOSTS.has(url.hostname) || LOOPBACK_HOSTS.has(page.hostname)) return configured;
24
+ url.hostname = page.hostname;
25
+ if (!dev && (page.protocol === "https:" || page.protocol === "http:")) {
26
+ url.protocol = page.protocol;
27
+ url.port = page.port;
28
+ }
29
+ return url.toString().replace(/\/$/, "");
30
+ } catch (unused) {
31
+ return configured;
32
+ }
33
+ }
34
+ var AppConfigContext = /* @__PURE__ */createContext({});
35
+ function createApp(appConfig) {
36
+ var builtinProviders = [];
37
+ if (appConfig.tanstack) {
38
+ var _appConfig_theme;
39
+ var cfg = appConfig.tanstack === true ? {} : {
40
+ ...appConfig.tanstack
41
+ };
42
+ if (((_appConfig_theme = appConfig.theme) === null || _appConfig_theme === void 0 ? void 0 : _appConfig_theme.tamagui) && !cfg.tamaguiConfig) {
43
+ cfg.tamaguiConfig = appConfig.theme.tamagui;
44
+ }
45
+ builtinProviders.push(createTanstackProvider(cfg));
46
+ }
47
+ if (appConfig.web3) {
48
+ let Web3Provider2 = function (param) {
49
+ var {
50
+ children
51
+ } = param;
52
+ var _cfg_enabled, _cfg_enableTestnets, _cfg_localnet, _cfg_mockWallet;
53
+ var enabled = (_cfg_enabled = cfg1.enabled) !== null && _cfg_enabled !== void 0 ? _cfg_enabled : config.get("WEB3_ENABLED") === "1";
54
+ if (!enabled) return children;
55
+ if (isWeb) return children;
56
+ var testnetsEnabled = (_cfg_enableTestnets = cfg1.enableTestnets) !== null && _cfg_enableTestnets !== void 0 ? _cfg_enableTestnets : config.get("WEB3_TESTNETS_ENABLED") === "1";
57
+ var WalletWithChildren = LazyWalletProvider;
58
+ return (
59
+ // fallback must NOT be `children`: rendering web3-consuming screens before
60
+ // the lazy WagmiProvider loads throws "useConfig must be used within WagmiProvider".
61
+ /* @__PURE__ */
62
+ _jsx(Suspense, {
63
+ fallback: null,
64
+ children: /* @__PURE__ */_jsx(WalletWithChildren, {
65
+ config: {
66
+ appName: cfg1.appName || "Multiplatform.one",
67
+ appDescription: cfg1.appDescription || "Connect your wallet",
68
+ appUrl: cfg1.appUrl || (isWeb && typeof window !== "undefined" ? window.location.origin : ""),
69
+ appIcon: cfg1.appIcon,
70
+ enableTestnets: testnetsEnabled,
71
+ localnet: (_cfg_localnet = cfg1.localnet) !== null && _cfg_localnet !== void 0 ? _cfg_localnet : config.get("WEB3_LOCALNET_ENABLED") === "1",
72
+ localnetRpcUrl: cfg1.localnetRpcUrl || config.get("WEB3_EVM_RPC") || void 0,
73
+ solanaRpcUrl: cfg1.solanaRpcUrl || config.get("WEB3_SOLANA_RPC") || void 0,
74
+ suiRpcUrl: cfg1.suiRpcUrl || config.get("WEB3_SUI_RPC") || void 0,
75
+ webViewUrl: cfg1.webViewUrl || config.get("WEB3_WEBVIEW_URL") || void 0,
76
+ mockWallet: (_cfg_mockWallet = cfg1.mockWallet) !== null && _cfg_mockWallet !== void 0 ? _cfg_mockWallet : config.get("WEB3_MOCK_WALLET") === "1"
77
+ },
78
+ children
79
+ })
80
+ })
81
+ );
82
+ };
83
+ var Web3Provider = Web3Provider2;
84
+ var cfg1 = appConfig.web3 === true ? {} : appConfig.web3;
85
+ Web3Provider2.displayName = "Web3Provider";
86
+ builtinProviders.push(Web3Provider2);
87
+ }
88
+ if (appConfig.keycloak) {
89
+ let KeycloakProviderWrapper2 = function (param) {
90
+ var {
91
+ children
92
+ } = param;
93
+ var _cfg_enabled, _cfg_debug;
94
+ var enabled = (_cfg_enabled = cfg2.enabled) !== null && _cfg_enabled !== void 0 ? _cfg_enabled : config.get("KEYCLOAK_ENABLED") === "1";
95
+ if (!enabled) return children;
96
+ return /* @__PURE__ */_jsx(Suspense, {
97
+ fallback: children,
98
+ children: /* @__PURE__ */_jsx(LazyKeycloakProvider, {
99
+ disabled: false,
100
+ debug: (_cfg_debug = cfg2.debug) !== null && _cfg_debug !== void 0 ? _cfg_debug : config.get("DEBUG") === "1",
101
+ baseUrl: cfg2.baseUrl || config.get("KEYCLOAK_BASE_URL") || `${config.get("BASE_URL") || ""}/auth`,
102
+ clientId: cfg2.clientId || config.get("KEYCLOAK_CLIENT_ID"),
103
+ publicClientId: cfg2.publicClientId || config.get("KEYCLOAK_PUBLIC_CLIENT_ID"),
104
+ realm: cfg2.realm || config.get("KEYCLOAK_REALM") || "",
105
+ iframeSso: cfg2.iframeSso,
106
+ loginRedirectUri: cfg2.loginRedirectUri,
107
+ messageHandlerKeys: cfg2.messageHandlerKeys || [],
108
+ betterAuthBaseUrl: cfg2.betterAuthBaseUrl || config.get("BETTER_AUTH_BASE_URL") || config.get("BASE_URL") || void 0,
109
+ expoScheme: cfg2.expoScheme,
110
+ loadingComponent: cfg2.loadingComponent,
111
+ children
112
+ })
113
+ });
114
+ };
115
+ var KeycloakProviderWrapper = KeycloakProviderWrapper2;
116
+ var cfg2 = appConfig.keycloak === true ? {} : appConfig.keycloak;
117
+ var LazyKeycloakProvider = /* @__PURE__ */lazy(async function () {
118
+ var mod = await import("@multiplatform.one/keycloak");
119
+ return {
120
+ default: mod.KeycloakProvider
121
+ };
122
+ });
123
+ KeycloakProviderWrapper2.displayName = "KeycloakProvider";
124
+ builtinProviders.push(KeycloakProviderWrapper2);
125
+ }
126
+ if (appConfig.frappe) {
127
+ let FrappeProviderWrapper2 = function (param) {
128
+ var {
129
+ children
130
+ } = param;
131
+ var _cfg_enabled, _cfg_socketPort;
132
+ var configuredCatchUp = config.get("FRAPPE_CATCH_UP_STRATEGY");
133
+ var configuredWrite = config.get("FRAPPE_WRITE_STRATEGY");
134
+ var syncOptions = useMemo(function () {
135
+ return frappeSyncOptions(cfg3.syncOptions, configuredCatchUp, configuredWrite);
136
+ }, [configuredCatchUp, configuredWrite]);
137
+ var enabled = (_cfg_enabled = cfg3.enabled) !== null && _cfg_enabled !== void 0 ? _cfg_enabled : !!cfg3.fixtures || config.get("FRAPPE_ENABLED") === "1";
138
+ if (!enabled) return children;
139
+ var configured = cfg3.fixtures ? cfg3.baseURL : cfg3.baseURL || config.get("BASE_URL") || "http://localhost:8000";
140
+ var baseURL = configured ? followPageOriginForLoopback(configured) : void 0;
141
+ var socketPort = (_cfg_socketPort = cfg3.socketPort) !== null && _cfg_socketPort !== void 0 ? _cfg_socketPort : frappeSocketPort(config.get("FRAPPE_SOCKETIO_PORT"), baseURL);
142
+ return /* @__PURE__ */_jsx(FrappeProvider, {
143
+ baseURL,
144
+ realtime: cfg3.realtime,
145
+ socketPort,
146
+ auth,
147
+ syncOptions,
148
+ fixtures: cfg3.fixtures,
149
+ navigation: oneFrappeNavigation,
150
+ children
151
+ });
152
+ };
153
+ var FrappeProviderWrapper = FrappeProviderWrapper2;
154
+ var _cfg_auth;
155
+ var cfg3 = appConfig.frappe === true ? {} : appConfig.frappe;
156
+ var auth = (_cfg_auth = cfg3.auth) !== null && _cfg_auth !== void 0 ? _cfg_auth : appConfig.keycloak ? {
157
+ useToken: true,
158
+ type: "Bearer",
159
+ token: async function token() {
160
+ var mod = await import("@multiplatform.one/keycloak");
161
+ return (await mod.getKeycloakBearerToken()) || "";
162
+ }
163
+ } : void 0;
164
+ FrappeProviderWrapper2.displayName = "FrappeProvider";
165
+ builtinProviders.push(FrappeProviderWrapper2);
166
+ }
167
+ var allProviders = [...builtinProviders, ...(appConfig.providers || [])];
168
+ function AppProvider(param) {
169
+ var {
170
+ children,
171
+ systemTheme,
172
+ themeConfig
173
+ } = param;
174
+ var theme = themeConfig || appConfig.theme;
175
+ var content = theme ? /* @__PURE__ */_jsx(ThemeProvider, {
176
+ config: theme,
177
+ systemTheme,
178
+ children
179
+ }) : children;
180
+ for (var i = allProviders.length - 1; i >= 0; i--) {
181
+ var Provider = allProviders[i];
182
+ content = /* @__PURE__ */_jsx(Provider, {
183
+ children: content
184
+ });
185
+ }
186
+ return /* @__PURE__ */_jsx(AppConfigContext.Provider, {
187
+ value: appConfig,
188
+ children: content
189
+ });
190
+ }
191
+ AppProvider.displayName = "AppProvider";
192
+ function withApp(Screen) {
193
+ function WrappedScreen(props) {
194
+ return /* @__PURE__ */_jsx(AppProvider, {
195
+ children: /* @__PURE__ */_jsx(Screen, {
196
+ ...props
197
+ })
198
+ });
199
+ }
200
+ WrappedScreen.displayName = `withApp(${Screen.displayName || Screen.name || "Component"})`;
201
+ return WrappedScreen;
202
+ }
203
+ function useAppConfig() {
204
+ return useContext(AppConfigContext);
205
+ }
206
+ return {
207
+ AppProvider,
208
+ withApp,
209
+ useAppConfig
210
+ };
211
+ }
212
+ export { createApp, followPageOriginForLoopback };
213
+ //# sourceMappingURL=CreateApp.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","React","Suspense","createContext","lazy","useContext","useMemo","config","isDev","isWeb","ThemeProvider","FrappeProvider","frappeSocketPort","frappeSyncOptions","oneFrappeNavigation","createTanstackProvider","LazyWalletProvider","LOOPBACK_HOSTS","Set","currentPageLocation","_window_location","window","location","hostname","followPageOriginForLoopback","configured","page","arguments","length","dev","url","URL","has","protocol","port","toString","replace","unused","AppConfigContext","createApp","appConfig","builtinProviders","tanstack","_appConfig_theme","cfg","theme","tamagui","tamaguiConfig","push","web3","Web3Provider2","param","children","_cfg_enabled","_cfg_enableTestnets","_cfg_localnet","_cfg_mockWallet","enabled","cfg1","get","testnetsEnabled","enableTestnets","WalletWithChildren","fallback","appName","appDescription","appUrl","origin","appIcon","localnet","localnetRpcUrl","solanaRpcUrl","suiRpcUrl","webViewUrl","mockWallet","Web3Provider","displayName","keycloak","KeycloakProviderWrapper2","_cfg_debug","cfg2","LazyKeycloakProvider","disabled","debug","baseUrl","clientId","publicClientId","realm","iframeSso","loginRedirectUri","messageHandlerKeys","betterAuthBaseUrl","expoScheme","loadingComponent","KeycloakProviderWrapper","mod","default","KeycloakProvider","frappe","FrappeProviderWrapper2","_cfg_socketPort","configuredCatchUp","configuredWrite","syncOptions","cfg3","fixtures","baseURL","socketPort","realtime","auth","navigation","FrappeProviderWrapper","_cfg_auth","useToken","type","token","getKeycloakBearerToken","allProviders","providers","AppProvider","systemTheme","themeConfig","content"],"sources":["../../../src/app/CreateApp.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,145 @@
1
+ import i18n from "i18next";
2
+ import { useDidFinishSSR } from "tamagui";
3
+ import { LoadProgressBar, SchemeProvider, Slot, setUserScheme, useMatches, useUserScheme } from "one";
4
+ import { useState } from "react";
5
+ import { CookiesProvider, Cookies } from "react-cookie";
6
+ import { initReactI18next } from "react-i18next";
7
+ import { config, isDev, platform } from "@multiplatform.one/platform";
8
+ import { createI18nConfig } from "@multiplatform.one/i18n";
9
+ import { logger } from "@multiplatform.one/logger";
10
+ import { storage } from "@multiplatform.one/store";
11
+ import { cookiePreset, scaleAttributeFromCookie, scaleAttributeScript } from "@multiplatform.one/theme/scale-attribute";
12
+ import { RuntimePublicConfigScript } from "./RuntimePublicConfigScript.mjs";
13
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
14
+ function createRootLayout(cfg) {
15
+ if (typeof window !== "undefined") {
16
+ try {
17
+ const storedValue = storage.getItem("vxrn-scheme");
18
+ const stored = typeof storedValue === "string" || storedValue === null ? storedValue : null;
19
+ if (stored === "light" || stored === "dark" || stored === "system") {
20
+ setUserScheme(stored);
21
+ } else {
22
+ setUserScheme("system");
23
+ }
24
+ } catch {}
25
+ }
26
+ i18n.use(initReactI18next).init(createI18nConfig(cfg.i18n)).catch(logger.error);
27
+ i18n.changeLanguage(config.get("I18N_DEFAULT_LANGUAGE", cfg.i18n.defaultLanguage));
28
+ const sentryDsn = cfg.sentry?.dsn || config.get("SENTRY_DSN");
29
+ if (sentryDsn && !platform.isServer) {
30
+ import("@sentry/react").then(Sentry => {
31
+ Sentry.init({
32
+ dsn: sentryDsn,
33
+ enabled: !isDev
34
+ });
35
+ }).catch(() => {});
36
+ }
37
+ const {
38
+ AppProvider,
39
+ RootLayout
40
+ } = cfg;
41
+ function WebRootProvider({
42
+ children
43
+ }) {
44
+ const {
45
+ value: scheme
46
+ } = useUserScheme();
47
+ const hydrated = useDidFinishSSR();
48
+ return /* @__PURE__ */jsx(AppProvider, {
49
+ systemTheme: hydrated ? scheme : "light",
50
+ children
51
+ });
52
+ }
53
+ WebRootProvider.displayName = "WebRootProvider";
54
+ function Layout() {
55
+ const matches = useMatches();
56
+ const rootLoaderData = matches?.[0]?.loaderData;
57
+ const ssrCookies = platform.isServer && rootLoaderData?.cookieHeader ? new Cookies(rootLoaderData.cookieHeader) : void 0;
58
+ const [clientScale] = useState(() => platform.isServer ? void 0 : scaleAttributeFromCookie(new Cookies().get(cookiePreset)));
59
+ const presetScale = ssrCookies ? scaleAttributeFromCookie(ssrCookies.get(cookiePreset)) : clientScale;
60
+ const htmlLang = rootLoaderData?.detectedLanguage || i18n.language || cfg.i18n.defaultLanguage || "en";
61
+ if (platform.isServer && rootLoaderData?.detectedLanguage && i18n.language !== rootLoaderData.detectedLanguage) {
62
+ i18n.changeLanguage(rootLoaderData.detectedLanguage);
63
+ }
64
+ const interFonts = cfg.head?.interFonts !== false;
65
+ const interFontCss = ['@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:optional;src:url("/fonts/inter-400.woff2") format("woff2")}', '@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:optional;src:url("/fonts/inter-500.woff2") format("woff2")}', '@font-face{font-family:"Inter";font-style:normal;font-weight:600;font-display:optional;src:url("/fonts/inter-600.woff2") format("woff2")}', '@font-face{font-family:"Inter";font-style:normal;font-weight:700;font-display:optional;src:url("/fonts/inter-700.woff2") format("woff2")}', '@font-face{font-family:"Inter";font-style:normal;font-weight:800;font-display:optional;src:url("/fonts/inter-800.woff2") format("woff2")}'].join("");
66
+ return /* @__PURE__ */jsxs("html", {
67
+ lang: htmlLang,
68
+ "data-mp-scale": presetScale,
69
+ suppressHydrationWarning: true,
70
+ children: [/* @__PURE__ */jsxs("head", {
71
+ children: [/* @__PURE__ */jsx("meta", {
72
+ charSet: "utf-8"
73
+ }), /* @__PURE__ */jsx("script", {
74
+ dangerouslySetInnerHTML: {
75
+ __html: scaleAttributeScript
76
+ },
77
+ suppressHydrationWarning: true
78
+ }), /* @__PURE__ */jsx(RuntimePublicConfigScript, {}), interFonts && /* @__PURE__ */jsxs(Fragment, {
79
+ children: [/* @__PURE__ */jsx("link", {
80
+ rel: "preload",
81
+ href: "/fonts/inter-400.woff2",
82
+ as: "font",
83
+ type: "font/woff2",
84
+ crossOrigin: ""
85
+ }), /* @__PURE__ */jsx("link", {
86
+ rel: "preload",
87
+ href: "/fonts/inter-600.woff2",
88
+ as: "font",
89
+ type: "font/woff2",
90
+ crossOrigin: ""
91
+ }), /* @__PURE__ */jsx("link", {
92
+ rel: "preload",
93
+ href: "/fonts/inter-700.woff2",
94
+ as: "font",
95
+ type: "font/woff2",
96
+ crossOrigin: ""
97
+ }), /* @__PURE__ */jsx("link", {
98
+ rel: "preload",
99
+ href: "/fonts/inter-800.woff2",
100
+ as: "font",
101
+ type: "font/woff2",
102
+ crossOrigin: ""
103
+ }), /* @__PURE__ */jsx("style", {
104
+ precedence: "reset",
105
+ href: "__font_inter",
106
+ children: interFontCss
107
+ })]
108
+ }), /* @__PURE__ */jsx("style", {
109
+ precedence: "reset",
110
+ href: "__critical_reset",
111
+ children: ["html{max-width:100vw;color-scheme:light dark}", "body{overflow-x:hidden;margin:0;display:flex;flex-direction:column;min-width:100%;min-height:100vh}", "#root,#__next{display:flex;flex-direction:column;min-width:100%;min-height:100vh}", "*{box-sizing:border-box}", "a{color:inherit;text-decoration:none}", "h1,h2,h3,h4,h5,h6{margin:0;padding:0}", "p,input,textarea,button,ul,ol,li,pre,dialog{all:unset;box-sizing:border-box}"].join("")
112
+ }), /* @__PURE__ */jsx("meta", {
113
+ name: "viewport",
114
+ content: "width=device-width, initial-scale=1, maximum-scale=5"
115
+ }), cfg.head && /* @__PURE__ */jsxs(Fragment, {
116
+ children: [/* @__PURE__ */jsx("meta", {
117
+ httpEquiv: "X-UA-Compatible",
118
+ content: "IE=edge"
119
+ }), cfg.head.title && /* @__PURE__ */jsx("title", {
120
+ children: cfg.head.title
121
+ }), cfg.head.favicon && /* @__PURE__ */jsx("link", {
122
+ rel: "icon",
123
+ href: cfg.head.favicon
124
+ })]
125
+ })]
126
+ }), /* @__PURE__ */jsxs("body", {
127
+ children: [/* @__PURE__ */jsx(LoadProgressBar, {}), /* @__PURE__ */jsx(SchemeProvider, {
128
+ children: /* @__PURE__ */jsx(CookiesProvider, {
129
+ cookies: ssrCookies,
130
+ children: /* @__PURE__ */jsx(WebRootProvider, {
131
+ children: /* @__PURE__ */jsx(RootLayout, {
132
+ ssrSession: rootLoaderData?.session,
133
+ children: /* @__PURE__ */jsx(Slot, {})
134
+ })
135
+ })
136
+ })
137
+ })]
138
+ })]
139
+ });
140
+ }
141
+ Layout.displayName = "RootLayout";
142
+ return Layout;
143
+ }
144
+ export { createRootLayout };
145
+ //# sourceMappingURL=CreateRootLayout.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["i18n","useDidFinishSSR","LoadProgressBar","SchemeProvider","Slot","setUserScheme","useMatches","useUserScheme","useState","CookiesProvider","Cookies","initReactI18next","config","isDev","platform","createI18nConfig","logger","storage","cookiePreset","scaleAttributeFromCookie","scaleAttributeScript","RuntimePublicConfigScript","Fragment","jsx","jsxs","createRootLayout","cfg","window","storedValue","getItem","stored","use","init","catch","error","changeLanguage","get","defaultLanguage","sentryDsn","sentry","dsn","isServer","then","Sentry","enabled","AppProvider","RootLayout","WebRootProvider","children","value","scheme","hydrated","systemTheme","displayName","Layout","matches","rootLoaderData","loaderData","ssrCookies","cookieHeader","clientScale","presetScale","htmlLang","detectedLanguage","language","interFonts","head","interFontCss","join","lang","suppressHydrationWarning","charSet","dangerouslySetInnerHTML","__html","rel","href","as","type","crossOrigin","precedence","name","content","httpEquiv","title","favicon","cookies","ssrSession","session"],"sources":["CreateRootLayout.mjs"],"sourcesContent":["import i18n from \"i18next\";\nimport { useDidFinishSSR } from \"tamagui\";\nimport {\n LoadProgressBar,\n SchemeProvider,\n Slot,\n setUserScheme,\n useMatches,\n useUserScheme\n} from \"one\";\nimport { useState } from \"react\";\nimport { CookiesProvider, Cookies } from \"react-cookie\";\nimport { initReactI18next } from \"react-i18next\";\nimport { config, isDev, platform } from \"@multiplatform.one/platform\";\nimport { createI18nConfig } from \"@multiplatform.one/i18n\";\nimport { logger } from \"@multiplatform.one/logger\";\nimport { storage } from \"@multiplatform.one/store\";\nimport {\n cookiePreset,\n scaleAttributeFromCookie,\n scaleAttributeScript\n} from \"@multiplatform.one/theme/scale-attribute\";\nimport { RuntimePublicConfigScript } from \"./RuntimePublicConfigScript\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction createRootLayout(cfg) {\n if (typeof window !== \"undefined\") {\n try {\n const storedValue = storage.getItem(\"vxrn-scheme\");\n const stored = typeof storedValue === \"string\" || storedValue === null ? storedValue : null;\n if (stored === \"light\" || stored === \"dark\" || stored === \"system\") {\n setUserScheme(stored);\n } else {\n setUserScheme(\"system\");\n }\n } catch {\n }\n }\n i18n.use(initReactI18next).init(createI18nConfig(cfg.i18n)).catch(logger.error);\n i18n.changeLanguage(config.get(\"I18N_DEFAULT_LANGUAGE\", cfg.i18n.defaultLanguage));\n const sentryDsn = cfg.sentry?.dsn || config.get(\"SENTRY_DSN\");\n if (sentryDsn && !platform.isServer) {\n import(\"@sentry/react\").then((Sentry) => {\n Sentry.init({\n dsn: sentryDsn,\n enabled: !isDev\n });\n }).catch(() => {\n });\n }\n const { AppProvider, RootLayout } = cfg;\n function WebRootProvider({ children }) {\n const { value: scheme } = useUserScheme();\n const hydrated = useDidFinishSSR();\n return /* @__PURE__ */ jsx(AppProvider, { systemTheme: hydrated ? scheme : \"light\", children });\n }\n WebRootProvider.displayName = \"WebRootProvider\";\n function Layout() {\n const matches = useMatches();\n const rootLoaderData = matches?.[0]?.loaderData;\n const ssrCookies = platform.isServer && rootLoaderData?.cookieHeader ? new Cookies(rootLoaderData.cookieHeader) : void 0;\n const [clientScale] = useState(\n () => platform.isServer ? void 0 : scaleAttributeFromCookie(new Cookies().get(cookiePreset))\n );\n const presetScale = ssrCookies ? scaleAttributeFromCookie(ssrCookies.get(cookiePreset)) : clientScale;\n const htmlLang = rootLoaderData?.detectedLanguage || i18n.language || cfg.i18n.defaultLanguage || \"en\";\n if (platform.isServer && rootLoaderData?.detectedLanguage && i18n.language !== rootLoaderData.detectedLanguage) {\n i18n.changeLanguage(rootLoaderData.detectedLanguage);\n }\n const interFonts = cfg.head?.interFonts !== false;\n const interFontCss = [\n '@font-face{font-family:\"Inter\";font-style:normal;font-weight:400;font-display:optional;src:url(\"/fonts/inter-400.woff2\") format(\"woff2\")}',\n '@font-face{font-family:\"Inter\";font-style:normal;font-weight:500;font-display:optional;src:url(\"/fonts/inter-500.woff2\") format(\"woff2\")}',\n '@font-face{font-family:\"Inter\";font-style:normal;font-weight:600;font-display:optional;src:url(\"/fonts/inter-600.woff2\") format(\"woff2\")}',\n '@font-face{font-family:\"Inter\";font-style:normal;font-weight:700;font-display:optional;src:url(\"/fonts/inter-700.woff2\") format(\"woff2\")}',\n '@font-face{font-family:\"Inter\";font-style:normal;font-weight:800;font-display:optional;src:url(\"/fonts/inter-800.woff2\") format(\"woff2\")}'\n ].join(\"\");\n return /* @__PURE__ */ jsxs(\"html\", { lang: htmlLang, \"data-mp-scale\": presetScale, suppressHydrationWarning: true, children: [\n /* @__PURE__ */ jsxs(\"head\", { children: [\n /* @__PURE__ */ jsx(\"meta\", { charSet: \"utf-8\" }),\n /* @__PURE__ */ jsx(\n \"script\",\n {\n dangerouslySetInnerHTML: { __html: scaleAttributeScript },\n suppressHydrationWarning: true\n }\n ),\n /* @__PURE__ */ jsx(RuntimePublicConfigScript, {}),\n interFonts && /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n \"link\",\n {\n rel: \"preload\",\n href: \"/fonts/inter-400.woff2\",\n as: \"font\",\n type: \"font/woff2\",\n crossOrigin: \"\"\n }\n ),\n /* @__PURE__ */ jsx(\n \"link\",\n {\n rel: \"preload\",\n href: \"/fonts/inter-600.woff2\",\n as: \"font\",\n type: \"font/woff2\",\n crossOrigin: \"\"\n }\n ),\n /* @__PURE__ */ jsx(\n \"link\",\n {\n rel: \"preload\",\n href: \"/fonts/inter-700.woff2\",\n as: \"font\",\n type: \"font/woff2\",\n crossOrigin: \"\"\n }\n ),\n /* @__PURE__ */ jsx(\n \"link\",\n {\n rel: \"preload\",\n href: \"/fonts/inter-800.woff2\",\n as: \"font\",\n type: \"font/woff2\",\n crossOrigin: \"\"\n }\n ),\n /* @__PURE__ */ jsx(\"style\", { precedence: \"reset\", href: \"__font_inter\", children: interFontCss })\n ] }),\n /* @__PURE__ */ jsx(\"style\", { precedence: \"reset\", href: \"__critical_reset\", children: [\n \"html{max-width:100vw;color-scheme:light dark}\",\n \"body{overflow-x:hidden;margin:0;display:flex;flex-direction:column;min-width:100%;min-height:100vh}\",\n \"#root,#__next{display:flex;flex-direction:column;min-width:100%;min-height:100vh}\",\n \"*{box-sizing:border-box}\",\n \"a{color:inherit;text-decoration:none}\",\n \"h1,h2,h3,h4,h5,h6{margin:0;padding:0}\",\n \"p,input,textarea,button,ul,ol,li,pre,dialog{all:unset;box-sizing:border-box}\"\n ].join(\"\") }),\n /* @__PURE__ */ jsx(\"meta\", { name: \"viewport\", content: \"width=device-width, initial-scale=1, maximum-scale=5\" }),\n cfg.head && /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\"meta\", { httpEquiv: \"X-UA-Compatible\", content: \"IE=edge\" }),\n cfg.head.title && /* @__PURE__ */ jsx(\"title\", { children: cfg.head.title }),\n cfg.head.favicon && /* @__PURE__ */ jsx(\"link\", { rel: \"icon\", href: cfg.head.favicon })\n ] })\n ] }),\n /* @__PURE__ */ jsxs(\"body\", { children: [\n /* @__PURE__ */ jsx(LoadProgressBar, {}),\n /* @__PURE__ */ jsx(SchemeProvider, { children: /* @__PURE__ */ jsx(CookiesProvider, { cookies: ssrCookies, children: /* @__PURE__ */ jsx(WebRootProvider, { children: /* @__PURE__ */ jsx(RootLayout, { ssrSession: rootLoaderData?.session, children: /* @__PURE__ */ jsx(Slot, {}) }) }) }) })\n ] })\n ] });\n }\n Layout.displayName = \"RootLayout\";\n return Layout;\n}\nexport {\n createRootLayout\n};\n//# sourceMappingURL=CreateRootLayout.web.js.map\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,76 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useFonts } from "expo-font";
3
+ import i18n from "i18next";
4
+ import { SchemeProvider, Slot, routerStore, useUserScheme } from "one";
5
+ import { StyleSheet } from "react-native";
6
+ import { GestureHandlerRootView } from "react-native-gesture-handler";
7
+ import { SafeAreaProvider } from "react-native-safe-area-context";
8
+ import { initReactI18next } from "react-i18next";
9
+ import { config } from "@multiplatform.one/platform";
10
+ import { createI18nConfig } from "@multiplatform.one/i18n";
11
+ import { logger } from "@multiplatform.one/logger";
12
+ import { useNativeDeepLinks } from "./useNativeDeepLinks.native.js";
13
+ var styles = StyleSheet.create({
14
+ container: {
15
+ flex: 1
16
+ }
17
+ });
18
+ function createRootLayout(cfg) {
19
+ var _cfg_fonts;
20
+ i18n.use(initReactI18next).init(createI18nConfig(cfg.i18n)).catch(logger.error);
21
+ i18n.changeLanguage(config.get("I18N_DEFAULT_LANGUAGE", cfg.i18n.defaultLanguage));
22
+ var {
23
+ AppProvider,
24
+ RootLayout
25
+ } = cfg;
26
+ function NativeRootProvider(param) {
27
+ var {
28
+ children
29
+ } = param;
30
+ var {
31
+ value: systemScheme
32
+ } = useUserScheme();
33
+ return /* @__PURE__ */_jsx(AppProvider, {
34
+ systemTheme: systemScheme,
35
+ children
36
+ });
37
+ }
38
+ NativeRootProvider.displayName = "NativeRootProvider";
39
+ var fontsMap = (_cfg_fonts = cfg.fonts) !== null && _cfg_fonts !== void 0 ? _cfg_fonts : {};
40
+ function DeepLinkBridge() {
41
+ useNativeDeepLinks();
42
+ return null;
43
+ }
44
+ DeepLinkBridge.displayName = "DeepLinkBridge";
45
+ function NativeRootLayout(param) {
46
+ var {
47
+ children
48
+ } = param;
49
+ var snap = routerStore.useOneRouter();
50
+ if (!(snap === null || snap === void 0 ? void 0 : snap.routeInfo)) return children;
51
+ return /* @__PURE__ */_jsx(RootLayout, {
52
+ children
53
+ });
54
+ }
55
+ NativeRootLayout.displayName = "NativeRootLayout";
56
+ function Layout() {
57
+ var [fontsLoaded, fontError] = useFonts(fontsMap);
58
+ if (!fontsLoaded && !fontError) return null;
59
+ return /* @__PURE__ */_jsx(GestureHandlerRootView, {
60
+ style: styles.container,
61
+ children: /* @__PURE__ */_jsx(SafeAreaProvider, {
62
+ children: /* @__PURE__ */_jsx(SchemeProvider, {
63
+ children: /* @__PURE__ */_jsxs(NativeRootProvider, {
64
+ children: [cfg.deepLinks !== false && /* @__PURE__ */_jsx(DeepLinkBridge, {}), /* @__PURE__ */_jsx(NativeRootLayout, {
65
+ children: /* @__PURE__ */_jsx(Slot, {})
66
+ })]
67
+ })
68
+ })
69
+ })
70
+ });
71
+ }
72
+ Layout.displayName = "RootLayout";
73
+ return Layout;
74
+ }
75
+ export { createRootLayout };
76
+ //# sourceMappingURL=CreateRootLayout.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","useFonts","i18n","SchemeProvider","Slot","routerStore","useUserScheme","StyleSheet","GestureHandlerRootView","SafeAreaProvider","initReactI18next","config","createI18nConfig","logger","useNativeDeepLinks","styles","create","container","flex","createRootLayout","cfg","_cfg_fonts","use","init","catch","error","changeLanguage","get","defaultLanguage","AppProvider","RootLayout","NativeRootProvider","param","children","value","systemScheme","systemTheme","displayName","fontsMap","fonts","DeepLinkBridge","NativeRootLayout","snap","useOneRouter","routeInfo","Layout","fontsLoaded","fontError","style","deepLinks"],"sources":["../../../src/app/CreateRootLayout.native.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import { platform, runtimePublicConfigKey, serializeRuntimePublicConfig } from "@multiplatform.one/platform";
2
+ import { jsx } from "react/jsx-runtime";
3
+ function RuntimePublicConfigScript() {
4
+ return /* @__PURE__ */jsx("script", {
5
+ async: true,
6
+ href: runtimePublicConfigKey,
7
+ suppressHydrationWarning: true,
8
+ dangerouslySetInnerHTML: {
9
+ __html: platform.isServer ? serializeRuntimePublicConfig() : ""
10
+ }
11
+ });
12
+ }
13
+ RuntimePublicConfigScript.displayName = "RuntimePublicConfigScript";
14
+ export { RuntimePublicConfigScript };
15
+ //# sourceMappingURL=RuntimePublicConfigScript.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["platform","runtimePublicConfigKey","serializeRuntimePublicConfig","jsx","RuntimePublicConfigScript","async","href","suppressHydrationWarning","dangerouslySetInnerHTML","__html","isServer","displayName"],"sources":["../../../src/app/RuntimePublicConfigScript.tsx"],"sourcesContent":[null],"mappings":"AAAA,SACEA,QAAA,EACAC,sBAAA,EACAC,4BAAA,QACK;AAkCH,SAAAC,GAAA;AAFG,SAASC,0BAAA,EAA4B;EAC1C,OACE,eAAAD,GAAA,CAAC;IACCE,KAAA,EAAK;IAMLC,IAAA,EAAML,sBAAA;IACNM,wBAAA,EAAwB;IACxBC,uBAAA,EAAyB;MACvBC,MAAA,EAAQT,QAAA,CAASU,QAAA,GAAWR,4BAAA,CAA6B,IAAI;IAC/D;EAAA,CACF;AAEJ;AACAE,yBAAA,CAA0BO,WAAA,GAAc","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { platform, runtimePublicConfigKey, serializeRuntimePublicConfig } from "@multiplatform.one/platform";
3
+ function RuntimePublicConfigScript() {
4
+ return /* @__PURE__ */_jsx("script", {
5
+ async: true,
6
+ // @ts-expect-error `href` is not on React's ScriptHTMLAttributes — React 19
7
+ // keys hoisted scripts by it anyway, and `one`'s ServerContextScript (the
8
+ // sibling payload this deliberately mirrors) carries the identical
9
+ // suppression on the identical line. Copying the transport means copying
10
+ // this, not inventing a differently-keyed script.
11
+ href: runtimePublicConfigKey,
12
+ suppressHydrationWarning: true,
13
+ dangerouslySetInnerHTML: {
14
+ __html: platform.isServer ? serializeRuntimePublicConfig() : ""
15
+ }
16
+ });
17
+ }
18
+ RuntimePublicConfigScript.displayName = "RuntimePublicConfigScript";
19
+ export { RuntimePublicConfigScript };
20
+ //# sourceMappingURL=RuntimePublicConfigScript.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","platform","runtimePublicConfigKey","serializeRuntimePublicConfig","RuntimePublicConfigScript","async","href","suppressHydrationWarning","dangerouslySetInnerHTML","__html","isServer","displayName"],"sources":["../../../src/app/RuntimePublicConfigScript.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAAAA,GAAA,IAAAC,IAAA;AAAA,SACEC,QAAA,EAAAC,sBAAA,EAAAC,4BAAA;AAAA,SACAC,0BAAA;EACA,sBAAAJ,IAAA;IAAAK,KACK;IAkCH;IAFG;IACL;IACG;IAAA;IAAAC,IACC,EAAAJ,sBAAK;IAAAK,wBAMC;IAAAC,uBACN;MACAC,MAAA,EAAAR,QAAA,CAAAS,QAAyB,GAAAP,4BAAA;IAAA;EACsC;AAC/D;AAAAC,yBACF,CAAAO,WAAA;AAEJ,SACAP,yBAA0B","ignoreList":[]}
@@ -0,0 +1,109 @@
1
+ import { ReactQueryDevtools } from "@tanstack/react-query-devtools/production";
2
+ import { TanStackDevtools } from "@tanstack/react-devtools";
3
+ import { formDevtoolsPlugin } from "@tanstack/react-form-devtools/production";
4
+ import { createReactPanel, createReactPlugin } from "@tanstack/devtools-utils/react";
5
+ import { PacerDevtoolsCore } from "@tanstack/pacer-devtools/production";
6
+ import { ThemeDevtoolsPanel } from "@multiplatform.one/theme";
7
+ import { storage } from "@multiplatform.one/store";
8
+ import { useEffect, useState } from "react";
9
+ import { devtoolsOpenHotkey, useDevtoolsKeyboardTrigger, useDevtoolsOpenRequests, useShakeToOpen } from "./devtoolsTrigger.mjs";
10
+ import { jsx } from "react/jsx-runtime";
11
+ const devtoolsSettingsKey = "tanstack_devtools_settings";
12
+ const [PacerDevtoolsPanel] = createReactPanel(PacerDevtoolsCore);
13
+ const [pacerDevtoolsPlugin] = createReactPlugin({
14
+ name: "TanStack Pacer",
15
+ Component: PacerDevtoolsPanel
16
+ });
17
+ async function syncDevtoolsTheme(resolvedScheme) {
18
+ try {
19
+ const raw = await Promise.resolve(storage.getItem(devtoolsSettingsKey));
20
+ const settings = raw ? JSON.parse(raw) : {};
21
+ if (settings.theme !== resolvedScheme) {
22
+ settings.theme = resolvedScheme;
23
+ await Promise.resolve(storage.setItem(devtoolsSettingsKey, JSON.stringify(settings)));
24
+ }
25
+ } catch {}
26
+ }
27
+ function useFrappePlugin() {
28
+ const [plugin, setPlugin] = useState(null);
29
+ useEffect(() => {
30
+ let cancelled = false;
31
+ async function tryResolve() {
32
+ try {
33
+ const [{
34
+ frappeDevtoolsPlugin
35
+ }, {
36
+ __getActiveSyncModule
37
+ }] = await Promise.all([import("@multiplatform.one/frappe/devtools"), import("@multiplatform.one/frappe")]);
38
+ const sync = __getActiveSyncModule();
39
+ if (sync && !cancelled) {
40
+ setPlugin(frappeDevtoolsPlugin(sync));
41
+ return true;
42
+ }
43
+ } catch {}
44
+ return false;
45
+ }
46
+ void tryResolve().then(found => {
47
+ if (found || cancelled) return;
48
+ let attempts = 0;
49
+ const interval = setInterval(async () => {
50
+ attempts++;
51
+ const found2 = await tryResolve();
52
+ if (found2 || cancelled || attempts >= 10) clearInterval(interval);
53
+ }, 2e3);
54
+ return () => clearInterval(interval);
55
+ });
56
+ return () => {
57
+ cancelled = true;
58
+ };
59
+ }, []);
60
+ return plugin;
61
+ }
62
+ function TanstackDevtoolsWrapper({
63
+ resolvedScheme,
64
+ tanstackConfig
65
+ }) {
66
+ useEffect(() => {
67
+ if (typeof window === "undefined") return;
68
+ void syncDevtoolsTheme(resolvedScheme);
69
+ }, [resolvedScheme]);
70
+ const frappePlugin = useFrappePlugin();
71
+ useShakeToOpen(tanstackConfig.shakeToOpen !== false);
72
+ useDevtoolsKeyboardTrigger(true);
73
+ const openRequests = useDevtoolsOpenRequests();
74
+ const plugins = [{
75
+ id: "react-query",
76
+ name: "React Query",
77
+ render: /* @__PURE__ */jsx(ReactQueryDevtools, {
78
+ initialIsOpen: false
79
+ })
80
+ }, formDevtoolsPlugin(), pacerDevtoolsPlugin(), {
81
+ id: "theme",
82
+ name: "Theme",
83
+ // The panel opens focused on Theme, so a shake (or the hotkey) lands
84
+ // straight on the theme flipper — the whole point of the trigger is
85
+ // to check that everything is themable. `defaultOpen` seeds the tab
86
+ // only on first open, when no layout is persisted yet; once the user
87
+ // moves to another tab their choice is restored on later opens.
88
+ defaultOpen: true,
89
+ render: (_el, props) => /* @__PURE__ */jsx(ThemeDevtoolsPanel, {
90
+ useUserScheme: tanstackConfig.useUserScheme,
91
+ devtoolsTheme: props.theme,
92
+ tamaguiConfig: tanstackConfig.tamaguiConfig,
93
+ themeColors: tanstackConfig.themeColors,
94
+ currentThemeColor: tanstackConfig.currentThemeColor,
95
+ onThemeColorChange: tanstackConfig.onThemeColorChange
96
+ })
97
+ }, ...(frappePlugin ? [frappePlugin] : [])];
98
+ return /* @__PURE__ */jsx(TanStackDevtools, {
99
+ config: {
100
+ defaultOpen: false,
101
+ triggerHidden: true,
102
+ openHotkey: [...devtoolsOpenHotkey],
103
+ theme: resolvedScheme
104
+ },
105
+ plugins
106
+ }, `${resolvedScheme}:${openRequests}`);
107
+ }
108
+ export { TanstackDevtoolsWrapper as default };
109
+ //# sourceMappingURL=TanstackDevtools.mjs.map