@xyo-network/react-app-settings 2.63.1 → 2.64.0-rc.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 (130) 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/index.d.mts.map +1 -0
  41. package/dist/{esm/index.js → index.d.ts} +1 -1
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +283 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/index.mjs +249 -0
  46. package/dist/index.mjs.map +1 -0
  47. package/package.json +25 -16
  48. package/src/components/DarkModeIconButton.tsx +1 -2
  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/docs.json +0 -4102
  78. package/dist/esm/WebAppNavigationType.js +0 -2
  79. package/dist/esm/WebAppNavigationType.js.map +0 -1
  80. package/dist/esm/components/DarkModeIconButton.js +0 -13
  81. package/dist/esm/components/DarkModeIconButton.js.map +0 -1
  82. package/dist/esm/components/Developer.js +0 -6
  83. package/dist/esm/components/Developer.js.map +0 -1
  84. package/dist/esm/components/index.js.map +0 -1
  85. package/dist/esm/contexts/AppSettings/Context.js +0 -4
  86. package/dist/esm/contexts/AppSettings/Context.js.map +0 -1
  87. package/dist/esm/contexts/AppSettings/Provider.js +0 -52
  88. package/dist/esm/contexts/AppSettings/Provider.js.map +0 -1
  89. package/dist/esm/contexts/AppSettings/Slug.js +0 -10
  90. package/dist/esm/contexts/AppSettings/Slug.js.map +0 -1
  91. package/dist/esm/contexts/AppSettings/Storage.js +0 -45
  92. package/dist/esm/contexts/AppSettings/Storage.js.map +0 -1
  93. package/dist/esm/contexts/AppSettings/StorageBase.js +0 -75
  94. package/dist/esm/contexts/AppSettings/StorageBase.js.map +0 -1
  95. package/dist/esm/contexts/AppSettings/appSettingDefault.js +0 -12
  96. package/dist/esm/contexts/AppSettings/appSettingDefault.js.map +0 -1
  97. package/dist/esm/contexts/AppSettings/index.js.map +0 -1
  98. package/dist/esm/contexts/AppSettings/useAppSettings.js +0 -6
  99. package/dist/esm/contexts/AppSettings/useAppSettings.js.map +0 -1
  100. package/dist/esm/contexts/index.js +0 -2
  101. package/dist/esm/contexts/index.js.map +0 -1
  102. package/dist/esm/index.js.map +0 -1
  103. package/dist/types/WebAppNavigationType.d.ts.map +0 -1
  104. package/dist/types/components/DarkModeIconButton.d.ts.map +0 -1
  105. package/dist/types/components/Developer.d.ts.map +0 -1
  106. package/dist/types/components/index.d.ts.map +0 -1
  107. package/dist/types/contexts/AppSettings/Context.d.ts.map +0 -1
  108. package/dist/types/contexts/AppSettings/Provider.d.ts.map +0 -1
  109. package/dist/types/contexts/AppSettings/Slug.d.ts.map +0 -1
  110. package/dist/types/contexts/AppSettings/Storage.d.ts.map +0 -1
  111. package/dist/types/contexts/AppSettings/StorageBase.d.ts.map +0 -1
  112. package/dist/types/contexts/AppSettings/appSettingDefault.d.ts.map +0 -1
  113. package/dist/types/contexts/AppSettings/index.d.ts.map +0 -1
  114. package/dist/types/contexts/AppSettings/useAppSettings.d.ts.map +0 -1
  115. package/dist/types/contexts/index.d.ts.map +0 -1
  116. package/dist/types/index.d.ts.map +0 -1
  117. /package/dist/{types/WebAppNavigationType.d.ts → WebAppNavigationType.d.mts} +0 -0
  118. /package/dist/{types/components/DarkModeIconButton.d.ts → components/DarkModeIconButton.d.mts} +0 -0
  119. /package/dist/{types/components/Developer.d.ts → components/Developer.d.mts} +0 -0
  120. /package/dist/{types/components/index.d.ts → components/index.d.mts} +0 -0
  121. /package/dist/{types/contexts/AppSettings/Context.d.ts → contexts/AppSettings/Context.d.mts} +0 -0
  122. /package/dist/{types/contexts/AppSettings/Provider.d.ts → contexts/AppSettings/Provider.d.mts} +0 -0
  123. /package/dist/{types/contexts/AppSettings/Slug.d.ts → contexts/AppSettings/Slug.d.mts} +0 -0
  124. /package/dist/{types/contexts/AppSettings/Storage.d.ts → contexts/AppSettings/Storage.d.mts} +0 -0
  125. /package/dist/{types/contexts/AppSettings/StorageBase.d.ts → contexts/AppSettings/StorageBase.d.mts} +0 -0
  126. /package/dist/{types/contexts/AppSettings/appSettingDefault.d.ts → contexts/AppSettings/appSettingDefault.d.mts} +0 -0
  127. /package/dist/{types/contexts/AppSettings/index.d.ts → contexts/AppSettings/index.d.mts} +0 -0
  128. /package/dist/{types/contexts/AppSettings/useAppSettings.d.ts → contexts/AppSettings/useAppSettings.d.mts} +0 -0
  129. /package/dist/{types/contexts/index.d.ts → contexts/index.d.mts} +0 -0
  130. /package/dist/{types/index.d.ts → index.d.mts} +0 -0
package/dist/index.mjs ADDED
@@ -0,0 +1,249 @@
1
+ // src/components/DarkModeIconButton.tsx
2
+ import { DarkModeRounded as DarkModeRoundedIcon, LightModeRounded as LightModeRoundedIcon } from "@mui/icons-material";
3
+ import { IconButton } from "@mui/material";
4
+
5
+ // src/contexts/AppSettings/Context.ts
6
+ import { createContext } from "react";
7
+
8
+ // src/contexts/AppSettings/Slug.ts
9
+ var AppSettingSlug = /* @__PURE__ */ ((AppSettingSlug2) => {
10
+ AppSettingSlug2["DarkMode"] = "darkmode";
11
+ AppSettingSlug2["Developer"] = "developer";
12
+ AppSettingSlug2["NavigationType"] = "navigationType";
13
+ AppSettingSlug2["NavigationCollapsed"] = "navigationCollapsed";
14
+ AppSettingSlug2["SeedPhrase"] = "seedPhrase";
15
+ AppSettingSlug2["MaxAccounts"] = "maxAccounts";
16
+ return AppSettingSlug2;
17
+ })(AppSettingSlug || {});
18
+
19
+ // src/contexts/AppSettings/appSettingDefault.ts
20
+ var appSettingDefault = () => {
21
+ return {
22
+ ["darkmode" /* DarkMode */]: false,
23
+ ["developer" /* Developer */]: false,
24
+ ["navigationType" /* NavigationType */]: "menu",
25
+ ["navigationCollapsed" /* NavigationCollapsed */]: false,
26
+ ["seedPhrase" /* SeedPhrase */]: "",
27
+ ["maxAccounts" /* MaxAccounts */]: 1
28
+ };
29
+ };
30
+
31
+ // src/contexts/AppSettings/Context.ts
32
+ var AppSettingsContext = createContext(appSettingDefault());
33
+
34
+ // src/contexts/AppSettings/Provider.tsx
35
+ import { useState } from "react";
36
+
37
+ // src/contexts/AppSettings/StorageBase.ts
38
+ import { assertEx } from "@xylabs/assert";
39
+ import { assertDefinedEx } from "@xyo-network/react-shared";
40
+ var AppSettingsStorageBase = class {
41
+ defaults;
42
+ prefix;
43
+ constructor(prefix = "AppSettings", defaults) {
44
+ this.prefix = prefix;
45
+ this.defaults = defaults ?? {};
46
+ }
47
+ getBoolean(name) {
48
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
49
+ if (!storedValue) {
50
+ assertEx(typeof this.defaults[name] === "boolean", "Default value is not boolean");
51
+ const defaultValue = this.defaults[name];
52
+ assertEx(defaultValue !== void 0, `Missing Default for ${name}`);
53
+ return defaultValue;
54
+ }
55
+ return storedValue !== "false";
56
+ }
57
+ getNumber(name) {
58
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
59
+ if (!storedValue) {
60
+ assertEx(typeof this.defaults[name] === "number", "Default value is not a number");
61
+ const defaultValue = this.defaults[name];
62
+ assertEx(defaultValue !== void 0, `Missing Default for ${name}`);
63
+ return defaultValue;
64
+ }
65
+ return parseFloat(storedValue);
66
+ }
67
+ getObject(name) {
68
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
69
+ const parsedStoredValue = storedValue ? JSON.parse(storedValue) : null;
70
+ if (!parsedStoredValue) {
71
+ assertEx(typeof this.defaults[name] === "object", "Default value is not object");
72
+ return assertEx(this.defaults[name], `Missing Default for ${name}`);
73
+ }
74
+ return parsedStoredValue;
75
+ }
76
+ getString(name) {
77
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
78
+ if (!storedValue) {
79
+ assertDefinedEx(typeof this.defaults[name] === "string", "Default value is not string");
80
+ const defaultValue = this.defaults[name];
81
+ assertEx(defaultValue !== void 0, `Missing Default for ${name}`);
82
+ return defaultValue;
83
+ }
84
+ return storedValue;
85
+ }
86
+ getStringArray(name) {
87
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`)?.split(",");
88
+ if (!storedValue) {
89
+ assertDefinedEx(Array.isArray(this.defaults[name]), "Default value is not array");
90
+ const defaultValue = this.defaults[name];
91
+ assertEx(defaultValue !== void 0, `Missing Default for ${name}`);
92
+ return defaultValue;
93
+ }
94
+ return storedValue;
95
+ }
96
+ setBoolean(name, value) {
97
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
98
+ }
99
+ setNumber(name, value) {
100
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
101
+ }
102
+ setObject(name, value) {
103
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
104
+ }
105
+ setString(name, value) {
106
+ localStorage.setItem(`${this.prefix}|${name}`, value);
107
+ }
108
+ setStringArray(name, value) {
109
+ localStorage.setItem(`${this.prefix}|${name}`, value.join(","));
110
+ }
111
+ };
112
+
113
+ // src/contexts/AppSettings/Storage.ts
114
+ var AppSettingsStorage = class extends AppSettingsStorageBase {
115
+ constructor(prefix = "AppSettings", defaults) {
116
+ super(prefix, { ...appSettingDefault(), ...defaults });
117
+ }
118
+ get darkMode() {
119
+ return this.getBoolean("darkmode" /* DarkMode */);
120
+ }
121
+ set darkMode(value) {
122
+ this.setBoolean("darkmode" /* DarkMode */, value);
123
+ }
124
+ get developerMode() {
125
+ return this.getBoolean("developer" /* Developer */);
126
+ }
127
+ set developerMode(value) {
128
+ this.setBoolean("developer" /* Developer */, value);
129
+ }
130
+ get maxAccounts() {
131
+ return this.getNumber("maxAccounts" /* MaxAccounts */);
132
+ }
133
+ set maxAccounts(value) {
134
+ this.setNumber("maxAccounts" /* MaxAccounts */, value);
135
+ }
136
+ get navigationCollapsed() {
137
+ return this.getBoolean("navigationCollapsed" /* NavigationCollapsed */);
138
+ }
139
+ set navigationCollapsed(value) {
140
+ this.setBoolean("navigationCollapsed" /* NavigationCollapsed */, value);
141
+ }
142
+ get navigationType() {
143
+ return this.getString("navigationType" /* NavigationType */);
144
+ }
145
+ set navigationType(value) {
146
+ this.setString("navigationType" /* NavigationType */, value);
147
+ }
148
+ get seedPhrase() {
149
+ return this.getString("seedPhrase" /* SeedPhrase */);
150
+ }
151
+ set seedPhrase(value) {
152
+ this.setString("seedPhrase" /* SeedPhrase */, value);
153
+ }
154
+ };
155
+
156
+ // src/contexts/AppSettings/Provider.tsx
157
+ import { jsx } from "react/jsx-runtime";
158
+ var AppSettingsProvider = ({
159
+ storage = new AppSettingsStorage(),
160
+ value,
161
+ children,
162
+ ...props
163
+ }) => {
164
+ const [developerMode, setDeveloperMode] = useState(storage.developerMode);
165
+ const [darkMode, setDarkMode] = useState(storage.darkMode);
166
+ const [navigationType, setNavigationType] = useState(storage.navigationType);
167
+ const [navigationCollapsed, setNavigationCollapsed] = useState(storage.navigationCollapsed);
168
+ const [seedPhrase, setSeedPhrase] = useState(storage.seedPhrase);
169
+ const [maxAccounts, setMaxAccounts] = useState(storage.maxAccounts);
170
+ const enableDeveloperMode = (value2) => {
171
+ storage.developerMode = value2;
172
+ setDeveloperMode(storage.developerMode);
173
+ };
174
+ const enableDarkMode = (value2) => {
175
+ storage.darkMode = value2;
176
+ setDarkMode(storage.darkMode);
177
+ };
178
+ const changeNavigationType = (value2) => {
179
+ storage.navigationType = value2;
180
+ setNavigationType(value2);
181
+ };
182
+ const changeNavigationCollapsed = (value2) => {
183
+ storage.navigationCollapsed = value2;
184
+ setNavigationCollapsed(value2);
185
+ };
186
+ const changeSeedPhrase = (value2) => {
187
+ storage.seedPhrase = value2;
188
+ setSeedPhrase(value2);
189
+ };
190
+ const changeMaxAccounts = (value2) => {
191
+ storage.maxAccounts = value2;
192
+ setMaxAccounts(value2);
193
+ };
194
+ return /* @__PURE__ */ jsx(
195
+ AppSettingsContext.Provider,
196
+ {
197
+ value: {
198
+ changeMaxAccounts,
199
+ changeNavigationCollapsed,
200
+ changeNavigationType,
201
+ changeSeedPhrase,
202
+ darkMode,
203
+ developerMode,
204
+ enableDarkMode,
205
+ enableDeveloperMode,
206
+ maxAccounts,
207
+ navigationCollapsed,
208
+ navigationType,
209
+ seedPhrase,
210
+ ...value
211
+ },
212
+ ...props,
213
+ children
214
+ }
215
+ );
216
+ };
217
+
218
+ // src/contexts/AppSettings/useAppSettings.ts
219
+ import { useContext } from "react";
220
+ var useAppSettings = () => {
221
+ return useContext(AppSettingsContext);
222
+ };
223
+
224
+ // src/components/DarkModeIconButton.tsx
225
+ import { jsx as jsx2 } from "react/jsx-runtime";
226
+ var DarkModeIconButton = (props) => {
227
+ const { darkMode, enableDarkMode } = useAppSettings();
228
+ const handleDarkModeChange = () => {
229
+ enableDarkMode?.(!darkMode);
230
+ };
231
+ return /* @__PURE__ */ jsx2(IconButton, { onClick: handleDarkModeChange, ...props, children: darkMode ? /* @__PURE__ */ jsx2(DarkModeRoundedIcon, {}) : /* @__PURE__ */ jsx2(LightModeRoundedIcon, {}) });
232
+ };
233
+
234
+ // src/components/Developer.tsx
235
+ var Developer = ({ children = null }) => {
236
+ const { developerMode } = useAppSettings();
237
+ return developerMode ? children : null;
238
+ };
239
+ export {
240
+ AppSettingSlug,
241
+ AppSettingsContext,
242
+ AppSettingsProvider,
243
+ AppSettingsStorage,
244
+ AppSettingsStorageBase,
245
+ DarkModeIconButton,
246
+ Developer,
247
+ useAppSettings
248
+ };
249
+ //# sourceMappingURL=index.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'\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"]}
package/package.json CHANGED
@@ -11,8 +11,8 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.11.7",
14
- "@xylabs/react-shared": "~2.19.1",
15
- "@xyo-network/react-shared": "~2.63.1"
14
+ "@xylabs/react-shared": "^3.1.0-rc.3",
15
+ "@xyo-network/react-shared": "~2.64.0-rc.1"
16
16
  },
17
17
  "peerDependencies": {
18
18
  "@mui/icons-material": "^5",
@@ -24,31 +24,39 @@
24
24
  "react-router-dom": "^6.3.0"
25
25
  },
26
26
  "devDependencies": {
27
- "@xylabs/ts-scripts-yarn3": "^2.19.12",
27
+ "@xylabs/ts-scripts-yarn3": "^3.0.28",
28
28
  "typescript": "^5.2.2"
29
29
  },
30
30
  "description": "Common React library for all XYO projects that use React",
31
- "browser": "dist/esm/index.js",
32
31
  "docs": "dist/docs.json",
33
32
  "exports": {
34
33
  ".": {
35
34
  "node": {
36
- "import": "./dist/esm/index.js",
37
- "require": "./dist/cjs/index.js"
35
+ "import": {
36
+ "types": "./dist/index.d.mts",
37
+ "default": "./dist/index.mjs"
38
+ },
39
+ "require": {
40
+ "types": "./dist/index.d.ts",
41
+ "default": "./dist/index.js"
42
+ }
38
43
  },
39
44
  "browser": {
40
- "import": "./dist/esm/index.js",
41
- "require": "./dist/cjs/index.js"
45
+ "import": {
46
+ "types": "./dist/index.d.mts",
47
+ "default": "./dist/index.mjs"
48
+ },
49
+ "require": {
50
+ "types": "./dist/index.d.ts",
51
+ "default": "./dist/index.js"
52
+ }
42
53
  },
43
- "default": "./dist/esm/index.js"
44
- },
45
- "./dist/docs.json": {
46
- "default": "./dist/docs.json"
54
+ "default": "./dist/index.mjs"
47
55
  },
48
56
  "./package.json": "./package.json"
49
57
  },
50
- "main": "dist/cjs/index.js",
51
- "module": "dist/esm/index.js",
58
+ "main": "dist/index.js",
59
+ "module": "dist/index.mjs",
52
60
  "homepage": "https://xyo.network",
53
61
  "keywords": [
54
62
  "xyo",
@@ -69,6 +77,7 @@
69
77
  "license": "yarn license-checker --exclude \"MIT, ISC, Apache-2.0, BSD, BSD-2-Clause, CC-BY-4.0, Unlicense, CC-BY-3.0, CC0-1.0\""
70
78
  },
71
79
  "sideEffects": false,
72
- "types": "dist/types/index.d.ts",
73
- "version": "2.63.1"
80
+ "types": "dist/index.d.ts",
81
+ "version": "2.64.0-rc.1",
82
+ "stableVersion": "2.63.1"
74
83
  }
@@ -1,5 +1,4 @@
1
- import DarkModeRoundedIcon from '@mui/icons-material/DarkModeRounded'
2
- import LightModeRoundedIcon from '@mui/icons-material/LightModeRounded'
1
+ import { DarkModeRounded as DarkModeRoundedIcon, LightModeRounded as LightModeRoundedIcon } from '@mui/icons-material'
3
2
  import { IconButton, IconButtonProps } from '@mui/material'
4
3
 
5
4
  import { useAppSettings } from '../contexts'
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=WebAppNavigationType.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebAppNavigationType.js","sourceRoot":"","sources":["../../src/WebAppNavigationType.ts"],"names":[],"mappings":""}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DarkModeIconButton = void 0;
4
- const tslib_1 = require("tslib");
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const DarkModeRounded_1 = tslib_1.__importDefault(require("@mui/icons-material/DarkModeRounded"));
7
- const LightModeRounded_1 = tslib_1.__importDefault(require("@mui/icons-material/LightModeRounded"));
8
- const material_1 = require("@mui/material");
9
- const contexts_1 = require("../contexts");
10
- const DarkModeIconButton = (props) => {
11
- const { darkMode, enableDarkMode } = (0, contexts_1.useAppSettings)();
12
- const handleDarkModeChange = () => {
13
- enableDarkMode === null || enableDarkMode === void 0 ? void 0 : enableDarkMode(!darkMode);
14
- };
15
- return ((0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: handleDarkModeChange }, props, { children: darkMode ? (0, jsx_runtime_1.jsx)(DarkModeRounded_1.default, {}) : (0, jsx_runtime_1.jsx)(LightModeRounded_1.default, {}) })));
16
- };
17
- exports.DarkModeIconButton = DarkModeIconButton;
18
- //# sourceMappingURL=DarkModeIconButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DarkModeIconButton.js","sourceRoot":"","sources":["../../../src/components/DarkModeIconButton.tsx"],"names":[],"mappings":";;;;;AAAA,kGAAqE;AACrE,oGAAuE;AACvE,4CAA2D;AAE3D,0CAA4C;AAErC,MAAM,kBAAkB,GAA8B,CAAC,KAAK,EAAE,EAAE;IACrE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAA,yBAAc,GAAE,CAAA;IAErD,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAChC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,CAAC,QAAQ,CAAC,CAAA;IAC7B,CAAC,CAAA;IAED,OAAO,CACL,uBAAC,qBAAU,kBAAC,OAAO,EAAE,oBAAoB,IAAM,KAAK,cACjD,QAAQ,CAAC,CAAC,CAAC,uBAAC,yBAAmB,KAAG,CAAC,CAAC,CAAC,uBAAC,0BAAoB,KAAG,IACnD,CACd,CAAA;AACH,CAAC,CAAA;AAZY,QAAA,kBAAkB,sBAY9B"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Developer = void 0;
4
- const contexts_1 = require("../contexts");
5
- const Developer = ({ children = null }) => {
6
- const { developerMode } = (0, contexts_1.useAppSettings)();
7
- return developerMode ? children : null;
8
- };
9
- exports.Developer = Developer;
10
- //# sourceMappingURL=Developer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Developer.js","sourceRoot":"","sources":["../../../src/components/Developer.tsx"],"names":[],"mappings":";;;AAEA,0CAA4C;AAErC,MAAM,SAAS,GAAyC,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,EAAE,EAAE;IACrF,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,yBAAc,GAAE,CAAA;IAE1C,OAAO,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;AACxC,CAAC,CAAA;AAJY,QAAA,SAAS,aAIrB"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./DarkModeIconButton"), exports);
5
- tslib_1.__exportStar(require("./Developer"), exports);
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":";;;AAAA,+DAAoC;AACpC,sDAA2B"}
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppSettingsContext = void 0;
4
- const react_1 = require("react");
5
- const appSettingDefault_1 = require("./appSettingDefault");
6
- exports.AppSettingsContext = (0, react_1.createContext)((0, appSettingDefault_1.appSettingDefault)());
7
- //# sourceMappingURL=Context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Context.ts"],"names":[],"mappings":";;;AAAA,iCAAqC;AAGrC,2DAAuD;AAiB1C,QAAA,kBAAkB,GAAG,IAAA,qBAAa,EAA0B,IAAA,qCAAiB,GAAE,CAAC,CAAA"}
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppSettingsProvider = void 0;
4
- const tslib_1 = require("tslib");
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const react_1 = require("react");
7
- const Context_1 = require("./Context");
8
- const Storage_1 = require("./Storage");
9
- const AppSettingsProvider = (_a) => {
10
- var { storage = new Storage_1.AppSettingsStorage(), value, children } = _a, props = tslib_1.__rest(_a, ["storage", "value", "children"]);
11
- const [developerMode, setDeveloperMode] = (0, react_1.useState)(storage.developerMode);
12
- const [darkMode, setDarkMode] = (0, react_1.useState)(storage.darkMode);
13
- const [navigationType, setNavigationType] = (0, react_1.useState)(storage.navigationType);
14
- const [navigationCollapsed, setNavigationCollapsed] = (0, react_1.useState)(storage.navigationCollapsed);
15
- const [seedPhrase, setSeedPhrase] = (0, react_1.useState)(storage.seedPhrase);
16
- const [maxAccounts, setMaxAccounts] = (0, react_1.useState)(storage.maxAccounts);
17
- const enableDeveloperMode = (value) => {
18
- storage.developerMode = value;
19
- setDeveloperMode(storage.developerMode);
20
- };
21
- const enableDarkMode = (value) => {
22
- storage.darkMode = value;
23
- setDarkMode(storage.darkMode);
24
- };
25
- const changeNavigationType = (value) => {
26
- storage.navigationType = value;
27
- setNavigationType(value);
28
- };
29
- const changeNavigationCollapsed = (value) => {
30
- storage.navigationCollapsed = value;
31
- setNavigationCollapsed(value);
32
- };
33
- const changeSeedPhrase = (value) => {
34
- storage.seedPhrase = value;
35
- setSeedPhrase(value);
36
- };
37
- const changeMaxAccounts = (value) => {
38
- storage.maxAccounts = value;
39
- setMaxAccounts(value);
40
- };
41
- return ((0, jsx_runtime_1.jsx)(Context_1.AppSettingsContext.Provider, Object.assign({ value: Object.assign({ changeMaxAccounts,
42
- changeNavigationCollapsed,
43
- changeNavigationType,
44
- changeSeedPhrase,
45
- darkMode,
46
- developerMode,
47
- enableDarkMode,
48
- enableDeveloperMode,
49
- maxAccounts,
50
- navigationCollapsed,
51
- navigationType,
52
- seedPhrase }, value) }, props, { children: children })));
53
- };
54
- exports.AppSettingsProvider = AppSettingsProvider;
55
- //# sourceMappingURL=Provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Provider.tsx"],"names":[],"mappings":";;;;;AACA,iCAA+C;AAG/C,uCAAuE;AACvE,uCAA8C;AAMvC,MAAM,mBAAmB,GAAqD,CAAC,EAKrF,EAAE,EAAE;QALiF,EACpF,OAAO,GAAG,IAAI,4BAAkB,EAAE,EAClC,KAAK,EACL,QAAQ,OAET,EADI,KAAK,sBAJ4E,gCAKrF,CADS;IAER,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACzE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1D,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC5E,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC3F,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAChE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAEnE,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAE,EAAE;QAC7C,OAAO,CAAC,aAAa,GAAG,KAAK,CAAA;QAC7B,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACzC,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,CAAC,KAAc,EAAE,EAAE;QACxC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAA;QACxB,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,oBAAoB,GAAG,CAAC,KAA2B,EAAE,EAAE;QAC3D,OAAO,CAAC,cAAc,GAAG,KAAK,CAAA;QAC9B,iBAAiB,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC,CAAA;IAED,MAAM,yBAAyB,GAAG,CAAC,KAAc,EAAE,EAAE;QACnD,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAA;QACnC,sBAAsB,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,EAAE;QACzC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAA;QAC1B,aAAa,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAE,EAAE;QAC1C,OAAO,CAAC,WAAW,GAAG,KAAK,CAAA;QAC3B,cAAc,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC,CAAA;IAED,OAAO,CACL,uBAAC,4BAAkB,CAAC,QAAQ,kBAC1B,KAAK,kBACH,iBAAiB;YACjB,yBAAyB;YACzB,oBAAoB;YACpB,gBAAgB;YAChB,QAAQ;YACR,aAAa;YACb,cAAc;YACd,mBAAmB;YACnB,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,UAAU,IAEP,KAAK,KAEN,KAAK,cAER,QAAQ,IACmB,CAC/B,CAAA;AACH,CAAC,CAAA;AAlEY,QAAA,mBAAmB,uBAkE/B"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppSettingSlug = void 0;
4
- var AppSettingSlug;
5
- (function (AppSettingSlug) {
6
- AppSettingSlug["DarkMode"] = "darkmode";
7
- AppSettingSlug["Developer"] = "developer";
8
- AppSettingSlug["NavigationType"] = "navigationType";
9
- AppSettingSlug["NavigationCollapsed"] = "navigationCollapsed";
10
- AppSettingSlug["SeedPhrase"] = "seedPhrase";
11
- AppSettingSlug["MaxAccounts"] = "maxAccounts";
12
- })(AppSettingSlug = exports.AppSettingSlug || (exports.AppSettingSlug = {}));
13
- //# sourceMappingURL=Slug.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Slug.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Slug.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,yCAAuB,CAAA;IACvB,mDAAiC,CAAA;IACjC,6DAA2C,CAAA;IAC3C,2CAAyB,CAAA;IACzB,6CAA2B,CAAA;AAC7B,CAAC,EAPW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAOzB"}
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppSettingsStorage = void 0;
4
- const appSettingDefault_1 = require("./appSettingDefault");
5
- const Slug_1 = require("./Slug");
6
- const StorageBase_1 = require("./StorageBase");
7
- class AppSettingsStorage extends StorageBase_1.AppSettingsStorageBase {
8
- constructor(prefix = 'AppSettings', defaults) {
9
- super(prefix, Object.assign(Object.assign({}, (0, appSettingDefault_1.appSettingDefault)()), defaults));
10
- }
11
- get darkMode() {
12
- return this.getBoolean(Slug_1.AppSettingSlug.DarkMode);
13
- }
14
- set darkMode(value) {
15
- this.setBoolean(Slug_1.AppSettingSlug.DarkMode, value);
16
- }
17
- get developerMode() {
18
- return this.getBoolean(Slug_1.AppSettingSlug.Developer);
19
- }
20
- set developerMode(value) {
21
- this.setBoolean(Slug_1.AppSettingSlug.Developer, value);
22
- }
23
- get maxAccounts() {
24
- return this.getNumber(Slug_1.AppSettingSlug.MaxAccounts);
25
- }
26
- set maxAccounts(value) {
27
- this.setNumber(Slug_1.AppSettingSlug.MaxAccounts, value);
28
- }
29
- get navigationCollapsed() {
30
- return this.getBoolean(Slug_1.AppSettingSlug.NavigationCollapsed);
31
- }
32
- set navigationCollapsed(value) {
33
- this.setBoolean(Slug_1.AppSettingSlug.NavigationCollapsed, value);
34
- }
35
- get navigationType() {
36
- return this.getString(Slug_1.AppSettingSlug.NavigationType);
37
- }
38
- set navigationType(value) {
39
- this.setString(Slug_1.AppSettingSlug.NavigationType, value);
40
- }
41
- get seedPhrase() {
42
- return this.getString(Slug_1.AppSettingSlug.SeedPhrase);
43
- }
44
- set seedPhrase(value) {
45
- this.setString(Slug_1.AppSettingSlug.SeedPhrase, value);
46
- }
47
- }
48
- exports.AppSettingsStorage = AppSettingsStorage;
49
- //# sourceMappingURL=Storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Storage.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Storage.ts"],"names":[],"mappings":";;;AACA,2DAAuD;AACvD,iCAAuC;AACvC,+CAAsD;AAEtD,MAAa,kBAAmB,SAAQ,oCAAsB;IAC5D,YAAY,MAAM,GAAG,aAAa,EAAE,QAAkC;QACpE,KAAK,CAAC,MAAM,kCAAO,IAAA,qCAAiB,GAAE,GAAK,QAAQ,EAAG,CAAA;IACxD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAc,CAAC,QAAQ,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,QAAQ,CAAC,KAAc;QACzB,IAAI,CAAC,UAAU,CAAC,qBAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAc,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,aAAa,CAAC,KAAc;QAC9B,IAAI,CAAC,UAAU,CAAC,qBAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAc,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,WAAW,CAAC,KAAa;QAC3B,IAAI,CAAC,SAAS,CAAC,qBAAc,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAc,CAAC,mBAAmB,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,mBAAmB,CAAC,KAAc;QACpC,IAAI,CAAC,UAAU,CAAC,qBAAc,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAc,CAAC,cAAc,CAAyB,CAAA;IAC9E,CAAC;IAED,IAAI,cAAc,CAAC,KAA2B;QAC5C,IAAI,CAAC,SAAS,CAAC,qBAAc,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAc,CAAC,UAAU,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,UAAU,CAAC,KAAa;QAC1B,IAAI,CAAC,SAAS,CAAC,qBAAc,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAClD,CAAC;CACF;AApDD,gDAoDC"}
@@ -1,78 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppSettingsStorageBase = void 0;
4
- const assert_1 = require("@xylabs/assert");
5
- const react_shared_1 = require("@xyo-network/react-shared");
6
- class AppSettingsStorageBase {
7
- constructor(prefix = 'AppSettings', defaults) {
8
- this.prefix = prefix;
9
- this.defaults = defaults !== null && defaults !== void 0 ? defaults : {};
10
- }
11
- getBoolean(name) {
12
- const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
13
- if (!storedValue) {
14
- (0, assert_1.assertEx)(typeof this.defaults[name] === 'boolean', 'Default value is not boolean');
15
- const defaultValue = this.defaults[name];
16
- (0, assert_1.assertEx)(defaultValue !== undefined, `Missing Default for ${name}`);
17
- return defaultValue;
18
- }
19
- return storedValue !== 'false';
20
- }
21
- getNumber(name) {
22
- const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
23
- if (!storedValue) {
24
- (0, assert_1.assertEx)(typeof this.defaults[name] === 'number', 'Default value is not a number');
25
- const defaultValue = this.defaults[name];
26
- (0, assert_1.assertEx)(defaultValue !== undefined, `Missing Default for ${name}`);
27
- return defaultValue;
28
- }
29
- return parseFloat(storedValue);
30
- }
31
- getObject(name) {
32
- const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
33
- const parsedStoredValue = storedValue ? JSON.parse(storedValue) : null;
34
- if (!parsedStoredValue) {
35
- (0, assert_1.assertEx)(typeof this.defaults[name] === 'object', 'Default value is not object');
36
- return (0, assert_1.assertEx)(this.defaults[name], `Missing Default for ${name}`);
37
- }
38
- return parsedStoredValue;
39
- }
40
- getString(name) {
41
- const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
42
- if (!storedValue) {
43
- (0, react_shared_1.assertDefinedEx)(typeof this.defaults[name] === 'string', 'Default value is not string');
44
- const defaultValue = this.defaults[name];
45
- (0, assert_1.assertEx)(defaultValue !== undefined, `Missing Default for ${name}`);
46
- return defaultValue;
47
- }
48
- return storedValue;
49
- }
50
- getStringArray(name) {
51
- var _a;
52
- const storedValue = (_a = localStorage.getItem(`${this.prefix}|${name}`)) === null || _a === void 0 ? void 0 : _a.split(',');
53
- if (!storedValue) {
54
- (0, react_shared_1.assertDefinedEx)(Array.isArray(this.defaults[name]), 'Default value is not array');
55
- const defaultValue = this.defaults[name];
56
- (0, assert_1.assertEx)(defaultValue !== undefined, `Missing Default for ${name}`);
57
- return defaultValue;
58
- }
59
- return storedValue;
60
- }
61
- setBoolean(name, value) {
62
- localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
63
- }
64
- setNumber(name, value) {
65
- localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
66
- }
67
- setObject(name, value) {
68
- localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
69
- }
70
- setString(name, value) {
71
- localStorage.setItem(`${this.prefix}|${name}`, value);
72
- }
73
- setStringArray(name, value) {
74
- localStorage.setItem(`${this.prefix}|${name}`, value.join(','));
75
- }
76
- }
77
- exports.AppSettingsStorageBase = AppSettingsStorageBase;
78
- //# sourceMappingURL=StorageBase.js.map