@xyo-network/react-app-settings 2.81.9 → 2.82.0

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 (144) hide show
  1. package/dist/browser/components/DarkModeIconButton.d.cts +1 -0
  2. package/dist/browser/components/DarkModeIconButton.d.cts.map +1 -1
  3. package/dist/browser/components/DarkModeIconButton.d.mts +1 -0
  4. package/dist/browser/components/DarkModeIconButton.d.mts.map +1 -1
  5. package/dist/browser/components/DarkModeIconButton.d.ts +1 -0
  6. package/dist/browser/components/DarkModeIconButton.d.ts.map +1 -1
  7. package/dist/browser/components/index.d.cts +2 -2
  8. package/dist/browser/components/index.d.cts.map +1 -1
  9. package/dist/browser/components/index.d.mts +2 -2
  10. package/dist/browser/components/index.d.mts.map +1 -1
  11. package/dist/browser/components/index.d.ts +2 -2
  12. package/dist/browser/components/index.d.ts.map +1 -1
  13. package/dist/browser/contexts/AppSettings/Context.d.cts +1 -1
  14. package/dist/browser/contexts/AppSettings/Context.d.mts +1 -1
  15. package/dist/browser/contexts/AppSettings/Context.d.ts +1 -1
  16. package/dist/browser/contexts/AppSettings/Provider.d.cts +3 -3
  17. package/dist/browser/contexts/AppSettings/Provider.d.cts.map +1 -1
  18. package/dist/browser/contexts/AppSettings/Provider.d.mts +3 -3
  19. package/dist/browser/contexts/AppSettings/Provider.d.mts.map +1 -1
  20. package/dist/browser/contexts/AppSettings/Provider.d.ts +3 -3
  21. package/dist/browser/contexts/AppSettings/Provider.d.ts.map +1 -1
  22. package/dist/browser/contexts/AppSettings/Storage.d.cts +2 -2
  23. package/dist/browser/contexts/AppSettings/Storage.d.mts +2 -2
  24. package/dist/browser/contexts/AppSettings/Storage.d.ts +2 -2
  25. package/dist/browser/contexts/AppSettings/index.d.cts +6 -6
  26. package/dist/browser/contexts/AppSettings/index.d.cts.map +1 -1
  27. package/dist/browser/contexts/AppSettings/index.d.mts +6 -6
  28. package/dist/browser/contexts/AppSettings/index.d.mts.map +1 -1
  29. package/dist/browser/contexts/AppSettings/index.d.ts +6 -6
  30. package/dist/browser/contexts/AppSettings/index.d.ts.map +1 -1
  31. package/dist/browser/contexts/AppSettings/useAppSettings.d.cts +1 -1
  32. package/dist/browser/contexts/AppSettings/useAppSettings.d.mts +1 -1
  33. package/dist/browser/contexts/AppSettings/useAppSettings.d.ts +1 -1
  34. package/dist/browser/contexts/index.d.cts +1 -1
  35. package/dist/browser/contexts/index.d.mts +1 -1
  36. package/dist/browser/contexts/index.d.ts +1 -1
  37. package/dist/browser/index.cjs +108 -91
  38. package/dist/browser/index.cjs.map +1 -1
  39. package/dist/browser/index.d.cts +3 -3
  40. package/dist/browser/index.d.mts +3 -3
  41. package/dist/browser/index.d.ts +3 -3
  42. package/dist/browser/{index.js → index.mjs} +101 -92
  43. package/dist/browser/index.mjs.map +1 -0
  44. package/dist/neutral/components/DarkModeIconButton.d.cts +1 -0
  45. package/dist/neutral/components/DarkModeIconButton.d.cts.map +1 -1
  46. package/dist/neutral/components/DarkModeIconButton.d.mts +1 -0
  47. package/dist/neutral/components/DarkModeIconButton.d.mts.map +1 -1
  48. package/dist/neutral/components/DarkModeIconButton.d.ts +1 -0
  49. package/dist/neutral/components/DarkModeIconButton.d.ts.map +1 -1
  50. package/dist/neutral/components/index.d.cts +2 -2
  51. package/dist/neutral/components/index.d.cts.map +1 -1
  52. package/dist/neutral/components/index.d.mts +2 -2
  53. package/dist/neutral/components/index.d.mts.map +1 -1
  54. package/dist/neutral/components/index.d.ts +2 -2
  55. package/dist/neutral/components/index.d.ts.map +1 -1
  56. package/dist/neutral/contexts/AppSettings/Context.d.cts +1 -1
  57. package/dist/neutral/contexts/AppSettings/Context.d.mts +1 -1
  58. package/dist/neutral/contexts/AppSettings/Context.d.ts +1 -1
  59. package/dist/neutral/contexts/AppSettings/Provider.d.cts +3 -3
  60. package/dist/neutral/contexts/AppSettings/Provider.d.cts.map +1 -1
  61. package/dist/neutral/contexts/AppSettings/Provider.d.mts +3 -3
  62. package/dist/neutral/contexts/AppSettings/Provider.d.mts.map +1 -1
  63. package/dist/neutral/contexts/AppSettings/Provider.d.ts +3 -3
  64. package/dist/neutral/contexts/AppSettings/Provider.d.ts.map +1 -1
  65. package/dist/neutral/contexts/AppSettings/Storage.d.cts +2 -2
  66. package/dist/neutral/contexts/AppSettings/Storage.d.mts +2 -2
  67. package/dist/neutral/contexts/AppSettings/Storage.d.ts +2 -2
  68. package/dist/neutral/contexts/AppSettings/index.d.cts +6 -6
  69. package/dist/neutral/contexts/AppSettings/index.d.cts.map +1 -1
  70. package/dist/neutral/contexts/AppSettings/index.d.mts +6 -6
  71. package/dist/neutral/contexts/AppSettings/index.d.mts.map +1 -1
  72. package/dist/neutral/contexts/AppSettings/index.d.ts +6 -6
  73. package/dist/neutral/contexts/AppSettings/index.d.ts.map +1 -1
  74. package/dist/neutral/contexts/AppSettings/useAppSettings.d.cts +1 -1
  75. package/dist/neutral/contexts/AppSettings/useAppSettings.d.mts +1 -1
  76. package/dist/neutral/contexts/AppSettings/useAppSettings.d.ts +1 -1
  77. package/dist/neutral/contexts/index.d.cts +1 -1
  78. package/dist/neutral/contexts/index.d.mts +1 -1
  79. package/dist/neutral/contexts/index.d.ts +1 -1
  80. package/dist/neutral/index.cjs +108 -91
  81. package/dist/neutral/index.cjs.map +1 -1
  82. package/dist/neutral/index.d.cts +3 -3
  83. package/dist/neutral/index.d.mts +3 -3
  84. package/dist/neutral/index.d.ts +3 -3
  85. package/dist/neutral/{index.js → index.mjs} +101 -92
  86. package/dist/neutral/index.mjs.map +1 -0
  87. package/dist/node/components/DarkModeIconButton.d.cts +1 -0
  88. package/dist/node/components/DarkModeIconButton.d.cts.map +1 -1
  89. package/dist/node/components/DarkModeIconButton.d.mts +1 -0
  90. package/dist/node/components/DarkModeIconButton.d.mts.map +1 -1
  91. package/dist/node/components/DarkModeIconButton.d.ts +1 -0
  92. package/dist/node/components/DarkModeIconButton.d.ts.map +1 -1
  93. package/dist/node/components/index.d.cts +2 -2
  94. package/dist/node/components/index.d.cts.map +1 -1
  95. package/dist/node/components/index.d.mts +2 -2
  96. package/dist/node/components/index.d.mts.map +1 -1
  97. package/dist/node/components/index.d.ts +2 -2
  98. package/dist/node/components/index.d.ts.map +1 -1
  99. package/dist/node/contexts/AppSettings/Context.d.cts +1 -1
  100. package/dist/node/contexts/AppSettings/Context.d.mts +1 -1
  101. package/dist/node/contexts/AppSettings/Context.d.ts +1 -1
  102. package/dist/node/contexts/AppSettings/Provider.d.cts +3 -3
  103. package/dist/node/contexts/AppSettings/Provider.d.cts.map +1 -1
  104. package/dist/node/contexts/AppSettings/Provider.d.mts +3 -3
  105. package/dist/node/contexts/AppSettings/Provider.d.mts.map +1 -1
  106. package/dist/node/contexts/AppSettings/Provider.d.ts +3 -3
  107. package/dist/node/contexts/AppSettings/Provider.d.ts.map +1 -1
  108. package/dist/node/contexts/AppSettings/Storage.d.cts +2 -2
  109. package/dist/node/contexts/AppSettings/Storage.d.mts +2 -2
  110. package/dist/node/contexts/AppSettings/Storage.d.ts +2 -2
  111. package/dist/node/contexts/AppSettings/index.d.cts +6 -6
  112. package/dist/node/contexts/AppSettings/index.d.cts.map +1 -1
  113. package/dist/node/contexts/AppSettings/index.d.mts +6 -6
  114. package/dist/node/contexts/AppSettings/index.d.mts.map +1 -1
  115. package/dist/node/contexts/AppSettings/index.d.ts +6 -6
  116. package/dist/node/contexts/AppSettings/index.d.ts.map +1 -1
  117. package/dist/node/contexts/AppSettings/useAppSettings.d.cts +1 -1
  118. package/dist/node/contexts/AppSettings/useAppSettings.d.mts +1 -1
  119. package/dist/node/contexts/AppSettings/useAppSettings.d.ts +1 -1
  120. package/dist/node/contexts/index.d.cts +1 -1
  121. package/dist/node/contexts/index.d.mts +1 -1
  122. package/dist/node/contexts/index.d.ts +1 -1
  123. package/dist/node/index.cjs +108 -93
  124. package/dist/node/index.cjs.map +1 -1
  125. package/dist/node/index.d.cts +3 -3
  126. package/dist/node/index.d.mts +3 -3
  127. package/dist/node/index.d.ts +3 -3
  128. package/dist/node/{index.js → index.mjs} +101 -94
  129. package/dist/node/index.mjs.map +1 -0
  130. package/package.json +9 -9
  131. package/src/components/DarkModeIconButton.tsx +5 -4
  132. package/src/components/Developer.tsx +1 -1
  133. package/src/components/index.ts +2 -2
  134. package/src/contexts/AppSettings/Context.ts +2 -2
  135. package/src/contexts/AppSettings/Provider.tsx +21 -19
  136. package/src/contexts/AppSettings/Storage.ts +4 -4
  137. package/src/contexts/AppSettings/appSettingDefault.ts +1 -1
  138. package/src/contexts/AppSettings/index.ts +6 -6
  139. package/src/contexts/AppSettings/useAppSettings.ts +1 -1
  140. package/src/contexts/index.ts +1 -1
  141. package/src/index.ts +3 -3
  142. package/dist/browser/index.js.map +0 -1
  143. package/dist/neutral/index.js.map +0 -1
  144. package/dist/node/index.js.map +0 -1
@@ -1,43 +1,47 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
1
4
  // src/components/DarkModeIconButton.tsx
2
5
  import { DarkModeRounded as DarkModeRoundedIcon, LightModeRounded as LightModeRoundedIcon } from "@mui/icons-material";
3
6
  import { IconButton } from "@mui/material";
7
+ import React2 from "react";
4
8
 
5
9
  // src/contexts/AppSettings/Context.ts
6
10
  import { createContext } from "react";
7
11
 
8
12
  // src/contexts/AppSettings/Slug.ts
9
- var AppSettingSlug = /* @__PURE__ */ ((AppSettingSlug2) => {
13
+ var AppSettingSlug;
14
+ (function(AppSettingSlug2) {
10
15
  AppSettingSlug2["DarkMode"] = "darkmode";
11
16
  AppSettingSlug2["Developer"] = "developer";
12
17
  AppSettingSlug2["NavigationType"] = "navigationType";
13
18
  AppSettingSlug2["NavigationCollapsed"] = "navigationCollapsed";
14
19
  AppSettingSlug2["SeedPhrase"] = "seedPhrase";
15
20
  AppSettingSlug2["MaxAccounts"] = "maxAccounts";
16
- return AppSettingSlug2;
17
- })(AppSettingSlug || {});
21
+ })(AppSettingSlug || (AppSettingSlug = {}));
18
22
 
19
23
  // src/contexts/AppSettings/appSettingDefault.ts
20
- var appSettingDefault = () => {
24
+ var appSettingDefault = /* @__PURE__ */ __name(() => {
21
25
  return {
22
- ["darkmode" /* DarkMode */]: false,
23
- ["developer" /* Developer */]: false,
24
- ["navigationType" /* NavigationType */]: "menu",
25
- ["navigationCollapsed" /* NavigationCollapsed */]: false,
26
- ["seedPhrase" /* SeedPhrase */]: "",
27
- ["maxAccounts" /* MaxAccounts */]: 1
26
+ [AppSettingSlug.DarkMode]: false,
27
+ [AppSettingSlug.Developer]: false,
28
+ [AppSettingSlug.NavigationType]: "menu",
29
+ [AppSettingSlug.NavigationCollapsed]: false,
30
+ [AppSettingSlug.SeedPhrase]: "",
31
+ [AppSettingSlug.MaxAccounts]: 1
28
32
  };
29
- };
33
+ }, "appSettingDefault");
30
34
 
31
35
  // src/contexts/AppSettings/Context.ts
32
36
  var AppSettingsContext = createContext(appSettingDefault());
33
37
 
34
38
  // src/contexts/AppSettings/Provider.tsx
35
- import { useState } from "react";
39
+ import React, { useMemo, useState } from "react";
36
40
 
37
41
  // src/contexts/AppSettings/StorageBase.ts
38
42
  import { assertEx } from "@xylabs/assert";
39
43
  import { assertDefinedEx } from "@xyo-network/react-shared";
40
- var AppSettingsStorageBase = class {
44
+ var _AppSettingsStorageBase = class _AppSettingsStorageBase {
41
45
  defaults;
42
46
  prefix;
43
47
  constructor(prefix = "AppSettings", defaults) {
@@ -110,133 +114,136 @@ var AppSettingsStorageBase = class {
110
114
  localStorage.setItem(`${this.prefix}|${name}`, value.join(","));
111
115
  }
112
116
  };
117
+ __name(_AppSettingsStorageBase, "AppSettingsStorageBase");
118
+ var AppSettingsStorageBase = _AppSettingsStorageBase;
113
119
 
114
120
  // src/contexts/AppSettings/Storage.ts
115
- var AppSettingsStorage = class extends AppSettingsStorageBase {
121
+ var _AppSettingsStorage = class _AppSettingsStorage extends AppSettingsStorageBase {
116
122
  constructor(prefix = "AppSettings", defaults) {
117
- super(prefix, { ...appSettingDefault(), ...defaults });
123
+ super(prefix, {
124
+ ...appSettingDefault(),
125
+ ...defaults
126
+ });
118
127
  }
119
128
  get darkMode() {
120
- return this.getBoolean("darkmode" /* DarkMode */);
129
+ return this.getBoolean(AppSettingSlug.DarkMode);
121
130
  }
122
131
  set darkMode(value) {
123
- this.setBoolean("darkmode" /* DarkMode */, value);
132
+ this.setBoolean(AppSettingSlug.DarkMode, value);
124
133
  }
125
134
  get developerMode() {
126
- return this.getBoolean("developer" /* Developer */);
135
+ return this.getBoolean(AppSettingSlug.Developer);
127
136
  }
128
137
  set developerMode(value) {
129
- this.setBoolean("developer" /* Developer */, value);
138
+ this.setBoolean(AppSettingSlug.Developer, value);
130
139
  }
131
140
  get maxAccounts() {
132
- return this.getNumber("maxAccounts" /* MaxAccounts */);
141
+ return this.getNumber(AppSettingSlug.MaxAccounts);
133
142
  }
134
143
  set maxAccounts(value) {
135
- this.setNumber("maxAccounts" /* MaxAccounts */, value);
144
+ this.setNumber(AppSettingSlug.MaxAccounts, value);
136
145
  }
137
146
  get navigationCollapsed() {
138
- return this.getBoolean("navigationCollapsed" /* NavigationCollapsed */);
147
+ return this.getBoolean(AppSettingSlug.NavigationCollapsed);
139
148
  }
140
149
  set navigationCollapsed(value) {
141
- this.setBoolean("navigationCollapsed" /* NavigationCollapsed */, value);
150
+ this.setBoolean(AppSettingSlug.NavigationCollapsed, value);
142
151
  }
143
152
  get navigationType() {
144
- return this.getString("navigationType" /* NavigationType */);
153
+ return this.getString(AppSettingSlug.NavigationType);
145
154
  }
146
155
  set navigationType(value) {
147
- this.setString("navigationType" /* NavigationType */, value);
156
+ this.setString(AppSettingSlug.NavigationType, value);
148
157
  }
149
158
  get seedPhrase() {
150
- return this.getString("seedPhrase" /* SeedPhrase */);
159
+ return this.getString(AppSettingSlug.SeedPhrase);
151
160
  }
152
161
  set seedPhrase(value) {
153
- this.setString("seedPhrase" /* SeedPhrase */, value);
162
+ this.setString(AppSettingSlug.SeedPhrase, value);
154
163
  }
155
164
  };
165
+ __name(_AppSettingsStorage, "AppSettingsStorage");
166
+ var AppSettingsStorage = _AppSettingsStorage;
156
167
 
157
168
  // 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;
169
+ var AppSettingsProvider = /* @__PURE__ */ __name(({ storage, value, children, ...props }) => {
170
+ const storageMemo = useMemo(() => storage ?? new AppSettingsStorage(), [
171
+ storage
172
+ ]);
173
+ const [developerMode, setDeveloperMode] = useState(storageMemo.developerMode);
174
+ const [darkMode, setDarkMode] = useState(storageMemo.darkMode);
175
+ const [navigationType, setNavigationType] = useState(storageMemo.navigationType);
176
+ const [navigationCollapsed, setNavigationCollapsed] = useState(storageMemo.navigationCollapsed);
177
+ const [seedPhrase, setSeedPhrase] = useState(storageMemo.seedPhrase);
178
+ const [maxAccounts, setMaxAccounts] = useState(storageMemo.maxAccounts);
179
+ const enableDeveloperMode = /* @__PURE__ */ __name((value2) => {
180
+ storageMemo.developerMode = value2;
181
+ setDeveloperMode(storageMemo.developerMode);
182
+ }, "enableDeveloperMode");
183
+ const enableDarkMode = /* @__PURE__ */ __name((value2) => {
184
+ storageMemo.darkMode = value2;
185
+ setDarkMode(storageMemo.darkMode);
186
+ }, "enableDarkMode");
187
+ const changeNavigationType = /* @__PURE__ */ __name((value2) => {
188
+ storageMemo.navigationType = value2;
181
189
  setNavigationType(value2);
182
- };
183
- const changeNavigationCollapsed = (value2) => {
184
- storage.navigationCollapsed = value2;
190
+ }, "changeNavigationType");
191
+ const changeNavigationCollapsed = /* @__PURE__ */ __name((value2) => {
192
+ storageMemo.navigationCollapsed = value2;
185
193
  setNavigationCollapsed(value2);
186
- };
187
- const changeSeedPhrase = (value2) => {
188
- storage.seedPhrase = value2;
194
+ }, "changeNavigationCollapsed");
195
+ const changeSeedPhrase = /* @__PURE__ */ __name((value2) => {
196
+ storageMemo.seedPhrase = value2;
189
197
  setSeedPhrase(value2);
190
- };
191
- const changeMaxAccounts = (value2) => {
192
- storage.maxAccounts = value2;
198
+ }, "changeSeedPhrase");
199
+ const changeMaxAccounts = /* @__PURE__ */ __name((value2) => {
200
+ storageMemo.maxAccounts = value2;
193
201
  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
- };
202
+ }, "changeMaxAccounts");
203
+ return /* @__PURE__ */ React.createElement(AppSettingsContext.Provider, {
204
+ // eslint-disable-next-line @eslint-react/no-unstable-context-value
205
+ value: {
206
+ changeMaxAccounts,
207
+ changeNavigationCollapsed,
208
+ changeNavigationType,
209
+ changeSeedPhrase,
210
+ darkMode,
211
+ developerMode,
212
+ enableDarkMode,
213
+ enableDeveloperMode,
214
+ maxAccounts,
215
+ navigationCollapsed,
216
+ navigationType,
217
+ seedPhrase,
218
+ ...value
219
+ },
220
+ ...props
221
+ }, children);
222
+ }, "AppSettingsProvider");
218
223
 
219
224
  // src/contexts/AppSettings/useAppSettings.ts
220
225
  import { useContext } from "react";
221
- var useAppSettings = () => {
226
+ var useAppSettings = /* @__PURE__ */ __name(() => {
222
227
  return useContext(AppSettingsContext);
223
- };
228
+ }, "useAppSettings");
224
229
 
225
230
  // src/components/DarkModeIconButton.tsx
226
- import { jsx as jsx2 } from "react/jsx-runtime";
227
- var DarkModeIconButton = (props) => {
231
+ var DarkModeIconButton = /* @__PURE__ */ __name((props) => {
228
232
  const { darkMode, enableDarkMode } = useAppSettings();
229
- const handleDarkModeChange = () => {
233
+ const handleDarkModeChange = /* @__PURE__ */ __name(() => {
230
234
  enableDarkMode == null ? void 0 : enableDarkMode(!darkMode);
231
- };
232
- return /* @__PURE__ */ jsx2(IconButton, { onClick: handleDarkModeChange, ...props, children: darkMode ? /* @__PURE__ */ jsx2(DarkModeRoundedIcon, {}) : /* @__PURE__ */ jsx2(LightModeRoundedIcon, {}) });
233
- };
235
+ }, "handleDarkModeChange");
236
+ return /* @__PURE__ */ React2.createElement(IconButton, {
237
+ onClick: handleDarkModeChange,
238
+ ...props
239
+ }, darkMode ? /* @__PURE__ */ React2.createElement(DarkModeRoundedIcon, null) : /* @__PURE__ */ React2.createElement(LightModeRoundedIcon, null));
240
+ }, "DarkModeIconButton");
234
241
 
235
242
  // src/components/Developer.tsx
236
- var Developer = ({ children = null }) => {
243
+ var Developer = /* @__PURE__ */ __name(({ children = null }) => {
237
244
  const { developerMode } = useAppSettings();
238
245
  return developerMode ? children : null;
239
- };
246
+ }, "Developer");
240
247
  export {
241
248
  AppSettingSlug,
242
249
  AppSettingsContext,
@@ -247,4 +254,4 @@ export {
247
254
  Developer,
248
255
  useAppSettings
249
256
  };
250
- //# sourceMappingURL=index.js.map
257
+ //# 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 { DarkModeRounded as DarkModeRoundedIcon, LightModeRounded as LightModeRoundedIcon } from '@mui/icons-material'\nimport { IconButton, IconButtonProps } from '@mui/material'\nimport React from 'react'\n\nimport { useAppSettings } from '../contexts/index.ts'\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.ts'\nimport { appSettingDefault } from './appSettingDefault.ts'\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.ts'\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 React, { ProviderProps, useMemo, useState } from 'react'\n\nimport { WebAppNavigationType } from '../../WebAppNavigationType.ts'\nimport { AppSettingsContext, AppSettingsContextProps } from './Context.ts'\nimport { AppSettingsStorage } from './Storage.ts'\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,\n value,\n children,\n ...props\n}) => {\n const storageMemo = useMemo(() => storage ?? new AppSettingsStorage(), [storage])\n const [developerMode, setDeveloperMode] = useState(storageMemo.developerMode)\n const [darkMode, setDarkMode] = useState(storageMemo.darkMode)\n const [navigationType, setNavigationType] = useState(storageMemo.navigationType)\n const [navigationCollapsed, setNavigationCollapsed] = useState(storageMemo.navigationCollapsed)\n const [seedPhrase, setSeedPhrase] = useState(storageMemo.seedPhrase)\n const [maxAccounts, setMaxAccounts] = useState(storageMemo.maxAccounts)\n\n const enableDeveloperMode = (value: boolean) => {\n storageMemo.developerMode = value\n setDeveloperMode(storageMemo.developerMode)\n }\n\n const enableDarkMode = (value: boolean) => {\n storageMemo.darkMode = value\n setDarkMode(storageMemo.darkMode)\n }\n\n const changeNavigationType = (value: WebAppNavigationType) => {\n storageMemo.navigationType = value\n setNavigationType(value)\n }\n\n const changeNavigationCollapsed = (value: boolean) => {\n storageMemo.navigationCollapsed = value\n setNavigationCollapsed(value)\n }\n\n const changeSeedPhrase = (value: string) => {\n storageMemo.seedPhrase = value\n setSeedPhrase(value)\n }\n\n const changeMaxAccounts = (value: number) => {\n storageMemo.maxAccounts = value\n setMaxAccounts(value)\n }\n\n return (\n <AppSettingsContext.Provider\n // eslint-disable-next-line @eslint-react/no-unstable-context-value\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.ts'\nimport { appSettingDefault } from './appSettingDefault.ts'\nimport { AppSettingSlug } from './Slug.ts'\nimport { AppSettingsStorageBase } from './StorageBase.ts'\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.ts'\n\nexport const useAppSettings = () => {\n return useContext(AppSettingsContext)\n}\n","import { ReactElement } from 'react'\n\nimport { useAppSettings } from '../contexts/index.ts'\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":["DarkModeRounded","DarkModeRoundedIcon","LightModeRounded","LightModeRoundedIcon","IconButton","React","createContext","AppSettingSlug","appSettingDefault","AppSettingSlug","DarkMode","Developer","NavigationType","NavigationCollapsed","SeedPhrase","MaxAccounts","AppSettingsContext","createContext","appSettingDefault","React","useMemo","useState","assertEx","assertDefinedEx","AppSettingsStorageBase","defaults","prefix","constructor","getBoolean","name","storedValue","localStorage","getItem","assertEx","defaultValue","undefined","getNumber","Number","parseFloat","getObject","parsedStoredValue","JSON","parse","getString","assertDefinedEx","getStringArray","split","Array","isArray","setBoolean","value","setItem","stringify","setNumber","setObject","setString","setStringArray","join","AppSettingsStorage","AppSettingsStorageBase","constructor","prefix","defaults","appSettingDefault","darkMode","getBoolean","AppSettingSlug","DarkMode","value","setBoolean","developerMode","Developer","maxAccounts","getNumber","MaxAccounts","setNumber","navigationCollapsed","NavigationCollapsed","navigationType","getString","NavigationType","setString","seedPhrase","SeedPhrase","AppSettingsProvider","storage","value","children","props","storageMemo","useMemo","AppSettingsStorage","developerMode","setDeveloperMode","useState","darkMode","setDarkMode","navigationType","setNavigationType","navigationCollapsed","setNavigationCollapsed","seedPhrase","setSeedPhrase","maxAccounts","setMaxAccounts","enableDeveloperMode","enableDarkMode","changeNavigationType","changeNavigationCollapsed","changeSeedPhrase","changeMaxAccounts","AppSettingsContext","Provider","useContext","useAppSettings","useContext","AppSettingsContext","DarkModeIconButton","props","darkMode","enableDarkMode","useAppSettings","handleDarkModeChange","React","IconButton","onClick","DarkModeRoundedIcon","LightModeRoundedIcon","Developer","children","developerMode","useAppSettings"]}
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.6.4",
14
- "@xylabs/react-shared": "^3.4.1",
15
- "@xyo-network/react-shared": "^2.81.9"
13
+ "@xylabs/assert": "^3.6.12",
14
+ "@xylabs/react-shared": "^3.4.2",
15
+ "@xyo-network/react-shared": "^2.82.0"
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.12.4",
25
+ "@xylabs/ts-scripts-yarn3": "^3.15.16",
26
26
  "typescript": "^5.5.4"
27
27
  },
28
28
  "description": "Common React library for all XYO projects that use React",
@@ -32,7 +32,7 @@
32
32
  "node": {
33
33
  "import": {
34
34
  "types": "./dist/node/index.d.mts",
35
- "default": "./dist/node/index.js"
35
+ "default": "./dist/node/index.mjs"
36
36
  },
37
37
  "require": {
38
38
  "types": "./dist/node/index.d.cts",
@@ -42,19 +42,19 @@
42
42
  "browser": {
43
43
  "import": {
44
44
  "types": "./dist/browser/index.d.mts",
45
- "default": "./dist/browser/index.js"
45
+ "default": "./dist/browser/index.mjs"
46
46
  },
47
47
  "require": {
48
48
  "types": "./dist/browser/index.d.cts",
49
49
  "default": "./dist/browser/index.cjs"
50
50
  }
51
51
  },
52
- "default": "./dist/browser/index.js"
52
+ "default": "./dist/browser/index.mjs"
53
53
  },
54
54
  "./package.json": "./package.json"
55
55
  },
56
56
  "main": "dist/browser/index.cjs",
57
- "module": "dist/browser/index.js",
57
+ "module": "dist/browser/index.mjs",
58
58
  "homepage": "https://xyo.network",
59
59
  "keywords": [
60
60
  "xyo",
@@ -76,6 +76,6 @@
76
76
  },
77
77
  "sideEffects": false,
78
78
  "types": "dist/browser/index.d.ts",
79
- "version": "2.81.9",
79
+ "version": "2.82.0",
80
80
  "type": "module"
81
81
  }
@@ -1,7 +1,8 @@
1
1
  import { DarkModeRounded as DarkModeRoundedIcon, LightModeRounded as LightModeRoundedIcon } from '@mui/icons-material'
2
2
  import { IconButton, IconButtonProps } from '@mui/material'
3
+ import React from 'react'
3
4
 
4
- import { useAppSettings } from '../contexts/index.js'
5
+ import { useAppSettings } from '../contexts/index.ts'
5
6
 
6
7
  export const DarkModeIconButton: React.FC<IconButtonProps> = (props) => {
7
8
  const { darkMode, enableDarkMode } = useAppSettings()
@@ -12,9 +13,9 @@ export const DarkModeIconButton: React.FC<IconButtonProps> = (props) => {
12
13
 
13
14
  return (
14
15
  <IconButton onClick={handleDarkModeChange} {...props}>
15
- {darkMode ?
16
- <DarkModeRoundedIcon />
17
- : <LightModeRoundedIcon />}
16
+ {darkMode
17
+ ? <DarkModeRoundedIcon />
18
+ : <LightModeRoundedIcon />}
18
19
  </IconButton>
19
20
  )
20
21
  }
@@ -1,6 +1,6 @@
1
1
  import { ReactElement } from 'react'
2
2
 
3
- import { useAppSettings } from '../contexts/index.js'
3
+ import { useAppSettings } from '../contexts/index.ts'
4
4
 
5
5
  export const Developer: React.FC<{ children: ReactElement }> = ({ children = null }) => {
6
6
  const { developerMode } = useAppSettings()
@@ -1,2 +1,2 @@
1
- export * from './DarkModeIconButton.js'
2
- export * from './Developer.js'
1
+ export * from './DarkModeIconButton.tsx'
2
+ export * from './Developer.tsx'
@@ -1,7 +1,7 @@
1
1
  import { createContext } from 'react'
2
2
 
3
- import { WebAppNavigationType } from '../../WebAppNavigationType.js'
4
- import { appSettingDefault } from './appSettingDefault.js'
3
+ import { WebAppNavigationType } from '../../WebAppNavigationType.ts'
4
+ import { appSettingDefault } from './appSettingDefault.ts'
5
5
 
6
6
  export interface AppSettingsContextProps {
7
7
  changeMaxAccounts?: (value: number) => void
@@ -1,59 +1,61 @@
1
1
  import { WithChildren } from '@xylabs/react-shared'
2
- import { ProviderProps, useState } from 'react'
2
+ import React, { ProviderProps, useMemo, useState } from 'react'
3
3
 
4
- import { WebAppNavigationType } from '../../WebAppNavigationType.js'
5
- import { AppSettingsContext, AppSettingsContextProps } from './Context.js'
6
- import { AppSettingsStorage } from './Storage.js'
4
+ import { WebAppNavigationType } from '../../WebAppNavigationType.ts'
5
+ import { AppSettingsContext, AppSettingsContextProps } from './Context.ts'
6
+ import { AppSettingsStorage } from './Storage.ts'
7
7
 
8
8
  export interface AppSettingsProviderProps<T extends AppSettingsContextProps = AppSettingsContextProps> extends ProviderProps<T> {
9
9
  storage?: AppSettingsStorage
10
10
  }
11
11
 
12
12
  export const AppSettingsProvider: React.FC<WithChildren<AppSettingsProviderProps>> = ({
13
- storage = new AppSettingsStorage(),
13
+ storage,
14
14
  value,
15
15
  children,
16
16
  ...props
17
17
  }) => {
18
- const [developerMode, setDeveloperMode] = useState(storage.developerMode)
19
- const [darkMode, setDarkMode] = useState(storage.darkMode)
20
- const [navigationType, setNavigationType] = useState(storage.navigationType)
21
- const [navigationCollapsed, setNavigationCollapsed] = useState(storage.navigationCollapsed)
22
- const [seedPhrase, setSeedPhrase] = useState(storage.seedPhrase)
23
- const [maxAccounts, setMaxAccounts] = useState(storage.maxAccounts)
18
+ const storageMemo = useMemo(() => storage ?? new AppSettingsStorage(), [storage])
19
+ const [developerMode, setDeveloperMode] = useState(storageMemo.developerMode)
20
+ const [darkMode, setDarkMode] = useState(storageMemo.darkMode)
21
+ const [navigationType, setNavigationType] = useState(storageMemo.navigationType)
22
+ const [navigationCollapsed, setNavigationCollapsed] = useState(storageMemo.navigationCollapsed)
23
+ const [seedPhrase, setSeedPhrase] = useState(storageMemo.seedPhrase)
24
+ const [maxAccounts, setMaxAccounts] = useState(storageMemo.maxAccounts)
24
25
 
25
26
  const enableDeveloperMode = (value: boolean) => {
26
- storage.developerMode = value
27
- setDeveloperMode(storage.developerMode)
27
+ storageMemo.developerMode = value
28
+ setDeveloperMode(storageMemo.developerMode)
28
29
  }
29
30
 
30
31
  const enableDarkMode = (value: boolean) => {
31
- storage.darkMode = value
32
- setDarkMode(storage.darkMode)
32
+ storageMemo.darkMode = value
33
+ setDarkMode(storageMemo.darkMode)
33
34
  }
34
35
 
35
36
  const changeNavigationType = (value: WebAppNavigationType) => {
36
- storage.navigationType = value
37
+ storageMemo.navigationType = value
37
38
  setNavigationType(value)
38
39
  }
39
40
 
40
41
  const changeNavigationCollapsed = (value: boolean) => {
41
- storage.navigationCollapsed = value
42
+ storageMemo.navigationCollapsed = value
42
43
  setNavigationCollapsed(value)
43
44
  }
44
45
 
45
46
  const changeSeedPhrase = (value: string) => {
46
- storage.seedPhrase = value
47
+ storageMemo.seedPhrase = value
47
48
  setSeedPhrase(value)
48
49
  }
49
50
 
50
51
  const changeMaxAccounts = (value: number) => {
51
- storage.maxAccounts = value
52
+ storageMemo.maxAccounts = value
52
53
  setMaxAccounts(value)
53
54
  }
54
55
 
55
56
  return (
56
57
  <AppSettingsContext.Provider
58
+ // eslint-disable-next-line @eslint-react/no-unstable-context-value
57
59
  value={{
58
60
  changeMaxAccounts,
59
61
  changeNavigationCollapsed,
@@ -1,7 +1,7 @@
1
- import { WebAppNavigationType } from '../../WebAppNavigationType.js'
2
- import { appSettingDefault } from './appSettingDefault.js'
3
- import { AppSettingSlug } from './Slug.js'
4
- import { AppSettingsStorageBase } from './StorageBase.js'
1
+ import { WebAppNavigationType } from '../../WebAppNavigationType.ts'
2
+ import { appSettingDefault } from './appSettingDefault.ts'
3
+ import { AppSettingSlug } from './Slug.ts'
4
+ import { AppSettingsStorageBase } from './StorageBase.ts'
5
5
 
6
6
  export class AppSettingsStorage extends AppSettingsStorageBase {
7
7
  constructor(prefix = 'AppSettings', defaults?: Record<string, unknown>) {
@@ -1,4 +1,4 @@
1
- import { AppSettingSlug } from './Slug.js'
1
+ import { AppSettingSlug } from './Slug.ts'
2
2
 
3
3
  export const appSettingDefault = (): Record<string, unknown> => {
4
4
  return {
@@ -1,6 +1,6 @@
1
- export * from './Context.js'
2
- export * from './Provider.js'
3
- export * from './Slug.js'
4
- export * from './Storage.js'
5
- export * from './StorageBase.js'
6
- export * from './useAppSettings.js'
1
+ export * from './Context.ts'
2
+ export * from './Provider.tsx'
3
+ export * from './Slug.ts'
4
+ export * from './Storage.ts'
5
+ export * from './StorageBase.ts'
6
+ export * from './useAppSettings.ts'
@@ -1,6 +1,6 @@
1
1
  import { useContext } from 'react'
2
2
 
3
- import { AppSettingsContext } from './Context.js'
3
+ import { AppSettingsContext } from './Context.ts'
4
4
 
5
5
  export const useAppSettings = () => {
6
6
  return useContext(AppSettingsContext)
@@ -1 +1 @@
1
- export * from './AppSettings/index.js'
1
+ export * from './AppSettings/index.ts'
package/src/index.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './components/index.js'
2
- export * from './contexts/index.js'
3
- export * from './WebAppNavigationType.js'
1
+ export * from './components/index.ts'
2
+ export * from './contexts/index.ts'
3
+ export * from './WebAppNavigationType.ts'
@@ -1 +0,0 @@
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/index.js'\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.js'\nimport { appSettingDefault } from './appSettingDefault.js'\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.js'\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.js'\nimport { AppSettingsContext, AppSettingsContextProps } from './Context.js'\nimport { AppSettingsStorage } from './Storage.js'\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.js'\nimport { appSettingDefault } from './appSettingDefault.js'\nimport { AppSettingSlug } from './Slug.js'\nimport { AppSettingsStorageBase } from './StorageBase.js'\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.js'\n\nexport const useAppSettings = () => {\n return useContext(AppSettingsContext)\n}\n","import { ReactElement } from 'react'\n\nimport { useAppSettings } from '../contexts/index.js'\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"]}