@xyo-network/react-app-settings 2.75.7 → 2.76.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. package/dist/neutral/WebAppNavigationType.d.cts +2 -0
  2. package/dist/neutral/WebAppNavigationType.d.cts.map +1 -0
  3. package/dist/neutral/WebAppNavigationType.d.mts +2 -0
  4. package/dist/neutral/WebAppNavigationType.d.mts.map +1 -0
  5. package/dist/neutral/WebAppNavigationType.d.ts +2 -0
  6. package/dist/neutral/WebAppNavigationType.d.ts.map +1 -0
  7. package/dist/neutral/components/DarkModeIconButton.d.cts +4 -0
  8. package/dist/neutral/components/DarkModeIconButton.d.cts.map +1 -0
  9. package/dist/neutral/components/DarkModeIconButton.d.mts +4 -0
  10. package/dist/neutral/components/DarkModeIconButton.d.mts.map +1 -0
  11. package/dist/neutral/components/DarkModeIconButton.d.ts +4 -0
  12. package/dist/neutral/components/DarkModeIconButton.d.ts.map +1 -0
  13. package/dist/neutral/components/Developer.d.cts +5 -0
  14. package/dist/neutral/components/Developer.d.cts.map +1 -0
  15. package/dist/neutral/components/Developer.d.mts +5 -0
  16. package/dist/neutral/components/Developer.d.mts.map +1 -0
  17. package/dist/neutral/components/Developer.d.ts +5 -0
  18. package/dist/neutral/components/Developer.d.ts.map +1 -0
  19. package/dist/neutral/components/index.d.cts +3 -0
  20. package/dist/neutral/components/index.d.cts.map +1 -0
  21. package/dist/neutral/components/index.d.mts +3 -0
  22. package/dist/neutral/components/index.d.mts.map +1 -0
  23. package/dist/neutral/components/index.d.ts +3 -0
  24. package/dist/neutral/components/index.d.ts.map +1 -0
  25. package/dist/neutral/contexts/AppSettings/Context.d.cts +18 -0
  26. package/dist/neutral/contexts/AppSettings/Context.d.cts.map +1 -0
  27. package/dist/neutral/contexts/AppSettings/Context.d.mts +18 -0
  28. package/dist/neutral/contexts/AppSettings/Context.d.mts.map +1 -0
  29. package/dist/neutral/contexts/AppSettings/Context.d.ts +18 -0
  30. package/dist/neutral/contexts/AppSettings/Context.d.ts.map +1 -0
  31. package/dist/neutral/contexts/AppSettings/Provider.d.cts +9 -0
  32. package/dist/neutral/contexts/AppSettings/Provider.d.cts.map +1 -0
  33. package/dist/neutral/contexts/AppSettings/Provider.d.mts +9 -0
  34. package/dist/neutral/contexts/AppSettings/Provider.d.mts.map +1 -0
  35. package/dist/neutral/contexts/AppSettings/Provider.d.ts +9 -0
  36. package/dist/neutral/contexts/AppSettings/Provider.d.ts.map +1 -0
  37. package/dist/neutral/contexts/AppSettings/Slug.d.cts +9 -0
  38. package/dist/neutral/contexts/AppSettings/Slug.d.cts.map +1 -0
  39. package/dist/neutral/contexts/AppSettings/Slug.d.mts +9 -0
  40. package/dist/neutral/contexts/AppSettings/Slug.d.mts.map +1 -0
  41. package/dist/neutral/contexts/AppSettings/Slug.d.ts +9 -0
  42. package/dist/neutral/contexts/AppSettings/Slug.d.ts.map +1 -0
  43. package/dist/neutral/contexts/AppSettings/Storage.d.cts +18 -0
  44. package/dist/neutral/contexts/AppSettings/Storage.d.cts.map +1 -0
  45. package/dist/neutral/contexts/AppSettings/Storage.d.mts +18 -0
  46. package/dist/neutral/contexts/AppSettings/Storage.d.mts.map +1 -0
  47. package/dist/neutral/contexts/AppSettings/Storage.d.ts +18 -0
  48. package/dist/neutral/contexts/AppSettings/Storage.d.ts.map +1 -0
  49. package/dist/neutral/contexts/AppSettings/StorageBase.d.cts +16 -0
  50. package/dist/neutral/contexts/AppSettings/StorageBase.d.cts.map +1 -0
  51. package/dist/neutral/contexts/AppSettings/StorageBase.d.mts +16 -0
  52. package/dist/neutral/contexts/AppSettings/StorageBase.d.mts.map +1 -0
  53. package/dist/neutral/contexts/AppSettings/StorageBase.d.ts +16 -0
  54. package/dist/neutral/contexts/AppSettings/StorageBase.d.ts.map +1 -0
  55. package/dist/neutral/contexts/AppSettings/appSettingDefault.d.cts +2 -0
  56. package/dist/neutral/contexts/AppSettings/appSettingDefault.d.cts.map +1 -0
  57. package/dist/neutral/contexts/AppSettings/appSettingDefault.d.mts +2 -0
  58. package/dist/neutral/contexts/AppSettings/appSettingDefault.d.mts.map +1 -0
  59. package/dist/neutral/contexts/AppSettings/appSettingDefault.d.ts +2 -0
  60. package/dist/neutral/contexts/AppSettings/appSettingDefault.d.ts.map +1 -0
  61. package/dist/neutral/contexts/AppSettings/index.d.cts +7 -0
  62. package/dist/neutral/contexts/AppSettings/index.d.cts.map +1 -0
  63. package/dist/neutral/contexts/AppSettings/index.d.mts +7 -0
  64. package/dist/neutral/contexts/AppSettings/index.d.mts.map +1 -0
  65. package/dist/neutral/contexts/AppSettings/index.d.ts +7 -0
  66. package/dist/neutral/contexts/AppSettings/index.d.ts.map +1 -0
  67. package/dist/neutral/contexts/AppSettings/useAppSettings.d.cts +2 -0
  68. package/dist/neutral/contexts/AppSettings/useAppSettings.d.cts.map +1 -0
  69. package/dist/neutral/contexts/AppSettings/useAppSettings.d.mts +2 -0
  70. package/dist/neutral/contexts/AppSettings/useAppSettings.d.mts.map +1 -0
  71. package/dist/neutral/contexts/AppSettings/useAppSettings.d.ts +2 -0
  72. package/dist/neutral/contexts/AppSettings/useAppSettings.d.ts.map +1 -0
  73. package/dist/neutral/contexts/index.d.cts +2 -0
  74. package/dist/neutral/contexts/index.d.cts.map +1 -0
  75. package/dist/neutral/contexts/index.d.mts +2 -0
  76. package/dist/neutral/contexts/index.d.mts.map +1 -0
  77. package/dist/neutral/contexts/index.d.ts +2 -0
  78. package/dist/neutral/contexts/index.d.ts.map +1 -0
  79. package/dist/neutral/index.cjs +272 -0
  80. package/dist/neutral/index.cjs.map +1 -0
  81. package/dist/neutral/index.d.cts +4 -0
  82. package/dist/neutral/index.d.cts.map +1 -0
  83. package/dist/neutral/index.d.mts +4 -0
  84. package/dist/neutral/index.d.mts.map +1 -0
  85. package/dist/neutral/index.d.ts +4 -0
  86. package/dist/neutral/index.d.ts.map +1 -0
  87. package/dist/neutral/index.js +249 -0
  88. package/dist/neutral/index.js.map +1 -0
  89. package/package.json +4 -4
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
+ AppSettingSlug: () => AppSettingSlug,
24
+ AppSettingsContext: () => AppSettingsContext,
25
+ AppSettingsProvider: () => AppSettingsProvider,
26
+ AppSettingsStorage: () => AppSettingsStorage,
27
+ AppSettingsStorageBase: () => AppSettingsStorageBase,
28
+ DarkModeIconButton: () => DarkModeIconButton,
29
+ Developer: () => Developer,
30
+ useAppSettings: () => useAppSettings
31
+ });
32
+ module.exports = __toCommonJS(src_exports);
33
+
34
+ // src/components/DarkModeIconButton.tsx
35
+ var import_icons_material = require("@mui/icons-material");
36
+ var import_material = require("@mui/material");
37
+
38
+ // src/contexts/AppSettings/Context.ts
39
+ var import_react = require("react");
40
+
41
+ // src/contexts/AppSettings/Slug.ts
42
+ var AppSettingSlug = /* @__PURE__ */ ((AppSettingSlug2) => {
43
+ AppSettingSlug2["DarkMode"] = "darkmode";
44
+ AppSettingSlug2["Developer"] = "developer";
45
+ AppSettingSlug2["NavigationType"] = "navigationType";
46
+ AppSettingSlug2["NavigationCollapsed"] = "navigationCollapsed";
47
+ AppSettingSlug2["SeedPhrase"] = "seedPhrase";
48
+ AppSettingSlug2["MaxAccounts"] = "maxAccounts";
49
+ return AppSettingSlug2;
50
+ })(AppSettingSlug || {});
51
+
52
+ // src/contexts/AppSettings/appSettingDefault.ts
53
+ var appSettingDefault = () => {
54
+ return {
55
+ ["darkmode" /* DarkMode */]: false,
56
+ ["developer" /* Developer */]: false,
57
+ ["navigationType" /* NavigationType */]: "menu",
58
+ ["navigationCollapsed" /* NavigationCollapsed */]: false,
59
+ ["seedPhrase" /* SeedPhrase */]: "",
60
+ ["maxAccounts" /* MaxAccounts */]: 1
61
+ };
62
+ };
63
+
64
+ // src/contexts/AppSettings/Context.ts
65
+ var AppSettingsContext = (0, import_react.createContext)(appSettingDefault());
66
+
67
+ // src/contexts/AppSettings/Provider.tsx
68
+ var import_react2 = require("react");
69
+
70
+ // src/contexts/AppSettings/StorageBase.ts
71
+ var import_assert = require("@xylabs/assert");
72
+ var import_react_shared = require("@xyo-network/react-shared");
73
+ var AppSettingsStorageBase = class {
74
+ defaults;
75
+ prefix;
76
+ constructor(prefix = "AppSettings", defaults) {
77
+ this.prefix = prefix;
78
+ this.defaults = defaults ?? {};
79
+ }
80
+ getBoolean(name) {
81
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
82
+ if (!storedValue) {
83
+ (0, import_assert.assertEx)(typeof this.defaults[name] === "boolean", () => "Default value is not boolean");
84
+ const defaultValue = this.defaults[name];
85
+ (0, import_assert.assertEx)(defaultValue !== void 0, () => `Missing Default for ${name}`);
86
+ return defaultValue;
87
+ }
88
+ return storedValue !== "false";
89
+ }
90
+ getNumber(name) {
91
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
92
+ if (!storedValue) {
93
+ (0, import_assert.assertEx)(typeof this.defaults[name] === "number", () => "Default value is not a number");
94
+ const defaultValue = this.defaults[name];
95
+ (0, import_assert.assertEx)(defaultValue !== void 0, () => `Missing Default for ${name}`);
96
+ return defaultValue;
97
+ }
98
+ return Number.parseFloat(storedValue);
99
+ }
100
+ getObject(name) {
101
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
102
+ const parsedStoredValue = storedValue ? JSON.parse(storedValue) : null;
103
+ if (!parsedStoredValue) {
104
+ (0, import_assert.assertEx)(typeof this.defaults[name] === "object", () => "Default value is not object");
105
+ return (0, import_assert.assertEx)(this.defaults[name], () => `Missing Default for ${name}`);
106
+ }
107
+ return parsedStoredValue;
108
+ }
109
+ getString(name) {
110
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
111
+ if (!storedValue) {
112
+ (0, import_react_shared.assertDefinedEx)(typeof this.defaults[name] === "string", "Default value is not string");
113
+ const defaultValue = this.defaults[name];
114
+ (0, import_assert.assertEx)(defaultValue !== void 0, () => `Missing Default for ${name}`);
115
+ return defaultValue;
116
+ }
117
+ return storedValue;
118
+ }
119
+ getStringArray(name) {
120
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`)?.split(",");
121
+ if (!storedValue) {
122
+ (0, import_react_shared.assertDefinedEx)(Array.isArray(this.defaults[name]), "Default value is not array");
123
+ const defaultValue = this.defaults[name];
124
+ (0, import_assert.assertEx)(defaultValue !== void 0, () => `Missing Default for ${name}`);
125
+ return defaultValue;
126
+ }
127
+ return storedValue;
128
+ }
129
+ setBoolean(name, value) {
130
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
131
+ }
132
+ setNumber(name, value) {
133
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
134
+ }
135
+ setObject(name, value) {
136
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
137
+ }
138
+ setString(name, value) {
139
+ localStorage.setItem(`${this.prefix}|${name}`, value);
140
+ }
141
+ setStringArray(name, value) {
142
+ localStorage.setItem(`${this.prefix}|${name}`, value.join(","));
143
+ }
144
+ };
145
+
146
+ // src/contexts/AppSettings/Storage.ts
147
+ var AppSettingsStorage = class extends AppSettingsStorageBase {
148
+ constructor(prefix = "AppSettings", defaults) {
149
+ super(prefix, { ...appSettingDefault(), ...defaults });
150
+ }
151
+ get darkMode() {
152
+ return this.getBoolean("darkmode" /* DarkMode */);
153
+ }
154
+ set darkMode(value) {
155
+ this.setBoolean("darkmode" /* DarkMode */, value);
156
+ }
157
+ get developerMode() {
158
+ return this.getBoolean("developer" /* Developer */);
159
+ }
160
+ set developerMode(value) {
161
+ this.setBoolean("developer" /* Developer */, value);
162
+ }
163
+ get maxAccounts() {
164
+ return this.getNumber("maxAccounts" /* MaxAccounts */);
165
+ }
166
+ set maxAccounts(value) {
167
+ this.setNumber("maxAccounts" /* MaxAccounts */, value);
168
+ }
169
+ get navigationCollapsed() {
170
+ return this.getBoolean("navigationCollapsed" /* NavigationCollapsed */);
171
+ }
172
+ set navigationCollapsed(value) {
173
+ this.setBoolean("navigationCollapsed" /* NavigationCollapsed */, value);
174
+ }
175
+ get navigationType() {
176
+ return this.getString("navigationType" /* NavigationType */);
177
+ }
178
+ set navigationType(value) {
179
+ this.setString("navigationType" /* NavigationType */, value);
180
+ }
181
+ get seedPhrase() {
182
+ return this.getString("seedPhrase" /* SeedPhrase */);
183
+ }
184
+ set seedPhrase(value) {
185
+ this.setString("seedPhrase" /* SeedPhrase */, value);
186
+ }
187
+ };
188
+
189
+ // src/contexts/AppSettings/Provider.tsx
190
+ var import_jsx_runtime = require("react/jsx-runtime");
191
+ var AppSettingsProvider = ({
192
+ storage = new AppSettingsStorage(),
193
+ value,
194
+ children,
195
+ ...props
196
+ }) => {
197
+ const [developerMode, setDeveloperMode] = (0, import_react2.useState)(storage.developerMode);
198
+ const [darkMode, setDarkMode] = (0, import_react2.useState)(storage.darkMode);
199
+ const [navigationType, setNavigationType] = (0, import_react2.useState)(storage.navigationType);
200
+ const [navigationCollapsed, setNavigationCollapsed] = (0, import_react2.useState)(storage.navigationCollapsed);
201
+ const [seedPhrase, setSeedPhrase] = (0, import_react2.useState)(storage.seedPhrase);
202
+ const [maxAccounts, setMaxAccounts] = (0, import_react2.useState)(storage.maxAccounts);
203
+ const enableDeveloperMode = (value2) => {
204
+ storage.developerMode = value2;
205
+ setDeveloperMode(storage.developerMode);
206
+ };
207
+ const enableDarkMode = (value2) => {
208
+ storage.darkMode = value2;
209
+ setDarkMode(storage.darkMode);
210
+ };
211
+ const changeNavigationType = (value2) => {
212
+ storage.navigationType = value2;
213
+ setNavigationType(value2);
214
+ };
215
+ const changeNavigationCollapsed = (value2) => {
216
+ storage.navigationCollapsed = value2;
217
+ setNavigationCollapsed(value2);
218
+ };
219
+ const changeSeedPhrase = (value2) => {
220
+ storage.seedPhrase = value2;
221
+ setSeedPhrase(value2);
222
+ };
223
+ const changeMaxAccounts = (value2) => {
224
+ storage.maxAccounts = value2;
225
+ setMaxAccounts(value2);
226
+ };
227
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
228
+ AppSettingsContext.Provider,
229
+ {
230
+ value: {
231
+ changeMaxAccounts,
232
+ changeNavigationCollapsed,
233
+ changeNavigationType,
234
+ changeSeedPhrase,
235
+ darkMode,
236
+ developerMode,
237
+ enableDarkMode,
238
+ enableDeveloperMode,
239
+ maxAccounts,
240
+ navigationCollapsed,
241
+ navigationType,
242
+ seedPhrase,
243
+ ...value
244
+ },
245
+ ...props,
246
+ children
247
+ }
248
+ );
249
+ };
250
+
251
+ // src/contexts/AppSettings/useAppSettings.ts
252
+ var import_react3 = require("react");
253
+ var useAppSettings = () => {
254
+ return (0, import_react3.useContext)(AppSettingsContext);
255
+ };
256
+
257
+ // src/components/DarkModeIconButton.tsx
258
+ var import_jsx_runtime2 = require("react/jsx-runtime");
259
+ var DarkModeIconButton = (props) => {
260
+ const { darkMode, enableDarkMode } = useAppSettings();
261
+ const handleDarkModeChange = () => {
262
+ enableDarkMode?.(!darkMode);
263
+ };
264
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material.IconButton, { onClick: handleDarkModeChange, ...props, children: darkMode ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_icons_material.DarkModeRounded, {}) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_icons_material.LightModeRounded, {}) });
265
+ };
266
+
267
+ // src/components/Developer.tsx
268
+ var Developer = ({ children = null }) => {
269
+ const { developerMode } = useAppSettings();
270
+ return developerMode ? children : null;
271
+ };
272
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/index.ts","../../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":["export * from './components'\nexport * from './contexts'\nexport * from './WebAppNavigationType'\n","import { DarkModeRounded as DarkModeRoundedIcon, LightModeRounded as LightModeRoundedIcon } from '@mui/icons-material'\nimport { IconButton, IconButtonProps } from '@mui/material'\n\nimport { useAppSettings } from '../contexts'\n\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 { WebAppNavigationType } from '../../WebAppNavigationType'\nimport { appSettingDefault } from './appSettingDefault'\n\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\nexport const AppSettingsContext = createContext<AppSettingsContextProps>(appSettingDefault())\n","export enum AppSettingSlug {\n DarkMode = 'darkmode',\n Developer = 'developer',\n NavigationType = 'navigationType',\n NavigationCollapsed = 'navigationCollapsed',\n SeedPhrase = 'seedPhrase',\n MaxAccounts = 'maxAccounts',\n}\n","import { AppSettingSlug } from './Slug'\n\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 { WithChildren } from '@xylabs/react-shared'\nimport { ProviderProps, useState } from 'react'\n\nimport { WebAppNavigationType } from '../../WebAppNavigationType'\nimport { AppSettingsContext, AppSettingsContextProps } from './Context'\nimport { AppSettingsStorage } from './Storage'\n\nexport interface AppSettingsProviderProps<T extends AppSettingsContextProps = AppSettingsContextProps> extends ProviderProps<T> {\n storage?: AppSettingsStorage\n}\n\nexport const AppSettingsProvider: React.FC<WithChildren<AppSettingsProviderProps>> = ({\n storage = new AppSettingsStorage(),\n value,\n children,\n ...props\n}) => {\n const [developerMode, setDeveloperMode] = useState(storage.developerMode)\n const [darkMode, setDarkMode] = useState(storage.darkMode)\n const [navigationType, setNavigationType] = useState(storage.navigationType)\n const [navigationCollapsed, setNavigationCollapsed] = useState(storage.navigationCollapsed)\n const [seedPhrase, setSeedPhrase] = useState(storage.seedPhrase)\n const [maxAccounts, setMaxAccounts] = useState(storage.maxAccounts)\n\n const enableDeveloperMode = (value: boolean) => {\n storage.developerMode = value\n setDeveloperMode(storage.developerMode)\n }\n\n const enableDarkMode = (value: boolean) => {\n storage.darkMode = value\n setDarkMode(storage.darkMode)\n }\n\n const changeNavigationType = (value: WebAppNavigationType) => {\n storage.navigationType = value\n setNavigationType(value)\n }\n\n const changeNavigationCollapsed = (value: boolean) => {\n storage.navigationCollapsed = value\n setNavigationCollapsed(value)\n }\n\n const changeSeedPhrase = (value: string) => {\n storage.seedPhrase = value\n setSeedPhrase(value)\n }\n\n const changeMaxAccounts = (value: number) => {\n storage.maxAccounts = value\n setMaxAccounts(value)\n }\n\n return (\n <AppSettingsContext.Provider\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.Provider>\n )\n}\n","import { assertEx } from '@xylabs/assert'\nimport { assertDefinedEx } from '@xyo-network/react-shared'\n\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 { WebAppNavigationType } from '../../WebAppNavigationType'\nimport { appSettingDefault } from './appSettingDefault'\nimport { AppSettingSlug } from './Slug'\nimport { AppSettingsStorageBase } from './StorageBase'\n\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 { useContext } from 'react'\n\nimport { AppSettingsContext } from './Context'\n\nexport const useAppSettings = () => {\n return useContext(AppSettingsContext)\n}\n","import { ReactElement } from 'react'\n\nimport { useAppSettings } from '../contexts'\n\nexport const Developer: React.FC<{ children: ReactElement }> = ({ children = null }) => {\n const { developerMode } = useAppSettings()\n\n return developerMode ? children : null\n}\n"],"mappings":"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","names":["AppSettingSlug","import_react","value","import_react","import_jsx_runtime","DarkModeRoundedIcon","LightModeRoundedIcon"]}
@@ -0,0 +1,4 @@
1
+ export * from './components';
2
+ export * from './contexts';
3
+ export * from './WebAppNavigationType';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './components';
2
+ export * from './contexts';
3
+ export * from './WebAppNavigationType';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './components';
2
+ export * from './contexts';
3
+ export * from './WebAppNavigationType';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,249 @@
1
+ // src/components/DarkModeIconButton.tsx
2
+ import { DarkModeRounded as DarkModeRoundedIcon, LightModeRounded as LightModeRoundedIcon } from "@mui/icons-material";
3
+ import { IconButton } from "@mui/material";
4
+
5
+ // src/contexts/AppSettings/Context.ts
6
+ import { createContext } from "react";
7
+
8
+ // src/contexts/AppSettings/Slug.ts
9
+ var AppSettingSlug = /* @__PURE__ */ ((AppSettingSlug2) => {
10
+ AppSettingSlug2["DarkMode"] = "darkmode";
11
+ AppSettingSlug2["Developer"] = "developer";
12
+ AppSettingSlug2["NavigationType"] = "navigationType";
13
+ AppSettingSlug2["NavigationCollapsed"] = "navigationCollapsed";
14
+ AppSettingSlug2["SeedPhrase"] = "seedPhrase";
15
+ AppSettingSlug2["MaxAccounts"] = "maxAccounts";
16
+ return AppSettingSlug2;
17
+ })(AppSettingSlug || {});
18
+
19
+ // src/contexts/AppSettings/appSettingDefault.ts
20
+ var appSettingDefault = () => {
21
+ return {
22
+ ["darkmode" /* DarkMode */]: false,
23
+ ["developer" /* Developer */]: false,
24
+ ["navigationType" /* NavigationType */]: "menu",
25
+ ["navigationCollapsed" /* NavigationCollapsed */]: false,
26
+ ["seedPhrase" /* SeedPhrase */]: "",
27
+ ["maxAccounts" /* MaxAccounts */]: 1
28
+ };
29
+ };
30
+
31
+ // src/contexts/AppSettings/Context.ts
32
+ var AppSettingsContext = createContext(appSettingDefault());
33
+
34
+ // src/contexts/AppSettings/Provider.tsx
35
+ import { useState } from "react";
36
+
37
+ // src/contexts/AppSettings/StorageBase.ts
38
+ import { assertEx } from "@xylabs/assert";
39
+ import { assertDefinedEx } from "@xyo-network/react-shared";
40
+ var AppSettingsStorageBase = class {
41
+ defaults;
42
+ prefix;
43
+ constructor(prefix = "AppSettings", defaults) {
44
+ this.prefix = prefix;
45
+ this.defaults = defaults ?? {};
46
+ }
47
+ getBoolean(name) {
48
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
49
+ if (!storedValue) {
50
+ assertEx(typeof this.defaults[name] === "boolean", () => "Default value is not boolean");
51
+ const defaultValue = this.defaults[name];
52
+ assertEx(defaultValue !== void 0, () => `Missing Default for ${name}`);
53
+ return defaultValue;
54
+ }
55
+ return storedValue !== "false";
56
+ }
57
+ getNumber(name) {
58
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
59
+ if (!storedValue) {
60
+ assertEx(typeof this.defaults[name] === "number", () => "Default value is not a number");
61
+ const defaultValue = this.defaults[name];
62
+ assertEx(defaultValue !== void 0, () => `Missing Default for ${name}`);
63
+ return defaultValue;
64
+ }
65
+ return Number.parseFloat(storedValue);
66
+ }
67
+ getObject(name) {
68
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
69
+ const parsedStoredValue = storedValue ? JSON.parse(storedValue) : null;
70
+ if (!parsedStoredValue) {
71
+ assertEx(typeof this.defaults[name] === "object", () => "Default value is not object");
72
+ return assertEx(this.defaults[name], () => `Missing Default for ${name}`);
73
+ }
74
+ return parsedStoredValue;
75
+ }
76
+ getString(name) {
77
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
78
+ if (!storedValue) {
79
+ assertDefinedEx(typeof this.defaults[name] === "string", "Default value is not string");
80
+ const defaultValue = this.defaults[name];
81
+ assertEx(defaultValue !== void 0, () => `Missing Default for ${name}`);
82
+ return defaultValue;
83
+ }
84
+ return storedValue;
85
+ }
86
+ getStringArray(name) {
87
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`)?.split(",");
88
+ if (!storedValue) {
89
+ assertDefinedEx(Array.isArray(this.defaults[name]), "Default value is not array");
90
+ const defaultValue = this.defaults[name];
91
+ assertEx(defaultValue !== void 0, () => `Missing Default for ${name}`);
92
+ return defaultValue;
93
+ }
94
+ return storedValue;
95
+ }
96
+ setBoolean(name, value) {
97
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
98
+ }
99
+ setNumber(name, value) {
100
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
101
+ }
102
+ setObject(name, value) {
103
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
104
+ }
105
+ setString(name, value) {
106
+ localStorage.setItem(`${this.prefix}|${name}`, value);
107
+ }
108
+ setStringArray(name, value) {
109
+ localStorage.setItem(`${this.prefix}|${name}`, value.join(","));
110
+ }
111
+ };
112
+
113
+ // src/contexts/AppSettings/Storage.ts
114
+ var AppSettingsStorage = class extends AppSettingsStorageBase {
115
+ constructor(prefix = "AppSettings", defaults) {
116
+ super(prefix, { ...appSettingDefault(), ...defaults });
117
+ }
118
+ get darkMode() {
119
+ return this.getBoolean("darkmode" /* DarkMode */);
120
+ }
121
+ set darkMode(value) {
122
+ this.setBoolean("darkmode" /* DarkMode */, value);
123
+ }
124
+ get developerMode() {
125
+ return this.getBoolean("developer" /* Developer */);
126
+ }
127
+ set developerMode(value) {
128
+ this.setBoolean("developer" /* Developer */, value);
129
+ }
130
+ get maxAccounts() {
131
+ return this.getNumber("maxAccounts" /* MaxAccounts */);
132
+ }
133
+ set maxAccounts(value) {
134
+ this.setNumber("maxAccounts" /* MaxAccounts */, value);
135
+ }
136
+ get navigationCollapsed() {
137
+ return this.getBoolean("navigationCollapsed" /* NavigationCollapsed */);
138
+ }
139
+ set navigationCollapsed(value) {
140
+ this.setBoolean("navigationCollapsed" /* NavigationCollapsed */, value);
141
+ }
142
+ get navigationType() {
143
+ return this.getString("navigationType" /* NavigationType */);
144
+ }
145
+ set navigationType(value) {
146
+ this.setString("navigationType" /* NavigationType */, value);
147
+ }
148
+ get seedPhrase() {
149
+ return this.getString("seedPhrase" /* SeedPhrase */);
150
+ }
151
+ set seedPhrase(value) {
152
+ this.setString("seedPhrase" /* SeedPhrase */, value);
153
+ }
154
+ };
155
+
156
+ // src/contexts/AppSettings/Provider.tsx
157
+ import { jsx } from "react/jsx-runtime";
158
+ var AppSettingsProvider = ({
159
+ storage = new AppSettingsStorage(),
160
+ value,
161
+ children,
162
+ ...props
163
+ }) => {
164
+ const [developerMode, setDeveloperMode] = useState(storage.developerMode);
165
+ const [darkMode, setDarkMode] = useState(storage.darkMode);
166
+ const [navigationType, setNavigationType] = useState(storage.navigationType);
167
+ const [navigationCollapsed, setNavigationCollapsed] = useState(storage.navigationCollapsed);
168
+ const [seedPhrase, setSeedPhrase] = useState(storage.seedPhrase);
169
+ const [maxAccounts, setMaxAccounts] = useState(storage.maxAccounts);
170
+ const enableDeveloperMode = (value2) => {
171
+ storage.developerMode = value2;
172
+ setDeveloperMode(storage.developerMode);
173
+ };
174
+ const enableDarkMode = (value2) => {
175
+ storage.darkMode = value2;
176
+ setDarkMode(storage.darkMode);
177
+ };
178
+ const changeNavigationType = (value2) => {
179
+ storage.navigationType = value2;
180
+ setNavigationType(value2);
181
+ };
182
+ const changeNavigationCollapsed = (value2) => {
183
+ storage.navigationCollapsed = value2;
184
+ setNavigationCollapsed(value2);
185
+ };
186
+ const changeSeedPhrase = (value2) => {
187
+ storage.seedPhrase = value2;
188
+ setSeedPhrase(value2);
189
+ };
190
+ const changeMaxAccounts = (value2) => {
191
+ storage.maxAccounts = value2;
192
+ setMaxAccounts(value2);
193
+ };
194
+ return /* @__PURE__ */ jsx(
195
+ AppSettingsContext.Provider,
196
+ {
197
+ value: {
198
+ changeMaxAccounts,
199
+ changeNavigationCollapsed,
200
+ changeNavigationType,
201
+ changeSeedPhrase,
202
+ darkMode,
203
+ developerMode,
204
+ enableDarkMode,
205
+ enableDeveloperMode,
206
+ maxAccounts,
207
+ navigationCollapsed,
208
+ navigationType,
209
+ seedPhrase,
210
+ ...value
211
+ },
212
+ ...props,
213
+ children
214
+ }
215
+ );
216
+ };
217
+
218
+ // src/contexts/AppSettings/useAppSettings.ts
219
+ import { useContext } from "react";
220
+ var useAppSettings = () => {
221
+ return useContext(AppSettingsContext);
222
+ };
223
+
224
+ // src/components/DarkModeIconButton.tsx
225
+ import { jsx as jsx2 } from "react/jsx-runtime";
226
+ var DarkModeIconButton = (props) => {
227
+ const { darkMode, enableDarkMode } = useAppSettings();
228
+ const handleDarkModeChange = () => {
229
+ enableDarkMode?.(!darkMode);
230
+ };
231
+ return /* @__PURE__ */ jsx2(IconButton, { onClick: handleDarkModeChange, ...props, children: darkMode ? /* @__PURE__ */ jsx2(DarkModeRoundedIcon, {}) : /* @__PURE__ */ jsx2(LightModeRoundedIcon, {}) });
232
+ };
233
+
234
+ // src/components/Developer.tsx
235
+ var Developer = ({ children = null }) => {
236
+ const { developerMode } = useAppSettings();
237
+ return developerMode ? children : null;
238
+ };
239
+ export {
240
+ AppSettingSlug,
241
+ AppSettingsContext,
242
+ AppSettingsProvider,
243
+ AppSettingsStorage,
244
+ AppSettingsStorageBase,
245
+ DarkModeIconButton,
246
+ Developer,
247
+ useAppSettings
248
+ };
249
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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 { IconButton, IconButtonProps } from '@mui/material'\n\nimport { useAppSettings } from '../contexts'\n\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 { WebAppNavigationType } from '../../WebAppNavigationType'\nimport { appSettingDefault } from './appSettingDefault'\n\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\nexport const AppSettingsContext = createContext<AppSettingsContextProps>(appSettingDefault())\n","export enum AppSettingSlug {\n DarkMode = 'darkmode',\n Developer = 'developer',\n NavigationType = 'navigationType',\n NavigationCollapsed = 'navigationCollapsed',\n SeedPhrase = 'seedPhrase',\n MaxAccounts = 'maxAccounts',\n}\n","import { AppSettingSlug } from './Slug'\n\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 { WithChildren } from '@xylabs/react-shared'\nimport { ProviderProps, useState } from 'react'\n\nimport { WebAppNavigationType } from '../../WebAppNavigationType'\nimport { AppSettingsContext, AppSettingsContextProps } from './Context'\nimport { AppSettingsStorage } from './Storage'\n\nexport interface AppSettingsProviderProps<T extends AppSettingsContextProps = AppSettingsContextProps> extends ProviderProps<T> {\n storage?: AppSettingsStorage\n}\n\nexport const AppSettingsProvider: React.FC<WithChildren<AppSettingsProviderProps>> = ({\n storage = new AppSettingsStorage(),\n value,\n children,\n ...props\n}) => {\n const [developerMode, setDeveloperMode] = useState(storage.developerMode)\n const [darkMode, setDarkMode] = useState(storage.darkMode)\n const [navigationType, setNavigationType] = useState(storage.navigationType)\n const [navigationCollapsed, setNavigationCollapsed] = useState(storage.navigationCollapsed)\n const [seedPhrase, setSeedPhrase] = useState(storage.seedPhrase)\n const [maxAccounts, setMaxAccounts] = useState(storage.maxAccounts)\n\n const enableDeveloperMode = (value: boolean) => {\n storage.developerMode = value\n setDeveloperMode(storage.developerMode)\n }\n\n const enableDarkMode = (value: boolean) => {\n storage.darkMode = value\n setDarkMode(storage.darkMode)\n }\n\n const changeNavigationType = (value: WebAppNavigationType) => {\n storage.navigationType = value\n setNavigationType(value)\n }\n\n const changeNavigationCollapsed = (value: boolean) => {\n storage.navigationCollapsed = value\n setNavigationCollapsed(value)\n }\n\n const changeSeedPhrase = (value: string) => {\n storage.seedPhrase = value\n setSeedPhrase(value)\n }\n\n const changeMaxAccounts = (value: number) => {\n storage.maxAccounts = value\n setMaxAccounts(value)\n }\n\n return (\n <AppSettingsContext.Provider\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.Provider>\n )\n}\n","import { assertEx } from '@xylabs/assert'\nimport { assertDefinedEx } from '@xyo-network/react-shared'\n\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 { WebAppNavigationType } from '../../WebAppNavigationType'\nimport { appSettingDefault } from './appSettingDefault'\nimport { AppSettingSlug } from './Slug'\nimport { AppSettingsStorageBase } from './StorageBase'\n\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 { useContext } from 'react'\n\nimport { AppSettingsContext } from './Context'\n\nexport const useAppSettings = () => {\n return useContext(AppSettingsContext)\n}\n","import { ReactElement } from 'react'\n\nimport { useAppSettings } from '../contexts'\n\nexport const Developer: React.FC<{ children: ReactElement }> = ({ children = null }) => {\n const { developerMode } = useAppSettings()\n\n return developerMode ? children : null\n}\n"],"mappings":"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","names":["AppSettingSlug","value","jsx"]}
package/package.json CHANGED
@@ -10,9 +10,9 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/assert": "^3.1.13",
13
+ "@xylabs/assert": "^3.3.2",
14
14
  "@xylabs/react-shared": "^3.1.7",
15
- "@xyo-network/react-shared": "~2.75.7"
15
+ "@xyo-network/react-shared": "~2.76.1"
16
16
  },
17
17
  "peerDependencies": {
18
18
  "@mui/icons-material": "^5",
@@ -22,7 +22,7 @@
22
22
  "react-dom": "^18.2.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@xylabs/ts-scripts-yarn3": "^3.9.1",
25
+ "@xylabs/ts-scripts-yarn3": "^3.10.0",
26
26
  "typescript": "^5.4.5"
27
27
  },
28
28
  "description": "Common React library for all XYO projects that use React",
@@ -76,6 +76,6 @@
76
76
  },
77
77
  "sideEffects": false,
78
78
  "types": "dist/browser/index.d.ts",
79
- "version": "2.75.7",
79
+ "version": "2.76.1",
80
80
  "type": "module"
81
81
  }