@almadar/std 1.0.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 (78) hide show
  1. package/LICENSE +72 -0
  2. package/dist/behaviors/action-affinity.d.ts +88 -0
  3. package/dist/behaviors/action-affinity.js +290 -0
  4. package/dist/behaviors/action-affinity.js.map +1 -0
  5. package/dist/behaviors/async.d.ts +20 -0
  6. package/dist/behaviors/async.js +542 -0
  7. package/dist/behaviors/async.js.map +1 -0
  8. package/dist/behaviors/data-management.d.ts +40 -0
  9. package/dist/behaviors/data-management.js +495 -0
  10. package/dist/behaviors/data-management.js.map +1 -0
  11. package/dist/behaviors/feedback.d.ts +18 -0
  12. package/dist/behaviors/feedback.js +307 -0
  13. package/dist/behaviors/feedback.js.map +1 -0
  14. package/dist/behaviors/game-core.d.ts +40 -0
  15. package/dist/behaviors/game-core.js +443 -0
  16. package/dist/behaviors/game-core.js.map +1 -0
  17. package/dist/behaviors/game-entity.d.ts +39 -0
  18. package/dist/behaviors/game-entity.js +643 -0
  19. package/dist/behaviors/game-entity.js.map +1 -0
  20. package/dist/behaviors/game-ui.d.ts +29 -0
  21. package/dist/behaviors/game-ui.js +493 -0
  22. package/dist/behaviors/game-ui.js.map +1 -0
  23. package/dist/behaviors/index.d.ts +11 -0
  24. package/dist/behaviors/index.js +4539 -0
  25. package/dist/behaviors/index.js.map +1 -0
  26. package/dist/behaviors/registry.d.ts +103 -0
  27. package/dist/behaviors/registry.js +4166 -0
  28. package/dist/behaviors/registry.js.map +1 -0
  29. package/dist/behaviors/types.d.ts +179 -0
  30. package/dist/behaviors/types.js +111 -0
  31. package/dist/behaviors/types.js.map +1 -0
  32. package/dist/behaviors/ui-interaction.d.ts +36 -0
  33. package/dist/behaviors/ui-interaction.js +1104 -0
  34. package/dist/behaviors/ui-interaction.js.map +1 -0
  35. package/dist/index.d.ts +195 -0
  36. package/dist/index.js +8209 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/modules/array.d.ts +28 -0
  39. package/dist/modules/array.js +556 -0
  40. package/dist/modules/array.js.map +1 -0
  41. package/dist/modules/async.d.ts +22 -0
  42. package/dist/modules/async.js +112 -0
  43. package/dist/modules/async.js.map +1 -0
  44. package/dist/modules/format.d.ts +21 -0
  45. package/dist/modules/format.js +129 -0
  46. package/dist/modules/format.js.map +1 -0
  47. package/dist/modules/index.d.ts +12 -0
  48. package/dist/modules/index.js +3131 -0
  49. package/dist/modules/index.js.map +1 -0
  50. package/dist/modules/math.d.ts +22 -0
  51. package/dist/modules/math.js +215 -0
  52. package/dist/modules/math.js.map +1 -0
  53. package/dist/modules/nn.d.ts +23 -0
  54. package/dist/modules/nn.js +189 -0
  55. package/dist/modules/nn.js.map +1 -0
  56. package/dist/modules/object.d.ts +22 -0
  57. package/dist/modules/object.js +257 -0
  58. package/dist/modules/object.js.map +1 -0
  59. package/dist/modules/str.d.ts +21 -0
  60. package/dist/modules/str.js +344 -0
  61. package/dist/modules/str.js.map +1 -0
  62. package/dist/modules/tensor.d.ts +23 -0
  63. package/dist/modules/tensor.js +427 -0
  64. package/dist/modules/tensor.js.map +1 -0
  65. package/dist/modules/time.d.ts +24 -0
  66. package/dist/modules/time.js +323 -0
  67. package/dist/modules/time.js.map +1 -0
  68. package/dist/modules/train.d.ts +23 -0
  69. package/dist/modules/train.js +308 -0
  70. package/dist/modules/train.js.map +1 -0
  71. package/dist/modules/validate.d.ts +23 -0
  72. package/dist/modules/validate.js +301 -0
  73. package/dist/modules/validate.js.map +1 -0
  74. package/dist/registry.d.ts +140 -0
  75. package/dist/registry.js +3240 -0
  76. package/dist/registry.js.map +1 -0
  77. package/dist/types-I95R8_FN.d.ts +91 -0
  78. package/package.json +59 -0
@@ -0,0 +1,495 @@
1
+ // behaviors/data-management.ts
2
+ var PAGINATION_BEHAVIOR = {
3
+ name: "std/Pagination",
4
+ category: "data-management",
5
+ description: "Page-based navigation for large data sets",
6
+ suggestedFor: [
7
+ "Large lists",
8
+ "Table pagination",
9
+ "Infinite scroll alternative",
10
+ "Data-heavy views"
11
+ ],
12
+ dataEntities: [
13
+ {
14
+ name: "PaginationState",
15
+ runtime: true,
16
+ singleton: true,
17
+ fields: [
18
+ { name: "page", type: "number", default: 1 },
19
+ { name: "pageSize", type: "number", default: 20 },
20
+ { name: "totalItems", type: "number", default: 0 }
21
+ ]
22
+ }
23
+ ],
24
+ stateMachine: {
25
+ initial: "Active",
26
+ states: [
27
+ { name: "Active", isInitial: true }
28
+ ],
29
+ events: [
30
+ { key: "INIT" },
31
+ { key: "NEXT_PAGE" },
32
+ { key: "PREV_PAGE" },
33
+ { key: "GO_TO_PAGE" },
34
+ { key: "SET_PAGE_SIZE" }
35
+ ],
36
+ transitions: [
37
+ {
38
+ from: "*",
39
+ event: "INIT",
40
+ effects: [
41
+ ["set", "@entity.page", 1],
42
+ ["set", "@entity.pageSize", "@config.defaultPageSize"]
43
+ ]
44
+ },
45
+ {
46
+ event: "NEXT_PAGE",
47
+ guard: ["<", "@entity.page", ["math/ceil", ["/", "@entity.totalItems", "@entity.pageSize"]]],
48
+ effects: [
49
+ ["set", "@entity.page", ["+", "@entity.page", 1]]
50
+ ]
51
+ },
52
+ {
53
+ event: "PREV_PAGE",
54
+ guard: [">", "@entity.page", 1],
55
+ effects: [
56
+ ["set", "@entity.page", ["-", "@entity.page", 1]]
57
+ ]
58
+ },
59
+ {
60
+ event: "GO_TO_PAGE",
61
+ guard: [
62
+ "and",
63
+ [">=", "@payload.page", 1],
64
+ ["<=", "@payload.page", ["math/ceil", ["/", "@entity.totalItems", "@entity.pageSize"]]]
65
+ ],
66
+ effects: [
67
+ ["set", "@entity.page", "@payload.page"]
68
+ ]
69
+ },
70
+ {
71
+ event: "SET_PAGE_SIZE",
72
+ effects: [
73
+ ["set", "@entity.pageSize", "@payload.size"],
74
+ ["set", "@entity.page", 1]
75
+ ]
76
+ }
77
+ ]
78
+ },
79
+ configSchema: {
80
+ required: [],
81
+ optional: [
82
+ { name: "defaultPageSize", type: "number", description: "Default items per page", default: 20 },
83
+ { name: "pageSizeOptions", type: "array", description: "Available page sizes", default: [10, 20, 50, 100] }
84
+ ]
85
+ }
86
+ };
87
+ var SELECTION_BEHAVIOR = {
88
+ name: "std/Selection",
89
+ category: "data-management",
90
+ description: "Single or multi-selection management",
91
+ suggestedFor: [
92
+ "Multi-select lists",
93
+ "Bulk operations",
94
+ "Item picking",
95
+ "Checkboxes in tables"
96
+ ],
97
+ dataEntities: [
98
+ {
99
+ name: "SelectionState",
100
+ runtime: true,
101
+ singleton: true,
102
+ fields: [
103
+ { name: "selected", type: "array", default: [] },
104
+ { name: "lastSelected", type: "string", default: null }
105
+ ]
106
+ }
107
+ ],
108
+ stateMachine: {
109
+ initial: "Active",
110
+ states: [
111
+ { name: "Active", isInitial: true }
112
+ ],
113
+ events: [
114
+ { key: "INIT" },
115
+ { key: "SELECT" },
116
+ { key: "DESELECT" },
117
+ { key: "TOGGLE" },
118
+ { key: "SELECT_ALL" },
119
+ { key: "CLEAR" }
120
+ ],
121
+ transitions: [
122
+ {
123
+ from: "*",
124
+ event: "INIT",
125
+ effects: [
126
+ ["set", "@entity.selected", []],
127
+ ["set", "@entity.lastSelected", null]
128
+ ]
129
+ },
130
+ {
131
+ event: "SELECT",
132
+ effects: [
133
+ [
134
+ "if",
135
+ ["=", "@config.mode", "single"],
136
+ [
137
+ "do",
138
+ ["set", "@entity.selected", ["@payload.id"]],
139
+ ["set", "@entity.lastSelected", "@payload.id"]
140
+ ],
141
+ [
142
+ "if",
143
+ [
144
+ "or",
145
+ ["not", "@config.maxSelection"],
146
+ ["<", ["array/len", "@entity.selected"], "@config.maxSelection"]
147
+ ],
148
+ [
149
+ "do",
150
+ ["set", "@entity.selected", ["array/append", "@entity.selected", "@payload.id"]],
151
+ ["set", "@entity.lastSelected", "@payload.id"]
152
+ ],
153
+ ["notify", { type: "warning", message: "Maximum selection reached" }]
154
+ ]
155
+ ]
156
+ ]
157
+ },
158
+ {
159
+ event: "DESELECT",
160
+ effects: [
161
+ ["set", "@entity.selected", ["array/filter", "@entity.selected", ["fn", "id", ["!=", "@id", "@payload.id"]]]]
162
+ ]
163
+ },
164
+ {
165
+ event: "TOGGLE",
166
+ effects: [
167
+ [
168
+ "if",
169
+ ["array/includes", "@entity.selected", "@payload.id"],
170
+ ["set", "@entity.selected", ["array/filter", "@entity.selected", ["fn", "id", ["!=", "@id", "@payload.id"]]]],
171
+ [
172
+ "if",
173
+ ["or", ["=", "@config.mode", "single"], [
174
+ "or",
175
+ ["not", "@config.maxSelection"],
176
+ ["<", ["array/len", "@entity.selected"], "@config.maxSelection"]
177
+ ]],
178
+ [
179
+ "set",
180
+ "@entity.selected",
181
+ [
182
+ "if",
183
+ ["=", "@config.mode", "single"],
184
+ ["@payload.id"],
185
+ ["array/append", "@entity.selected", "@payload.id"]
186
+ ]
187
+ ],
188
+ ["notify", { type: "warning", message: "Maximum selection reached" }]
189
+ ]
190
+ ]
191
+ ]
192
+ },
193
+ {
194
+ event: "SELECT_ALL",
195
+ guard: ["=", "@config.mode", "multi"],
196
+ effects: [
197
+ ["set", "@entity.selected", "@payload.ids"]
198
+ ]
199
+ },
200
+ {
201
+ event: "CLEAR",
202
+ effects: [
203
+ ["set", "@entity.selected", []],
204
+ ["set", "@entity.lastSelected", null]
205
+ ]
206
+ }
207
+ ]
208
+ },
209
+ configSchema: {
210
+ required: [],
211
+ optional: [
212
+ { name: "mode", type: "string", description: "Selection mode", default: "single", enum: ["single", "multi"] },
213
+ { name: "maxSelection", type: "number", description: "Maximum selections (multi mode)", default: null }
214
+ ]
215
+ }
216
+ };
217
+ var SORT_BEHAVIOR = {
218
+ name: "std/Sort",
219
+ category: "data-management",
220
+ description: "Sorting by field with direction toggle",
221
+ suggestedFor: [
222
+ "Sortable tables",
223
+ "List ordering",
224
+ "Column headers"
225
+ ],
226
+ dataEntities: [
227
+ {
228
+ name: "SortState",
229
+ runtime: true,
230
+ singleton: true,
231
+ fields: [
232
+ { name: "sortField", type: "string", default: null },
233
+ { name: "sortDirection", type: "string", default: "asc" }
234
+ ]
235
+ }
236
+ ],
237
+ stateMachine: {
238
+ initial: "Active",
239
+ states: [
240
+ { name: "Active", isInitial: true }
241
+ ],
242
+ events: [
243
+ { key: "INIT" },
244
+ { key: "SORT" },
245
+ { key: "TOGGLE_DIRECTION" },
246
+ { key: "CLEAR_SORT" }
247
+ ],
248
+ transitions: [
249
+ {
250
+ from: "*",
251
+ event: "INIT",
252
+ effects: [
253
+ ["set", "@entity.sortField", "@config.defaultField"],
254
+ ["set", "@entity.sortDirection", "@config.defaultDirection"]
255
+ ]
256
+ },
257
+ {
258
+ event: "SORT",
259
+ effects: [
260
+ [
261
+ "if",
262
+ ["=", "@entity.sortField", "@payload.field"],
263
+ ["set", "@entity.sortDirection", ["if", ["=", "@entity.sortDirection", "asc"], "desc", "asc"]],
264
+ [
265
+ "do",
266
+ ["set", "@entity.sortField", "@payload.field"],
267
+ ["set", "@entity.sortDirection", "asc"]
268
+ ]
269
+ ]
270
+ ]
271
+ },
272
+ {
273
+ event: "TOGGLE_DIRECTION",
274
+ guard: ["!=", "@entity.sortField", null],
275
+ effects: [
276
+ ["set", "@entity.sortDirection", ["if", ["=", "@entity.sortDirection", "asc"], "desc", "asc"]]
277
+ ]
278
+ },
279
+ {
280
+ event: "CLEAR_SORT",
281
+ effects: [
282
+ ["set", "@entity.sortField", null],
283
+ ["set", "@entity.sortDirection", "asc"]
284
+ ]
285
+ }
286
+ ]
287
+ },
288
+ configSchema: {
289
+ required: [],
290
+ optional: [
291
+ { name: "defaultField", type: "string", description: "Default sort field" },
292
+ { name: "defaultDirection", type: "string", description: "Default direction", default: "asc", enum: ["asc", "desc"] }
293
+ ]
294
+ }
295
+ };
296
+ var FILTER_BEHAVIOR = {
297
+ name: "std/Filter",
298
+ category: "data-management",
299
+ description: "Query Singleton pattern for explicit filtering - use with entity-table query prop",
300
+ suggestedFor: [
301
+ "Filterable lists",
302
+ "Advanced search",
303
+ "Filter panels",
304
+ "Faceted search",
305
+ "Entity tables with filters"
306
+ ],
307
+ dataEntities: [
308
+ {
309
+ name: "QueryState",
310
+ runtime: true,
311
+ singleton: true,
312
+ fields: [
313
+ { name: "status", type: "string", default: null, description: "Filter by status field" },
314
+ { name: "priority", type: "string", default: null, description: "Filter by priority field" },
315
+ { name: "search", type: "string", default: "", description: "Search term" },
316
+ { name: "sortBy", type: "string", default: "createdAt", description: "Sort field" },
317
+ { name: "sortOrder", type: "string", default: "desc", description: "Sort direction: asc or desc" }
318
+ ]
319
+ }
320
+ ],
321
+ stateMachine: {
322
+ initial: "Active",
323
+ states: [
324
+ { name: "Active", isInitial: true }
325
+ ],
326
+ events: [
327
+ { key: "INIT" },
328
+ { key: "FILTER" },
329
+ { key: "SEARCH" },
330
+ { key: "SORT" },
331
+ { key: "CLEAR_FILTERS" }
332
+ ],
333
+ transitions: [
334
+ {
335
+ from: "*",
336
+ event: "INIT",
337
+ effects: [
338
+ // Render filter UI with query reference
339
+ ["render-ui", "sidebar", {
340
+ type: "filter-group",
341
+ query: "@QueryState",
342
+ filters: "@config.filters"
343
+ }],
344
+ // Render entity table with query reference
345
+ ["render-ui", "main", {
346
+ type: "entity-table",
347
+ entity: "@config.entity",
348
+ query: "@QueryState",
349
+ columns: "@config.columns"
350
+ }]
351
+ ]
352
+ },
353
+ {
354
+ event: "FILTER",
355
+ effects: [
356
+ ["set", "@QueryState.status", "@payload.status"],
357
+ ["set", "@QueryState.priority", "@payload.priority"]
358
+ ]
359
+ },
360
+ {
361
+ event: "SEARCH",
362
+ effects: [
363
+ ["set", "@QueryState.search", "@payload.searchTerm"]
364
+ ]
365
+ },
366
+ {
367
+ event: "SORT",
368
+ effects: [
369
+ ["set", "@QueryState.sortBy", "@payload.field"],
370
+ ["set", "@QueryState.sortOrder", "@payload.order"]
371
+ ]
372
+ },
373
+ {
374
+ event: "CLEAR_FILTERS",
375
+ effects: [
376
+ ["set", "@QueryState.status", null],
377
+ ["set", "@QueryState.priority", null],
378
+ ["set", "@QueryState.search", ""]
379
+ ]
380
+ }
381
+ ]
382
+ },
383
+ configSchema: {
384
+ required: [
385
+ { name: "entity", type: "string", description: "Entity to filter" }
386
+ ],
387
+ optional: [
388
+ { name: "filters", type: "array", description: "Filter field definitions", default: [] },
389
+ { name: "columns", type: "array", description: "Table columns to display", default: [] }
390
+ ]
391
+ }
392
+ };
393
+ var SEARCH_BEHAVIOR = {
394
+ name: "std/Search",
395
+ category: "data-management",
396
+ description: "Search with debounce - updates QueryState.search field",
397
+ suggestedFor: [
398
+ "Search inputs",
399
+ "Quick filters",
400
+ "Global search",
401
+ "Type-ahead"
402
+ ],
403
+ dataEntities: [
404
+ {
405
+ name: "SearchState",
406
+ runtime: true,
407
+ singleton: true,
408
+ fields: [
409
+ { name: "search", type: "string", default: "" },
410
+ { name: "isSearching", type: "boolean", default: false }
411
+ ]
412
+ }
413
+ ],
414
+ stateMachine: {
415
+ initial: "Idle",
416
+ states: [
417
+ { name: "Idle", isInitial: true },
418
+ { name: "Searching" }
419
+ ],
420
+ events: [
421
+ { key: "INIT" },
422
+ { key: "SEARCH" },
423
+ { key: "CLEAR_SEARCH" },
424
+ { key: "SEARCH_COMPLETE" }
425
+ ],
426
+ transitions: [
427
+ {
428
+ from: "*",
429
+ event: "INIT",
430
+ effects: [
431
+ ["set", "@entity.search", ""],
432
+ ["set", "@entity.isSearching", false],
433
+ ["render-ui", "main", {
434
+ type: "search-bar",
435
+ query: "@SearchState",
436
+ placeholder: "@config.placeholder"
437
+ }]
438
+ ]
439
+ },
440
+ {
441
+ from: "Idle",
442
+ to: "Searching",
443
+ event: "SEARCH",
444
+ guard: [">=", ["str/len", "@payload.term"], "@config.minLength"],
445
+ effects: [
446
+ ["set", "@entity.search", "@payload.term"],
447
+ ["set", "@entity.isSearching", true],
448
+ ["async/debounce", "@config.debounceMs", ["emit", "SEARCH_COMPLETE"]]
449
+ ]
450
+ },
451
+ {
452
+ from: "Idle",
453
+ event: "SEARCH",
454
+ guard: ["<", ["str/len", "@payload.term"], "@config.minLength"],
455
+ effects: [
456
+ ["set", "@entity.search", "@payload.term"]
457
+ ]
458
+ },
459
+ {
460
+ from: "Searching",
461
+ to: "Idle",
462
+ event: "SEARCH_COMPLETE",
463
+ effects: [
464
+ ["set", "@entity.isSearching", false]
465
+ ]
466
+ },
467
+ {
468
+ event: "CLEAR_SEARCH",
469
+ effects: [
470
+ ["set", "@entity.search", ""],
471
+ ["set", "@entity.isSearching", false]
472
+ ]
473
+ }
474
+ ]
475
+ },
476
+ configSchema: {
477
+ required: [],
478
+ optional: [
479
+ { name: "debounceMs", type: "number", description: "Debounce delay in ms", default: 300 },
480
+ { name: "minLength", type: "number", description: "Minimum search length", default: 1 },
481
+ { name: "placeholder", type: "string", description: "Input placeholder", default: "Search..." }
482
+ ]
483
+ }
484
+ };
485
+ var DATA_MANAGEMENT_BEHAVIORS = [
486
+ PAGINATION_BEHAVIOR,
487
+ SELECTION_BEHAVIOR,
488
+ SORT_BEHAVIOR,
489
+ FILTER_BEHAVIOR,
490
+ SEARCH_BEHAVIOR
491
+ ];
492
+
493
+ export { DATA_MANAGEMENT_BEHAVIORS, FILTER_BEHAVIOR, PAGINATION_BEHAVIOR, SEARCH_BEHAVIOR, SELECTION_BEHAVIOR, SORT_BEHAVIOR };
494
+ //# sourceMappingURL=data-management.js.map
495
+ //# sourceMappingURL=data-management.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../behaviors/data-management.ts"],"names":[],"mappings":";AAkBO,IAAM,mBAAA,GAAwC;AAAA,EACnD,IAAA,EAAM,gBAAA;AAAA,EACN,QAAA,EAAU,iBAAA;AAAA,EACV,WAAA,EAAa,2CAAA;AAAA,EACb,YAAA,EAAc;AAAA,IACZ,aAAA;AAAA,IACA,kBAAA;AAAA,IACA,6BAAA;AAAA,IACA;AAAA,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ;AAAA,MACE,IAAA,EAAM,iBAAA;AAAA,MACN,OAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,IAAA;AAAA,MACX,MAAA,EAAQ;AAAA,QACN,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,QAAA,EAAU,SAAS,CAAA,EAAE;AAAA,QAC3C,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,QAAA,EAAU,SAAS,EAAA,EAAG;AAAA,QAChD,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,QAAA,EAAU,SAAS,CAAA;AAAE;AACnD;AACF,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,OAAA,EAAS,QAAA;AAAA,IACT,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,IAAA;AAAK,KACpC;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,EAAE,KAAK,MAAA,EAAO;AAAA,MACd,EAAE,KAAK,WAAA,EAAY;AAAA,MACnB,EAAE,KAAK,WAAA,EAAY;AAAA,MACnB,EAAE,KAAK,YAAA,EAAa;AAAA,MACpB,EAAE,KAAK,eAAA;AAAgB,KACzB;AAAA,IACA,WAAA,EAAa;AAAA,MACX;AAAA,QACE,IAAA,EAAM,GAAA;AAAA,QACN,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,cAAA,EAAgB,CAAC,CAAA;AAAA,UACzB,CAAC,KAAA,EAAO,kBAAA,EAAoB,yBAAyB;AAAA;AACvD,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,WAAA;AAAA,QACP,KAAA,EAAO,CAAC,GAAA,EAAK,cAAA,EAAgB,CAAC,WAAA,EAAa,CAAC,GAAA,EAAK,oBAAA,EAAsB,kBAAkB,CAAC,CAAC,CAAA;AAAA,QAC3F,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,cAAA,EAAgB,CAAC,GAAA,EAAK,cAAA,EAAgB,CAAC,CAAC;AAAA;AAClD,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,WAAA;AAAA,QACP,KAAA,EAAO,CAAC,GAAA,EAAK,cAAA,EAAgB,CAAC,CAAA;AAAA,QAC9B,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,cAAA,EAAgB,CAAC,GAAA,EAAK,cAAA,EAAgB,CAAC,CAAC;AAAA;AAClD,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,YAAA;AAAA,QACP,KAAA,EAAO;AAAA,UAAC,KAAA;AAAA,UACN,CAAC,IAAA,EAAM,eAAA,EAAiB,CAAC,CAAA;AAAA,UACzB,CAAC,IAAA,EAAM,eAAA,EAAiB,CAAC,WAAA,EAAa,CAAC,GAAA,EAAK,oBAAA,EAAsB,kBAAkB,CAAC,CAAC;AAAA,SAAC;AAAA,QACzF,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,cAAA,EAAgB,eAAe;AAAA;AACzC,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,eAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,kBAAA,EAAoB,eAAe,CAAA;AAAA,UAC3C,CAAC,KAAA,EAAO,cAAA,EAAgB,CAAC;AAAA;AAC3B;AACF;AACF,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,UAAU,EAAC;AAAA,IACX,QAAA,EAAU;AAAA,MACR,EAAE,MAAM,iBAAA,EAAmB,IAAA,EAAM,UAAU,WAAA,EAAa,wBAAA,EAA0B,SAAS,EAAA,EAAG;AAAA,MAC9F,EAAE,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,OAAA,EAAS,WAAA,EAAa,sBAAA,EAAwB,OAAA,EAAS,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAAE;AAC5G;AAEJ;AAMO,IAAM,kBAAA,GAAuC;AAAA,EAClD,IAAA,EAAM,eAAA;AAAA,EACN,QAAA,EAAU,iBAAA;AAAA,EACV,WAAA,EAAa,sCAAA;AAAA,EACb,YAAA,EAAc;AAAA,IACZ,oBAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,IAAA;AAAA,MACX,MAAA,EAAQ;AAAA,QACN,EAAE,IAAA,EAAM,UAAA,EAAY,MAAM,OAAA,EAAS,OAAA,EAAS,EAAC,EAAE;AAAA,QAC/C,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,SAAS,IAAA;AAAK;AACxD;AACF,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,OAAA,EAAS,QAAA;AAAA,IACT,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,IAAA;AAAK,KACpC;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,EAAE,KAAK,MAAA,EAAO;AAAA,MACd,EAAE,KAAK,QAAA,EAAS;AAAA,MAChB,EAAE,KAAK,UAAA,EAAW;AAAA,MAClB,EAAE,KAAK,QAAA,EAAS;AAAA,MAChB,EAAE,KAAK,YAAA,EAAa;AAAA,MACpB,EAAE,KAAK,OAAA;AAAQ,KACjB;AAAA,IACA,WAAA,EAAa;AAAA,MACX;AAAA,QACE,IAAA,EAAM,GAAA;AAAA,QACN,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,kBAAA,EAAoB,EAAE,CAAA;AAAA,UAC9B,CAAC,KAAA,EAAO,sBAAA,EAAwB,IAAI;AAAA;AACtC,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,QAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP;AAAA,YAAC,IAAA;AAAA,YAAM,CAAC,GAAA,EAAK,cAAA,EAAgB,QAAQ,CAAA;AAAA,YACnC;AAAA,cAAC,IAAA;AAAA,cACC,CAAC,KAAA,EAAO,kBAAA,EAAoB,CAAC,aAAa,CAAC,CAAA;AAAA,cAC3C,CAAC,KAAA,EAAO,sBAAA,EAAwB,aAAa;AAAA,aAAC;AAAA,YAChD;AAAA,cAAC,IAAA;AAAA,cAAM;AAAA,gBAAC,IAAA;AAAA,gBACN,CAAC,OAAO,sBAAsB,CAAA;AAAA,gBAC9B,CAAC,GAAA,EAAK,CAAC,WAAA,EAAa,kBAAkB,GAAG,sBAAsB;AAAA,eAAC;AAAA,cAChE;AAAA,gBAAC,IAAA;AAAA,gBACC,CAAC,KAAA,EAAO,kBAAA,EAAoB,CAAC,cAAA,EAAgB,kBAAA,EAAoB,aAAa,CAAC,CAAA;AAAA,gBAC/E,CAAC,KAAA,EAAO,sBAAA,EAAwB,aAAa;AAAA,eAAC;AAAA,cAChD,CAAC,QAAA,EAAU,EAAE,MAAM,SAAA,EAAW,OAAA,EAAS,6BAA6B;AAAA;AAAC;AAAC;AAC5E,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,UAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,kBAAA,EAAoB,CAAC,gBAAgB,kBAAA,EAAoB,CAAC,IAAA,EAAM,IAAA,EAAM,CAAC,IAAA,EAAM,KAAA,EAAO,aAAa,CAAC,CAAC,CAAC;AAAA;AAC9G,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,QAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP;AAAA,YAAC,IAAA;AAAA,YAAM,CAAC,gBAAA,EAAkB,kBAAA,EAAoB,aAAa,CAAA;AAAA,YACzD,CAAC,KAAA,EAAO,kBAAA,EAAoB,CAAC,gBAAgB,kBAAA,EAAoB,CAAC,IAAA,EAAM,IAAA,EAAM,CAAC,IAAA,EAAM,KAAA,EAAO,aAAa,CAAC,CAAC,CAAC,CAAA;AAAA,YAC5G;AAAA,cAAC,IAAA;AAAA,cAAM,CAAC,IAAA,EAAM,CAAC,GAAA,EAAK,cAAA,EAAgB,QAAQ,CAAA,EAAG;AAAA,gBAAC,IAAA;AAAA,gBAC9C,CAAC,OAAO,sBAAsB,CAAA;AAAA,gBAC9B,CAAC,GAAA,EAAK,CAAC,WAAA,EAAa,kBAAkB,GAAG,sBAAsB;AAAA,eAAE,CAAA;AAAA,cACjE;AAAA,gBAAC,KAAA;AAAA,gBAAO,kBAAA;AAAA,gBACN;AAAA,kBAAC,IAAA;AAAA,kBAAM,CAAC,GAAA,EAAK,cAAA,EAAgB,QAAQ,CAAA;AAAA,kBACnC,CAAC,aAAa,CAAA;AAAA,kBACd,CAAC,cAAA,EAAgB,kBAAA,EAAoB,aAAa;AAAA;AAAC,eAAC;AAAA,cACxD,CAAC,QAAA,EAAU,EAAE,MAAM,SAAA,EAAW,OAAA,EAAS,6BAA6B;AAAA;AAAC;AAAC;AAC5E,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,YAAA;AAAA,QACP,KAAA,EAAO,CAAC,GAAA,EAAK,cAAA,EAAgB,OAAO,CAAA;AAAA,QACpC,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,kBAAA,EAAoB,cAAc;AAAA;AAC5C,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,kBAAA,EAAoB,EAAE,CAAA;AAAA,UAC9B,CAAC,KAAA,EAAO,sBAAA,EAAwB,IAAI;AAAA;AACtC;AACF;AACF,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,UAAU,EAAC;AAAA,IACX,QAAA,EAAU;AAAA,MACR,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,QAAA,EAAU,WAAA,EAAa,gBAAA,EAAkB,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,CAAC,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,MAC5G,EAAE,MAAM,cAAA,EAAgB,IAAA,EAAM,UAAU,WAAA,EAAa,iCAAA,EAAmC,SAAS,IAAA;AAAK;AACxG;AAEJ;AAMO,IAAM,aAAA,GAAkC;AAAA,EAC7C,IAAA,EAAM,UAAA;AAAA,EACN,QAAA,EAAU,iBAAA;AAAA,EACV,WAAA,EAAa,wCAAA;AAAA,EACb,YAAA,EAAc;AAAA,IACZ,iBAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ;AAAA,MACE,IAAA,EAAM,WAAA;AAAA,MACN,OAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,IAAA;AAAA,MACX,MAAA,EAAQ;AAAA,QACN,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,SAAS,IAAA,EAAK;AAAA,QACnD,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,QAAA,EAAU,SAAS,KAAA;AAAM;AAC1D;AACF,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,OAAA,EAAS,QAAA;AAAA,IACT,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,IAAA;AAAK,KACpC;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,EAAE,KAAK,MAAA,EAAO;AAAA,MACd,EAAE,KAAK,MAAA,EAAO;AAAA,MACd,EAAE,KAAK,kBAAA,EAAmB;AAAA,MAC1B,EAAE,KAAK,YAAA;AAAa,KACtB;AAAA,IACA,WAAA,EAAa;AAAA,MACX;AAAA,QACE,IAAA,EAAM,GAAA;AAAA,QACN,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,mBAAA,EAAqB,sBAAsB,CAAA;AAAA,UACnD,CAAC,KAAA,EAAO,uBAAA,EAAyB,0BAA0B;AAAA;AAC7D,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP;AAAA,YAAC,IAAA;AAAA,YAAM,CAAC,GAAA,EAAK,mBAAA,EAAqB,gBAAgB,CAAA;AAAA,YAChD,CAAC,KAAA,EAAO,uBAAA,EAAyB,CAAC,IAAA,EAAM,CAAC,GAAA,EAAK,uBAAA,EAAyB,KAAK,CAAA,EAAG,MAAA,EAAQ,KAAK,CAAC,CAAA;AAAA,YAC7F;AAAA,cAAC,IAAA;AAAA,cACC,CAAC,KAAA,EAAO,mBAAA,EAAqB,gBAAgB,CAAA;AAAA,cAC7C,CAAC,KAAA,EAAO,uBAAA,EAAyB,KAAK;AAAA;AAAC;AAAC;AAC9C,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,kBAAA;AAAA,QACP,KAAA,EAAO,CAAC,IAAA,EAAM,mBAAA,EAAqB,IAAI,CAAA;AAAA,QACvC,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,uBAAA,EAAyB,CAAC,IAAA,EAAM,CAAC,GAAA,EAAK,uBAAA,EAAyB,KAAK,CAAA,EAAG,MAAA,EAAQ,KAAK,CAAC;AAAA;AAC/F,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,YAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,mBAAA,EAAqB,IAAI,CAAA;AAAA,UACjC,CAAC,KAAA,EAAO,uBAAA,EAAyB,KAAK;AAAA;AACxC;AACF;AACF,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,UAAU,EAAC;AAAA,IACX,QAAA,EAAU;AAAA,MACR,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,aAAa,oBAAA,EAAqB;AAAA,MAC1E,EAAE,IAAA,EAAM,kBAAA,EAAoB,IAAA,EAAM,QAAA,EAAU,WAAA,EAAa,mBAAA,EAAqB,OAAA,EAAS,KAAA,EAAO,IAAA,EAAM,CAAC,KAAA,EAAO,MAAM,CAAA;AAAE;AACtH;AAEJ;AAiBO,IAAM,eAAA,GAAoC;AAAA,EAC/C,IAAA,EAAM,YAAA;AAAA,EACN,QAAA,EAAU,iBAAA;AAAA,EACV,WAAA,EAAa,mFAAA;AAAA,EACb,YAAA,EAAc;AAAA,IACZ,kBAAA;AAAA,IACA,iBAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ;AAAA,MACE,IAAA,EAAM,YAAA;AAAA,MACN,OAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,IAAA;AAAA,MACX,MAAA,EAAQ;AAAA,QACN,EAAE,MAAM,QAAA,EAAU,IAAA,EAAM,UAAU,OAAA,EAAS,IAAA,EAAM,aAAa,wBAAA,EAAyB;AAAA,QACvF,EAAE,MAAM,UAAA,EAAY,IAAA,EAAM,UAAU,OAAA,EAAS,IAAA,EAAM,aAAa,0BAAA,EAA2B;AAAA,QAC3F,EAAE,MAAM,QAAA,EAAU,IAAA,EAAM,UAAU,OAAA,EAAS,EAAA,EAAI,aAAa,aAAA,EAAc;AAAA,QAC1E,EAAE,MAAM,QAAA,EAAU,IAAA,EAAM,UAAU,OAAA,EAAS,WAAA,EAAa,aAAa,YAAA,EAAa;AAAA,QAClF,EAAE,MAAM,WAAA,EAAa,IAAA,EAAM,UAAU,OAAA,EAAS,MAAA,EAAQ,aAAa,6BAAA;AAA8B;AACnG;AACF,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,OAAA,EAAS,QAAA;AAAA,IACT,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,IAAA;AAAK,KACpC;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,EAAE,KAAK,MAAA,EAAO;AAAA,MACd,EAAE,KAAK,QAAA,EAAS;AAAA,MAChB,EAAE,KAAK,QAAA,EAAS;AAAA,MAChB,EAAE,KAAK,MAAA,EAAO;AAAA,MACd,EAAE,KAAK,eAAA;AAAgB,KACzB;AAAA,IACA,WAAA,EAAa;AAAA,MACX;AAAA,QACE,IAAA,EAAM,GAAA;AAAA,QACN,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS;AAAA;AAAA,UAEP,CAAC,aAAa,SAAA,EAAW;AAAA,YACvB,IAAA,EAAM,cAAA;AAAA,YACN,KAAA,EAAO,aAAA;AAAA,YACP,OAAA,EAAS;AAAA,WACV,CAAA;AAAA;AAAA,UAED,CAAC,aAAa,MAAA,EAAQ;AAAA,YACpB,IAAA,EAAM,cAAA;AAAA,YACN,MAAA,EAAQ,gBAAA;AAAA,YACR,KAAA,EAAO,aAAA;AAAA,YACP,OAAA,EAAS;AAAA,WACV;AAAA;AACH,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,QAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,oBAAA,EAAsB,iBAAiB,CAAA;AAAA,UAC/C,CAAC,KAAA,EAAO,sBAAA,EAAwB,mBAAmB;AAAA;AACrD,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,QAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,oBAAA,EAAsB,qBAAqB;AAAA;AACrD,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,oBAAA,EAAsB,gBAAgB,CAAA;AAAA,UAC9C,CAAC,KAAA,EAAO,uBAAA,EAAyB,gBAAgB;AAAA;AACnD,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,eAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,oBAAA,EAAsB,IAAI,CAAA;AAAA,UAClC,CAAC,KAAA,EAAO,sBAAA,EAAwB,IAAI,CAAA;AAAA,UACpC,CAAC,KAAA,EAAO,oBAAA,EAAsB,EAAE;AAAA;AAClC;AACF;AACF,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU;AAAA,MACR,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,QAAA,EAAU,aAAa,kBAAA;AAAmB,KACpE;AAAA,IACA,QAAA,EAAU;AAAA,MACR,EAAE,MAAM,SAAA,EAAW,IAAA,EAAM,SAAS,WAAA,EAAa,0BAAA,EAA4B,OAAA,EAAS,EAAC,EAAE;AAAA,MACvF,EAAE,MAAM,SAAA,EAAW,IAAA,EAAM,SAAS,WAAA,EAAa,0BAAA,EAA4B,OAAA,EAAS,EAAC;AAAE;AACzF;AAEJ;AAYO,IAAM,eAAA,GAAoC;AAAA,EAC/C,IAAA,EAAM,YAAA;AAAA,EACN,QAAA,EAAU,iBAAA;AAAA,EACV,WAAA,EAAa,wDAAA;AAAA,EACb,YAAA,EAAc;AAAA,IACZ,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ;AAAA,MACE,IAAA,EAAM,aAAA;AAAA,MACN,OAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,IAAA;AAAA,MACX,MAAA,EAAQ;AAAA,QACN,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,QAAA,EAAU,SAAS,EAAA,EAAG;AAAA,QAC9C,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,SAAA,EAAW,SAAS,KAAA;AAAM;AACzD;AACF,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,OAAA,EAAS,MAAA;AAAA,IACT,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAW,IAAA,EAAK;AAAA,MAChC,EAAE,MAAM,WAAA;AAAY,KACtB;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,EAAE,KAAK,MAAA,EAAO;AAAA,MACd,EAAE,KAAK,QAAA,EAAS;AAAA,MAChB,EAAE,KAAK,cAAA,EAAe;AAAA,MACtB,EAAE,KAAK,iBAAA;AAAkB,KAC3B;AAAA,IACA,WAAA,EAAa;AAAA,MACX;AAAA,QACE,IAAA,EAAM,GAAA;AAAA,QACN,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,gBAAA,EAAkB,EAAE,CAAA;AAAA,UAC5B,CAAC,KAAA,EAAO,qBAAA,EAAuB,KAAK,CAAA;AAAA,UACpC,CAAC,aAAa,MAAA,EAAQ;AAAA,YACpB,IAAA,EAAM,YAAA;AAAA,YACN,KAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAa;AAAA,WACd;AAAA;AACH,OACF;AAAA,MACA;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,EAAA,EAAI,WAAA;AAAA,QACJ,KAAA,EAAO,QAAA;AAAA,QACP,OAAO,CAAC,IAAA,EAAM,CAAC,SAAA,EAAW,eAAe,GAAG,mBAAmB,CAAA;AAAA,QAC/D,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,gBAAA,EAAkB,eAAe,CAAA;AAAA,UACzC,CAAC,KAAA,EAAO,qBAAA,EAAuB,IAAI,CAAA;AAAA,UACnC,CAAC,gBAAA,EAAkB,oBAAA,EAAsB,CAAC,MAAA,EAAQ,iBAAiB,CAAC;AAAA;AACtE,OACF;AAAA,MACA;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,QAAA;AAAA,QACP,OAAO,CAAC,GAAA,EAAK,CAAC,SAAA,EAAW,eAAe,GAAG,mBAAmB,CAAA;AAAA,QAC9D,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,gBAAA,EAAkB,eAAe;AAAA;AAC3C,OACF;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAA;AAAA,QACN,EAAA,EAAI,MAAA;AAAA,QACJ,KAAA,EAAO,iBAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,qBAAA,EAAuB,KAAK;AAAA;AACtC,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,cAAA;AAAA,QACP,OAAA,EAAS;AAAA,UACP,CAAC,KAAA,EAAO,gBAAA,EAAkB,EAAE,CAAA;AAAA,UAC5B,CAAC,KAAA,EAAO,qBAAA,EAAuB,KAAK;AAAA;AACtC;AACF;AACF,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,UAAU,EAAC;AAAA,IACX,QAAA,EAAU;AAAA,MACR,EAAE,MAAM,YAAA,EAAc,IAAA,EAAM,UAAU,WAAA,EAAa,sBAAA,EAAwB,SAAS,GAAA,EAAI;AAAA,MACxF,EAAE,MAAM,WAAA,EAAa,IAAA,EAAM,UAAU,WAAA,EAAa,uBAAA,EAAyB,SAAS,CAAA,EAAE;AAAA,MACtF,EAAE,MAAM,aAAA,EAAe,IAAA,EAAM,UAAU,WAAA,EAAa,mBAAA,EAAqB,SAAS,WAAA;AAAY;AAChG;AAEJ;AAMO,IAAM,yBAAA,GAAgD;AAAA,EAC3D,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF","file":"data-management.js","sourcesContent":["/**\n * Data Management Behaviors\n *\n * Standard behaviors for data operations like pagination, selection,\n * sorting, filtering, and search.\n *\n * @packageDocumentation\n */\n\nimport type { StandardBehavior } from './types.js';\n\n// ============================================================================\n// std/Pagination - Page Navigation\n// ============================================================================\n\n/**\n * std/Pagination - Page navigation behavior for large data sets.\n */\nexport const PAGINATION_BEHAVIOR: StandardBehavior = {\n name: 'std/Pagination',\n category: 'data-management',\n description: 'Page-based navigation for large data sets',\n suggestedFor: [\n 'Large lists',\n 'Table pagination',\n 'Infinite scroll alternative',\n 'Data-heavy views',\n ],\n\n dataEntities: [\n {\n name: 'PaginationState',\n runtime: true,\n singleton: true,\n fields: [\n { name: 'page', type: 'number', default: 1 },\n { name: 'pageSize', type: 'number', default: 20 },\n { name: 'totalItems', type: 'number', default: 0 },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Active',\n states: [\n { name: 'Active', isInitial: true },\n ],\n events: [\n { key: 'INIT' },\n { key: 'NEXT_PAGE' },\n { key: 'PREV_PAGE' },\n { key: 'GO_TO_PAGE' },\n { key: 'SET_PAGE_SIZE' },\n ],\n transitions: [\n {\n from: '*',\n event: 'INIT',\n effects: [\n ['set', '@entity.page', 1],\n ['set', '@entity.pageSize', '@config.defaultPageSize'],\n ],\n },\n {\n event: 'NEXT_PAGE',\n guard: ['<', '@entity.page', ['math/ceil', ['/', '@entity.totalItems', '@entity.pageSize']]],\n effects: [\n ['set', '@entity.page', ['+', '@entity.page', 1]],\n ],\n },\n {\n event: 'PREV_PAGE',\n guard: ['>', '@entity.page', 1],\n effects: [\n ['set', '@entity.page', ['-', '@entity.page', 1]],\n ],\n },\n {\n event: 'GO_TO_PAGE',\n guard: ['and',\n ['>=', '@payload.page', 1],\n ['<=', '@payload.page', ['math/ceil', ['/', '@entity.totalItems', '@entity.pageSize']]]],\n effects: [\n ['set', '@entity.page', '@payload.page'],\n ],\n },\n {\n event: 'SET_PAGE_SIZE',\n effects: [\n ['set', '@entity.pageSize', '@payload.size'],\n ['set', '@entity.page', 1],\n ],\n },\n ],\n },\n\n configSchema: {\n required: [],\n optional: [\n { name: 'defaultPageSize', type: 'number', description: 'Default items per page', default: 20 },\n { name: 'pageSizeOptions', type: 'array', description: 'Available page sizes', default: [10, 20, 50, 100] },\n ],\n },\n};\n\n// ============================================================================\n// std/Selection - Single/Multi Selection\n// ============================================================================\n\nexport const SELECTION_BEHAVIOR: StandardBehavior = {\n name: 'std/Selection',\n category: 'data-management',\n description: 'Single or multi-selection management',\n suggestedFor: [\n 'Multi-select lists',\n 'Bulk operations',\n 'Item picking',\n 'Checkboxes in tables',\n ],\n\n dataEntities: [\n {\n name: 'SelectionState',\n runtime: true,\n singleton: true,\n fields: [\n { name: 'selected', type: 'array', default: [] },\n { name: 'lastSelected', type: 'string', default: null },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Active',\n states: [\n { name: 'Active', isInitial: true },\n ],\n events: [\n { key: 'INIT' },\n { key: 'SELECT' },\n { key: 'DESELECT' },\n { key: 'TOGGLE' },\n { key: 'SELECT_ALL' },\n { key: 'CLEAR' },\n ],\n transitions: [\n {\n from: '*',\n event: 'INIT',\n effects: [\n ['set', '@entity.selected', []],\n ['set', '@entity.lastSelected', null],\n ],\n },\n {\n event: 'SELECT',\n effects: [\n ['if', ['=', '@config.mode', 'single'],\n ['do',\n ['set', '@entity.selected', ['@payload.id']],\n ['set', '@entity.lastSelected', '@payload.id']],\n ['if', ['or',\n ['not', '@config.maxSelection'],\n ['<', ['array/len', '@entity.selected'], '@config.maxSelection']],\n ['do',\n ['set', '@entity.selected', ['array/append', '@entity.selected', '@payload.id']],\n ['set', '@entity.lastSelected', '@payload.id']],\n ['notify', { type: 'warning', message: 'Maximum selection reached' }]]],\n ],\n },\n {\n event: 'DESELECT',\n effects: [\n ['set', '@entity.selected', ['array/filter', '@entity.selected', ['fn', 'id', ['!=', '@id', '@payload.id']]]],\n ],\n },\n {\n event: 'TOGGLE',\n effects: [\n ['if', ['array/includes', '@entity.selected', '@payload.id'],\n ['set', '@entity.selected', ['array/filter', '@entity.selected', ['fn', 'id', ['!=', '@id', '@payload.id']]]],\n ['if', ['or', ['=', '@config.mode', 'single'], ['or',\n ['not', '@config.maxSelection'],\n ['<', ['array/len', '@entity.selected'], '@config.maxSelection']]],\n ['set', '@entity.selected',\n ['if', ['=', '@config.mode', 'single'],\n ['@payload.id'],\n ['array/append', '@entity.selected', '@payload.id']]],\n ['notify', { type: 'warning', message: 'Maximum selection reached' }]]],\n ],\n },\n {\n event: 'SELECT_ALL',\n guard: ['=', '@config.mode', 'multi'],\n effects: [\n ['set', '@entity.selected', '@payload.ids'],\n ],\n },\n {\n event: 'CLEAR',\n effects: [\n ['set', '@entity.selected', []],\n ['set', '@entity.lastSelected', null],\n ],\n },\n ],\n },\n\n configSchema: {\n required: [],\n optional: [\n { name: 'mode', type: 'string', description: 'Selection mode', default: 'single', enum: ['single', 'multi'] },\n { name: 'maxSelection', type: 'number', description: 'Maximum selections (multi mode)', default: null },\n ],\n },\n};\n\n// ============================================================================\n// std/Sort - Sorting\n// ============================================================================\n\nexport const SORT_BEHAVIOR: StandardBehavior = {\n name: 'std/Sort',\n category: 'data-management',\n description: 'Sorting by field with direction toggle',\n suggestedFor: [\n 'Sortable tables',\n 'List ordering',\n 'Column headers',\n ],\n\n dataEntities: [\n {\n name: 'SortState',\n runtime: true,\n singleton: true,\n fields: [\n { name: 'sortField', type: 'string', default: null },\n { name: 'sortDirection', type: 'string', default: 'asc' },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Active',\n states: [\n { name: 'Active', isInitial: true },\n ],\n events: [\n { key: 'INIT' },\n { key: 'SORT' },\n { key: 'TOGGLE_DIRECTION' },\n { key: 'CLEAR_SORT' },\n ],\n transitions: [\n {\n from: '*',\n event: 'INIT',\n effects: [\n ['set', '@entity.sortField', '@config.defaultField'],\n ['set', '@entity.sortDirection', '@config.defaultDirection'],\n ],\n },\n {\n event: 'SORT',\n effects: [\n ['if', ['=', '@entity.sortField', '@payload.field'],\n ['set', '@entity.sortDirection', ['if', ['=', '@entity.sortDirection', 'asc'], 'desc', 'asc']],\n ['do',\n ['set', '@entity.sortField', '@payload.field'],\n ['set', '@entity.sortDirection', 'asc']]],\n ],\n },\n {\n event: 'TOGGLE_DIRECTION',\n guard: ['!=', '@entity.sortField', null],\n effects: [\n ['set', '@entity.sortDirection', ['if', ['=', '@entity.sortDirection', 'asc'], 'desc', 'asc']],\n ],\n },\n {\n event: 'CLEAR_SORT',\n effects: [\n ['set', '@entity.sortField', null],\n ['set', '@entity.sortDirection', 'asc'],\n ],\n },\n ],\n },\n\n configSchema: {\n required: [],\n optional: [\n { name: 'defaultField', type: 'string', description: 'Default sort field' },\n { name: 'defaultDirection', type: 'string', description: 'Default direction', default: 'asc', enum: ['asc', 'desc'] },\n ],\n },\n};\n\n// ============================================================================\n// std/Filter - Query Singleton Pattern for Filtering\n// ============================================================================\n\n/**\n * std/Filter - Query Singleton pattern for explicit filtering.\n *\n * This behavior uses a singleton entity to hold filter state, making filtering\n * explicit in the schema rather than implicit in component behavior.\n *\n * The query singleton is referenced by patterns via the `query` prop:\n * ```json\n * { \"type\": \"entity-table\", \"entity\": \"Task\", \"query\": \"@TaskQuery\" }\n * ```\n */\nexport const FILTER_BEHAVIOR: StandardBehavior = {\n name: 'std/Filter',\n category: 'data-management',\n description: 'Query Singleton pattern for explicit filtering - use with entity-table query prop',\n suggestedFor: [\n 'Filterable lists',\n 'Advanced search',\n 'Filter panels',\n 'Faceted search',\n 'Entity tables with filters',\n ],\n\n dataEntities: [\n {\n name: 'QueryState',\n runtime: true,\n singleton: true,\n fields: [\n { name: 'status', type: 'string', default: null, description: 'Filter by status field' },\n { name: 'priority', type: 'string', default: null, description: 'Filter by priority field' },\n { name: 'search', type: 'string', default: '', description: 'Search term' },\n { name: 'sortBy', type: 'string', default: 'createdAt', description: 'Sort field' },\n { name: 'sortOrder', type: 'string', default: 'desc', description: 'Sort direction: asc or desc' },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Active',\n states: [\n { name: 'Active', isInitial: true },\n ],\n events: [\n { key: 'INIT' },\n { key: 'FILTER' },\n { key: 'SEARCH' },\n { key: 'SORT' },\n { key: 'CLEAR_FILTERS' },\n ],\n transitions: [\n {\n from: '*',\n event: 'INIT',\n effects: [\n // Render filter UI with query reference\n ['render-ui', 'sidebar', {\n type: 'filter-group',\n query: '@QueryState',\n filters: '@config.filters',\n }],\n // Render entity table with query reference\n ['render-ui', 'main', {\n type: 'entity-table',\n entity: '@config.entity',\n query: '@QueryState',\n columns: '@config.columns',\n }],\n ],\n },\n {\n event: 'FILTER',\n effects: [\n ['set', '@QueryState.status', '@payload.status'],\n ['set', '@QueryState.priority', '@payload.priority'],\n ],\n },\n {\n event: 'SEARCH',\n effects: [\n ['set', '@QueryState.search', '@payload.searchTerm'],\n ],\n },\n {\n event: 'SORT',\n effects: [\n ['set', '@QueryState.sortBy', '@payload.field'],\n ['set', '@QueryState.sortOrder', '@payload.order'],\n ],\n },\n {\n event: 'CLEAR_FILTERS',\n effects: [\n ['set', '@QueryState.status', null],\n ['set', '@QueryState.priority', null],\n ['set', '@QueryState.search', ''],\n ],\n },\n ],\n },\n\n configSchema: {\n required: [\n { name: 'entity', type: 'string', description: 'Entity to filter' },\n ],\n optional: [\n { name: 'filters', type: 'array', description: 'Filter field definitions', default: [] },\n { name: 'columns', type: 'array', description: 'Table columns to display', default: [] },\n ],\n },\n};\n\n// ============================================================================\n// std/Search - Search with Debounce\n// ============================================================================\n\n/**\n * std/Search - Search with debounce.\n *\n * Uses a singleton to hold search state. Can be combined with std/Filter\n * for full query singleton functionality, or used standalone.\n */\nexport const SEARCH_BEHAVIOR: StandardBehavior = {\n name: 'std/Search',\n category: 'data-management',\n description: 'Search with debounce - updates QueryState.search field',\n suggestedFor: [\n 'Search inputs',\n 'Quick filters',\n 'Global search',\n 'Type-ahead',\n ],\n\n dataEntities: [\n {\n name: 'SearchState',\n runtime: true,\n singleton: true,\n fields: [\n { name: 'search', type: 'string', default: '' },\n { name: 'isSearching', type: 'boolean', default: false },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Idle',\n states: [\n { name: 'Idle', isInitial: true },\n { name: 'Searching' },\n ],\n events: [\n { key: 'INIT' },\n { key: 'SEARCH' },\n { key: 'CLEAR_SEARCH' },\n { key: 'SEARCH_COMPLETE' },\n ],\n transitions: [\n {\n from: '*',\n event: 'INIT',\n effects: [\n ['set', '@entity.search', ''],\n ['set', '@entity.isSearching', false],\n ['render-ui', 'main', {\n type: 'search-bar',\n query: '@SearchState',\n placeholder: '@config.placeholder',\n }],\n ],\n },\n {\n from: 'Idle',\n to: 'Searching',\n event: 'SEARCH',\n guard: ['>=', ['str/len', '@payload.term'], '@config.minLength'],\n effects: [\n ['set', '@entity.search', '@payload.term'],\n ['set', '@entity.isSearching', true],\n ['async/debounce', '@config.debounceMs', ['emit', 'SEARCH_COMPLETE']],\n ],\n },\n {\n from: 'Idle',\n event: 'SEARCH',\n guard: ['<', ['str/len', '@payload.term'], '@config.minLength'],\n effects: [\n ['set', '@entity.search', '@payload.term'],\n ],\n },\n {\n from: 'Searching',\n to: 'Idle',\n event: 'SEARCH_COMPLETE',\n effects: [\n ['set', '@entity.isSearching', false],\n ],\n },\n {\n event: 'CLEAR_SEARCH',\n effects: [\n ['set', '@entity.search', ''],\n ['set', '@entity.isSearching', false],\n ],\n },\n ],\n },\n\n configSchema: {\n required: [],\n optional: [\n { name: 'debounceMs', type: 'number', description: 'Debounce delay in ms', default: 300 },\n { name: 'minLength', type: 'number', description: 'Minimum search length', default: 1 },\n { name: 'placeholder', type: 'string', description: 'Input placeholder', default: 'Search...' },\n ],\n },\n};\n\n// ============================================================================\n// Export All Data Management Behaviors\n// ============================================================================\n\nexport const DATA_MANAGEMENT_BEHAVIORS: StandardBehavior[] = [\n PAGINATION_BEHAVIOR,\n SELECTION_BEHAVIOR,\n SORT_BEHAVIOR,\n FILTER_BEHAVIOR,\n SEARCH_BEHAVIOR,\n];\n"]}
@@ -0,0 +1,18 @@
1
+ import { StandardBehavior } from './types.js';
2
+ import '@almadar/core/types';
3
+
4
+ /**
5
+ * Feedback Behaviors
6
+ *
7
+ * Standard behaviors for user feedback including notifications,
8
+ * confirmations, and undo functionality.
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+
13
+ declare const NOTIFICATION_BEHAVIOR: StandardBehavior;
14
+ declare const CONFIRMATION_BEHAVIOR: StandardBehavior;
15
+ declare const UNDO_BEHAVIOR: StandardBehavior;
16
+ declare const FEEDBACK_BEHAVIORS: StandardBehavior[];
17
+
18
+ export { CONFIRMATION_BEHAVIOR, FEEDBACK_BEHAVIORS, NOTIFICATION_BEHAVIOR, UNDO_BEHAVIOR };