@xyo-network/react-app-settings 2.61.0 → 2.61.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/WebAppNavigationType.d.mts.map +1 -0
  2. package/dist/WebAppNavigationType.d.ts +2 -0
  3. package/dist/WebAppNavigationType.d.ts.map +1 -0
  4. package/dist/components/DarkModeIconButton.d.mts.map +1 -0
  5. package/dist/components/DarkModeIconButton.d.ts +4 -0
  6. package/dist/components/DarkModeIconButton.d.ts.map +1 -0
  7. package/dist/components/Developer.d.mts.map +1 -0
  8. package/dist/components/Developer.d.ts +5 -0
  9. package/dist/components/Developer.d.ts.map +1 -0
  10. package/dist/components/index.d.mts.map +1 -0
  11. package/dist/{esm/components/index.js → components/index.d.ts} +1 -1
  12. package/dist/components/index.d.ts.map +1 -0
  13. package/dist/contexts/AppSettings/Context.d.mts.map +1 -0
  14. package/dist/contexts/AppSettings/Context.d.ts +18 -0
  15. package/dist/contexts/AppSettings/Context.d.ts.map +1 -0
  16. package/dist/contexts/AppSettings/Provider.d.mts.map +1 -0
  17. package/dist/contexts/AppSettings/Provider.d.ts +9 -0
  18. package/dist/contexts/AppSettings/Provider.d.ts.map +1 -0
  19. package/dist/contexts/AppSettings/Slug.d.mts.map +1 -0
  20. package/dist/contexts/AppSettings/Slug.d.ts +9 -0
  21. package/dist/contexts/AppSettings/Slug.d.ts.map +1 -0
  22. package/dist/contexts/AppSettings/Storage.d.mts.map +1 -0
  23. package/dist/contexts/AppSettings/Storage.d.ts +18 -0
  24. package/dist/contexts/AppSettings/Storage.d.ts.map +1 -0
  25. package/dist/contexts/AppSettings/StorageBase.d.mts.map +1 -0
  26. package/dist/contexts/AppSettings/StorageBase.d.ts +16 -0
  27. package/dist/contexts/AppSettings/StorageBase.d.ts.map +1 -0
  28. package/dist/contexts/AppSettings/appSettingDefault.d.mts.map +1 -0
  29. package/dist/contexts/AppSettings/appSettingDefault.d.ts +2 -0
  30. package/dist/contexts/AppSettings/appSettingDefault.d.ts.map +1 -0
  31. package/dist/contexts/AppSettings/index.d.mts.map +1 -0
  32. package/dist/{esm/contexts/AppSettings/index.js → contexts/AppSettings/index.d.ts} +1 -1
  33. package/dist/contexts/AppSettings/index.d.ts.map +1 -0
  34. package/dist/contexts/AppSettings/useAppSettings.d.mts.map +1 -0
  35. package/dist/contexts/AppSettings/useAppSettings.d.ts +2 -0
  36. package/dist/contexts/AppSettings/useAppSettings.d.ts.map +1 -0
  37. package/dist/contexts/index.d.mts.map +1 -0
  38. package/dist/contexts/index.d.ts +2 -0
  39. package/dist/contexts/index.d.ts.map +1 -0
  40. package/dist/docs.json +4102 -0
  41. package/dist/index.d.mts.map +1 -0
  42. package/dist/{esm/index.js → index.d.ts} +1 -1
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +294 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/index.mjs +250 -0
  47. package/dist/index.mjs.map +1 -0
  48. package/package.json +25 -17
  49. package/dist/cjs/WebAppNavigationType.js +0 -3
  50. package/dist/cjs/WebAppNavigationType.js.map +0 -1
  51. package/dist/cjs/components/DarkModeIconButton.js +0 -18
  52. package/dist/cjs/components/DarkModeIconButton.js.map +0 -1
  53. package/dist/cjs/components/Developer.js +0 -10
  54. package/dist/cjs/components/Developer.js.map +0 -1
  55. package/dist/cjs/components/index.js +0 -6
  56. package/dist/cjs/components/index.js.map +0 -1
  57. package/dist/cjs/contexts/AppSettings/Context.js +0 -7
  58. package/dist/cjs/contexts/AppSettings/Context.js.map +0 -1
  59. package/dist/cjs/contexts/AppSettings/Provider.js +0 -55
  60. package/dist/cjs/contexts/AppSettings/Provider.js.map +0 -1
  61. package/dist/cjs/contexts/AppSettings/Slug.js +0 -13
  62. package/dist/cjs/contexts/AppSettings/Slug.js.map +0 -1
  63. package/dist/cjs/contexts/AppSettings/Storage.js +0 -49
  64. package/dist/cjs/contexts/AppSettings/Storage.js.map +0 -1
  65. package/dist/cjs/contexts/AppSettings/StorageBase.js +0 -78
  66. package/dist/cjs/contexts/AppSettings/StorageBase.js.map +0 -1
  67. package/dist/cjs/contexts/AppSettings/appSettingDefault.js +0 -16
  68. package/dist/cjs/contexts/AppSettings/appSettingDefault.js.map +0 -1
  69. package/dist/cjs/contexts/AppSettings/index.js +0 -10
  70. package/dist/cjs/contexts/AppSettings/index.js.map +0 -1
  71. package/dist/cjs/contexts/AppSettings/useAppSettings.js +0 -10
  72. package/dist/cjs/contexts/AppSettings/useAppSettings.js.map +0 -1
  73. package/dist/cjs/contexts/index.js +0 -5
  74. package/dist/cjs/contexts/index.js.map +0 -1
  75. package/dist/cjs/index.js +0 -7
  76. package/dist/cjs/index.js.map +0 -1
  77. package/dist/esm/WebAppNavigationType.js +0 -2
  78. package/dist/esm/WebAppNavigationType.js.map +0 -1
  79. package/dist/esm/components/DarkModeIconButton.js +0 -13
  80. package/dist/esm/components/DarkModeIconButton.js.map +0 -1
  81. package/dist/esm/components/Developer.js +0 -6
  82. package/dist/esm/components/Developer.js.map +0 -1
  83. package/dist/esm/components/index.js.map +0 -1
  84. package/dist/esm/contexts/AppSettings/Context.js +0 -4
  85. package/dist/esm/contexts/AppSettings/Context.js.map +0 -1
  86. package/dist/esm/contexts/AppSettings/Provider.js +0 -52
  87. package/dist/esm/contexts/AppSettings/Provider.js.map +0 -1
  88. package/dist/esm/contexts/AppSettings/Slug.js +0 -10
  89. package/dist/esm/contexts/AppSettings/Slug.js.map +0 -1
  90. package/dist/esm/contexts/AppSettings/Storage.js +0 -45
  91. package/dist/esm/contexts/AppSettings/Storage.js.map +0 -1
  92. package/dist/esm/contexts/AppSettings/StorageBase.js +0 -75
  93. package/dist/esm/contexts/AppSettings/StorageBase.js.map +0 -1
  94. package/dist/esm/contexts/AppSettings/appSettingDefault.js +0 -12
  95. package/dist/esm/contexts/AppSettings/appSettingDefault.js.map +0 -1
  96. package/dist/esm/contexts/AppSettings/index.js.map +0 -1
  97. package/dist/esm/contexts/AppSettings/useAppSettings.js +0 -6
  98. package/dist/esm/contexts/AppSettings/useAppSettings.js.map +0 -1
  99. package/dist/esm/contexts/index.js +0 -2
  100. package/dist/esm/contexts/index.js.map +0 -1
  101. package/dist/esm/index.js.map +0 -1
  102. package/dist/types/WebAppNavigationType.d.ts.map +0 -1
  103. package/dist/types/components/DarkModeIconButton.d.ts.map +0 -1
  104. package/dist/types/components/Developer.d.ts.map +0 -1
  105. package/dist/types/components/index.d.ts.map +0 -1
  106. package/dist/types/contexts/AppSettings/Context.d.ts.map +0 -1
  107. package/dist/types/contexts/AppSettings/Provider.d.ts.map +0 -1
  108. package/dist/types/contexts/AppSettings/Slug.d.ts.map +0 -1
  109. package/dist/types/contexts/AppSettings/Storage.d.ts.map +0 -1
  110. package/dist/types/contexts/AppSettings/StorageBase.d.ts.map +0 -1
  111. package/dist/types/contexts/AppSettings/appSettingDefault.d.ts.map +0 -1
  112. package/dist/types/contexts/AppSettings/index.d.ts.map +0 -1
  113. package/dist/types/contexts/AppSettings/useAppSettings.d.ts.map +0 -1
  114. package/dist/types/contexts/index.d.ts.map +0 -1
  115. package/dist/types/index.d.ts.map +0 -1
  116. /package/dist/{types/WebAppNavigationType.d.ts → WebAppNavigationType.d.mts} +0 -0
  117. /package/dist/{types/components/DarkModeIconButton.d.ts → components/DarkModeIconButton.d.mts} +0 -0
  118. /package/dist/{types/components/Developer.d.ts → components/Developer.d.mts} +0 -0
  119. /package/dist/{types/components/index.d.ts → components/index.d.mts} +0 -0
  120. /package/dist/{types/contexts/AppSettings/Context.d.ts → contexts/AppSettings/Context.d.mts} +0 -0
  121. /package/dist/{types/contexts/AppSettings/Provider.d.ts → contexts/AppSettings/Provider.d.mts} +0 -0
  122. /package/dist/{types/contexts/AppSettings/Slug.d.ts → contexts/AppSettings/Slug.d.mts} +0 -0
  123. /package/dist/{types/contexts/AppSettings/Storage.d.ts → contexts/AppSettings/Storage.d.mts} +0 -0
  124. /package/dist/{types/contexts/AppSettings/StorageBase.d.ts → contexts/AppSettings/StorageBase.d.mts} +0 -0
  125. /package/dist/{types/contexts/AppSettings/appSettingDefault.d.ts → contexts/AppSettings/appSettingDefault.d.mts} +0 -0
  126. /package/dist/{types/contexts/AppSettings/index.d.ts → contexts/AppSettings/index.d.mts} +0 -0
  127. /package/dist/{types/contexts/AppSettings/useAppSettings.d.ts → contexts/AppSettings/useAppSettings.d.mts} +0 -0
  128. /package/dist/{types/contexts/index.d.ts → contexts/index.d.mts} +0 -0
  129. /package/dist/{types/index.d.ts → index.d.mts} +0 -0
@@ -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"}
@@ -1,4 +1,4 @@
1
1
  export * from './components';
2
2
  export * from './contexts';
3
3
  export * from './WebAppNavigationType';
4
- //# sourceMappingURL=index.js.map
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"}
package/dist/index.js ADDED
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var src_exports = {};
32
+ __export(src_exports, {
33
+ AppSettingSlug: () => AppSettingSlug,
34
+ AppSettingsContext: () => AppSettingsContext,
35
+ AppSettingsProvider: () => AppSettingsProvider,
36
+ AppSettingsStorage: () => AppSettingsStorage,
37
+ AppSettingsStorageBase: () => AppSettingsStorageBase,
38
+ DarkModeIconButton: () => DarkModeIconButton,
39
+ Developer: () => Developer,
40
+ useAppSettings: () => useAppSettings
41
+ });
42
+ module.exports = __toCommonJS(src_exports);
43
+
44
+ // src/components/DarkModeIconButton.tsx
45
+ var import_DarkModeRounded = __toESM(require("@mui/icons-material/DarkModeRounded"));
46
+ var import_LightModeRounded = __toESM(require("@mui/icons-material/LightModeRounded"));
47
+ var import_material = require("@mui/material");
48
+
49
+ // src/contexts/AppSettings/Context.ts
50
+ var import_react = require("react");
51
+
52
+ // src/contexts/AppSettings/Slug.ts
53
+ var AppSettingSlug = /* @__PURE__ */ ((AppSettingSlug2) => {
54
+ AppSettingSlug2["DarkMode"] = "darkmode";
55
+ AppSettingSlug2["Developer"] = "developer";
56
+ AppSettingSlug2["NavigationType"] = "navigationType";
57
+ AppSettingSlug2["NavigationCollapsed"] = "navigationCollapsed";
58
+ AppSettingSlug2["SeedPhrase"] = "seedPhrase";
59
+ AppSettingSlug2["MaxAccounts"] = "maxAccounts";
60
+ return AppSettingSlug2;
61
+ })(AppSettingSlug || {});
62
+
63
+ // src/contexts/AppSettings/appSettingDefault.ts
64
+ var appSettingDefault = () => {
65
+ return {
66
+ ["darkmode" /* DarkMode */]: false,
67
+ ["developer" /* Developer */]: false,
68
+ ["navigationType" /* NavigationType */]: "menu",
69
+ ["navigationCollapsed" /* NavigationCollapsed */]: false,
70
+ ["seedPhrase" /* SeedPhrase */]: "",
71
+ ["maxAccounts" /* MaxAccounts */]: 1
72
+ };
73
+ };
74
+
75
+ // src/contexts/AppSettings/Context.ts
76
+ var AppSettingsContext = (0, import_react.createContext)(appSettingDefault());
77
+
78
+ // src/contexts/AppSettings/Provider.tsx
79
+ var import_react2 = require("react");
80
+
81
+ // src/contexts/AppSettings/StorageBase.ts
82
+ var import_assert = require("@xylabs/assert");
83
+ var import_react_shared = require("@xyo-network/react-shared");
84
+ var AppSettingsStorageBase = class {
85
+ defaults;
86
+ prefix;
87
+ constructor(prefix = "AppSettings", defaults) {
88
+ this.prefix = prefix;
89
+ this.defaults = defaults ?? {};
90
+ }
91
+ getBoolean(name) {
92
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
93
+ if (!storedValue) {
94
+ (0, import_assert.assertEx)(typeof this.defaults[name] === "boolean", "Default value is not boolean");
95
+ const defaultValue = this.defaults[name];
96
+ (0, import_assert.assertEx)(defaultValue !== void 0, `Missing Default for ${name}`);
97
+ return defaultValue;
98
+ }
99
+ return storedValue !== "false";
100
+ }
101
+ getNumber(name) {
102
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
103
+ if (!storedValue) {
104
+ (0, import_assert.assertEx)(typeof this.defaults[name] === "number", "Default value is not a number");
105
+ const defaultValue = this.defaults[name];
106
+ (0, import_assert.assertEx)(defaultValue !== void 0, `Missing Default for ${name}`);
107
+ return defaultValue;
108
+ }
109
+ return parseFloat(storedValue);
110
+ }
111
+ getObject(name) {
112
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
113
+ const parsedStoredValue = storedValue ? JSON.parse(storedValue) : null;
114
+ if (!parsedStoredValue) {
115
+ (0, import_assert.assertEx)(typeof this.defaults[name] === "object", "Default value is not object");
116
+ return (0, import_assert.assertEx)(this.defaults[name], `Missing Default for ${name}`);
117
+ }
118
+ return parsedStoredValue;
119
+ }
120
+ getString(name) {
121
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
122
+ if (!storedValue) {
123
+ (0, import_react_shared.assertDefinedEx)(typeof this.defaults[name] === "string", "Default value is not string");
124
+ const defaultValue = this.defaults[name];
125
+ (0, import_assert.assertEx)(defaultValue !== void 0, `Missing Default for ${name}`);
126
+ return defaultValue;
127
+ }
128
+ return storedValue;
129
+ }
130
+ getStringArray(name) {
131
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`)?.split(",");
132
+ if (!storedValue) {
133
+ (0, import_react_shared.assertDefinedEx)(Array.isArray(this.defaults[name]), "Default value is not array");
134
+ const defaultValue = this.defaults[name];
135
+ (0, import_assert.assertEx)(defaultValue !== void 0, `Missing Default for ${name}`);
136
+ return defaultValue;
137
+ }
138
+ return storedValue;
139
+ }
140
+ setBoolean(name, value) {
141
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
142
+ }
143
+ setNumber(name, value) {
144
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
145
+ }
146
+ setObject(name, value) {
147
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
148
+ }
149
+ setString(name, value) {
150
+ localStorage.setItem(`${this.prefix}|${name}`, value);
151
+ }
152
+ setStringArray(name, value) {
153
+ localStorage.setItem(`${this.prefix}|${name}`, value.join(","));
154
+ }
155
+ };
156
+
157
+ // src/contexts/AppSettings/Storage.ts
158
+ var AppSettingsStorage = class extends AppSettingsStorageBase {
159
+ constructor(prefix = "AppSettings", defaults) {
160
+ super(prefix, { ...appSettingDefault(), ...defaults });
161
+ }
162
+ get darkMode() {
163
+ return this.getBoolean("darkmode" /* DarkMode */);
164
+ }
165
+ set darkMode(value) {
166
+ this.setBoolean("darkmode" /* DarkMode */, value);
167
+ }
168
+ get developerMode() {
169
+ return this.getBoolean("developer" /* Developer */);
170
+ }
171
+ set developerMode(value) {
172
+ this.setBoolean("developer" /* Developer */, value);
173
+ }
174
+ get maxAccounts() {
175
+ return this.getNumber("maxAccounts" /* MaxAccounts */);
176
+ }
177
+ set maxAccounts(value) {
178
+ this.setNumber("maxAccounts" /* MaxAccounts */, value);
179
+ }
180
+ get navigationCollapsed() {
181
+ return this.getBoolean("navigationCollapsed" /* NavigationCollapsed */);
182
+ }
183
+ set navigationCollapsed(value) {
184
+ this.setBoolean("navigationCollapsed" /* NavigationCollapsed */, value);
185
+ }
186
+ get navigationType() {
187
+ return this.getString("navigationType" /* NavigationType */);
188
+ }
189
+ set navigationType(value) {
190
+ this.setString("navigationType" /* NavigationType */, value);
191
+ }
192
+ get seedPhrase() {
193
+ return this.getString("seedPhrase" /* SeedPhrase */);
194
+ }
195
+ set seedPhrase(value) {
196
+ this.setString("seedPhrase" /* SeedPhrase */, value);
197
+ }
198
+ };
199
+
200
+ // src/contexts/AppSettings/Provider.tsx
201
+ var import_jsx_runtime = require("react/jsx-runtime");
202
+ var AppSettingsProvider = ({
203
+ storage = new AppSettingsStorage(),
204
+ value,
205
+ children,
206
+ ...props
207
+ }) => {
208
+ const [developerMode, setDeveloperMode] = (0, import_react2.useState)(storage.developerMode);
209
+ const [darkMode, setDarkMode] = (0, import_react2.useState)(storage.darkMode);
210
+ const [navigationType, setNavigationType] = (0, import_react2.useState)(storage.navigationType);
211
+ const [navigationCollapsed, setNavigationCollapsed] = (0, import_react2.useState)(storage.navigationCollapsed);
212
+ const [seedPhrase, setSeedPhrase] = (0, import_react2.useState)(storage.seedPhrase);
213
+ const [maxAccounts, setMaxAccounts] = (0, import_react2.useState)(storage.maxAccounts);
214
+ const enableDeveloperMode = (value2) => {
215
+ storage.developerMode = value2;
216
+ setDeveloperMode(storage.developerMode);
217
+ };
218
+ const enableDarkMode = (value2) => {
219
+ storage.darkMode = value2;
220
+ setDarkMode(storage.darkMode);
221
+ };
222
+ const changeNavigationType = (value2) => {
223
+ storage.navigationType = value2;
224
+ setNavigationType(value2);
225
+ };
226
+ const changeNavigationCollapsed = (value2) => {
227
+ storage.navigationCollapsed = value2;
228
+ setNavigationCollapsed(value2);
229
+ };
230
+ const changeSeedPhrase = (value2) => {
231
+ storage.seedPhrase = value2;
232
+ setSeedPhrase(value2);
233
+ };
234
+ const changeMaxAccounts = (value2) => {
235
+ storage.maxAccounts = value2;
236
+ setMaxAccounts(value2);
237
+ };
238
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
239
+ AppSettingsContext.Provider,
240
+ {
241
+ value: {
242
+ changeMaxAccounts,
243
+ changeNavigationCollapsed,
244
+ changeNavigationType,
245
+ changeSeedPhrase,
246
+ darkMode,
247
+ developerMode,
248
+ enableDarkMode,
249
+ enableDeveloperMode,
250
+ maxAccounts,
251
+ navigationCollapsed,
252
+ navigationType,
253
+ seedPhrase,
254
+ ...value
255
+ },
256
+ ...props,
257
+ children
258
+ }
259
+ );
260
+ };
261
+
262
+ // src/contexts/AppSettings/useAppSettings.ts
263
+ var import_react3 = require("react");
264
+ var useAppSettings = () => {
265
+ return (0, import_react3.useContext)(AppSettingsContext);
266
+ };
267
+
268
+ // src/components/DarkModeIconButton.tsx
269
+ var import_jsx_runtime2 = require("react/jsx-runtime");
270
+ var DarkModeIconButton = (props) => {
271
+ const { darkMode, enableDarkMode } = useAppSettings();
272
+ const handleDarkModeChange = () => {
273
+ enableDarkMode?.(!darkMode);
274
+ };
275
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material.IconButton, { onClick: handleDarkModeChange, ...props, children: darkMode ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_DarkModeRounded.default, {}) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_LightModeRounded.default, {}) });
276
+ };
277
+
278
+ // src/components/Developer.tsx
279
+ var Developer = ({ children = null }) => {
280
+ const { developerMode } = useAppSettings();
281
+ return developerMode ? children : null;
282
+ };
283
+ // Annotate the CommonJS export names for ESM import in node:
284
+ 0 && (module.exports = {
285
+ AppSettingSlug,
286
+ AppSettingsContext,
287
+ AppSettingsProvider,
288
+ AppSettingsStorage,
289
+ AppSettingsStorageBase,
290
+ DarkModeIconButton,
291
+ Developer,
292
+ useAppSettings
293
+ });
294
+ //# sourceMappingURL=index.js.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 DarkModeRoundedIcon from '@mui/icons-material/DarkModeRounded'\nimport LightModeRoundedIcon from '@mui/icons-material/LightModeRounded'\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 ? <DarkModeRoundedIcon /> : <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 public 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 public 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 parseFloat(storedValue)\n }\n\n public 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 public 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 public 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 public setBoolean(name: string, value: boolean) {\n localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))\n }\n\n public setNumber(name: string, value: number) {\n localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))\n }\n\n public setObject<T>(name: string, value: T) {\n localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))\n }\n\n public setString(name: string, value: string) {\n localStorage.setItem(`${this.prefix}|${name}`, value)\n }\n\n public 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"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,250 @@
1
+ // src/components/DarkModeIconButton.tsx
2
+ import DarkModeRoundedIcon from "@mui/icons-material/DarkModeRounded";
3
+ import LightModeRoundedIcon from "@mui/icons-material/LightModeRounded";
4
+ import { IconButton } from "@mui/material";
5
+
6
+ // src/contexts/AppSettings/Context.ts
7
+ import { createContext } from "react";
8
+
9
+ // src/contexts/AppSettings/Slug.ts
10
+ var AppSettingSlug = /* @__PURE__ */ ((AppSettingSlug2) => {
11
+ AppSettingSlug2["DarkMode"] = "darkmode";
12
+ AppSettingSlug2["Developer"] = "developer";
13
+ AppSettingSlug2["NavigationType"] = "navigationType";
14
+ AppSettingSlug2["NavigationCollapsed"] = "navigationCollapsed";
15
+ AppSettingSlug2["SeedPhrase"] = "seedPhrase";
16
+ AppSettingSlug2["MaxAccounts"] = "maxAccounts";
17
+ return AppSettingSlug2;
18
+ })(AppSettingSlug || {});
19
+
20
+ // src/contexts/AppSettings/appSettingDefault.ts
21
+ var appSettingDefault = () => {
22
+ return {
23
+ ["darkmode" /* DarkMode */]: false,
24
+ ["developer" /* Developer */]: false,
25
+ ["navigationType" /* NavigationType */]: "menu",
26
+ ["navigationCollapsed" /* NavigationCollapsed */]: false,
27
+ ["seedPhrase" /* SeedPhrase */]: "",
28
+ ["maxAccounts" /* MaxAccounts */]: 1
29
+ };
30
+ };
31
+
32
+ // src/contexts/AppSettings/Context.ts
33
+ var AppSettingsContext = createContext(appSettingDefault());
34
+
35
+ // src/contexts/AppSettings/Provider.tsx
36
+ import { useState } from "react";
37
+
38
+ // src/contexts/AppSettings/StorageBase.ts
39
+ import { assertEx } from "@xylabs/assert";
40
+ import { assertDefinedEx } from "@xyo-network/react-shared";
41
+ var AppSettingsStorageBase = class {
42
+ defaults;
43
+ prefix;
44
+ constructor(prefix = "AppSettings", defaults) {
45
+ this.prefix = prefix;
46
+ this.defaults = defaults ?? {};
47
+ }
48
+ getBoolean(name) {
49
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
50
+ if (!storedValue) {
51
+ assertEx(typeof this.defaults[name] === "boolean", "Default value is not boolean");
52
+ const defaultValue = this.defaults[name];
53
+ assertEx(defaultValue !== void 0, `Missing Default for ${name}`);
54
+ return defaultValue;
55
+ }
56
+ return storedValue !== "false";
57
+ }
58
+ getNumber(name) {
59
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
60
+ if (!storedValue) {
61
+ assertEx(typeof this.defaults[name] === "number", "Default value is not a number");
62
+ const defaultValue = this.defaults[name];
63
+ assertEx(defaultValue !== void 0, `Missing Default for ${name}`);
64
+ return defaultValue;
65
+ }
66
+ return parseFloat(storedValue);
67
+ }
68
+ getObject(name) {
69
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
70
+ const parsedStoredValue = storedValue ? JSON.parse(storedValue) : null;
71
+ if (!parsedStoredValue) {
72
+ assertEx(typeof this.defaults[name] === "object", "Default value is not object");
73
+ return assertEx(this.defaults[name], `Missing Default for ${name}`);
74
+ }
75
+ return parsedStoredValue;
76
+ }
77
+ getString(name) {
78
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
79
+ if (!storedValue) {
80
+ assertDefinedEx(typeof this.defaults[name] === "string", "Default value is not string");
81
+ const defaultValue = this.defaults[name];
82
+ assertEx(defaultValue !== void 0, `Missing Default for ${name}`);
83
+ return defaultValue;
84
+ }
85
+ return storedValue;
86
+ }
87
+ getStringArray(name) {
88
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`)?.split(",");
89
+ if (!storedValue) {
90
+ assertDefinedEx(Array.isArray(this.defaults[name]), "Default value is not array");
91
+ const defaultValue = this.defaults[name];
92
+ assertEx(defaultValue !== void 0, `Missing Default for ${name}`);
93
+ return defaultValue;
94
+ }
95
+ return storedValue;
96
+ }
97
+ setBoolean(name, value) {
98
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
99
+ }
100
+ setNumber(name, value) {
101
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
102
+ }
103
+ setObject(name, value) {
104
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
105
+ }
106
+ setString(name, value) {
107
+ localStorage.setItem(`${this.prefix}|${name}`, value);
108
+ }
109
+ setStringArray(name, value) {
110
+ localStorage.setItem(`${this.prefix}|${name}`, value.join(","));
111
+ }
112
+ };
113
+
114
+ // src/contexts/AppSettings/Storage.ts
115
+ var AppSettingsStorage = class extends AppSettingsStorageBase {
116
+ constructor(prefix = "AppSettings", defaults) {
117
+ super(prefix, { ...appSettingDefault(), ...defaults });
118
+ }
119
+ get darkMode() {
120
+ return this.getBoolean("darkmode" /* DarkMode */);
121
+ }
122
+ set darkMode(value) {
123
+ this.setBoolean("darkmode" /* DarkMode */, value);
124
+ }
125
+ get developerMode() {
126
+ return this.getBoolean("developer" /* Developer */);
127
+ }
128
+ set developerMode(value) {
129
+ this.setBoolean("developer" /* Developer */, value);
130
+ }
131
+ get maxAccounts() {
132
+ return this.getNumber("maxAccounts" /* MaxAccounts */);
133
+ }
134
+ set maxAccounts(value) {
135
+ this.setNumber("maxAccounts" /* MaxAccounts */, value);
136
+ }
137
+ get navigationCollapsed() {
138
+ return this.getBoolean("navigationCollapsed" /* NavigationCollapsed */);
139
+ }
140
+ set navigationCollapsed(value) {
141
+ this.setBoolean("navigationCollapsed" /* NavigationCollapsed */, value);
142
+ }
143
+ get navigationType() {
144
+ return this.getString("navigationType" /* NavigationType */);
145
+ }
146
+ set navigationType(value) {
147
+ this.setString("navigationType" /* NavigationType */, value);
148
+ }
149
+ get seedPhrase() {
150
+ return this.getString("seedPhrase" /* SeedPhrase */);
151
+ }
152
+ set seedPhrase(value) {
153
+ this.setString("seedPhrase" /* SeedPhrase */, value);
154
+ }
155
+ };
156
+
157
+ // src/contexts/AppSettings/Provider.tsx
158
+ import { jsx } from "react/jsx-runtime";
159
+ var AppSettingsProvider = ({
160
+ storage = new AppSettingsStorage(),
161
+ value,
162
+ children,
163
+ ...props
164
+ }) => {
165
+ const [developerMode, setDeveloperMode] = useState(storage.developerMode);
166
+ const [darkMode, setDarkMode] = useState(storage.darkMode);
167
+ const [navigationType, setNavigationType] = useState(storage.navigationType);
168
+ const [navigationCollapsed, setNavigationCollapsed] = useState(storage.navigationCollapsed);
169
+ const [seedPhrase, setSeedPhrase] = useState(storage.seedPhrase);
170
+ const [maxAccounts, setMaxAccounts] = useState(storage.maxAccounts);
171
+ const enableDeveloperMode = (value2) => {
172
+ storage.developerMode = value2;
173
+ setDeveloperMode(storage.developerMode);
174
+ };
175
+ const enableDarkMode = (value2) => {
176
+ storage.darkMode = value2;
177
+ setDarkMode(storage.darkMode);
178
+ };
179
+ const changeNavigationType = (value2) => {
180
+ storage.navigationType = value2;
181
+ setNavigationType(value2);
182
+ };
183
+ const changeNavigationCollapsed = (value2) => {
184
+ storage.navigationCollapsed = value2;
185
+ setNavigationCollapsed(value2);
186
+ };
187
+ const changeSeedPhrase = (value2) => {
188
+ storage.seedPhrase = value2;
189
+ setSeedPhrase(value2);
190
+ };
191
+ const changeMaxAccounts = (value2) => {
192
+ storage.maxAccounts = value2;
193
+ setMaxAccounts(value2);
194
+ };
195
+ return /* @__PURE__ */ jsx(
196
+ AppSettingsContext.Provider,
197
+ {
198
+ value: {
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
+ ...props,
214
+ children
215
+ }
216
+ );
217
+ };
218
+
219
+ // src/contexts/AppSettings/useAppSettings.ts
220
+ import { useContext } from "react";
221
+ var useAppSettings = () => {
222
+ return useContext(AppSettingsContext);
223
+ };
224
+
225
+ // src/components/DarkModeIconButton.tsx
226
+ import { jsx as jsx2 } from "react/jsx-runtime";
227
+ var DarkModeIconButton = (props) => {
228
+ const { darkMode, enableDarkMode } = useAppSettings();
229
+ const handleDarkModeChange = () => {
230
+ enableDarkMode?.(!darkMode);
231
+ };
232
+ return /* @__PURE__ */ jsx2(IconButton, { onClick: handleDarkModeChange, ...props, children: darkMode ? /* @__PURE__ */ jsx2(DarkModeRoundedIcon, {}) : /* @__PURE__ */ jsx2(LightModeRoundedIcon, {}) });
233
+ };
234
+
235
+ // src/components/Developer.tsx
236
+ var Developer = ({ children = null }) => {
237
+ const { developerMode } = useAppSettings();
238
+ return developerMode ? children : null;
239
+ };
240
+ export {
241
+ AppSettingSlug,
242
+ AppSettingsContext,
243
+ AppSettingsProvider,
244
+ AppSettingsStorage,
245
+ AppSettingsStorageBase,
246
+ DarkModeIconButton,
247
+ Developer,
248
+ useAppSettings
249
+ };
250
+ //# sourceMappingURL=index.mjs.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 DarkModeRoundedIcon from '@mui/icons-material/DarkModeRounded'\nimport LightModeRoundedIcon from '@mui/icons-material/LightModeRounded'\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 ? <DarkModeRoundedIcon /> : <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 public 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 public 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 parseFloat(storedValue)\n }\n\n public 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 public 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 public 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 public setBoolean(name: string, value: boolean) {\n localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))\n }\n\n public setNumber(name: string, value: number) {\n localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))\n }\n\n public setObject<T>(name: string, value: T) {\n localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value))\n }\n\n public setString(name: string, value: string) {\n localStorage.setItem(`${this.prefix}|${name}`, value)\n }\n\n public 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"]}