@xyo-network/react-app-settings 7.5.8 → 7.5.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,KAA4B,MAAM,OAAO,CAAA;AAGhD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,iEAAiE;AACjE,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAC7H,OAAO,CAAC,EAAE,kBAAkB,CAAA;CAC7B;AAED,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAmErF,CAAA"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,KAEN,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,iEAAiE;AACjE,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAC7H,OAAO,CAAC,EAAE,kBAAkB,CAAA;CAC7B;AAED,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAqFrF,CAAA"}
@@ -1,10 +1,6 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/components/DarkModeIconButton.tsx
5
2
  import { DarkModeRounded as DarkModeRoundedIcon, LightModeRounded as LightModeRoundedIcon } from "@mui/icons-material";
6
3
  import { IconButton } from "@mui/material";
7
- import React2 from "react";
8
4
 
9
5
  // src/contexts/AppSettings/Context.ts
10
6
  import { createContext } from "react";
@@ -21,7 +17,7 @@ var AppSettingSlug = Enum({
21
17
  });
22
18
 
23
19
  // src/contexts/AppSettings/appSettingDefault.ts
24
- var appSettingDefault = /* @__PURE__ */ __name(() => {
20
+ var appSettingDefault = () => {
25
21
  return {
26
22
  [AppSettingSlug.DarkMode]: false,
27
23
  [AppSettingSlug.Developer]: false,
@@ -30,20 +26,21 @@ var appSettingDefault = /* @__PURE__ */ __name(() => {
30
26
  [AppSettingSlug.SeedPhrase]: "",
31
27
  [AppSettingSlug.MaxAccounts]: 1
32
28
  };
33
- }, "appSettingDefault");
29
+ };
34
30
 
35
31
  // src/contexts/AppSettings/Context.ts
36
32
  var AppSettingsContext = createContext(appSettingDefault());
37
33
 
38
34
  // src/contexts/AppSettings/Provider.tsx
39
- import React, { useMemo, useState } from "react";
35
+ import {
36
+ useCallback,
37
+ useMemo,
38
+ useState
39
+ } from "react";
40
40
 
41
41
  // src/contexts/AppSettings/StorageBase.ts
42
42
  import { assertDefinedEx, assertEx } from "@xylabs/sdk-js";
43
43
  var AppSettingsStorageBase = class {
44
- static {
45
- __name(this, "AppSettingsStorageBase");
46
- }
47
44
  defaults;
48
45
  prefix;
49
46
  constructor(prefix = "AppSettings", defaults) {
@@ -118,14 +115,8 @@ var AppSettingsStorageBase = class {
118
115
 
119
116
  // src/contexts/AppSettings/Storage.ts
120
117
  var AppSettingsStorage = class extends AppSettingsStorageBase {
121
- static {
122
- __name(this, "AppSettingsStorage");
123
- }
124
118
  constructor(prefix = "AppSettings", defaults) {
125
- super(prefix, {
126
- ...appSettingDefault(),
127
- ...defaults
128
- });
119
+ super(prefix, { ...appSettingDefault(), ...defaults });
129
120
  }
130
121
  get darkMode() {
131
122
  return this.getBoolean(AppSettingSlug.DarkMode);
@@ -166,83 +157,104 @@ var AppSettingsStorage = class extends AppSettingsStorageBase {
166
157
  };
167
158
 
168
159
  // src/contexts/AppSettings/Provider.tsx
169
- var AppSettingsProvider = /* @__PURE__ */ __name(({ storage, value, children, ...props }) => {
170
- const storageMemo = useMemo(() => storage ?? new AppSettingsStorage(), [
171
- storage
172
- ]);
160
+ import { jsx } from "react/jsx-runtime";
161
+ var AppSettingsProvider = ({
162
+ storage,
163
+ value,
164
+ children,
165
+ ...props
166
+ }) => {
167
+ const storageMemo = useMemo(() => storage ?? new AppSettingsStorage(), [storage]);
173
168
  const [developerMode, setDeveloperMode] = useState(storageMemo.developerMode);
174
169
  const [darkMode, setDarkMode] = useState(storageMemo.darkMode);
175
170
  const [navigationType, setNavigationType] = useState(storageMemo.navigationType);
176
171
  const [navigationCollapsed, setNavigationCollapsed] = useState(storageMemo.navigationCollapsed);
177
172
  const [seedPhrase, setSeedPhrase] = useState(storageMemo.seedPhrase);
178
173
  const [maxAccounts, setMaxAccounts] = useState(storageMemo.maxAccounts);
179
- const enableDeveloperMode = /* @__PURE__ */ __name((value2) => {
174
+ const enableDeveloperMode = useCallback((value2) => {
180
175
  storageMemo.developerMode = value2;
181
176
  setDeveloperMode(storageMemo.developerMode);
182
- }, "enableDeveloperMode");
183
- const enableDarkMode = /* @__PURE__ */ __name((value2) => {
177
+ }, [storageMemo]);
178
+ const enableDarkMode = useCallback((value2) => {
184
179
  storageMemo.darkMode = value2;
185
180
  setDarkMode(storageMemo.darkMode);
186
- }, "enableDarkMode");
187
- const changeNavigationType = /* @__PURE__ */ __name((value2) => {
181
+ }, [storageMemo]);
182
+ const changeNavigationType = useCallback((value2) => {
188
183
  storageMemo.navigationType = value2;
189
184
  setNavigationType(value2);
190
- }, "changeNavigationType");
191
- const changeNavigationCollapsed = /* @__PURE__ */ __name((value2) => {
185
+ }, [storageMemo]);
186
+ const changeNavigationCollapsed = useCallback((value2) => {
192
187
  storageMemo.navigationCollapsed = value2;
193
188
  setNavigationCollapsed(value2);
194
- }, "changeNavigationCollapsed");
195
- const changeSeedPhrase = /* @__PURE__ */ __name((value2) => {
189
+ }, [storageMemo]);
190
+ const changeSeedPhrase = useCallback((value2) => {
196
191
  storageMemo.seedPhrase = value2;
197
192
  setSeedPhrase(value2);
198
- }, "changeSeedPhrase");
199
- const changeMaxAccounts = /* @__PURE__ */ __name((value2) => {
193
+ }, [storageMemo]);
194
+ const changeMaxAccounts = useCallback((value2) => {
200
195
  storageMemo.maxAccounts = value2;
201
196
  setMaxAccounts(value2);
202
- }, "changeMaxAccounts");
203
- return /* @__PURE__ */ React.createElement(AppSettingsContext, {
204
- value: {
205
- changeMaxAccounts,
206
- changeNavigationCollapsed,
207
- changeNavigationType,
208
- changeSeedPhrase,
209
- darkMode,
210
- developerMode,
211
- enableDarkMode,
212
- enableDeveloperMode,
213
- maxAccounts,
214
- navigationCollapsed,
215
- navigationType,
216
- seedPhrase,
217
- ...value
218
- },
219
- ...props
220
- }, children);
221
- }, "AppSettingsProvider");
197
+ }, [storageMemo]);
198
+ const contextValue = useMemo(() => ({
199
+ changeMaxAccounts,
200
+ changeNavigationCollapsed,
201
+ changeNavigationType,
202
+ changeSeedPhrase,
203
+ darkMode,
204
+ developerMode,
205
+ enableDarkMode,
206
+ enableDeveloperMode,
207
+ maxAccounts,
208
+ navigationCollapsed,
209
+ navigationType,
210
+ seedPhrase,
211
+ ...value
212
+ }), [
213
+ changeMaxAccounts,
214
+ changeNavigationCollapsed,
215
+ changeNavigationType,
216
+ changeSeedPhrase,
217
+ darkMode,
218
+ developerMode,
219
+ enableDarkMode,
220
+ enableDeveloperMode,
221
+ maxAccounts,
222
+ navigationCollapsed,
223
+ navigationType,
224
+ seedPhrase,
225
+ value
226
+ ]);
227
+ return /* @__PURE__ */ jsx(
228
+ AppSettingsContext,
229
+ {
230
+ value: contextValue,
231
+ ...props,
232
+ children
233
+ }
234
+ );
235
+ };
222
236
 
223
237
  // src/contexts/AppSettings/useAppSettings.ts
224
238
  import { use } from "react";
225
- var useAppSettings = /* @__PURE__ */ __name(() => {
239
+ var useAppSettings = () => {
226
240
  return use(AppSettingsContext);
227
- }, "useAppSettings");
241
+ };
228
242
 
229
243
  // src/components/DarkModeIconButton.tsx
230
- var DarkModeIconButton = /* @__PURE__ */ __name((props) => {
244
+ import { jsx as jsx2 } from "react/jsx-runtime";
245
+ var DarkModeIconButton = (props) => {
231
246
  const { darkMode, enableDarkMode } = useAppSettings();
232
- const handleDarkModeChange = /* @__PURE__ */ __name(() => {
247
+ const handleDarkModeChange = () => {
233
248
  enableDarkMode?.(!darkMode);
234
- }, "handleDarkModeChange");
235
- return /* @__PURE__ */ React2.createElement(IconButton, {
236
- onClick: handleDarkModeChange,
237
- ...props
238
- }, darkMode ? /* @__PURE__ */ React2.createElement(DarkModeRoundedIcon, null) : /* @__PURE__ */ React2.createElement(LightModeRoundedIcon, null));
239
- }, "DarkModeIconButton");
249
+ };
250
+ return /* @__PURE__ */ jsx2(IconButton, { onClick: handleDarkModeChange, ...props, children: darkMode ? /* @__PURE__ */ jsx2(DarkModeRoundedIcon, {}) : /* @__PURE__ */ jsx2(LightModeRoundedIcon, {}) });
251
+ };
240
252
 
241
253
  // src/components/Developer.tsx
242
- var Developer = /* @__PURE__ */ __name(({ children = null }) => {
254
+ var Developer = ({ children = null }) => {
243
255
  const { developerMode } = useAppSettings();
244
256
  return developerMode ? children : null;
245
- }, "Developer");
257
+ };
246
258
  export {
247
259
  AppSettingSlug,
248
260
  AppSettingsContext,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/DarkModeIconButton.tsx","../../src/contexts/AppSettings/Context.ts","../../src/contexts/AppSettings/Slug.ts","../../src/contexts/AppSettings/appSettingDefault.ts","../../src/contexts/AppSettings/Provider.tsx","../../src/contexts/AppSettings/StorageBase.ts","../../src/contexts/AppSettings/Storage.ts","../../src/contexts/AppSettings/useAppSettings.ts","../../src/components/Developer.tsx"],"sourcesContent":["import { DarkModeRounded as DarkModeRoundedIcon, LightModeRounded as LightModeRoundedIcon } from '@mui/icons-material'\nimport type { IconButtonProps } from '@mui/material'\nimport { IconButton } from '@mui/material'\nimport React from 'react'\n\nimport { useAppSettings } from '../contexts/index.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const DarkModeIconButton: React.FC<IconButtonProps> = (props) => {\n const { darkMode, enableDarkMode } = useAppSettings()\n\n const handleDarkModeChange = () => {\n enableDarkMode?.(!darkMode)\n }\n\n return (\n <IconButton onClick={handleDarkModeChange} {...props}>\n {darkMode\n ? <DarkModeRoundedIcon />\n : <LightModeRoundedIcon />}\n </IconButton>\n )\n}\n","import { createContext } from 'react'\n\nimport type { WebAppNavigationType } from '../../WebAppNavigationType.ts'\nimport { appSettingDefault } from './appSettingDefault.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport interface AppSettingsContextProps {\n changeMaxAccounts?: (value: number) => void\n changeNavigationCollapsed?: (value: boolean) => void\n changeNavigationType?: (value: WebAppNavigationType) => void\n changeSeedPhrase?: (value: string) => void\n darkMode?: boolean\n developerMode?: boolean\n enableDarkMode?: (value: boolean) => void\n enableDeveloperMode?: (value: boolean) => void\n maxAccounts?: number\n navigationCollapsed?: boolean\n navigationType?: WebAppNavigationType\n seedPhrase?: string\n}\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const AppSettingsContext = createContext<AppSettingsContextProps>(appSettingDefault())\n","import type { EnumValue } from '@xylabs/sdk-js'\nimport { Enum } from '@xylabs/sdk-js'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const AppSettingSlug = Enum({\n DarkMode: 'darkmode',\n Developer: 'developer',\n NavigationType: 'navigationType',\n NavigationCollapsed: 'navigationCollapsed',\n SeedPhrase: 'seedPhrase',\n MaxAccounts: 'maxAccounts',\n})\n\nexport type AppSettingSlug = EnumValue<typeof AppSettingSlug>\n","import { AppSettingSlug } from './Slug.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const appSettingDefault = (): Record<string, unknown> => {\n return {\n [AppSettingSlug.DarkMode]: false,\n [AppSettingSlug.Developer]: false,\n [AppSettingSlug.NavigationType]: 'menu',\n [AppSettingSlug.NavigationCollapsed]: false,\n [AppSettingSlug.SeedPhrase]: '',\n [AppSettingSlug.MaxAccounts]: 1,\n }\n}\n","import type { PropsWithChildren, ProviderProps } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport type { WebAppNavigationType } from '../../WebAppNavigationType.ts'\nimport type { AppSettingsContextProps } from './Context.ts'\nimport { AppSettingsContext } from './Context.ts'\nimport { AppSettingsStorage } from './Storage.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport interface AppSettingsProviderProps<T extends AppSettingsContextProps = AppSettingsContextProps> extends ProviderProps<T> {\n storage?: AppSettingsStorage\n}\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const AppSettingsProvider: React.FC<PropsWithChildren<AppSettingsProviderProps>> = ({\n storage,\n value,\n children,\n ...props\n}) => {\n const storageMemo = useMemo(() => storage ?? new AppSettingsStorage(), [storage])\n const [developerMode, setDeveloperMode] = useState(storageMemo.developerMode)\n const [darkMode, setDarkMode] = useState(storageMemo.darkMode)\n const [navigationType, setNavigationType] = useState(storageMemo.navigationType)\n const [navigationCollapsed, setNavigationCollapsed] = useState(storageMemo.navigationCollapsed)\n const [seedPhrase, setSeedPhrase] = useState(storageMemo.seedPhrase)\n const [maxAccounts, setMaxAccounts] = useState(storageMemo.maxAccounts)\n\n const enableDeveloperMode = (value: boolean) => {\n storageMemo.developerMode = value\n setDeveloperMode(storageMemo.developerMode)\n }\n\n const enableDarkMode = (value: boolean) => {\n storageMemo.darkMode = value\n setDarkMode(storageMemo.darkMode)\n }\n\n const changeNavigationType = (value: WebAppNavigationType) => {\n storageMemo.navigationType = value\n setNavigationType(value)\n }\n\n const changeNavigationCollapsed = (value: boolean) => {\n storageMemo.navigationCollapsed = value\n setNavigationCollapsed(value)\n }\n\n const changeSeedPhrase = (value: string) => {\n storageMemo.seedPhrase = value\n setSeedPhrase(value)\n }\n\n const changeMaxAccounts = (value: number) => {\n storageMemo.maxAccounts = value\n setMaxAccounts(value)\n }\n\n return (\n <AppSettingsContext\n value={{\n changeMaxAccounts,\n changeNavigationCollapsed,\n changeNavigationType,\n changeSeedPhrase,\n darkMode,\n developerMode,\n enableDarkMode,\n enableDeveloperMode,\n maxAccounts,\n navigationCollapsed,\n navigationType,\n seedPhrase,\n\n ...value,\n }}\n {...props}\n >\n {children}\n </AppSettingsContext>\n )\n}\n","import { assertDefinedEx, assertEx } from '@xylabs/sdk-js'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport class AppSettingsStorageBase {\n private defaults: Record<string, unknown>\n private prefix: string\n constructor(prefix = 'AppSettings', defaults?: Record<string, unknown>) {\n this.prefix = prefix\n this.defaults = defaults ?? {}\n }\n\n getBoolean(name: string): boolean {\n const storedValue = localStorage.getItem(`${this.prefix}|${name}`)\n if (!storedValue) {\n assertEx(typeof this.defaults[name] === 'boolean', () => 'Default value is not boolean')\n const defaultValue = this.defaults[name] as boolean\n assertEx(defaultValue !== undefined, () => `Missing Default for ${name}`)\n return defaultValue\n }\n return storedValue !== 'false'\n }\n\n getNumber(name: string): number {\n const storedValue = localStorage.getItem(`${this.prefix}|${name}`)\n if (!storedValue) {\n assertEx(typeof this.defaults[name] === 'number', () => 'Default value is not a number')\n const defaultValue = this.defaults[name] as number\n assertEx(defaultValue !== undefined, () => `Missing Default for ${name}`)\n return defaultValue\n }\n return Number.parseFloat(storedValue)\n }\n\n getObject<T>(name: string): T {\n const storedValue = localStorage.getItem(`${this.prefix}|${name}`)\n const parsedStoredValue = storedValue ? JSON.parse(storedValue) : null\n if (!parsedStoredValue) {\n assertEx(typeof this.defaults[name] === 'object', () => 'Default value is not object')\n return assertEx(this.defaults[name] as T, () => `Missing Default for ${name}`)\n }\n return parsedStoredValue as T\n }\n\n getString(name: string) {\n const storedValue = localStorage.getItem(`${this.prefix}|${name}`)\n if (!storedValue) {\n assertDefinedEx(typeof this.defaults[name] === 'string', () => 'Default value is not string')\n const defaultValue = this.defaults[name] as string\n assertEx(defaultValue !== undefined, () => `Missing Default for ${name}`)\n return defaultValue\n }\n return storedValue\n }\n\n getStringArray(name: string) {\n const storedValue = localStorage.getItem(`${this.prefix}|${name}`)?.split(',')\n if (!storedValue) {\n assertDefinedEx(Array.isArray(this.defaults[name]), () => 'Default value is not array')\n const defaultValue = this.defaults[name] as string[]\n assertEx(defaultValue !== undefined, () => `Missing Default for ${name}`)\n return defaultValue\n }\n return storedValue\n }\n\n setBoolean(name: string, value: boolean) {\n localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))\n }\n\n setNumber(name: string, value: number) {\n localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))\n }\n\n setObject<T>(name: string, value: T) {\n localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))\n }\n\n setString(name: string, value: string) {\n localStorage.setItem(`${this.prefix}|${name}`, value)\n }\n\n setStringArray(name: string, value: string[]) {\n localStorage.setItem(`${this.prefix}|${name}`, value.join(','))\n }\n}\n","import type { WebAppNavigationType } from '../../WebAppNavigationType.ts'\nimport { appSettingDefault } from './appSettingDefault.ts'\nimport { AppSettingSlug } from './Slug.ts'\nimport { AppSettingsStorageBase } from './StorageBase.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport class AppSettingsStorage extends AppSettingsStorageBase {\n constructor(prefix = 'AppSettings', defaults?: Record<string, unknown>) {\n super(prefix, { ...appSettingDefault(), ...defaults })\n }\n\n get darkMode() {\n return this.getBoolean(AppSettingSlug.DarkMode)\n }\n\n set darkMode(value: boolean) {\n this.setBoolean(AppSettingSlug.DarkMode, value)\n }\n\n get developerMode() {\n return this.getBoolean(AppSettingSlug.Developer)\n }\n\n set developerMode(value: boolean) {\n this.setBoolean(AppSettingSlug.Developer, value)\n }\n\n get maxAccounts() {\n return this.getNumber(AppSettingSlug.MaxAccounts)\n }\n\n set maxAccounts(value: number) {\n this.setNumber(AppSettingSlug.MaxAccounts, value)\n }\n\n get navigationCollapsed() {\n return this.getBoolean(AppSettingSlug.NavigationCollapsed)\n }\n\n set navigationCollapsed(value: boolean) {\n this.setBoolean(AppSettingSlug.NavigationCollapsed, value)\n }\n\n get navigationType() {\n return this.getString(AppSettingSlug.NavigationType) as WebAppNavigationType\n }\n\n set navigationType(value: WebAppNavigationType) {\n this.setString(AppSettingSlug.NavigationType, value)\n }\n\n get seedPhrase() {\n return this.getString(AppSettingSlug.SeedPhrase)\n }\n\n set seedPhrase(value: string) {\n this.setString(AppSettingSlug.SeedPhrase, value)\n }\n}\n","import { use } from 'react'\n\nimport { AppSettingsContext } from './Context.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const useAppSettings = () => {\n return use(AppSettingsContext)\n}\n","import type { ReactElement } from 'react'\n\nimport { useAppSettings } from '../contexts/index.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const Developer: React.FC<{ children: ReactElement }> = ({ children = null }) => {\n const { developerMode } = useAppSettings()\n\n return developerMode ? children : null\n}\n"],"mappings":";;;;AAAA,SAASA,mBAAmBC,qBAAqBC,oBAAoBC,4BAA4B;AAEjG,SAASC,kBAAkB;AAC3B,OAAOC,YAAW;;;ACHlB,SAASC,qBAAqB;;;ACC9B,SAASC,YAAY;AAGd,IAAMC,iBAAiBD,KAAK;EACjCE,UAAU;EACVC,WAAW;EACXC,gBAAgB;EAChBC,qBAAqB;EACrBC,YAAY;EACZC,aAAa;AACf,CAAA;;;ACRO,IAAMC,oBAAoB,6BAAA;AAC/B,SAAO;IACL,CAACC,eAAeC,QAAQ,GAAG;IAC3B,CAACD,eAAeE,SAAS,GAAG;IAC5B,CAACF,eAAeG,cAAc,GAAG;IACjC,CAACH,eAAeI,mBAAmB,GAAG;IACtC,CAACJ,eAAeK,UAAU,GAAG;IAC7B,CAACL,eAAeM,WAAW,GAAG;EAChC;AACF,GATiC;;;AFmB1B,IAAMC,qBAAqBC,cAAuCC,kBAAAA,CAAAA;;;AGrBzE,OAAOC,SAASC,SAASC,gBAAgB;;;ACDzC,SAASC,iBAAiBC,gBAAgB;AAGnC,IAAMC,yBAAN,MAAMA;EAHb,OAGaA;;;EACHC;EACAC;EACR,YAAYA,SAAS,eAAeD,UAAoC;AACtE,SAAKC,SAASA;AACd,SAAKD,WAAWA,YAAY,CAAC;EAC/B;EAEAE,WAAWC,MAAuB;AAChC,UAAMC,cAAcC,aAAaC,QAAQ,GAAG,KAAKL,MAAM,IAAIE,IAAAA,EAAM;AACjE,QAAI,CAACC,aAAa;AAChBG,eAAS,OAAO,KAAKP,SAASG,IAAAA,MAAU,WAAW,MAAM,8BAAA;AACzD,YAAMK,eAAe,KAAKR,SAASG,IAAAA;AACnCI,eAASC,iBAAiBC,QAAW,MAAM,uBAAuBN,IAAAA,EAAM;AACxE,aAAOK;IACT;AACA,WAAOJ,gBAAgB;EACzB;EAEAM,UAAUP,MAAsB;AAC9B,UAAMC,cAAcC,aAAaC,QAAQ,GAAG,KAAKL,MAAM,IAAIE,IAAAA,EAAM;AACjE,QAAI,CAACC,aAAa;AAChBG,eAAS,OAAO,KAAKP,SAASG,IAAAA,MAAU,UAAU,MAAM,+BAAA;AACxD,YAAMK,eAAe,KAAKR,SAASG,IAAAA;AACnCI,eAASC,iBAAiBC,QAAW,MAAM,uBAAuBN,IAAAA,EAAM;AACxE,aAAOK;IACT;AACA,WAAOG,OAAOC,WAAWR,WAAAA;EAC3B;EAEAS,UAAaV,MAAiB;AAC5B,UAAMC,cAAcC,aAAaC,QAAQ,GAAG,KAAKL,MAAM,IAAIE,IAAAA,EAAM;AACjE,UAAMW,oBAAoBV,cAAcW,KAAKC,MAAMZ,WAAAA,IAAe;AAClE,QAAI,CAACU,mBAAmB;AACtBP,eAAS,OAAO,KAAKP,SAASG,IAAAA,MAAU,UAAU,MAAM,6BAAA;AACxD,aAAOI,SAAS,KAAKP,SAASG,IAAAA,GAAY,MAAM,uBAAuBA,IAAAA,EAAM;IAC/E;AACA,WAAOW;EACT;EAEAG,UAAUd,MAAc;AACtB,UAAMC,cAAcC,aAAaC,QAAQ,GAAG,KAAKL,MAAM,IAAIE,IAAAA,EAAM;AACjE,QAAI,CAACC,aAAa;AAChBc,sBAAgB,OAAO,KAAKlB,SAASG,IAAAA,MAAU,UAAU,MAAM,6BAAA;AAC/D,YAAMK,eAAe,KAAKR,SAASG,IAAAA;AACnCI,eAASC,iBAAiBC,QAAW,MAAM,uBAAuBN,IAAAA,EAAM;AACxE,aAAOK;IACT;AACA,WAAOJ;EACT;EAEAe,eAAehB,MAAc;AAC3B,UAAMC,cAAcC,aAAaC,QAAQ,GAAG,KAAKL,MAAM,IAAIE,IAAAA,EAAM,GAAGiB,MAAM,GAAA;AAC1E,QAAI,CAAChB,aAAa;AAChBc,sBAAgBG,MAAMC,QAAQ,KAAKtB,SAASG,IAAAA,CAAK,GAAG,MAAM,4BAAA;AAC1D,YAAMK,eAAe,KAAKR,SAASG,IAAAA;AACnCI,eAASC,iBAAiBC,QAAW,MAAM,uBAAuBN,IAAAA,EAAM;AACxE,aAAOK;IACT;AACA,WAAOJ;EACT;EAEAmB,WAAWpB,MAAcqB,OAAgB;AACvCnB,iBAAaoB,QAAQ,GAAG,KAAKxB,MAAM,IAAIE,IAAAA,IAAQY,KAAKW,UAAUF,KAAAA,CAAAA;EAChE;EAEAG,UAAUxB,MAAcqB,OAAe;AACrCnB,iBAAaoB,QAAQ,GAAG,KAAKxB,MAAM,IAAIE,IAAAA,IAAQY,KAAKW,UAAUF,KAAAA,CAAAA;EAChE;EAEAI,UAAazB,MAAcqB,OAAU;AACnCnB,iBAAaoB,QAAQ,GAAG,KAAKxB,MAAM,IAAIE,IAAAA,IAAQY,KAAKW,UAAUF,KAAAA,CAAAA;EAChE;EAEAK,UAAU1B,MAAcqB,OAAe;AACrCnB,iBAAaoB,QAAQ,GAAG,KAAKxB,MAAM,IAAIE,IAAAA,IAAQqB,KAAAA;EACjD;EAEAM,eAAe3B,MAAcqB,OAAiB;AAC5CnB,iBAAaoB,QAAQ,GAAG,KAAKxB,MAAM,IAAIE,IAAAA,IAAQqB,MAAMO,KAAK,GAAA,CAAA;EAC5D;AACF;;;AC9EO,IAAMC,qBAAN,cAAiCC,uBAAAA;EALxC,OAKwCA;;;EACtC,YAAYC,SAAS,eAAeC,UAAoC;AACtE,UAAMD,QAAQ;MAAE,GAAGE,kBAAAA;MAAqB,GAAGD;IAAS,CAAA;EACtD;EAEA,IAAIE,WAAW;AACb,WAAO,KAAKC,WAAWC,eAAeC,QAAQ;EAChD;EAEA,IAAIH,SAASI,OAAgB;AAC3B,SAAKC,WAAWH,eAAeC,UAAUC,KAAAA;EAC3C;EAEA,IAAIE,gBAAgB;AAClB,WAAO,KAAKL,WAAWC,eAAeK,SAAS;EACjD;EAEA,IAAID,cAAcF,OAAgB;AAChC,SAAKC,WAAWH,eAAeK,WAAWH,KAAAA;EAC5C;EAEA,IAAII,cAAc;AAChB,WAAO,KAAKC,UAAUP,eAAeQ,WAAW;EAClD;EAEA,IAAIF,YAAYJ,OAAe;AAC7B,SAAKO,UAAUT,eAAeQ,aAAaN,KAAAA;EAC7C;EAEA,IAAIQ,sBAAsB;AACxB,WAAO,KAAKX,WAAWC,eAAeW,mBAAmB;EAC3D;EAEA,IAAID,oBAAoBR,OAAgB;AACtC,SAAKC,WAAWH,eAAeW,qBAAqBT,KAAAA;EACtD;EAEA,IAAIU,iBAAiB;AACnB,WAAO,KAAKC,UAAUb,eAAec,cAAc;EACrD;EAEA,IAAIF,eAAeV,OAA6B;AAC9C,SAAKa,UAAUf,eAAec,gBAAgBZ,KAAAA;EAChD;EAEA,IAAIc,aAAa;AACf,WAAO,KAAKH,UAAUb,eAAeiB,UAAU;EACjD;EAEA,IAAID,WAAWd,OAAe;AAC5B,SAAKa,UAAUf,eAAeiB,YAAYf,KAAAA;EAC5C;AACF;;;AF5CO,IAAMgB,sBAA6E,wBAAC,EACzFC,SACAC,OACAC,UACA,GAAGC,MAAAA,MACJ;AACC,QAAMC,cAAcC,QAAQ,MAAML,WAAW,IAAIM,mBAAAA,GAAsB;IAACN;GAAQ;AAChF,QAAM,CAACO,eAAeC,gBAAAA,IAAoBC,SAASL,YAAYG,aAAa;AAC5E,QAAM,CAACG,UAAUC,WAAAA,IAAeF,SAASL,YAAYM,QAAQ;AAC7D,QAAM,CAACE,gBAAgBC,iBAAAA,IAAqBJ,SAASL,YAAYQ,cAAc;AAC/E,QAAM,CAACE,qBAAqBC,sBAAAA,IAA0BN,SAASL,YAAYU,mBAAmB;AAC9F,QAAM,CAACE,YAAYC,aAAAA,IAAiBR,SAASL,YAAYY,UAAU;AACnE,QAAM,CAACE,aAAaC,cAAAA,IAAkBV,SAASL,YAAYc,WAAW;AAEtE,QAAME,sBAAsB,wBAACnB,WAAAA;AAC3BG,gBAAYG,gBAAgBN;AAC5BO,qBAAiBJ,YAAYG,aAAa;EAC5C,GAH4B;AAK5B,QAAMc,iBAAiB,wBAACpB,WAAAA;AACtBG,gBAAYM,WAAWT;AACvBU,gBAAYP,YAAYM,QAAQ;EAClC,GAHuB;AAKvB,QAAMY,uBAAuB,wBAACrB,WAAAA;AAC5BG,gBAAYQ,iBAAiBX;AAC7BY,sBAAkBZ,MAAAA;EACpB,GAH6B;AAK7B,QAAMsB,4BAA4B,wBAACtB,WAAAA;AACjCG,gBAAYU,sBAAsBb;AAClCc,2BAAuBd,MAAAA;EACzB,GAHkC;AAKlC,QAAMuB,mBAAmB,wBAACvB,WAAAA;AACxBG,gBAAYY,aAAaf;AACzBgB,kBAAchB,MAAAA;EAChB,GAHyB;AAKzB,QAAMwB,oBAAoB,wBAACxB,WAAAA;AACzBG,gBAAYc,cAAcjB;AAC1BkB,mBAAelB,MAAAA;EACjB,GAH0B;AAK1B,SACE,sBAAA,cAACyB,oBAAAA;IACCzB,OAAO;MACLwB;MACAF;MACAD;MACAE;MACAd;MACAH;MACAc;MACAD;MACAF;MACAJ;MACAF;MACAI;MAEA,GAAGf;IACL;IACC,GAAGE;KAEHD,QAAAA;AAGP,GAnE0F;;;AGd1F,SAASyB,WAAW;AAKb,IAAMC,iBAAiB,6BAAA;AAC5B,SAAOC,IAAIC,kBAAAA;AACb,GAF8B;;;APGvB,IAAMC,qBAAgD,wBAACC,UAAAA;AAC5D,QAAM,EAAEC,UAAUC,eAAc,IAAKC,eAAAA;AAErC,QAAMC,uBAAuB,6BAAA;AAC3BF,qBAAiB,CAACD,QAAAA;EACpB,GAF6B;AAI7B,SACE,gBAAAI,OAAA,cAACC,YAAAA;IAAWC,SAASH;IAAuB,GAAGJ;KAC5CC,WACG,gBAAAI,OAAA,cAACG,qBAAAA,IAAAA,IACD,gBAAAH,OAAA,cAACI,sBAAAA,IAAAA,CAAAA;AAGX,GAd6D;;;AQHtD,IAAMC,YAAkD,wBAAC,EAAEC,WAAW,KAAI,MAAE;AACjF,QAAM,EAAEC,cAAa,IAAKC,eAAAA;AAE1B,SAAOD,gBAAgBD,WAAW;AACpC,GAJ+D;","names":["DarkModeRounded","DarkModeRoundedIcon","LightModeRounded","LightModeRoundedIcon","IconButton","React","createContext","Enum","AppSettingSlug","DarkMode","Developer","NavigationType","NavigationCollapsed","SeedPhrase","MaxAccounts","appSettingDefault","AppSettingSlug","DarkMode","Developer","NavigationType","NavigationCollapsed","SeedPhrase","MaxAccounts","AppSettingsContext","createContext","appSettingDefault","React","useMemo","useState","assertDefinedEx","assertEx","AppSettingsStorageBase","defaults","prefix","getBoolean","name","storedValue","localStorage","getItem","assertEx","defaultValue","undefined","getNumber","Number","parseFloat","getObject","parsedStoredValue","JSON","parse","getString","assertDefinedEx","getStringArray","split","Array","isArray","setBoolean","value","setItem","stringify","setNumber","setObject","setString","setStringArray","join","AppSettingsStorage","AppSettingsStorageBase","prefix","defaults","appSettingDefault","darkMode","getBoolean","AppSettingSlug","DarkMode","value","setBoolean","developerMode","Developer","maxAccounts","getNumber","MaxAccounts","setNumber","navigationCollapsed","NavigationCollapsed","navigationType","getString","NavigationType","setString","seedPhrase","SeedPhrase","AppSettingsProvider","storage","value","children","props","storageMemo","useMemo","AppSettingsStorage","developerMode","setDeveloperMode","useState","darkMode","setDarkMode","navigationType","setNavigationType","navigationCollapsed","setNavigationCollapsed","seedPhrase","setSeedPhrase","maxAccounts","setMaxAccounts","enableDeveloperMode","enableDarkMode","changeNavigationType","changeNavigationCollapsed","changeSeedPhrase","changeMaxAccounts","AppSettingsContext","use","useAppSettings","use","AppSettingsContext","DarkModeIconButton","props","darkMode","enableDarkMode","useAppSettings","handleDarkModeChange","React","IconButton","onClick","DarkModeRoundedIcon","LightModeRoundedIcon","Developer","children","developerMode","useAppSettings"]}
1
+ {"version":3,"sources":["../../src/components/DarkModeIconButton.tsx","../../src/contexts/AppSettings/Context.ts","../../src/contexts/AppSettings/Slug.ts","../../src/contexts/AppSettings/appSettingDefault.ts","../../src/contexts/AppSettings/Provider.tsx","../../src/contexts/AppSettings/StorageBase.ts","../../src/contexts/AppSettings/Storage.ts","../../src/contexts/AppSettings/useAppSettings.ts","../../src/components/Developer.tsx"],"sourcesContent":["import { DarkModeRounded as DarkModeRoundedIcon, LightModeRounded as LightModeRoundedIcon } from '@mui/icons-material'\nimport type { IconButtonProps } from '@mui/material'\nimport { IconButton } from '@mui/material'\nimport React from 'react'\n\nimport { useAppSettings } from '../contexts/index.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const DarkModeIconButton: React.FC<IconButtonProps> = (props) => {\n const { darkMode, enableDarkMode } = useAppSettings()\n\n const handleDarkModeChange = () => {\n enableDarkMode?.(!darkMode)\n }\n\n return (\n <IconButton onClick={handleDarkModeChange} {...props}>\n {darkMode\n ? <DarkModeRoundedIcon />\n : <LightModeRoundedIcon />}\n </IconButton>\n )\n}\n","import { createContext } from 'react'\n\nimport type { WebAppNavigationType } from '../../WebAppNavigationType.ts'\nimport { appSettingDefault } from './appSettingDefault.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport interface AppSettingsContextProps {\n changeMaxAccounts?: (value: number) => void\n changeNavigationCollapsed?: (value: boolean) => void\n changeNavigationType?: (value: WebAppNavigationType) => void\n changeSeedPhrase?: (value: string) => void\n darkMode?: boolean\n developerMode?: boolean\n enableDarkMode?: (value: boolean) => void\n enableDeveloperMode?: (value: boolean) => void\n maxAccounts?: number\n navigationCollapsed?: boolean\n navigationType?: WebAppNavigationType\n seedPhrase?: string\n}\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const AppSettingsContext = createContext<AppSettingsContextProps>(appSettingDefault())\n","import type { EnumValue } from '@xylabs/sdk-js'\nimport { Enum } from '@xylabs/sdk-js'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const AppSettingSlug = Enum({\n DarkMode: 'darkmode',\n Developer: 'developer',\n NavigationType: 'navigationType',\n NavigationCollapsed: 'navigationCollapsed',\n SeedPhrase: 'seedPhrase',\n MaxAccounts: 'maxAccounts',\n})\n\nexport type AppSettingSlug = EnumValue<typeof AppSettingSlug>\n","import { AppSettingSlug } from './Slug.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const appSettingDefault = (): Record<string, unknown> => {\n return {\n [AppSettingSlug.DarkMode]: false,\n [AppSettingSlug.Developer]: false,\n [AppSettingSlug.NavigationType]: 'menu',\n [AppSettingSlug.NavigationCollapsed]: false,\n [AppSettingSlug.SeedPhrase]: '',\n [AppSettingSlug.MaxAccounts]: 1,\n }\n}\n","import type { PropsWithChildren, ProviderProps } from 'react'\nimport React, {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport type { WebAppNavigationType } from '../../WebAppNavigationType.ts'\nimport type { AppSettingsContextProps } from './Context.ts'\nimport { AppSettingsContext } from './Context.ts'\nimport { AppSettingsStorage } from './Storage.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport interface AppSettingsProviderProps<T extends AppSettingsContextProps = AppSettingsContextProps> extends ProviderProps<T> {\n storage?: AppSettingsStorage\n}\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const AppSettingsProvider: React.FC<PropsWithChildren<AppSettingsProviderProps>> = ({\n storage,\n value,\n children,\n ...props\n}) => {\n const storageMemo = useMemo(() => storage ?? new AppSettingsStorage(), [storage])\n const [developerMode, setDeveloperMode] = useState(storageMemo.developerMode)\n const [darkMode, setDarkMode] = useState(storageMemo.darkMode)\n const [navigationType, setNavigationType] = useState(storageMemo.navigationType)\n const [navigationCollapsed, setNavigationCollapsed] = useState(storageMemo.navigationCollapsed)\n const [seedPhrase, setSeedPhrase] = useState(storageMemo.seedPhrase)\n const [maxAccounts, setMaxAccounts] = useState(storageMemo.maxAccounts)\n\n /* eslint-disable react-hooks/immutability -- storageMemo is an external storage object that must be mutated */\n const enableDeveloperMode = useCallback((value: boolean) => {\n storageMemo.developerMode = value\n setDeveloperMode(storageMemo.developerMode)\n }, [storageMemo])\n\n const enableDarkMode = useCallback((value: boolean) => {\n storageMemo.darkMode = value\n setDarkMode(storageMemo.darkMode)\n }, [storageMemo])\n\n const changeNavigationType = useCallback((value: WebAppNavigationType) => {\n storageMemo.navigationType = value\n setNavigationType(value)\n }, [storageMemo])\n\n const changeNavigationCollapsed = useCallback((value: boolean) => {\n storageMemo.navigationCollapsed = value\n setNavigationCollapsed(value)\n }, [storageMemo])\n\n const changeSeedPhrase = useCallback((value: string) => {\n storageMemo.seedPhrase = value\n setSeedPhrase(value)\n }, [storageMemo])\n\n const changeMaxAccounts = useCallback((value: number) => {\n storageMemo.maxAccounts = value\n setMaxAccounts(value)\n }, [storageMemo])\n /* eslint-enable react-hooks/immutability */\n\n const contextValue = useMemo(() => ({\n changeMaxAccounts,\n changeNavigationCollapsed,\n changeNavigationType,\n changeSeedPhrase,\n darkMode,\n developerMode,\n enableDarkMode,\n enableDeveloperMode,\n maxAccounts,\n navigationCollapsed,\n navigationType,\n seedPhrase,\n\n ...value,\n }), [\n changeMaxAccounts,\n changeNavigationCollapsed,\n changeNavigationType,\n changeSeedPhrase,\n darkMode,\n developerMode,\n enableDarkMode,\n enableDeveloperMode,\n maxAccounts,\n navigationCollapsed,\n navigationType,\n seedPhrase,\n value,\n ])\n\n return (\n <AppSettingsContext\n value={contextValue}\n {...props}\n >\n {children}\n </AppSettingsContext>\n )\n}\n","import { assertDefinedEx, assertEx } from '@xylabs/sdk-js'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport class AppSettingsStorageBase {\n private defaults: Record<string, unknown>\n private prefix: string\n constructor(prefix = 'AppSettings', defaults?: Record<string, unknown>) {\n this.prefix = prefix\n this.defaults = defaults ?? {}\n }\n\n getBoolean(name: string): boolean {\n const storedValue = localStorage.getItem(`${this.prefix}|${name}`)\n if (!storedValue) {\n assertEx(typeof this.defaults[name] === 'boolean', () => 'Default value is not boolean')\n const defaultValue = this.defaults[name] as boolean\n assertEx(defaultValue !== undefined, () => `Missing Default for ${name}`)\n return defaultValue\n }\n return storedValue !== 'false'\n }\n\n getNumber(name: string): number {\n const storedValue = localStorage.getItem(`${this.prefix}|${name}`)\n if (!storedValue) {\n assertEx(typeof this.defaults[name] === 'number', () => 'Default value is not a number')\n const defaultValue = this.defaults[name] as number\n assertEx(defaultValue !== undefined, () => `Missing Default for ${name}`)\n return defaultValue\n }\n return Number.parseFloat(storedValue)\n }\n\n getObject<T>(name: string): T {\n const storedValue = localStorage.getItem(`${this.prefix}|${name}`)\n const parsedStoredValue = storedValue ? JSON.parse(storedValue) : null\n if (!parsedStoredValue) {\n assertEx(typeof this.defaults[name] === 'object', () => 'Default value is not object')\n return assertEx(this.defaults[name] as T, () => `Missing Default for ${name}`)\n }\n return parsedStoredValue as T\n }\n\n getString(name: string) {\n const storedValue = localStorage.getItem(`${this.prefix}|${name}`)\n if (!storedValue) {\n assertDefinedEx(typeof this.defaults[name] === 'string', () => 'Default value is not string')\n const defaultValue = this.defaults[name] as string\n assertEx(defaultValue !== undefined, () => `Missing Default for ${name}`)\n return defaultValue\n }\n return storedValue\n }\n\n getStringArray(name: string) {\n const storedValue = localStorage.getItem(`${this.prefix}|${name}`)?.split(',')\n if (!storedValue) {\n assertDefinedEx(Array.isArray(this.defaults[name]), () => 'Default value is not array')\n const defaultValue = this.defaults[name] as string[]\n assertEx(defaultValue !== undefined, () => `Missing Default for ${name}`)\n return defaultValue\n }\n return storedValue\n }\n\n setBoolean(name: string, value: boolean) {\n localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))\n }\n\n setNumber(name: string, value: number) {\n localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))\n }\n\n setObject<T>(name: string, value: T) {\n localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))\n }\n\n setString(name: string, value: string) {\n localStorage.setItem(`${this.prefix}|${name}`, value)\n }\n\n setStringArray(name: string, value: string[]) {\n localStorage.setItem(`${this.prefix}|${name}`, value.join(','))\n }\n}\n","import type { WebAppNavigationType } from '../../WebAppNavigationType.ts'\nimport { appSettingDefault } from './appSettingDefault.ts'\nimport { AppSettingSlug } from './Slug.ts'\nimport { AppSettingsStorageBase } from './StorageBase.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport class AppSettingsStorage extends AppSettingsStorageBase {\n constructor(prefix = 'AppSettings', defaults?: Record<string, unknown>) {\n super(prefix, { ...appSettingDefault(), ...defaults })\n }\n\n get darkMode() {\n return this.getBoolean(AppSettingSlug.DarkMode)\n }\n\n set darkMode(value: boolean) {\n this.setBoolean(AppSettingSlug.DarkMode, value)\n }\n\n get developerMode() {\n return this.getBoolean(AppSettingSlug.Developer)\n }\n\n set developerMode(value: boolean) {\n this.setBoolean(AppSettingSlug.Developer, value)\n }\n\n get maxAccounts() {\n return this.getNumber(AppSettingSlug.MaxAccounts)\n }\n\n set maxAccounts(value: number) {\n this.setNumber(AppSettingSlug.MaxAccounts, value)\n }\n\n get navigationCollapsed() {\n return this.getBoolean(AppSettingSlug.NavigationCollapsed)\n }\n\n set navigationCollapsed(value: boolean) {\n this.setBoolean(AppSettingSlug.NavigationCollapsed, value)\n }\n\n get navigationType() {\n return this.getString(AppSettingSlug.NavigationType) as WebAppNavigationType\n }\n\n set navigationType(value: WebAppNavigationType) {\n this.setString(AppSettingSlug.NavigationType, value)\n }\n\n get seedPhrase() {\n return this.getString(AppSettingSlug.SeedPhrase)\n }\n\n set seedPhrase(value: string) {\n this.setString(AppSettingSlug.SeedPhrase, value)\n }\n}\n","import { use } from 'react'\n\nimport { AppSettingsContext } from './Context.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const useAppSettings = () => {\n return use(AppSettingsContext)\n}\n","import type { ReactElement } from 'react'\n\nimport { useAppSettings } from '../contexts/index.ts'\n\n/** @deprecated import from @xylabs/react-app-settings instead */\nexport const Developer: React.FC<{ children: ReactElement }> = ({ children = null }) => {\n const { developerMode } = useAppSettings()\n\n return developerMode ? children : null\n}\n"],"mappings":";AAAA,SAAS,mBAAmB,qBAAqB,oBAAoB,4BAA4B;AAEjG,SAAS,kBAAkB;;;ACF3B,SAAS,qBAAqB;;;ACC9B,SAAS,YAAY;AAGd,IAAM,iBAAiB,KAAK;AAAA,EACjC,UAAU;AAAA,EACV,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,YAAY;AAAA,EACZ,aAAa;AACf,CAAC;;;ACRM,IAAM,oBAAoB,MAA+B;AAC9D,SAAO;AAAA,IACL,CAAC,eAAe,QAAQ,GAAG;AAAA,IAC3B,CAAC,eAAe,SAAS,GAAG;AAAA,IAC5B,CAAC,eAAe,cAAc,GAAG;AAAA,IACjC,CAAC,eAAe,mBAAmB,GAAG;AAAA,IACtC,CAAC,eAAe,UAAU,GAAG;AAAA,IAC7B,CAAC,eAAe,WAAW,GAAG;AAAA,EAChC;AACF;;;AFUO,IAAM,qBAAqB,cAAuC,kBAAkB,CAAC;;;AGrB5F;AAAA,EACE;AAAA,EAAa;AAAA,EAAS;AAAA,OACjB;;;ACHP,SAAS,iBAAiB,gBAAgB;AAGnC,IAAM,yBAAN,MAA6B;AAAA,EAC1B;AAAA,EACA;AAAA,EACR,YAAY,SAAS,eAAe,UAAoC;AACtE,SAAK,SAAS;AACd,SAAK,WAAW,YAAY,CAAC;AAAA,EAC/B;AAAA,EAEA,WAAW,MAAuB;AAChC,UAAM,cAAc,aAAa,QAAQ,GAAG,KAAK,MAAM,IAAI,IAAI,EAAE;AACjE,QAAI,CAAC,aAAa;AAChB,eAAS,OAAO,KAAK,SAAS,IAAI,MAAM,WAAW,MAAM,8BAA8B;AACvF,YAAM,eAAe,KAAK,SAAS,IAAI;AACvC,eAAS,iBAAiB,QAAW,MAAM,uBAAuB,IAAI,EAAE;AACxE,aAAO;AAAA,IACT;AACA,WAAO,gBAAgB;AAAA,EACzB;AAAA,EAEA,UAAU,MAAsB;AAC9B,UAAM,cAAc,aAAa,QAAQ,GAAG,KAAK,MAAM,IAAI,IAAI,EAAE;AACjE,QAAI,CAAC,aAAa;AAChB,eAAS,OAAO,KAAK,SAAS,IAAI,MAAM,UAAU,MAAM,+BAA+B;AACvF,YAAM,eAAe,KAAK,SAAS,IAAI;AACvC,eAAS,iBAAiB,QAAW,MAAM,uBAAuB,IAAI,EAAE;AACxE,aAAO;AAAA,IACT;AACA,WAAO,OAAO,WAAW,WAAW;AAAA,EACtC;AAAA,EAEA,UAAa,MAAiB;AAC5B,UAAM,cAAc,aAAa,QAAQ,GAAG,KAAK,MAAM,IAAI,IAAI,EAAE;AACjE,UAAM,oBAAoB,cAAc,KAAK,MAAM,WAAW,IAAI;AAClE,QAAI,CAAC,mBAAmB;AACtB,eAAS,OAAO,KAAK,SAAS,IAAI,MAAM,UAAU,MAAM,6BAA6B;AACrF,aAAO,SAAS,KAAK,SAAS,IAAI,GAAQ,MAAM,uBAAuB,IAAI,EAAE;AAAA,IAC/E;AACA,WAAO;AAAA,EACT;AAAA,EAEA,UAAU,MAAc;AACtB,UAAM,cAAc,aAAa,QAAQ,GAAG,KAAK,MAAM,IAAI,IAAI,EAAE;AACjE,QAAI,CAAC,aAAa;AAChB,sBAAgB,OAAO,KAAK,SAAS,IAAI,MAAM,UAAU,MAAM,6BAA6B;AAC5F,YAAM,eAAe,KAAK,SAAS,IAAI;AACvC,eAAS,iBAAiB,QAAW,MAAM,uBAAuB,IAAI,EAAE;AACxE,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EAEA,eAAe,MAAc;AAC3B,UAAM,cAAc,aAAa,QAAQ,GAAG,KAAK,MAAM,IAAI,IAAI,EAAE,GAAG,MAAM,GAAG;AAC7E,QAAI,CAAC,aAAa;AAChB,sBAAgB,MAAM,QAAQ,KAAK,SAAS,IAAI,CAAC,GAAG,MAAM,4BAA4B;AACtF,YAAM,eAAe,KAAK,SAAS,IAAI;AACvC,eAAS,iBAAiB,QAAW,MAAM,uBAAuB,IAAI,EAAE;AACxE,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EAEA,WAAW,MAAc,OAAgB;AACvC,iBAAa,QAAQ,GAAG,KAAK,MAAM,IAAI,IAAI,IAAI,KAAK,UAAU,KAAK,CAAC;AAAA,EACtE;AAAA,EAEA,UAAU,MAAc,OAAe;AACrC,iBAAa,QAAQ,GAAG,KAAK,MAAM,IAAI,IAAI,IAAI,KAAK,UAAU,KAAK,CAAC;AAAA,EACtE;AAAA,EAEA,UAAa,MAAc,OAAU;AACnC,iBAAa,QAAQ,GAAG,KAAK,MAAM,IAAI,IAAI,IAAI,KAAK,UAAU,KAAK,CAAC;AAAA,EACtE;AAAA,EAEA,UAAU,MAAc,OAAe;AACrC,iBAAa,QAAQ,GAAG,KAAK,MAAM,IAAI,IAAI,IAAI,KAAK;AAAA,EACtD;AAAA,EAEA,eAAe,MAAc,OAAiB;AAC5C,iBAAa,QAAQ,GAAG,KAAK,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,GAAG,CAAC;AAAA,EAChE;AACF;;;AC9EO,IAAM,qBAAN,cAAiC,uBAAuB;AAAA,EAC7D,YAAY,SAAS,eAAe,UAAoC;AACtE,UAAM,QAAQ,EAAE,GAAG,kBAAkB,GAAG,GAAG,SAAS,CAAC;AAAA,EACvD;AAAA,EAEA,IAAI,WAAW;AACb,WAAO,KAAK,WAAW,eAAe,QAAQ;AAAA,EAChD;AAAA,EAEA,IAAI,SAAS,OAAgB;AAC3B,SAAK,WAAW,eAAe,UAAU,KAAK;AAAA,EAChD;AAAA,EAEA,IAAI,gBAAgB;AAClB,WAAO,KAAK,WAAW,eAAe,SAAS;AAAA,EACjD;AAAA,EAEA,IAAI,cAAc,OAAgB;AAChC,SAAK,WAAW,eAAe,WAAW,KAAK;AAAA,EACjD;AAAA,EAEA,IAAI,cAAc;AAChB,WAAO,KAAK,UAAU,eAAe,WAAW;AAAA,EAClD;AAAA,EAEA,IAAI,YAAY,OAAe;AAC7B,SAAK,UAAU,eAAe,aAAa,KAAK;AAAA,EAClD;AAAA,EAEA,IAAI,sBAAsB;AACxB,WAAO,KAAK,WAAW,eAAe,mBAAmB;AAAA,EAC3D;AAAA,EAEA,IAAI,oBAAoB,OAAgB;AACtC,SAAK,WAAW,eAAe,qBAAqB,KAAK;AAAA,EAC3D;AAAA,EAEA,IAAI,iBAAiB;AACnB,WAAO,KAAK,UAAU,eAAe,cAAc;AAAA,EACrD;AAAA,EAEA,IAAI,eAAe,OAA6B;AAC9C,SAAK,UAAU,eAAe,gBAAgB,KAAK;AAAA,EACrD;AAAA,EAEA,IAAI,aAAa;AACf,WAAO,KAAK,UAAU,eAAe,UAAU;AAAA,EACjD;AAAA,EAEA,IAAI,WAAW,OAAe;AAC5B,SAAK,UAAU,eAAe,YAAY,KAAK;AAAA,EACjD;AACF;;;AFoCI;AA9EG,IAAM,sBAA6E,CAAC;AAAA,EACzF;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,cAAc,QAAQ,MAAM,WAAW,IAAI,mBAAmB,GAAG,CAAC,OAAO,CAAC;AAChF,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,YAAY,aAAa;AAC5E,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,YAAY,QAAQ;AAC7D,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,YAAY,cAAc;AAC/E,QAAM,CAAC,qBAAqB,sBAAsB,IAAI,SAAS,YAAY,mBAAmB;AAC9F,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,YAAY,UAAU;AACnE,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,YAAY,WAAW;AAGtE,QAAM,sBAAsB,YAAY,CAACA,WAAmB;AAC1D,gBAAY,gBAAgBA;AAC5B,qBAAiB,YAAY,aAAa;AAAA,EAC5C,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,iBAAiB,YAAY,CAACA,WAAmB;AACrD,gBAAY,WAAWA;AACvB,gBAAY,YAAY,QAAQ;AAAA,EAClC,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,uBAAuB,YAAY,CAACA,WAAgC;AACxE,gBAAY,iBAAiBA;AAC7B,sBAAkBA,MAAK;AAAA,EACzB,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,4BAA4B,YAAY,CAACA,WAAmB;AAChE,gBAAY,sBAAsBA;AAClC,2BAAuBA,MAAK;AAAA,EAC9B,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,mBAAmB,YAAY,CAACA,WAAkB;AACtD,gBAAY,aAAaA;AACzB,kBAAcA,MAAK;AAAA,EACrB,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,oBAAoB,YAAY,CAACA,WAAkB;AACvD,gBAAY,cAAcA;AAC1B,mBAAeA,MAAK;AAAA,EACtB,GAAG,CAAC,WAAW,CAAC;AAGhB,QAAM,eAAe,QAAQ,OAAO;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA,GAAG;AAAA,EACL,IAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACN,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;AGrGA,SAAS,WAAW;AAKb,IAAM,iBAAiB,MAAM;AAClC,SAAO,IAAI,kBAAkB;AAC/B;;;APWU,gBAAAC,YAAA;AAVH,IAAM,qBAAgD,CAAC,UAAU;AACtE,QAAM,EAAE,UAAU,eAAe,IAAI,eAAe;AAEpD,QAAM,uBAAuB,MAAM;AACjC,qBAAiB,CAAC,QAAQ;AAAA,EAC5B;AAEA,SACE,gBAAAA,KAAC,cAAW,SAAS,sBAAuB,GAAG,OAC5C,qBACG,gBAAAA,KAAC,uBAAoB,IACrB,gBAAAA,KAAC,wBAAqB,GAC5B;AAEJ;;;AQjBO,IAAM,YAAkD,CAAC,EAAE,WAAW,KAAK,MAAM;AACtF,QAAM,EAAE,cAAc,IAAI,eAAe;AAEzC,SAAO,gBAAgB,WAAW;AACpC;","names":["value","jsx"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-app-settings",
3
- "version": "7.5.8",
3
+ "version": "7.5.11",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -36,33 +36,58 @@
36
36
  },
37
37
  "./package.json": "./package.json"
38
38
  },
39
- "module": "dist/browser/index.mjs",
40
- "types": "dist/browser/index.d.ts",
41
39
  "files": [
42
40
  "dist",
43
- "src"
41
+ "README.md"
44
42
  ],
45
- "dependencies": {
46
- "@xylabs/sdk-js": "~5.0.90"
47
- },
48
43
  "devDependencies": {
49
- "@mui/icons-material": "~7.3.9",
50
- "@mui/material": "~7.3.9",
44
+ "@mui/icons-material": "^7.3.10",
45
+ "@mui/material": "^7.3.10",
46
+ "@opentelemetry/api": "^1.9.1",
47
+ "@opentelemetry/sdk-trace-base": "^2.7.0",
48
+ "@types/node": "~25.6.0",
51
49
  "@types/react": "^19.2.14",
52
- "@xylabs/ts-scripts-common": "~7.5.6",
53
- "@xylabs/ts-scripts-yarn3": "~7.5.6",
54
- "react": "^19.2.4",
55
- "react-dom": "^19.2.4",
56
- "typescript": "^5.9.3"
50
+ "@xylabs/sdk-js": "^5.0.100",
51
+ "@xylabs/toolchain": "~7.11.9",
52
+ "@xylabs/tsconfig": "^7.11.9",
53
+ "@xylabs/tsconfig-dom": "^7.11.9",
54
+ "@xylabs/tsconfig-react": "~7.11.9",
55
+ "async-mutex": "^0.5.0",
56
+ "axios": "^1.15.2",
57
+ "bn.js": "^5.2.3",
58
+ "buffer": "^6.0.3",
59
+ "chalk": "^5.6.2",
60
+ "esbuild": "~0.28.0",
61
+ "eslint": "^10.2.1",
62
+ "ethers": "^6.16.0",
63
+ "pako": "^2.1.0",
64
+ "react": "^19.2.5",
65
+ "react-dom": "^19.2.5",
66
+ "typescript": "^5.9.3",
67
+ "zod": "^4.3.6"
57
68
  },
58
69
  "peerDependencies": {
59
- "@mui/icons-material": ">=6 <8",
60
- "@mui/material": ">=6 <8",
61
- "react": "^19",
62
- "react-dom": "^19"
70
+ "@mui/icons-material": "^7.3.10",
71
+ "@mui/material": "^7.3.10",
72
+ "@opentelemetry/api": "^1.9.1",
73
+ "@opentelemetry/sdk-trace-base": "^2.7.0",
74
+ "@types/react": "^19.2.14",
75
+ "@xylabs/sdk-js": "^5.0.100",
76
+ "@xylabs/tsconfig": "^7.11.9",
77
+ "@xylabs/tsconfig-dom": "^7.11.9",
78
+ "async-mutex": "^0.5.0",
79
+ "axios": "^1.15.2",
80
+ "bn.js": "^5.2.3",
81
+ "buffer": "^6.0.3",
82
+ "chalk": "^5.6.2",
83
+ "ethers": "^6.16.0",
84
+ "pako": "^2.1.0",
85
+ "react": "^19.2.5",
86
+ "react-dom": "^19.2.5",
87
+ "zod": "^4.3.6"
63
88
  },
64
89
  "publishConfig": {
65
90
  "access": "public"
66
91
  },
67
92
  "docs": "dist/docs.json"
68
- }
93
+ }
@@ -1,2 +0,0 @@
1
- /** @deprecated import from @xylabs/react-app-settings instead */
2
- export type WebAppNavigationType = 'menu' | 'sidebar'
@@ -1,23 +0,0 @@
1
- import { DarkModeRounded as DarkModeRoundedIcon, LightModeRounded as LightModeRoundedIcon } from '@mui/icons-material'
2
- import type { IconButtonProps } from '@mui/material'
3
- import { IconButton } from '@mui/material'
4
- import React from 'react'
5
-
6
- import { useAppSettings } from '../contexts/index.ts'
7
-
8
- /** @deprecated import from @xylabs/react-app-settings instead */
9
- export const DarkModeIconButton: React.FC<IconButtonProps> = (props) => {
10
- const { darkMode, enableDarkMode } = useAppSettings()
11
-
12
- const handleDarkModeChange = () => {
13
- enableDarkMode?.(!darkMode)
14
- }
15
-
16
- return (
17
- <IconButton onClick={handleDarkModeChange} {...props}>
18
- {darkMode
19
- ? <DarkModeRoundedIcon />
20
- : <LightModeRoundedIcon />}
21
- </IconButton>
22
- )
23
- }
@@ -1,10 +0,0 @@
1
- import type { ReactElement } from 'react'
2
-
3
- import { useAppSettings } from '../contexts/index.ts'
4
-
5
- /** @deprecated import from @xylabs/react-app-settings instead */
6
- export const Developer: React.FC<{ children: ReactElement }> = ({ children = null }) => {
7
- const { developerMode } = useAppSettings()
8
-
9
- return developerMode ? children : null
10
- }
@@ -1,2 +0,0 @@
1
- export * from './DarkModeIconButton.tsx'
2
- export * from './Developer.tsx'
@@ -1,23 +0,0 @@
1
- import { createContext } from 'react'
2
-
3
- import type { WebAppNavigationType } from '../../WebAppNavigationType.ts'
4
- import { appSettingDefault } from './appSettingDefault.ts'
5
-
6
- /** @deprecated import from @xylabs/react-app-settings instead */
7
- export interface AppSettingsContextProps {
8
- changeMaxAccounts?: (value: number) => void
9
- changeNavigationCollapsed?: (value: boolean) => void
10
- changeNavigationType?: (value: WebAppNavigationType) => void
11
- changeSeedPhrase?: (value: string) => void
12
- darkMode?: boolean
13
- developerMode?: boolean
14
- enableDarkMode?: (value: boolean) => void
15
- enableDeveloperMode?: (value: boolean) => void
16
- maxAccounts?: number
17
- navigationCollapsed?: boolean
18
- navigationType?: WebAppNavigationType
19
- seedPhrase?: string
20
- }
21
-
22
- /** @deprecated import from @xylabs/react-app-settings instead */
23
- export const AppSettingsContext = createContext<AppSettingsContextProps>(appSettingDefault())
@@ -1,82 +0,0 @@
1
- import type { PropsWithChildren, ProviderProps } from 'react'
2
- import React, { useMemo, useState } from 'react'
3
-
4
- import type { WebAppNavigationType } from '../../WebAppNavigationType.ts'
5
- import type { AppSettingsContextProps } from './Context.ts'
6
- import { AppSettingsContext } from './Context.ts'
7
- import { AppSettingsStorage } from './Storage.ts'
8
-
9
- /** @deprecated import from @xylabs/react-app-settings instead */
10
- export interface AppSettingsProviderProps<T extends AppSettingsContextProps = AppSettingsContextProps> extends ProviderProps<T> {
11
- storage?: AppSettingsStorage
12
- }
13
-
14
- /** @deprecated import from @xylabs/react-app-settings instead */
15
- export const AppSettingsProvider: React.FC<PropsWithChildren<AppSettingsProviderProps>> = ({
16
- storage,
17
- value,
18
- children,
19
- ...props
20
- }) => {
21
- const storageMemo = useMemo(() => storage ?? new AppSettingsStorage(), [storage])
22
- const [developerMode, setDeveloperMode] = useState(storageMemo.developerMode)
23
- const [darkMode, setDarkMode] = useState(storageMemo.darkMode)
24
- const [navigationType, setNavigationType] = useState(storageMemo.navigationType)
25
- const [navigationCollapsed, setNavigationCollapsed] = useState(storageMemo.navigationCollapsed)
26
- const [seedPhrase, setSeedPhrase] = useState(storageMemo.seedPhrase)
27
- const [maxAccounts, setMaxAccounts] = useState(storageMemo.maxAccounts)
28
-
29
- const enableDeveloperMode = (value: boolean) => {
30
- storageMemo.developerMode = value
31
- setDeveloperMode(storageMemo.developerMode)
32
- }
33
-
34
- const enableDarkMode = (value: boolean) => {
35
- storageMemo.darkMode = value
36
- setDarkMode(storageMemo.darkMode)
37
- }
38
-
39
- const changeNavigationType = (value: WebAppNavigationType) => {
40
- storageMemo.navigationType = value
41
- setNavigationType(value)
42
- }
43
-
44
- const changeNavigationCollapsed = (value: boolean) => {
45
- storageMemo.navigationCollapsed = value
46
- setNavigationCollapsed(value)
47
- }
48
-
49
- const changeSeedPhrase = (value: string) => {
50
- storageMemo.seedPhrase = value
51
- setSeedPhrase(value)
52
- }
53
-
54
- const changeMaxAccounts = (value: number) => {
55
- storageMemo.maxAccounts = value
56
- setMaxAccounts(value)
57
- }
58
-
59
- return (
60
- <AppSettingsContext
61
- value={{
62
- changeMaxAccounts,
63
- changeNavigationCollapsed,
64
- changeNavigationType,
65
- changeSeedPhrase,
66
- darkMode,
67
- developerMode,
68
- enableDarkMode,
69
- enableDeveloperMode,
70
- maxAccounts,
71
- navigationCollapsed,
72
- navigationType,
73
- seedPhrase,
74
-
75
- ...value,
76
- }}
77
- {...props}
78
- >
79
- {children}
80
- </AppSettingsContext>
81
- )
82
- }
@@ -1,14 +0,0 @@
1
- import type { EnumValue } from '@xylabs/sdk-js'
2
- import { Enum } from '@xylabs/sdk-js'
3
-
4
- /** @deprecated import from @xylabs/react-app-settings instead */
5
- export const AppSettingSlug = Enum({
6
- DarkMode: 'darkmode',
7
- Developer: 'developer',
8
- NavigationType: 'navigationType',
9
- NavigationCollapsed: 'navigationCollapsed',
10
- SeedPhrase: 'seedPhrase',
11
- MaxAccounts: 'maxAccounts',
12
- })
13
-
14
- export type AppSettingSlug = EnumValue<typeof AppSettingSlug>
@@ -1,59 +0,0 @@
1
- import type { WebAppNavigationType } from '../../WebAppNavigationType.ts'
2
- import { appSettingDefault } from './appSettingDefault.ts'
3
- import { AppSettingSlug } from './Slug.ts'
4
- import { AppSettingsStorageBase } from './StorageBase.ts'
5
-
6
- /** @deprecated import from @xylabs/react-app-settings instead */
7
- export class AppSettingsStorage extends AppSettingsStorageBase {
8
- constructor(prefix = 'AppSettings', defaults?: Record<string, unknown>) {
9
- super(prefix, { ...appSettingDefault(), ...defaults })
10
- }
11
-
12
- get darkMode() {
13
- return this.getBoolean(AppSettingSlug.DarkMode)
14
- }
15
-
16
- set darkMode(value: boolean) {
17
- this.setBoolean(AppSettingSlug.DarkMode, value)
18
- }
19
-
20
- get developerMode() {
21
- return this.getBoolean(AppSettingSlug.Developer)
22
- }
23
-
24
- set developerMode(value: boolean) {
25
- this.setBoolean(AppSettingSlug.Developer, value)
26
- }
27
-
28
- get maxAccounts() {
29
- return this.getNumber(AppSettingSlug.MaxAccounts)
30
- }
31
-
32
- set maxAccounts(value: number) {
33
- this.setNumber(AppSettingSlug.MaxAccounts, value)
34
- }
35
-
36
- get navigationCollapsed() {
37
- return this.getBoolean(AppSettingSlug.NavigationCollapsed)
38
- }
39
-
40
- set navigationCollapsed(value: boolean) {
41
- this.setBoolean(AppSettingSlug.NavigationCollapsed, value)
42
- }
43
-
44
- get navigationType() {
45
- return this.getString(AppSettingSlug.NavigationType) as WebAppNavigationType
46
- }
47
-
48
- set navigationType(value: WebAppNavigationType) {
49
- this.setString(AppSettingSlug.NavigationType, value)
50
- }
51
-
52
- get seedPhrase() {
53
- return this.getString(AppSettingSlug.SeedPhrase)
54
- }
55
-
56
- set seedPhrase(value: string) {
57
- this.setString(AppSettingSlug.SeedPhrase, value)
58
- }
59
- }
@@ -1,85 +0,0 @@
1
- import { assertDefinedEx, assertEx } from '@xylabs/sdk-js'
2
-
3
- /** @deprecated import from @xylabs/react-app-settings instead */
4
- export class AppSettingsStorageBase {
5
- private defaults: Record<string, unknown>
6
- private prefix: string
7
- constructor(prefix = 'AppSettings', defaults?: Record<string, unknown>) {
8
- this.prefix = prefix
9
- this.defaults = defaults ?? {}
10
- }
11
-
12
- getBoolean(name: string): boolean {
13
- const storedValue = localStorage.getItem(`${this.prefix}|${name}`)
14
- if (!storedValue) {
15
- assertEx(typeof this.defaults[name] === 'boolean', () => 'Default value is not boolean')
16
- const defaultValue = this.defaults[name] as boolean
17
- assertEx(defaultValue !== undefined, () => `Missing Default for ${name}`)
18
- return defaultValue
19
- }
20
- return storedValue !== 'false'
21
- }
22
-
23
- getNumber(name: string): number {
24
- const storedValue = localStorage.getItem(`${this.prefix}|${name}`)
25
- if (!storedValue) {
26
- assertEx(typeof this.defaults[name] === 'number', () => 'Default value is not a number')
27
- const defaultValue = this.defaults[name] as number
28
- assertEx(defaultValue !== undefined, () => `Missing Default for ${name}`)
29
- return defaultValue
30
- }
31
- return Number.parseFloat(storedValue)
32
- }
33
-
34
- getObject<T>(name: string): T {
35
- const storedValue = localStorage.getItem(`${this.prefix}|${name}`)
36
- const parsedStoredValue = storedValue ? JSON.parse(storedValue) : null
37
- if (!parsedStoredValue) {
38
- assertEx(typeof this.defaults[name] === 'object', () => 'Default value is not object')
39
- return assertEx(this.defaults[name] as T, () => `Missing Default for ${name}`)
40
- }
41
- return parsedStoredValue as T
42
- }
43
-
44
- getString(name: string) {
45
- const storedValue = localStorage.getItem(`${this.prefix}|${name}`)
46
- if (!storedValue) {
47
- assertDefinedEx(typeof this.defaults[name] === 'string', () => 'Default value is not string')
48
- const defaultValue = this.defaults[name] as string
49
- assertEx(defaultValue !== undefined, () => `Missing Default for ${name}`)
50
- return defaultValue
51
- }
52
- return storedValue
53
- }
54
-
55
- getStringArray(name: string) {
56
- const storedValue = localStorage.getItem(`${this.prefix}|${name}`)?.split(',')
57
- if (!storedValue) {
58
- assertDefinedEx(Array.isArray(this.defaults[name]), () => 'Default value is not array')
59
- const defaultValue = this.defaults[name] as string[]
60
- assertEx(defaultValue !== undefined, () => `Missing Default for ${name}`)
61
- return defaultValue
62
- }
63
- return storedValue
64
- }
65
-
66
- setBoolean(name: string, value: boolean) {
67
- localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))
68
- }
69
-
70
- setNumber(name: string, value: number) {
71
- localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))
72
- }
73
-
74
- setObject<T>(name: string, value: T) {
75
- localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))
76
- }
77
-
78
- setString(name: string, value: string) {
79
- localStorage.setItem(`${this.prefix}|${name}`, value)
80
- }
81
-
82
- setStringArray(name: string, value: string[]) {
83
- localStorage.setItem(`${this.prefix}|${name}`, value.join(','))
84
- }
85
- }
@@ -1,13 +0,0 @@
1
- import { AppSettingSlug } from './Slug.ts'
2
-
3
- /** @deprecated import from @xylabs/react-app-settings instead */
4
- export const appSettingDefault = (): Record<string, unknown> => {
5
- return {
6
- [AppSettingSlug.DarkMode]: false,
7
- [AppSettingSlug.Developer]: false,
8
- [AppSettingSlug.NavigationType]: 'menu',
9
- [AppSettingSlug.NavigationCollapsed]: false,
10
- [AppSettingSlug.SeedPhrase]: '',
11
- [AppSettingSlug.MaxAccounts]: 1,
12
- }
13
- }
@@ -1,6 +0,0 @@
1
- export * from './Context.ts'
2
- export * from './Provider.tsx'
3
- export * from './Slug.ts'
4
- export * from './Storage.ts'
5
- export * from './StorageBase.ts'
6
- export * from './useAppSettings.ts'
@@ -1,8 +0,0 @@
1
- import { use } from 'react'
2
-
3
- import { AppSettingsContext } from './Context.ts'
4
-
5
- /** @deprecated import from @xylabs/react-app-settings instead */
6
- export const useAppSettings = () => {
7
- return use(AppSettingsContext)
8
- }
@@ -1 +0,0 @@
1
- export * from './AppSettings/index.ts'
package/src/index.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './components/index.ts'
2
- export * from './contexts/index.ts'
3
- export * from './WebAppNavigationType.ts'