@dataverse-kit/form-runtime 0.1.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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -0
  3. package/dist/businessRules-U1_MBgyG.d.cts +372 -0
  4. package/dist/businessRules-U1_MBgyG.d.ts +372 -0
  5. package/dist/context.cjs +151 -0
  6. package/dist/context.cjs.map +1 -0
  7. package/dist/context.d.cts +132 -0
  8. package/dist/context.d.ts +132 -0
  9. package/dist/context.mjs +113 -0
  10. package/dist/context.mjs.map +1 -0
  11. package/dist/control-DFOg_pc_.d.cts +1027 -0
  12. package/dist/control-DaXBm-52.d.ts +1027 -0
  13. package/dist/gridCustomizer-C0V9FAE_.d.ts +569 -0
  14. package/dist/gridCustomizer-mJO-kmQ4.d.cts +569 -0
  15. package/dist/hooks.cjs +85 -0
  16. package/dist/hooks.cjs.map +1 -0
  17. package/dist/hooks.d.cts +24 -0
  18. package/dist/hooks.d.ts +24 -0
  19. package/dist/hooks.mjs +60 -0
  20. package/dist/hooks.mjs.map +1 -0
  21. package/dist/icons.cjs +202 -0
  22. package/dist/icons.cjs.map +1 -0
  23. package/dist/icons.d.cts +130 -0
  24. package/dist/icons.d.ts +130 -0
  25. package/dist/icons.mjs +165 -0
  26. package/dist/icons.mjs.map +1 -0
  27. package/dist/index.cjs +6509 -0
  28. package/dist/index.cjs.map +1 -0
  29. package/dist/index.d.cts +410 -0
  30. package/dist/index.d.ts +410 -0
  31. package/dist/index.mjs +6490 -0
  32. package/dist/index.mjs.map +1 -0
  33. package/dist/runtime-capabilities-BdGDdu0d.d.cts +119 -0
  34. package/dist/runtime-capabilities-Brfc7loJ.d.ts +119 -0
  35. package/dist/theme-BfeZIxmZ.d.cts +74 -0
  36. package/dist/theme-BfeZIxmZ.d.ts +74 -0
  37. package/dist/theme.cjs +215 -0
  38. package/dist/theme.cjs.map +1 -0
  39. package/dist/theme.d.cts +32 -0
  40. package/dist/theme.d.ts +32 -0
  41. package/dist/theme.mjs +186 -0
  42. package/dist/theme.mjs.map +1 -0
  43. package/dist/types.cjs +976 -0
  44. package/dist/types.cjs.map +1 -0
  45. package/dist/types.d.cts +813 -0
  46. package/dist/types.d.ts +813 -0
  47. package/dist/types.mjs +902 -0
  48. package/dist/types.mjs.map +1 -0
  49. package/dist/utils.cjs +250 -0
  50. package/dist/utils.cjs.map +1 -0
  51. package/dist/utils.d.cts +99 -0
  52. package/dist/utils.d.ts +99 -0
  53. package/dist/utils.mjs +220 -0
  54. package/dist/utils.mjs.map +1 -0
  55. package/dist/v8.cjs +4622 -0
  56. package/dist/v8.cjs.map +1 -0
  57. package/dist/v8.d.cts +730 -0
  58. package/dist/v8.d.ts +730 -0
  59. package/dist/v8.mjs +4622 -0
  60. package/dist/v8.mjs.map +1 -0
  61. package/dist/v9.cjs +19 -0
  62. package/dist/v9.cjs.map +1 -0
  63. package/dist/v9.d.cts +2 -0
  64. package/dist/v9.d.ts +2 -0
  65. package/dist/v9.mjs +1 -0
  66. package/dist/v9.mjs.map +1 -0
  67. package/package.json +113 -0
package/dist/icons.mjs ADDED
@@ -0,0 +1,165 @@
1
+ // src/icons/iconNameMap.ts
2
+ var V8_TO_V9_ICON_MAP = {
3
+ Accept: "Checkmark20Regular",
4
+ Add: "Add20Regular",
5
+ AddTo: "AddSquare20Regular",
6
+ AlignCenter: "TextAlignCenter20Regular",
7
+ AlignLeft: "TextAlignLeft20Regular",
8
+ AlignRight: "TextAlignRight20Regular",
9
+ Back: "ArrowLeft20Regular",
10
+ Blocked2: "Prohibited20Regular",
11
+ BucketColor: "PaintBucket20Regular",
12
+ BulkUpload: "CloudArrowUp20Regular",
13
+ BulletedList: "TextBulletList20Regular",
14
+ CalculatorAddition: "Calculator20Regular",
15
+ Calendar: "Calendar20Regular",
16
+ Cancel: "Dismiss20Regular",
17
+ CellPhone: "Phone20Regular",
18
+ CheckList: "ClipboardTaskList20Regular",
19
+ CheckMark: "Checkmark20Regular",
20
+ ChevronDown: "ChevronDown20Regular",
21
+ ChevronLeft: "ChevronLeft20Regular",
22
+ ChevronRight: "ChevronRight20Regular",
23
+ ChevronUp: "ChevronUp20Regular",
24
+ CirclePause: "Pause20Regular",
25
+ CityNext: "BuildingMultiple20Regular",
26
+ Clear: "Dismiss20Regular",
27
+ Clock: "Clock20Regular",
28
+ CloudDownload: "CloudArrowDown20Regular",
29
+ CloudUpload: "CloudArrowUp20Regular",
30
+ Code: "Code20Regular",
31
+ Color: "Color20Regular",
32
+ ColumnOptions: "TableSettings20Regular",
33
+ Comment: "Comment20Regular",
34
+ Contact: "Person20Regular",
35
+ Copy: "Copy20Regular",
36
+ CustomList: "TextBulletList20Regular",
37
+ Database: "Database20Regular",
38
+ Delete: "Delete20Regular",
39
+ Down: "ArrowDown20Regular",
40
+ Download: "ArrowDownload20Regular",
41
+ Edit: "Edit20Regular",
42
+ ErrorBadge: "ErrorCircle20Regular",
43
+ FabricFolder: "Folder20Regular",
44
+ FabricOpenFolderHorizontal: "FolderOpen20Regular",
45
+ FavoriteStar: "Star20Regular",
46
+ FavoriteStarFill: "Star20Filled",
47
+ Filter: "Filter20Regular",
48
+ FitPage: "AutoFitWidth20Regular",
49
+ Flow: "Flow20Regular",
50
+ FullScreen: "FullScreenMaximize20Regular",
51
+ GridViewMedium: "Grid20Regular",
52
+ GridViewSmall: "Grid20Regular",
53
+ GroupObject: "Group20Regular",
54
+ Header1: "TextHeader120Regular",
55
+ History: "History20Regular",
56
+ Info: "Info20Regular",
57
+ Leave: "SignOut20Regular",
58
+ Link: "Link20Regular",
59
+ List: "TextBulletList20Regular",
60
+ Lock: "LockClosed20Regular",
61
+ Mail: "Mail20Regular",
62
+ Money: "Money20Regular",
63
+ More: "MoreHorizontal20Regular",
64
+ MoreVertical: "MoreVertical20Regular",
65
+ MoveToFolder: "FolderArrowRight20Regular",
66
+ NumberSymbol: "NumberSymbol20Regular",
67
+ OpenFolderHorizontal: "FolderOpen20Regular",
68
+ OpenInNewTab: "Open20Regular",
69
+ OpenInNewWindow: "Open20Regular",
70
+ Package: "Box20Regular",
71
+ PageHeaderEdit: "Edit20Regular",
72
+ Permissions: "ShieldCheckmark20Regular",
73
+ Phone: "Phone20Regular",
74
+ PhotoCollection: "ImageMultiple20Regular",
75
+ PlugDisconnected: "PlugDisconnected20Regular",
76
+ Redo: "ArrowRedo20Regular",
77
+ Refresh: "ArrowSync20Regular",
78
+ Remove: "Subtract20Regular",
79
+ Rename: "Rename20Regular",
80
+ Save: "Save20Regular",
81
+ SaveAndClose: "SaveEdit20Regular",
82
+ SaveTemplate: "SaveCopy20Regular",
83
+ Search: "Search20Regular",
84
+ Settings: "Settings20Regular",
85
+ Shapes: "Shapes20Regular",
86
+ SidePanel: "PanelRight20Regular",
87
+ Spacer: "TextWrap20Regular",
88
+ Star: "Star20Regular",
89
+ StatusCircleCheckmark: "CheckmarkCircle20Regular",
90
+ Switch: "ArrowSwap20Regular",
91
+ TVMonitor: "Tv20Regular",
92
+ Table: "Table20Regular",
93
+ TableGroup: "TableSimple20Regular",
94
+ Tablet: "Tablet20Regular",
95
+ TestPlan: "ClipboardTaskList20Regular",
96
+ TriggerAuto: "Flash20Regular",
97
+ Undo: "ArrowUndo20Regular",
98
+ Up: "ArrowUp20Regular",
99
+ Upload: "ArrowUpload20Regular",
100
+ View: "Eye20Regular",
101
+ Warning: "Warning20Regular",
102
+ ZipFolder: "FolderZip20Regular",
103
+ ZoomIn: "ZoomIn20Regular",
104
+ ZoomOut: "ZoomOut20Regular"
105
+ };
106
+ var V8_ICONS_WITHOUT_V9 = /* @__PURE__ */ new Set();
107
+ function mapV8IconToV9(v8Name) {
108
+ return V8_TO_V9_ICON_MAP[v8Name] ?? null;
109
+ }
110
+ function buildV9IconImport(v9IconNames) {
111
+ const sorted = Array.from(new Set(v9IconNames)).sort();
112
+ if (sorted.length === 0) return "";
113
+ return `import { ${sorted.join(", ")} } from '@fluentui/react-icons';
114
+ `;
115
+ }
116
+
117
+ // src/icons/personaCompatibilityMaps.ts
118
+ var V8_PERSONA_SIZE_TO_V9 = {
119
+ size8: 16,
120
+ size24: 24,
121
+ size32: 32,
122
+ size40: 40,
123
+ size48: 48,
124
+ size56: 56,
125
+ size72: 72,
126
+ size100: 96,
127
+ size120: 120
128
+ };
129
+ var V8_PRESENCE_TO_V9_STATUS = {
130
+ online: "available",
131
+ offline: "offline",
132
+ away: "away",
133
+ busy: "busy",
134
+ dnd: "do-not-disturb",
135
+ blocked: "unknown"
136
+ };
137
+ function mapV8PersonaSizeToV9(v8Size) {
138
+ return V8_PERSONA_SIZE_TO_V9[v8Size] ?? 48;
139
+ }
140
+ function mapV8PresenceToV9Status(v8Presence) {
141
+ return V8_PRESENCE_TO_V9_STATUS[v8Presence] ?? null;
142
+ }
143
+ function sanitizeV8EnumIdentifier(value, fallback) {
144
+ return /^[a-zA-Z][a-zA-Z0-9]*$/.test(value) ? value : fallback;
145
+ }
146
+ function sanitizeV8PresenceName(v8Presence) {
147
+ return sanitizeV8EnumIdentifier(v8Presence, "none");
148
+ }
149
+ function sanitizeV8PersonaSizeName(v8Size) {
150
+ return sanitizeV8EnumIdentifier(v8Size, "size48");
151
+ }
152
+ export {
153
+ V8_ICONS_WITHOUT_V9,
154
+ V8_PERSONA_SIZE_TO_V9,
155
+ V8_PRESENCE_TO_V9_STATUS,
156
+ V8_TO_V9_ICON_MAP,
157
+ buildV9IconImport,
158
+ mapV8IconToV9,
159
+ mapV8PersonaSizeToV9,
160
+ mapV8PresenceToV9Status,
161
+ sanitizeV8EnumIdentifier,
162
+ sanitizeV8PersonaSizeName,
163
+ sanitizeV8PresenceName
164
+ };
165
+ //# sourceMappingURL=icons.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons/iconNameMap.ts","../src/icons/personaCompatibilityMaps.ts"],"sourcesContent":["/**\n * Phase 3f.0 — v8 → v9 icon name lookup table.\n *\n * Maps Fluent UI v8 icon names (used by the form-builder picker and\n * emitted as `iconName=\"...\"` strings) to their equivalent component\n * names in `@fluentui/react-icons` for v9 generated output.\n *\n * v9 react-icons naming convention: `${Glyph}${Size}${Variant}` —\n * - Size: 12 | 16 | 20 | 24 | 28 | 32 | 48\n * - Variant: Regular | Filled\n *\n * The form generator emits inline icons in buttons, headers, and\n * column actions. 20px Regular is the standard size for inline use,\n * matching v8's default rendering. Callers needing a different size\n * can override at the call site.\n *\n * Coverage: every icon name referenced by `iconName: 'X'` patterns\n * in the form-builder project (~100 glyphs). Generated by surveying\n * `grep -rE \"iconName: ['\\\"]\"` output across `src/` on 2026-05-01.\n *\n * **Excluded from the v9 map** (no clean v9 equivalent — emit warning\n * via Phase 3f.1's scanV9Compatibility):\n * - none currently; v9 react-icons covers all 100 surveyed glyphs.\n * If a future v8 icon name has no v9 mapping, add it to\n * V8_ICONS_WITHOUT_V9 below so the scanner reports it.\n */\n\n/** v9 component name from `@fluentui/react-icons`. */\nexport type V9IconName = string;\n\n/**\n * v8 → v9 icon-name lookup. v8 keys are the literal `iconName=\"...\"`\n * strings the form generator emits today. v9 values are the component\n * names exported by `@fluentui/react-icons` at the standard 20px Regular\n * size. Default to `Regular` over `Filled` — matches v8's default weight.\n *\n * Some v8 names map to renamed v9 glyphs (Cancel → Dismiss, More →\n * MoreHorizontal, Refresh → ArrowSync, Back → ArrowLeft, Down → ArrowDown,\n * Up → ArrowUp, View → Eye, Remove → Subtract, Leave → SignOut). The map\n * is the single source of truth for these renames.\n */\nexport const V8_TO_V9_ICON_MAP: Record<string, V9IconName> = {\n Accept: 'Checkmark20Regular',\n Add: 'Add20Regular',\n AddTo: 'AddSquare20Regular',\n AlignCenter: 'TextAlignCenter20Regular',\n AlignLeft: 'TextAlignLeft20Regular',\n AlignRight: 'TextAlignRight20Regular',\n Back: 'ArrowLeft20Regular',\n Blocked2: 'Prohibited20Regular',\n BucketColor: 'PaintBucket20Regular',\n BulkUpload: 'CloudArrowUp20Regular',\n BulletedList: 'TextBulletList20Regular',\n CalculatorAddition: 'Calculator20Regular',\n Calendar: 'Calendar20Regular',\n Cancel: 'Dismiss20Regular',\n CellPhone: 'Phone20Regular',\n CheckList: 'ClipboardTaskList20Regular',\n CheckMark: 'Checkmark20Regular',\n ChevronDown: 'ChevronDown20Regular',\n ChevronLeft: 'ChevronLeft20Regular',\n ChevronRight: 'ChevronRight20Regular',\n ChevronUp: 'ChevronUp20Regular',\n CirclePause: 'Pause20Regular',\n CityNext: 'BuildingMultiple20Regular',\n Clear: 'Dismiss20Regular',\n Clock: 'Clock20Regular',\n CloudDownload: 'CloudArrowDown20Regular',\n CloudUpload: 'CloudArrowUp20Regular',\n Code: 'Code20Regular',\n Color: 'Color20Regular',\n ColumnOptions: 'TableSettings20Regular',\n Comment: 'Comment20Regular',\n Contact: 'Person20Regular',\n Copy: 'Copy20Regular',\n CustomList: 'TextBulletList20Regular',\n Database: 'Database20Regular',\n Delete: 'Delete20Regular',\n Down: 'ArrowDown20Regular',\n Download: 'ArrowDownload20Regular',\n Edit: 'Edit20Regular',\n ErrorBadge: 'ErrorCircle20Regular',\n FabricFolder: 'Folder20Regular',\n FabricOpenFolderHorizontal: 'FolderOpen20Regular',\n FavoriteStar: 'Star20Regular',\n FavoriteStarFill: 'Star20Filled',\n Filter: 'Filter20Regular',\n FitPage: 'AutoFitWidth20Regular',\n Flow: 'Flow20Regular',\n FullScreen: 'FullScreenMaximize20Regular',\n GridViewMedium: 'Grid20Regular',\n GridViewSmall: 'Grid20Regular',\n GroupObject: 'Group20Regular',\n Header1: 'TextHeader120Regular',\n History: 'History20Regular',\n Info: 'Info20Regular',\n Leave: 'SignOut20Regular',\n Link: 'Link20Regular',\n List: 'TextBulletList20Regular',\n Lock: 'LockClosed20Regular',\n Mail: 'Mail20Regular',\n Money: 'Money20Regular',\n More: 'MoreHorizontal20Regular',\n MoreVertical: 'MoreVertical20Regular',\n MoveToFolder: 'FolderArrowRight20Regular',\n NumberSymbol: 'NumberSymbol20Regular',\n OpenFolderHorizontal: 'FolderOpen20Regular',\n OpenInNewTab: 'Open20Regular',\n OpenInNewWindow: 'Open20Regular',\n Package: 'Box20Regular',\n PageHeaderEdit: 'Edit20Regular',\n Permissions: 'ShieldCheckmark20Regular',\n Phone: 'Phone20Regular',\n PhotoCollection: 'ImageMultiple20Regular',\n PlugDisconnected: 'PlugDisconnected20Regular',\n Redo: 'ArrowRedo20Regular',\n Refresh: 'ArrowSync20Regular',\n Remove: 'Subtract20Regular',\n Rename: 'Rename20Regular',\n Save: 'Save20Regular',\n SaveAndClose: 'SaveEdit20Regular',\n SaveTemplate: 'SaveCopy20Regular',\n Search: 'Search20Regular',\n Settings: 'Settings20Regular',\n Shapes: 'Shapes20Regular',\n SidePanel: 'PanelRight20Regular',\n Spacer: 'TextWrap20Regular',\n Star: 'Star20Regular',\n StatusCircleCheckmark: 'CheckmarkCircle20Regular',\n Switch: 'ArrowSwap20Regular',\n TVMonitor: 'Tv20Regular',\n Table: 'Table20Regular',\n TableGroup: 'TableSimple20Regular',\n Tablet: 'Tablet20Regular',\n TestPlan: 'ClipboardTaskList20Regular',\n TriggerAuto: 'Flash20Regular',\n Undo: 'ArrowUndo20Regular',\n Up: 'ArrowUp20Regular',\n Upload: 'ArrowUpload20Regular',\n View: 'Eye20Regular',\n Warning: 'Warning20Regular',\n ZipFolder: 'FolderZip20Regular',\n ZoomIn: 'ZoomIn20Regular',\n ZoomOut: 'ZoomOut20Regular',\n};\n\n/**\n * v8 icons that have no clean v9 equivalent. Empty today — every\n * surveyed v8 name maps to a v9 glyph above. Reserved for future v8\n * names (e.g. esoteric Office-suite glyphs) that don't ship in\n * `@fluentui/react-icons`. Phase 3f.1's `scanV9Compatibility` reads\n * this set to flag forms that use them.\n */\nexport const V8_ICONS_WITHOUT_V9: ReadonlySet<string> = new Set<string>();\n\n/**\n * Look up a v9 icon component name for a v8 icon name. Returns null\n * if no mapping exists; callers should consult `V8_ICONS_WITHOUT_V9`\n * to decide whether to flag it as a compatibility issue or just emit\n * a generic fallback.\n *\n * @param v8Name v8 `iconName` string (e.g. 'Add', 'Cancel')\n * @returns v9 component name (e.g. 'Add20Regular') or null\n */\nexport function mapV8IconToV9(v8Name: string): V9IconName | null {\n return V8_TO_V9_ICON_MAP[v8Name] ?? null;\n}\n\n/**\n * Build the import statement string for a set of v9 icons. Used by\n * generators that need to emit `import { Add20Regular, Delete20Regular }\n * from '@fluentui/react-icons'`. Empty input returns empty string —\n * caller should not include the import block at all in that case.\n *\n * @param v9IconNames Set or array of v9 component names\n * @returns Single-line import statement, or empty string if none\n */\nexport function buildV9IconImport(v9IconNames: Iterable<string>): string {\n const sorted = Array.from(new Set(v9IconNames)).sort();\n if (sorted.length === 0) return '';\n return `import { ${sorted.join(', ')} } from '@fluentui/react-icons';\\n`;\n}\n","/**\n * Phase 3f.4 — v8 Persona ↔ v9 Avatar compatibility maps.\n *\n * Extracted from FormCodeGenerator.ts (review fix) so the maps live\n * next to `iconNameMap.ts` and follow the same convention. Keeps the\n * generator focused on emission and lets the maps evolve independently.\n *\n * Naming convention parity with `mapV8IconToV9` from `iconNameMap.ts`:\n * `mapV8XxxToV9` — explicit v8 → v9 direction in the function name.\n *\n * v8 PersonaSize and PersonaPresence are enum names (`size48`, `online`)\n * that v8 turned into runtime values via `PersonaSize.size48` etc. v9\n * Avatar takes a numeric `size` and v9 PresenceBadge takes a `status`\n * string — different shapes, hence the lookup tables.\n */\n\n/**\n * v8 PersonaSize enum name → v9 Avatar `size` numeric value.\n *\n * v9 Avatar accepts only a fixed set of sizes (16/20/24/28/32/36/40/48/56\n * /64/72/96/120/128). v8 has a slightly different set (size8/24/32/40/48\n * /56/72/100/120). Round to the nearest valid v9 size when v8 has no\n * direct match (size8→16, size100→96).\n */\nexport const V8_PERSONA_SIZE_TO_V9: Record<string, number> = {\n size8: 16,\n size24: 24,\n size32: 32,\n size40: 40,\n size48: 48,\n size56: 56,\n size72: 72,\n size100: 96,\n size120: 120,\n};\n\n/**\n * v8 PersonaPresence enum name → v9 PresenceBadge `status` value.\n *\n * Returns null for unknown inputs — caller omits the badge entirely.\n * (Default v8 sentinel `'none'` is also unknown here — it never reaches\n * this map because the call site guards against `presence === 'none'`.)\n */\nexport const V8_PRESENCE_TO_V9_STATUS: Record<string, string> = {\n online: 'available',\n offline: 'offline',\n away: 'away',\n busy: 'busy',\n dnd: 'do-not-disturb',\n blocked: 'unknown',\n};\n\n/** Look up the v9 Avatar size for a v8 PersonaSize enum name. Defaults to 48. */\nexport function mapV8PersonaSizeToV9(v8Size: string): number {\n return V8_PERSONA_SIZE_TO_V9[v8Size] ?? 48;\n}\n\n/**\n * Look up the v9 PresenceBadge status for a v8 PersonaPresence enum name.\n * Returns null for unrecognized inputs — caller omits the badge.\n */\nexport function mapV8PresenceToV9Status(v8Presence: string): string | null {\n return V8_PRESENCE_TO_V9_STATUS[v8Presence] ?? null;\n}\n\n/**\n * Phase 3f.4 review fix — sanitize a user-controlled string that's\n * about to be interpolated into a JS member-access expression like\n * `PersonaPresence.${name}` or `PersonaSize.${name}`. The v8 emission\n * generates raw JS code, so an unvalidated user value (`'} alert(1) //'`)\n * would close the expression and inject arbitrary code. Whitelist to\n * identifier-shaped tokens; fall back to `fallback` for anything else.\n *\n * Pure-regex check intentional — doesn't tie us to a specific v8 enum\n * (which can shift across Fluent v8 patches). If the runtime enum\n * lookup yields undefined for a legal-but-unknown identifier, v8\n * silently renders without that prop — same outcome as the fallback.\n *\n * Used by the v8 Persona emission for both `presence` and `size` props.\n */\nexport function sanitizeV8EnumIdentifier(value: string, fallback: string): string {\n return /^[a-zA-Z][a-zA-Z0-9]*$/.test(value) ? value : fallback;\n}\n\n/** v8 PersonaPresence sanitizer — fallback `'none'` (no presence shown). */\nexport function sanitizeV8PresenceName(v8Presence: string): string {\n return sanitizeV8EnumIdentifier(v8Presence, 'none');\n}\n\n/** v8 PersonaSize sanitizer — fallback `'size48'` (the v8 default). */\nexport function sanitizeV8PersonaSizeName(v8Size: string): string {\n return sanitizeV8EnumIdentifier(v8Size, 'size48');\n}\n"],"mappings":";AAyCO,IAAM,oBAAgD;AAAA,EAC3D,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,OAAO;AAAA,EACP,aAAa;AAAA,EACb,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,WAAW;AAAA,EACX,aAAa;AAAA,EACb,UAAU;AAAA,EACV,OAAO;AAAA,EACP,OAAO;AAAA,EACP,eAAe;AAAA,EACf,aAAa;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,EACP,eAAe;AAAA,EACf,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,4BAA4B;AAAA,EAC5B,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,aAAa;AAAA,EACb,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,sBAAsB;AAAA,EACtB,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,cAAc;AAAA,EACd,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,uBAAuB;AAAA,EACvB,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,aAAa;AAAA,EACb,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AACX;AASO,IAAM,sBAA2C,oBAAI,IAAY;AAWjE,SAAS,cAAc,QAAmC;AAC/D,SAAO,kBAAkB,MAAM,KAAK;AACtC;AAWO,SAAS,kBAAkB,aAAuC;AACvE,QAAM,SAAS,MAAM,KAAK,IAAI,IAAI,WAAW,CAAC,EAAE,KAAK;AACrD,MAAI,OAAO,WAAW,EAAG,QAAO;AAChC,SAAO,YAAY,OAAO,KAAK,IAAI,CAAC;AAAA;AACtC;;;AC7JO,IAAM,wBAAgD;AAAA,EAC3D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AACX;AASO,IAAM,2BAAmD;AAAA,EAC9D,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AACX;AAGO,SAAS,qBAAqB,QAAwB;AAC3D,SAAO,sBAAsB,MAAM,KAAK;AAC1C;AAMO,SAAS,wBAAwB,YAAmC;AACzE,SAAO,yBAAyB,UAAU,KAAK;AACjD;AAiBO,SAAS,yBAAyB,OAAe,UAA0B;AAChF,SAAO,yBAAyB,KAAK,KAAK,IAAI,QAAQ;AACxD;AAGO,SAAS,uBAAuB,YAA4B;AACjE,SAAO,yBAAyB,YAAY,MAAM;AACpD;AAGO,SAAS,0BAA0B,QAAwB;AAChE,SAAO,yBAAyB,QAAQ,QAAQ;AAClD;","names":[]}