@focus8/settings-registry 0.3.0 → 0.5.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.
package/dist/index.d.ts CHANGED
@@ -62,6 +62,55 @@ export declare const TIME_BASED_ONLY_CATEGORIES: ReadonlySet<SettingsCategory>;
62
62
  * Categories not exclusive to either type are always included.
63
63
  */
64
64
  export declare function getCategoriesForCalendarType(calendarType: CalendarType): SettingsCategory[];
65
+ /**
66
+ * Settings group IDs matching the mobile app's settings menu structure.
67
+ * These provide user-friendly groupings that may pull settings from multiple
68
+ * raw registry categories.
69
+ */
70
+ export declare const SETTINGS_GROUP_IDS: readonly ["appearance", "calendarType", "calendarView", "activities", "dateWeather", "soundAlerts", "timer", "lockScreen", "touch", "chronological", "device", "language"];
71
+ export type SettingsGroupId = (typeof SETTINGS_GROUP_IDS)[number];
72
+ export type SettingsGroupDef = {
73
+ /** Unique group identifier */
74
+ id: SettingsGroupId;
75
+ /** i18n message key for the group label */
76
+ labelKey: string;
77
+ /** Lucide icon name */
78
+ icon: string;
79
+ /**
80
+ * Setting key matchers. A setting is included if its key:
81
+ * - equals a matcher exactly, OR
82
+ * - starts with a matcher that ends with '.' (prefix match)
83
+ */
84
+ keys: string[];
85
+ /** Only show for this calendar type (undefined = always) */
86
+ calendarType?: CalendarType;
87
+ };
88
+ /**
89
+ * Group definitions matching the mobile app's settings structure.
90
+ *
91
+ * ─ i18n keys use the format `Settings.GroupLabel.<Id>` and must exist
92
+ * in every consumer's i18n catalog.
93
+ */
94
+ export declare const SETTINGS_GROUPS: readonly SettingsGroupDef[];
95
+ /**
96
+ * Settings excluded from remote editing (web portal / profile management).
97
+ * These are device-local or internal-only settings.
98
+ */
99
+ export declare const EXCLUDED_DEVICE_SETTINGS: ReadonlySet<string>;
100
+ /**
101
+ * Group parsed setting entries into user-facing groups matching the mobile
102
+ * app's settings menu structure.
103
+ *
104
+ * Takes a flat list of parsed settings (from `parseSettingsSnapshot`) and
105
+ * buckets them into the standard groups, filtering by calendar type and
106
+ * excluded keys.
107
+ */
108
+ export declare function groupSettingsForDevice(allSettings: ParsedSettingEntry[], calendarType: CalendarType): {
109
+ id: SettingsGroupId;
110
+ labelKey: string;
111
+ icon: string;
112
+ settings: ParsedSettingEntry[];
113
+ }[];
65
114
  export type SettingsDataType = 'string' | 'number' | 'boolean' | 'json';
66
115
  export type SettingDef<T = unknown> = {
67
116
  category: SettingsCategory;
@@ -255,7 +304,7 @@ export type ParsedSettingsGroup = {
255
304
  * @param calendarType Optional calendar type filter — hides irrelevant categories
256
305
  * @param registry Optional registry instance (uses defaultRegistry if omitted)
257
306
  */
258
- export declare function parseSettingsSnapshot(json: string, calendarType?: CalendarType, registry?: SettingsRegistry): ParsedSettingsGroup[];
307
+ export declare function parseSettingsSnapshot(json: string | Record<string, unknown>, calendarType?: CalendarType, registry?: SettingsRegistry): ParsedSettingsGroup[];
259
308
  /**
260
309
  * Format a setting value for display.
261
310
  * Handles booleans, numbers, strings, arrays, objects, and null/undefined.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -95,6 +95,202 @@ export function getCategoriesForCalendarType(calendarType) {
95
95
  return true;
96
96
  });
97
97
  }
98
+ // ---------------------------------------------------------------------------
99
+ // Settings groups — user-facing groups that reorganize raw categories
100
+ // ---------------------------------------------------------------------------
101
+ /**
102
+ * Settings group IDs matching the mobile app's settings menu structure.
103
+ * These provide user-friendly groupings that may pull settings from multiple
104
+ * raw registry categories.
105
+ */
106
+ export const SETTINGS_GROUP_IDS = [
107
+ 'appearance',
108
+ 'calendarType',
109
+ 'calendarView',
110
+ 'activities',
111
+ 'dateWeather',
112
+ 'soundAlerts',
113
+ 'timer',
114
+ 'lockScreen',
115
+ 'touch',
116
+ 'chronological',
117
+ 'device',
118
+ 'language',
119
+ ];
120
+ /**
121
+ * Group definitions matching the mobile app's settings structure.
122
+ *
123
+ * ─ i18n keys use the format `Settings.GroupLabel.<Id>` and must exist
124
+ * in every consumer's i18n catalog.
125
+ */
126
+ export const SETTINGS_GROUPS = [
127
+ {
128
+ id: 'appearance',
129
+ labelKey: 'Settings.Appearance',
130
+ icon: 'Palette',
131
+ keys: [
132
+ 'appearance.theme',
133
+ 'appearance.clockType',
134
+ 'appearance.enableDayColors',
135
+ ],
136
+ },
137
+ {
138
+ id: 'calendarType',
139
+ labelKey: 'Settings.CalendarType',
140
+ icon: 'ArrowLeftRight',
141
+ keys: ['calendarView.type'],
142
+ },
143
+ {
144
+ id: 'calendarView',
145
+ labelKey: 'Settings.CalendarView',
146
+ icon: 'Eye',
147
+ keys: [
148
+ 'calendarView.view',
149
+ 'calendarView.dayViewZoom',
150
+ 'calendarView.weekViewZoom',
151
+ 'calendarView.splitView',
152
+ 'calendarView.showCalendarNames',
153
+ 'calendarView.calendarColumns',
154
+ 'calendarView.autoReturnToTodayEnabled',
155
+ 'calendarView.autoReturnToTodayTimeoutSeconds',
156
+ ],
157
+ },
158
+ {
159
+ id: 'activities',
160
+ labelKey: 'Settings.Activities',
161
+ icon: 'CalendarPlus',
162
+ keys: ['eventForm.', 'chronologicalEventForm.'],
163
+ },
164
+ {
165
+ id: 'dateWeather',
166
+ labelKey: 'Settings.DateWeather',
167
+ icon: 'CloudSun',
168
+ keys: [
169
+ 'calendarView.showWeatherOnEvents',
170
+ 'calendarView.showWeatherOnTimeline',
171
+ 'calendarView.weatherLocation',
172
+ ],
173
+ },
174
+ {
175
+ id: 'soundAlerts',
176
+ labelKey: 'Settings.SoundAlerts',
177
+ icon: 'Volume2',
178
+ keys: [
179
+ 'sound.reminderVolume',
180
+ 'sound.mediaVolume',
181
+ 'sound.alarmSound',
182
+ 'sound.reminderAlarmSound',
183
+ 'sound.reminderAlarmTimeout',
184
+ 'sound.allowCustomReminderSounds',
185
+ 'sound.ttsEnabled',
186
+ 'sound.ttsRate',
187
+ 'notification.',
188
+ ],
189
+ },
190
+ {
191
+ id: 'timer',
192
+ labelKey: 'Settings.TimerTitle',
193
+ icon: 'Timer',
194
+ keys: [
195
+ 'sound.timerVolume',
196
+ 'sound.timerAlarmSound',
197
+ 'sound.timerAlarmTimeout',
198
+ 'timer.',
199
+ ],
200
+ },
201
+ {
202
+ id: 'lockScreen',
203
+ labelKey: 'Settings.LockScreen',
204
+ icon: 'Lock',
205
+ keys: ['lockScreen.'],
206
+ },
207
+ {
208
+ id: 'touch',
209
+ labelKey: 'Settings.FunctionsTitle',
210
+ icon: 'Hand',
211
+ keys: ['touch.'],
212
+ },
213
+ {
214
+ id: 'chronological',
215
+ labelKey: 'Settings.Chronological',
216
+ icon: 'List',
217
+ keys: ['chronological.'],
218
+ calendarType: 'chronological',
219
+ },
220
+ {
221
+ id: 'device',
222
+ labelKey: 'SettingsDevices.Title',
223
+ icon: 'Smartphone',
224
+ keys: ['device.'],
225
+ },
226
+ {
227
+ id: 'language',
228
+ labelKey: 'Settings.Language',
229
+ icon: 'Globe',
230
+ keys: ['language.'],
231
+ },
232
+ ];
233
+ /**
234
+ * Settings excluded from remote editing (web portal / profile management).
235
+ * These are device-local or internal-only settings.
236
+ */
237
+ export const EXCLUDED_DEVICE_SETTINGS = new Set([
238
+ 'device.id',
239
+ 'device.devMenuEnabled',
240
+ 'device.authWarningDismissTtlDays',
241
+ 'notification.hasBeenPrompted',
242
+ ]);
243
+ /**
244
+ * Check whether a setting key matches a group's key matchers.
245
+ */
246
+ function matchesGroup(key, group) {
247
+ return group.keys.some((matcher) => key === matcher || (matcher.endsWith('.') && key.startsWith(matcher)));
248
+ }
249
+ /**
250
+ * Group parsed setting entries into user-facing groups matching the mobile
251
+ * app's settings menu structure.
252
+ *
253
+ * Takes a flat list of parsed settings (from `parseSettingsSnapshot`) and
254
+ * buckets them into the standard groups, filtering by calendar type and
255
+ * excluded keys.
256
+ */
257
+ export function groupSettingsForDevice(allSettings, calendarType) {
258
+ // Filter excluded
259
+ const settings = allSettings.filter((s) => !EXCLUDED_DEVICE_SETTINGS.has(s.key));
260
+ // Calendar type filtering for event form keys
261
+ const isChronological = calendarType === 'chronological';
262
+ const filteredSettings = settings.filter((s) => {
263
+ if (isChronological && s.key.startsWith('eventForm.')) {
264
+ return false;
265
+ }
266
+ if (!isChronological && s.key.startsWith('chronologicalEventForm.')) {
267
+ return false;
268
+ }
269
+ return true;
270
+ });
271
+ const claimed = new Set();
272
+ const result = [];
273
+ for (const group of SETTINGS_GROUPS) {
274
+ // Skip groups not relevant for current calendar type
275
+ if (group.calendarType && group.calendarType !== calendarType) {
276
+ continue;
277
+ }
278
+ const matched = filteredSettings.filter((s) => !claimed.has(s.key) && matchesGroup(s.key, group));
279
+ if (matched.length === 0) {
280
+ continue;
281
+ }
282
+ for (const s of matched) {
283
+ claimed.add(s.key);
284
+ }
285
+ result.push({
286
+ id: group.id,
287
+ labelKey: group.labelKey,
288
+ icon: group.icon,
289
+ settings: matched,
290
+ });
291
+ }
292
+ return result;
293
+ }
98
294
  /** Default config for non-enrolled mode */
99
295
  export const DEFAULT_REGISTRY_CONFIG = {
100
296
  isEnrolled: false,
@@ -383,18 +579,28 @@ export class SettingsRegistry {
383
579
  */
384
580
  export function parseSettingsSnapshot(json, calendarType, registry = defaultRegistry) {
385
581
  let parsed;
386
- try {
387
- parsed = JSON.parse(json);
582
+ if (typeof json === 'string') {
583
+ try {
584
+ parsed = JSON.parse(json);
585
+ }
586
+ catch {
587
+ return [];
588
+ }
388
589
  }
389
- catch {
390
- return [];
590
+ else {
591
+ parsed = json;
391
592
  }
392
593
  const groups = new Map();
393
- for (const [key, value] of Object.entries(parsed)) {
594
+ for (const [key, rawValue] of Object.entries(parsed)) {
394
595
  const category = registry.getCategory(key);
395
596
  if (!category) {
396
597
  continue;
397
598
  }
599
+ // Deserialize string values to their native types using the registry
600
+ let value = rawValue;
601
+ if (typeof rawValue === 'string' && key in registry.entries) {
602
+ value = registry.deserialize(key, rawValue);
603
+ }
398
604
  const dotIndex = key.indexOf('.');
399
605
  const name = dotIndex > 0 ? key.substring(dotIndex + 1) : key;
400
606
  if (!groups.has(category)) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAwBH,MAAM,CAAC,MAAM,cAAc,GAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAmC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAOzC,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY;IACZ,cAAc;IACd,WAAW;IACX,OAAO;IACP,OAAO;IACP,OAAO;IACP,YAAY;IACZ,OAAO;IACP,QAAQ;IACR,UAAU;IACV,cAAc;IACd,eAAe;IACf,WAAW;IACX,wBAAwB;CAChB,CAAC;AAIX,8EAA8E;AAC9E,kEAAkE;AAClE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAqC;IAC/D,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,eAAe;IAC7B,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,aAAa;IACzB,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,YAAY;IACvB,sBAAsB,EAAE,4BAA4B;CACrD,CAAC;AAEF,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAE9E,MAAM,CAAC,MAAM,cAAc,GAAqC;IAC9D,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE,UAAU;IACrB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,YAAY;IACpB,QAAQ,EAAE,OAAO;IACjB,YAAY,EAAE,MAAM;IACpB,aAAa,EAAE,MAAM;IACrB,SAAS,EAAE,cAAc;IACzB,sBAAsB,EAAE,cAAc;CACvC,CAAC;AAEF,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAE9E,4DAA4D;AAC5D,MAAM,CAAC,MAAM,6BAA6B,GACxC,IAAI,GAAG,CAAmB,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC,CAAC;AAEzE,yDAAyD;AACzD,MAAM,CAAC,MAAM,0BAA0B,GACrC,IAAI,GAAG,CAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,YAA0B;IAE1B,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACxC,IACE,YAAY,KAAK,YAAY;YAC7B,6BAA6B,CAAC,GAAG,CAAC,GAAG,CAAC,EACtC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IACE,YAAY,KAAK,eAAe;YAChC,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,EACnC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,sEAAsE;AACtE,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,YAAY;IACZ,cAAc;IACd,cAAc;IACd,YAAY;IACZ,aAAa;IACb,aAAa;IACb,OAAO;IACP,YAAY;IACZ,OAAO;IACP,eAAe;IACf,QAAQ;IACR,UAAU;CACF,CAAC;AAqBX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAgC;IAC1D;QACE,EAAE,EAAE,YAAY;QAChB,QAAQ,EAAE,qBAAqB;QAC/B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,kBAAkB;YAClB,sBAAsB;YACtB,4BAA4B;SAC7B;KACF;IACD;QACE,EAAE,EAAE,cAAc;QAClB,QAAQ,EAAE,uBAAuB;QACjC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,CAAC,mBAAmB,CAAC;KAC5B;IACD;QACE,EAAE,EAAE,cAAc;QAClB,QAAQ,EAAE,uBAAuB;QACjC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,mBAAmB;YACnB,0BAA0B;YAC1B,2BAA2B;YAC3B,wBAAwB;YACxB,gCAAgC;YAChC,8BAA8B;YAC9B,uCAAuC;YACvC,8CAA8C;SAC/C;KACF;IACD;QACE,EAAE,EAAE,YAAY;QAChB,QAAQ,EAAE,qBAAqB;QAC/B,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,CAAC,YAAY,EAAE,yBAAyB,CAAC;KAChD;IACD;QACE,EAAE,EAAE,aAAa;QACjB,QAAQ,EAAE,sBAAsB;QAChC,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE;YACJ,kCAAkC;YAClC,oCAAoC;YACpC,8BAA8B;SAC/B;KACF;IACD;QACE,EAAE,EAAE,aAAa;QACjB,QAAQ,EAAE,sBAAsB;QAChC,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,sBAAsB;YACtB,mBAAmB;YACnB,kBAAkB;YAClB,0BAA0B;YAC1B,4BAA4B;YAC5B,iCAAiC;YACjC,kBAAkB;YAClB,eAAe;YACf,eAAe;SAChB;KACF;IACD;QACE,EAAE,EAAE,OAAO;QACX,QAAQ,EAAE,qBAAqB;QAC/B,IAAI,EAAE,OAAO;QACb,IAAI,EAAE;YACJ,mBAAmB;YACnB,uBAAuB;YACvB,yBAAyB;YACzB,QAAQ;SACT;KACF;IACD;QACE,EAAE,EAAE,YAAY;QAChB,QAAQ,EAAE,qBAAqB;QAC/B,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,CAAC,aAAa,CAAC;KACtB;IACD;QACE,EAAE,EAAE,OAAO;QACX,QAAQ,EAAE,yBAAyB;QACnC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,CAAC,QAAQ,CAAC;KACjB;IACD;QACE,EAAE,EAAE,eAAe;QACnB,QAAQ,EAAE,wBAAwB;QAClC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,CAAC,gBAAgB,CAAC;QACxB,YAAY,EAAE,eAAe;KAC9B;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,QAAQ,EAAE,uBAAuB;QACjC,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,CAAC,SAAS,CAAC;KAClB;IACD;QACE,EAAE,EAAE,UAAU;QACd,QAAQ,EAAE,mBAAmB;QAC7B,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,CAAC,WAAW,CAAC;KACpB;CACO,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC;IACnE,WAAW;IACX,uBAAuB;IACvB,kCAAkC;IAClC,8BAA8B;CAC/B,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,YAAY,CAAC,GAAW,EAAE,KAAuB;IACxD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CACpB,CAAC,OAAO,EAAE,EAAE,CACV,GAAG,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CACxE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAiC,EACjC,YAA0B;IAE1B,kBAAkB;IAClB,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAC5C,CAAC;IAEF,8CAA8C;IAC9C,MAAM,eAAe,GAAG,YAAY,KAAK,eAAe,CAAC;IACzD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7C,IAAI,eAAe,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACtD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE,CAAC;YACpE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,MAAM,GAKN,EAAE,CAAC;IAET,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,qDAAqD;QACrD,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YAC9D,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CACzD,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAiCD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,QAAQ;IACtB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,SAAS,GAAG,CACV,QAA0B,EAC1B,IAAsB,EACtB,YAAe,EACf,IAAI,GAAG,IAAI;IAEX,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACzD,CAAC;AAED,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAE9E,SAAS,YAAY,CAAC,MAAsB;IAC1C,OAAO;QACL,0EAA0E;QAC1E,aAAa;QACb,0EAA0E;QAC1E,kBAAkB,EAAE,GAAG,CACrB,YAAY,EACZ,QAAQ,EACR,MAAM,CAAC,YAAY,CACpB;QACD,sBAAsB,EAAE,GAAG,CAAY,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC;QACzE,4BAA4B,EAAE,GAAG,CAAU,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC;QAE1E,0EAA0E;QAC1E,gBAAgB;QAChB,0EAA0E;QAC1E,mBAAmB,EAAE,GAAG,CACtB,cAAc,EACd,QAAQ,EACR,YAAY,CACb;QACD,mBAAmB,EAAE,GAAG,CAAmB,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC;QAC3E,0BAA0B,EAAE,GAAG,CAC7B,cAAc,EACd,QAAQ,EACR,EAAE,CACH;QACD,2BAA2B,EAAE,GAAG,CAC9B,cAAc,EACd,QAAQ,EACR,EAAE,CACH;QACD,wBAAwB,EAAE,GAAG,CAAU,cAAc,EAAE,SAAS,EAAE,KAAK,CAAC;QACxE,gCAAgC,EAAE,GAAG,CACnC,cAAc,EACd,SAAS,EACT,IAAI,CACL;QACD,8BAA8B,EAAE,GAAG,CAAY,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;QAC1E,uCAAuC,EAAE,GAAG,CAC1C,cAAc,EACd,SAAS,EACT,MAAM,CAAC,UAAU,CAClB;QACD,8CAA8C,EAAE,GAAG,CACjD,cAAc,EACd,QAAQ,EACR,GAAG,CACJ;QACD,kCAAkC,EAAE,GAAG,CACrC,cAAc,EACd,SAAS,EACT,KAAK,CACN;QACD,oCAAoC,EAAE,GAAG,CACvC,cAAc,EACd,SAAS,EACT,KAAK,CACN;QACD,8BAA8B,EAAE,GAAG,CACjC,cAAc,EACd,MAAM,EACN,IAAI,CACL;QAED,0EAA0E;QAC1E,2CAA2C;QAC3C,0EAA0E;QAC1E,sBAAsB,EAAE,GAAG,CAAU,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC;QAClE,qBAAqB,EAAE,GAAG,CAAU,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC;QACjE,0BAA0B,EAAE,GAAG,CAAU,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC;QACvE,oBAAoB,EAAE,GAAG,CAAU,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC;QAChE,sBAAsB,EAAE,GAAG,CAAU,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC;QACnE,uBAAuB,EAAE,GAAG,CAAU,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC;QACnE,qBAAqB,EAAE,GAAG,CAAU,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC;QACjE,kBAAkB,EAAE,GAAG,CAAU,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC;QAC/D,sBAAsB,EAAE,GAAG,CAAU,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC;QACnE,iCAAiC,EAAE,GAAG,CACpC,WAAW,EACX,SAAS,EACT,IAAI,CACL;QACD,sBAAsB,EAAE,GAAG,CAAU,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC;QAEnE,0EAA0E;QAC1E,iBAAiB;QACjB,0EAA0E;QAC1E,mBAAmB,EAAE,GAAG,CAAS,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC;QACxD,sBAAsB,EAAE,GAAG,CAAS,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC;QAC3D,mBAAmB,EAAE,GAAG,CAAS,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC;QACxD,kBAAkB,EAAE,GAAG,CAAa,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAChE,0BAA0B,EAAE,GAAG,CAAa,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACxE,uBAAuB,EAAE,GAAG,CAAa,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACrE,yBAAyB,EAAE,GAAG,CAAe,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClE,4BAA4B,EAAE,GAAG,CAAe,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrE,iCAAiC,EAAE,GAAG,CAAU,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;QAC1E,kBAAkB,EAAE,GAAG,CAAU,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC;QACvE,eAAe,EAAE,GAAG,CAAS,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC;QAEpD,0EAA0E;QAC1E,QAAQ;QACR,0EAA0E;QAC1E,yBAAyB,EAAE,GAAG,CAAU,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;QACjE,mBAAmB,EAAE,GAAG,CAAU,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;QAC3D,yBAAyB,EAAE,GAAG,CAAU,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;QACjE,uBAAuB,EAAE,GAAG,CAAU,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;QAE/D,0EAA0E;QAC1E,cAAc;QACd,0EAA0E;QAC1E,gBAAgB,EAAE,GAAG,CAAS,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC;QACzD,kCAAkC,EAAE,GAAG,CACrC,YAAY,EACZ,SAAS,EACT,KAAK,CACN;QACD,qCAAqC,EAAE,GAAG,CACxC,YAAY,EACZ,QAAQ,EACR,CAAC,CACF;QACD,yBAAyB,EAAE,GAAG,CAC5B,YAAY,EACZ,QAAQ,EACR,SAAS,CACV;QACD,qBAAqB,EAAE,GAAG,CAAU,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC;QAClE,4BAA4B,EAAE,GAAG,CAAU,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC;QACzE,sBAAsB,EAAE,GAAG,CACzB,YAAY,EACZ,QAAQ,EACR,MAAM,CACP;QACD,4BAA4B,EAAE,GAAG,CAC/B,YAAY,EACZ,MAAM,EACN,IAAI,CACL;QACD,6BAA6B,EAAE,GAAG,CAChC,YAAY,EACZ,MAAM,EACN,EAAE,CACH;QACD,sCAAsC,EAAE,GAAG,CACzC,YAAY,EACZ,QAAQ,EACR,EAAE,CACH;QAED,0EAA0E;QAC1E,mBAAmB;QACnB,0EAA0E;QAC1E,yBAAyB,EAAE,GAAG,CAAU,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;QAClE,sBAAsB,EAAE,GAAG,CAAU,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;QAE/D,0EAA0E;QAC1E,mCAAmC;QACnC,0EAA0E;QAC1E,WAAW,EAAE,GAAG,CAAS,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC;QACvD,uBAAuB,EAAE,GAAG,CAAiB,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;QACzE,uBAAuB,EAAE,GAAG,CAAU,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;QACxE,kCAAkC,EAAE,GAAG,CACrC,QAAQ,EACR,QAAQ,EACR,CAAC,EACD,KAAK,CACN;QAED,0EAA0E;QAC1E,WAAW;QACX,0EAA0E;QAC1E,iBAAiB,EAAE,GAAG,CACpB,UAAU,EACV,QAAQ,EACR,MAAM,CAAC,aAAa,CACrB;QAED,0EAA0E;QAC1E,gBAAgB;QAChB,0EAA0E;QAC1E,sBAAsB,EAAE,GAAG,CAAU,cAAc,EAAE,SAAS,EAAE,KAAK,CAAC;QACtE,iCAAiC,EAAE,GAAG,CACpC,cAAc,EACd,SAAS,EACT,IAAI,CACL;QACD,iCAAiC,EAAE,GAAG,CACpC,cAAc,EACd,MAAM,EACN,EAAE,CACH;QACD,8BAA8B,EAAE,GAAG,CACjC,cAAc,EACd,SAAS,EACT,KAAK,EACL,KAAK,CACN;QAED,0EAA0E;QAC1E,uEAAuE;QACvE,0EAA0E;QAC1E,SAAS;QACT,2CAA2C,EAAE,GAAG,CAC9C,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,gCAAgC,EAAE,GAAG,CACnC,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,4CAA4C,EAAE,GAAG,CAC/C,eAAe,EACf,SAAS,EACT,KAAK,CACN;QACD,oCAAoC,EAAE,GAAG,CACvC,eAAe,EACf,SAAS,EACT,KAAK,CACN;QACD,SAAS;QACT,qCAAqC,EAAE,GAAG,CACxC,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,0CAA0C,EAAE,GAAG,CAC7C,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,2CAA2C,EAAE,GAAG,CAC9C,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,4CAA4C,EAAE,GAAG,CAC/C,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,sCAAsC,EAAE,GAAG,CACzC,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,yCAAyC,EAAE,GAAG,CAC5C,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,yCAAyC,EAAE,GAAG,CAC5C,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,iBAAiB;QACjB,sCAAsC,EAAE,GAAG,CACzC,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,sCAAsC,EAAE,GAAG,CACzC,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,sCAAsC,EAAE,GAAG,CACzC,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,wCAAwC,EAAE,GAAG,CAC3C,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,qCAAqC,EAAE,GAAG,CACxC,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,OAAO;QACP,uCAAuC,EAAE,GAAG,CAC1C,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,iBAAiB;QACjB,6CAA6C,EAAE,GAAG,CAChD,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,gDAAgD,EAAE,GAAG,CACnD,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,6CAA6C,EAAE,GAAG,CAChD,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,4CAA4C,EAAE,GAAG,CAC/C,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,4CAA4C,EAAE,GAAG,CAC/C,eAAe,EACf,SAAS,EACT,IAAI,CACL;QACD,sBAAsB;QACtB,sCAAsC,EAAE,GAAG,CACzC,eAAe,EACf,QAAQ,EACR,CAAC,CACF;QACD,uCAAuC,EAAE,GAAG,CAC1C,eAAe,EACf,QAAQ,EACR,CAAC,CACF;QACD,wCAAwC,EAAE,GAAG,CAC3C,eAAe,EACf,QAAQ,EACR,EAAE,CACH;QACD,sCAAsC,EAAE,GAAG,CACzC,eAAe,EACf,QAAQ,EACR,EAAE,CACH;QACD,oCAAoC,EAAE,GAAG,CACvC,eAAe,EACf,QAAQ,EACR,CAAC,CACF;QAED,0EAA0E;QAC1E,2BAA2B;QAC3B,0EAA0E;QAC1E,oBAAoB;QACpB,0CAA0C,EAAE,GAAG,CAC7C,wBAAwB,EACxB,SAAS,EACT,IAAI,CACL;QACD,yCAAyC,EAAE,GAAG,CAC5C,wBAAwB,EACxB,SAAS,EACT,IAAI,CACL;QACD,0CAA0C,EAAE,GAAG,CAC7C,wBAAwB,EACxB,SAAS,EACT,IAAI,CACL;QACD,wCAAwC,EAAE,GAAG,CAC3C,wBAAwB,EACxB,SAAS,EACT,IAAI,CACL;QACD,0CAA0C,EAAE,GAAG,CAC7C,wBAAwB,EACxB,SAAS,EACT,IAAI,CACL;QACD,wCAAwC,EAAE,GAAG,CAC3C,wBAAwB,EACxB,SAAS,EACT,IAAI,CACL;QACD,yCAAyC,EAAE,GAAG,CAC5C,wBAAwB,EACxB,SAAS,EACT,IAAI,CACL;QACD,eAAe;QACf,0CAA0C,EAAE,GAAG,CAC7C,wBAAwB,EACxB,SAAS,EACT,IAAI,CACL;QACD,2CAA2C,EAAE,GAAG,CAC9C,wBAAwB,EACxB,SAAS,EACT,IAAI,CACL;QACD,8CAA8C,EAAE,GAAG,CACjD,wBAAwB,EACxB,SAAS,EACT,IAAI,CACL;QACD,mBAAmB;QACnB,+CAA+C,EAAE,GAAG,CAClD,wBAAwB,EACxB,SAAS,EACT,KAAK,CACN;QACD,6CAA6C,EAAE,GAAG,CAChD,wBAAwB,EACxB,QAAQ,EACR,EAAE,CACH;QACD,4CAA4C,EAAE,GAAG,CAC/C,wBAAwB,EACxB,QAAQ,EACR,SAAS,CACV;QACD,qBAAqB;QACrB,0CAA0C,EAAE,GAAG,CAC7C,wBAAwB,EACxB,QAAQ,EACR,SAAS,CACV;QACD,mBAAmB;QACnB,8CAA8C,EAAE,GAAG,CACjD,wBAAwB,EACxB,MAAM,EACN,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAC3B;QACD,+CAA+C,EAAE,GAAG,CAClD,wBAAwB,EACxB,MAAM,EACN;YACE,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;YAChC,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;YAChC,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;SACjC,CACF;KAC4C,CAAC;AAClD,CAAC;AAmBD,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,OAAO,gBAAgB;IAO3B,YAAY,SAAkC,EAAE;QAC9C,MAAM,IAAI,GAAmB,EAAE,GAAG,uBAAuB,EAAE,GAAG,MAAM,EAAE,CAAC;QACvE,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAiB,CAAC;IACxD,CAAC;IAED,0CAA0C;IAC1C,UAAU,CAAuB,GAAM;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAA0B,CAAC;IACtD,CAAC;IAED,+CAA+C;IAC/C,cAAc;QACZ,MAAM,QAAQ,GAAG,EAA6B,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QAC5C,CAAC;QACD,OAAO,QAAuB,CAAC;IACjC,CAAC;IAED,0CAA0C;IAC1C,WAAW,CAAC,GAAe;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,+CAA+C;IAC/C,QAAQ,CAAC,GAAe;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,0CAA0C;IAC1C,aAAa,CAAC,QAA0B;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED,2DAA2D;IAC3D,SAAS,CAAC,GAAe,EAAE,KAAc;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACvC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC7B,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YAC5B,KAAK,SAAS;gBACZ,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAClC,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,WAAW,CACT,GAAM,EACN,GAAkB;QAElB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACvC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,GAAsB,CAAC;YAChC,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,GAAG,CAAoB,CAAC;YACxC,KAAK,SAAS;gBACZ,OAAO,CAAC,GAAG,KAAK,MAAM,CAAoB,CAAC;YAC7C,KAAK,MAAM;gBACT,IAAI,CAAC;oBACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;gBAC5C,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC9B,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,GAAW;QACrB,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAiB,CAAC,CAAC,QAAQ,CAAC;QAClD,CAAC;QACD,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC1C,IAAI,mBAAmB,CAAC,QAAQ,CAAC,MAA0B,CAAC,EAAE,CAAC;gBAC7D,OAAO,MAA0B,CAAC;YACpC,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,GAAW;QACzB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9D,6DAA6D;QAC7D,OAAO,IAAI;aACR,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;aACrB,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;aACnC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF;AA0BD;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAsC,EACtC,YAA2B,EAC3B,WAA6B,eAAe;IAE5C,IAAI,MAA+B,CAAC;IACpC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0C,CAAC;IAEjE,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QAED,qEAAqE;QACrE,IAAI,KAAK,GAAY,QAAQ,CAAC;QAC9B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC5D,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAiB,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAE9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC;YACzB,GAAG;YACH,IAAI;YACJ,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC;YACpC,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,qCAAqC;IACrC,MAAM,iBAAiB,GAAG,YAAY;QACpC,CAAC,CAAC,4BAA4B,CAAC,YAAY,CAAC;QAC5C,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC;IAE7B,OAAO,iBAAiB;SACrB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAChC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClB,QAAQ;QACR,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAE;KAChC,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAClC,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,IAAI,IAAI,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,MAAM,SAAS,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAEtD,8EAA8E;AAC9E,sEAAsE;AACtE,2EAA2E;AAC3E,kDAAkD;AAClD,8EAA8E;AAE9E,MAAM,UAAU,sBAAsB,CAAC,SAAkC,EAAE;IACzE,OAAO,YAAY,CAAC,EAAE,GAAG,uBAAuB,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AACjE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@focus8/settings-registry",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Shared settings registry for FocusPlanner — single source of truth for all app settings.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -178,6 +178,249 @@ export function getCategoriesForCalendarType(
178
178
  });
179
179
  }
180
180
 
181
+ // ---------------------------------------------------------------------------
182
+ // Settings groups — user-facing groups that reorganize raw categories
183
+ // ---------------------------------------------------------------------------
184
+
185
+ /**
186
+ * Settings group IDs matching the mobile app's settings menu structure.
187
+ * These provide user-friendly groupings that may pull settings from multiple
188
+ * raw registry categories.
189
+ */
190
+ export const SETTINGS_GROUP_IDS = [
191
+ 'appearance',
192
+ 'calendarType',
193
+ 'calendarView',
194
+ 'activities',
195
+ 'dateWeather',
196
+ 'soundAlerts',
197
+ 'timer',
198
+ 'lockScreen',
199
+ 'touch',
200
+ 'chronological',
201
+ 'device',
202
+ 'language',
203
+ ] as const;
204
+
205
+ export type SettingsGroupId = (typeof SETTINGS_GROUP_IDS)[number];
206
+
207
+ export type SettingsGroupDef = {
208
+ /** Unique group identifier */
209
+ id: SettingsGroupId;
210
+ /** i18n message key for the group label */
211
+ labelKey: string;
212
+ /** Lucide icon name */
213
+ icon: string;
214
+ /**
215
+ * Setting key matchers. A setting is included if its key:
216
+ * - equals a matcher exactly, OR
217
+ * - starts with a matcher that ends with '.' (prefix match)
218
+ */
219
+ keys: string[];
220
+ /** Only show for this calendar type (undefined = always) */
221
+ calendarType?: CalendarType;
222
+ };
223
+
224
+ /**
225
+ * Group definitions matching the mobile app's settings structure.
226
+ *
227
+ * ─ i18n keys use the format `Settings.GroupLabel.<Id>` and must exist
228
+ * in every consumer's i18n catalog.
229
+ */
230
+ export const SETTINGS_GROUPS: readonly SettingsGroupDef[] = [
231
+ {
232
+ id: 'appearance',
233
+ labelKey: 'Settings.Appearance',
234
+ icon: 'Palette',
235
+ keys: [
236
+ 'appearance.theme',
237
+ 'appearance.clockType',
238
+ 'appearance.enableDayColors',
239
+ ],
240
+ },
241
+ {
242
+ id: 'calendarType',
243
+ labelKey: 'Settings.CalendarType',
244
+ icon: 'ArrowLeftRight',
245
+ keys: ['calendarView.type'],
246
+ },
247
+ {
248
+ id: 'calendarView',
249
+ labelKey: 'Settings.CalendarView',
250
+ icon: 'Eye',
251
+ keys: [
252
+ 'calendarView.view',
253
+ 'calendarView.dayViewZoom',
254
+ 'calendarView.weekViewZoom',
255
+ 'calendarView.splitView',
256
+ 'calendarView.showCalendarNames',
257
+ 'calendarView.calendarColumns',
258
+ 'calendarView.autoReturnToTodayEnabled',
259
+ 'calendarView.autoReturnToTodayTimeoutSeconds',
260
+ ],
261
+ },
262
+ {
263
+ id: 'activities',
264
+ labelKey: 'Settings.Activities',
265
+ icon: 'CalendarPlus',
266
+ keys: ['eventForm.', 'chronologicalEventForm.'],
267
+ },
268
+ {
269
+ id: 'dateWeather',
270
+ labelKey: 'Settings.DateWeather',
271
+ icon: 'CloudSun',
272
+ keys: [
273
+ 'calendarView.showWeatherOnEvents',
274
+ 'calendarView.showWeatherOnTimeline',
275
+ 'calendarView.weatherLocation',
276
+ ],
277
+ },
278
+ {
279
+ id: 'soundAlerts',
280
+ labelKey: 'Settings.SoundAlerts',
281
+ icon: 'Volume2',
282
+ keys: [
283
+ 'sound.reminderVolume',
284
+ 'sound.mediaVolume',
285
+ 'sound.alarmSound',
286
+ 'sound.reminderAlarmSound',
287
+ 'sound.reminderAlarmTimeout',
288
+ 'sound.allowCustomReminderSounds',
289
+ 'sound.ttsEnabled',
290
+ 'sound.ttsRate',
291
+ 'notification.',
292
+ ],
293
+ },
294
+ {
295
+ id: 'timer',
296
+ labelKey: 'Settings.TimerTitle',
297
+ icon: 'Timer',
298
+ keys: [
299
+ 'sound.timerVolume',
300
+ 'sound.timerAlarmSound',
301
+ 'sound.timerAlarmTimeout',
302
+ 'timer.',
303
+ ],
304
+ },
305
+ {
306
+ id: 'lockScreen',
307
+ labelKey: 'Settings.LockScreen',
308
+ icon: 'Lock',
309
+ keys: ['lockScreen.'],
310
+ },
311
+ {
312
+ id: 'touch',
313
+ labelKey: 'Settings.FunctionsTitle',
314
+ icon: 'Hand',
315
+ keys: ['touch.'],
316
+ },
317
+ {
318
+ id: 'chronological',
319
+ labelKey: 'Settings.Chronological',
320
+ icon: 'List',
321
+ keys: ['chronological.'],
322
+ calendarType: 'chronological',
323
+ },
324
+ {
325
+ id: 'device',
326
+ labelKey: 'SettingsDevices.Title',
327
+ icon: 'Smartphone',
328
+ keys: ['device.'],
329
+ },
330
+ {
331
+ id: 'language',
332
+ labelKey: 'Settings.Language',
333
+ icon: 'Globe',
334
+ keys: ['language.'],
335
+ },
336
+ ] as const;
337
+
338
+ /**
339
+ * Settings excluded from remote editing (web portal / profile management).
340
+ * These are device-local or internal-only settings.
341
+ */
342
+ export const EXCLUDED_DEVICE_SETTINGS: ReadonlySet<string> = new Set([
343
+ 'device.id',
344
+ 'device.devMenuEnabled',
345
+ 'device.authWarningDismissTtlDays',
346
+ 'notification.hasBeenPrompted',
347
+ ]);
348
+
349
+ /**
350
+ * Check whether a setting key matches a group's key matchers.
351
+ */
352
+ function matchesGroup(key: string, group: SettingsGroupDef): boolean {
353
+ return group.keys.some(
354
+ (matcher) =>
355
+ key === matcher || (matcher.endsWith('.') && key.startsWith(matcher)),
356
+ );
357
+ }
358
+
359
+ /**
360
+ * Group parsed setting entries into user-facing groups matching the mobile
361
+ * app's settings menu structure.
362
+ *
363
+ * Takes a flat list of parsed settings (from `parseSettingsSnapshot`) and
364
+ * buckets them into the standard groups, filtering by calendar type and
365
+ * excluded keys.
366
+ */
367
+ export function groupSettingsForDevice(
368
+ allSettings: ParsedSettingEntry[],
369
+ calendarType: CalendarType,
370
+ ): { id: SettingsGroupId; labelKey: string; icon: string; settings: ParsedSettingEntry[] }[] {
371
+ // Filter excluded
372
+ const settings = allSettings.filter(
373
+ (s) => !EXCLUDED_DEVICE_SETTINGS.has(s.key),
374
+ );
375
+
376
+ // Calendar type filtering for event form keys
377
+ const isChronological = calendarType === 'chronological';
378
+ const filteredSettings = settings.filter((s) => {
379
+ if (isChronological && s.key.startsWith('eventForm.')) {
380
+ return false;
381
+ }
382
+ if (!isChronological && s.key.startsWith('chronologicalEventForm.')) {
383
+ return false;
384
+ }
385
+ return true;
386
+ });
387
+
388
+ const claimed = new Set<string>();
389
+ const result: {
390
+ id: SettingsGroupId;
391
+ labelKey: string;
392
+ icon: string;
393
+ settings: ParsedSettingEntry[];
394
+ }[] = [];
395
+
396
+ for (const group of SETTINGS_GROUPS) {
397
+ // Skip groups not relevant for current calendar type
398
+ if (group.calendarType && group.calendarType !== calendarType) {
399
+ continue;
400
+ }
401
+
402
+ const matched = filteredSettings.filter(
403
+ (s) => !claimed.has(s.key) && matchesGroup(s.key, group),
404
+ );
405
+ if (matched.length === 0) {
406
+ continue;
407
+ }
408
+
409
+ for (const s of matched) {
410
+ claimed.add(s.key);
411
+ }
412
+
413
+ result.push({
414
+ id: group.id,
415
+ labelKey: group.labelKey,
416
+ icon: group.icon,
417
+ settings: matched,
418
+ });
419
+ }
420
+
421
+ return result;
422
+ }
423
+
181
424
  // ---------------------------------------------------------------------------
182
425
  // Data type discriminator — stored alongside each setting in the DB
183
426
  // ---------------------------------------------------------------------------
@@ -844,25 +1087,35 @@ export type ParsedSettingsGroup = {
844
1087
  * @param registry Optional registry instance (uses defaultRegistry if omitted)
845
1088
  */
846
1089
  export function parseSettingsSnapshot(
847
- json: string,
1090
+ json: string | Record<string, unknown>,
848
1091
  calendarType?: CalendarType,
849
1092
  registry: SettingsRegistry = defaultRegistry,
850
1093
  ): ParsedSettingsGroup[] {
851
1094
  let parsed: Record<string, unknown>;
852
- try {
853
- parsed = JSON.parse(json);
854
- } catch {
855
- return [];
1095
+ if (typeof json === 'string') {
1096
+ try {
1097
+ parsed = JSON.parse(json);
1098
+ } catch {
1099
+ return [];
1100
+ }
1101
+ } else {
1102
+ parsed = json;
856
1103
  }
857
1104
 
858
1105
  const groups = new Map<SettingsCategory, ParsedSettingEntry[]>();
859
1106
 
860
- for (const [key, value] of Object.entries(parsed)) {
1107
+ for (const [key, rawValue] of Object.entries(parsed)) {
861
1108
  const category = registry.getCategory(key);
862
1109
  if (!category) {
863
1110
  continue;
864
1111
  }
865
1112
 
1113
+ // Deserialize string values to their native types using the registry
1114
+ let value: unknown = rawValue;
1115
+ if (typeof rawValue === 'string' && key in registry.entries) {
1116
+ value = registry.deserialize(key as SettingKey, rawValue);
1117
+ }
1118
+
866
1119
  const dotIndex = key.indexOf('.');
867
1120
  const name = dotIndex > 0 ? key.substring(dotIndex + 1) : key;
868
1121