@jmruthers/pace-core 0.2.5 → 0.2.6

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 (165) hide show
  1. package/dist/{DataTable-BHlzyKZP.d.ts → DataTable-C1AEm9Cx.d.ts} +1 -1
  2. package/dist/{DataTable-GEY5U7OI.js → DataTable-EEUDXPE5.js} +2 -8
  3. package/dist/{api-T6CBS7IO.js → api-ETQ6YJ3C.js} +2 -3
  4. package/dist/{chunk-DY5E3AT7.js → chunk-BEZRLNK3.js} +13 -3
  5. package/dist/chunk-BEZRLNK3.js.map +1 -0
  6. package/dist/{chunk-ANE4PDC2.js → chunk-C5G2A4PO.js} +159 -6
  7. package/dist/chunk-C5G2A4PO.js.map +1 -0
  8. package/dist/{chunk-WYB6MBZA.js → chunk-EWKPTNPO.js} +579 -973
  9. package/dist/chunk-EWKPTNPO.js.map +1 -0
  10. package/dist/{chunk-TMRLB2LA.js → chunk-HEMJ4SUJ.js} +2 -2
  11. package/dist/{chunk-O4T53L7X.js → chunk-HNDFPXUU.js} +5 -5
  12. package/dist/{chunk-UY7AM4QG.js → chunk-RRUYHORU.js} +161 -74
  13. package/dist/chunk-RRUYHORU.js.map +1 -0
  14. package/dist/{chunk-PFRRIDYA.js → chunk-TIVL4UQ7.js} +2 -2
  15. package/dist/{chunk-2MKP6IYD.js → chunk-VYG4AXYW.js} +2 -2
  16. package/dist/components.d.ts +2 -2
  17. package/dist/components.js +15 -16
  18. package/dist/components.js.map +1 -1
  19. package/dist/hooks.d.ts +1 -1
  20. package/dist/hooks.js +4 -4
  21. package/dist/index.d.ts +2 -2
  22. package/dist/index.js +16 -17
  23. package/dist/index.js.map +1 -1
  24. package/dist/providers.js +2 -2
  25. package/dist/rbac/index.js +25 -20
  26. package/dist/rbac/index.js.map +1 -1
  27. package/dist/{types-CInEi-ng.d.ts → types-DiRQsGJs.d.ts} +0 -2
  28. package/dist/utils.d.ts +2 -2
  29. package/dist/utils.js +1 -1
  30. package/docs/api/classes/ErrorBoundary.md +1 -1
  31. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  32. package/docs/api/interfaces/AggregateConfig.md +1 -1
  33. package/docs/api/interfaces/ButtonProps.md +1 -1
  34. package/docs/api/interfaces/CardProps.md +1 -1
  35. package/docs/api/interfaces/ColorPalette.md +1 -1
  36. package/docs/api/interfaces/ColorShade.md +1 -1
  37. package/docs/api/interfaces/DataTableAction.md +1 -1
  38. package/docs/api/interfaces/DataTableColumn.md +1 -1
  39. package/docs/api/interfaces/DataTableProps.md +33 -33
  40. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  41. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  42. package/docs/api/interfaces/EventContextType.md +1 -1
  43. package/docs/api/interfaces/EventLogoProps.md +1 -1
  44. package/docs/api/interfaces/EventProviderProps.md +1 -1
  45. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  46. package/docs/api/interfaces/FileUploadProps.md +1 -1
  47. package/docs/api/interfaces/FooterProps.md +1 -1
  48. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  49. package/docs/api/interfaces/InputProps.md +1 -1
  50. package/docs/api/interfaces/LabelProps.md +1 -1
  51. package/docs/api/interfaces/LoginFormProps.md +1 -1
  52. package/docs/api/interfaces/NavigationItem.md +1 -1
  53. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  54. package/docs/api/interfaces/Organisation.md +1 -1
  55. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  56. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  57. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  58. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  59. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  60. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  61. package/docs/api/interfaces/PaletteData.md +1 -1
  62. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  63. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  64. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  65. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  66. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  67. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  68. package/docs/api/interfaces/StorageConfig.md +1 -1
  69. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  70. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  71. package/docs/api/interfaces/StorageListOptions.md +1 -1
  72. package/docs/api/interfaces/StorageListResult.md +1 -1
  73. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  74. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  75. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  76. package/docs/api/interfaces/StyleImport.md +1 -1
  77. package/docs/api/interfaces/ToastActionElement.md +1 -1
  78. package/docs/api/interfaces/ToastProps.md +1 -1
  79. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  80. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  81. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  82. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  83. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  84. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  85. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  86. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  87. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  88. package/docs/api/interfaces/UserEventAccess.md +1 -1
  89. package/docs/api/interfaces/UserMenuProps.md +1 -1
  90. package/docs/api/interfaces/UserProfile.md +1 -1
  91. package/docs/api/modules.md +10 -10
  92. package/docs/architecture/README.md +1 -1
  93. package/package.json +1 -1
  94. package/src/__tests__/shared/testUtils.optimized.tsx +65 -7
  95. package/src/components/DataTable/DataTable.tsx +1 -3
  96. package/src/components/DataTable/__tests__/DataTable.errorHandling.test.tsx +0 -8
  97. package/src/components/DataTable/__tests__/DataTable.hierarchical.test.tsx +17 -12
  98. package/src/components/DataTable/__tests__/DataTable.infinite-loop.test.tsx +0 -1
  99. package/src/components/DataTable/__tests__/DataTable.integration.test.tsx +4 -12
  100. package/src/components/DataTable/__tests__/DataTable.performance.test.tsx +0 -8
  101. package/src/components/DataTable/__tests__/DataTable.permissions.test.tsx +21 -11
  102. package/src/components/DataTable/__tests__/DataTable.sorting.test.tsx +321 -0
  103. package/src/components/DataTable/__tests__/DataTable.userWorkflows.test.tsx +21 -11
  104. package/src/components/DataTable/__tests__/DataTable.workflowValidation.test.tsx +94 -0
  105. package/src/components/DataTable/__tests__/DataTable.workflows.test.tsx +25 -15
  106. package/src/components/DataTable/__tests__/README.md +11 -2
  107. package/src/components/DataTable/__tests__/performance-regression.test.tsx +0 -11
  108. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +0 -1
  109. package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +2 -2
  110. package/src/components/DataTable/components/DataTableBody.tsx +34 -35
  111. package/src/components/DataTable/components/DataTableCore.tsx +205 -133
  112. package/src/components/DataTable/components/DataTableToolbar.tsx +9 -10
  113. package/src/components/DataTable/components/DraggableColumnHeader.tsx +3 -7
  114. package/src/components/DataTable/components/EditableRow.tsx +6 -7
  115. package/src/components/DataTable/components/FilterRow.tsx +0 -1
  116. package/src/components/DataTable/components/GroupingDropdown.tsx +2 -2
  117. package/src/components/DataTable/components/UnifiedTableBody.tsx +83 -281
  118. package/src/components/DataTable/components/VirtualizedDataTable.tsx +9 -89
  119. package/src/components/DataTable/components/__tests__/DataTable.accessibility.test.tsx +111 -5
  120. package/src/components/DataTable/components/__tests__/DataTable.integration.test.tsx +82 -13
  121. package/src/components/DataTable/components/__tests__/DataTable.performance.test.tsx +0 -1
  122. package/src/components/DataTable/components/__tests__/DataTable.real.test.tsx +2 -2
  123. package/src/components/DataTable/components/__tests__/DataTable.security.test.tsx +0 -1
  124. package/src/components/DataTable/components/__tests__/DataTable.unit.test.tsx +2 -2
  125. package/src/components/DataTable/components/__tests__/FilteringToggle.unit.test.tsx +3 -0
  126. package/src/components/DataTable/components/index.ts +0 -1
  127. package/src/components/DataTable/core/DataTableContext.tsx +0 -1
  128. package/src/components/DataTable/index.ts +0 -2
  129. package/src/components/DataTable/types.ts +0 -2
  130. package/src/components/Input/Input.tsx +2 -2
  131. package/src/components/Input/__tests__/Input.unit.test.tsx +4 -4
  132. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.integration.test.tsx +6 -2
  133. package/src/components/RBAC/PagePermissionGuard.tsx +13 -0
  134. package/src/components/RBAC/__tests__/PagePermissionGuard.unit.test.tsx +10 -1
  135. package/src/components/Select/Select.tsx +7 -1
  136. package/src/components/__tests__/EdgeCaseTesting.enhanced.test.tsx +2 -1
  137. package/src/hooks/__tests__/useRBAC.unit.test.ts +32 -24
  138. package/src/providers/RBACProvider.tsx +14 -2
  139. package/src/providers/__tests__/UnifiedAuthProvider.unit.test.tsx +11 -3
  140. package/src/rbac/__tests__/cache-invalidation.test.ts +2 -2
  141. package/src/rbac/__tests__/cache.test.ts +3 -3
  142. package/src/rbac/hooks.ts +15 -7
  143. package/src/utils/__tests__/lazyLoad.unit.test.tsx +13 -18
  144. package/src/utils/storage/__tests__/helpers.unit.test.ts +9 -7
  145. package/dist/cache-I72HKDOA.js +0 -12
  146. package/dist/cache-I72HKDOA.js.map +0 -1
  147. package/dist/chunk-ANE4PDC2.js.map +0 -1
  148. package/dist/chunk-DY5E3AT7.js.map +0 -1
  149. package/dist/chunk-MRRFJ6SA.js +0 -161
  150. package/dist/chunk-MRRFJ6SA.js.map +0 -1
  151. package/dist/chunk-UY7AM4QG.js.map +0 -1
  152. package/dist/chunk-WYB6MBZA.js.map +0 -1
  153. package/src/components/DataTable/__tests__/DataTable.autoSizing.test.tsx +0 -526
  154. package/src/components/DataTable/components/DataTableHeader.tsx +0 -31
  155. package/src/components/DataTable/components/__tests__/DataTableHeader.unit.test.tsx +0 -143
  156. package/src/components/DataTable/examples/AutoSizingExample.tsx +0 -180
  157. package/src/components/DataTable/examples/ColumnSizingComparison.tsx +0 -235
  158. package/src/components/DataTable/utils/__tests__/columnSizing.test.ts +0 -237
  159. package/src/components/DataTable/utils/columnSizing.ts +0 -125
  160. /package/dist/{DataTable-GEY5U7OI.js.map → DataTable-EEUDXPE5.js.map} +0 -0
  161. /package/dist/{api-T6CBS7IO.js.map → api-ETQ6YJ3C.js.map} +0 -0
  162. /package/dist/{chunk-TMRLB2LA.js.map → chunk-HEMJ4SUJ.js.map} +0 -0
  163. /package/dist/{chunk-O4T53L7X.js.map → chunk-HNDFPXUU.js.map} +0 -0
  164. /package/dist/{chunk-PFRRIDYA.js.map → chunk-TIVL4UQ7.js.map} +0 -0
  165. /package/dist/{chunk-2MKP6IYD.js.map → chunk-VYG4AXYW.js.map} +0 -0
@@ -1,161 +0,0 @@
1
- // src/rbac/cache.ts
2
- var RBACCache = class {
3
- constructor() {
4
- this.cache = /* @__PURE__ */ new Map();
5
- this.TTL = 60 * 1e3;
6
- // 60 seconds
7
- this.invalidationCallbacks = /* @__PURE__ */ new Set();
8
- }
9
- /**
10
- * Get a value from the cache
11
- *
12
- * @param key - Cache key
13
- * @returns Cached value or null if not found/expired
14
- */
15
- get(key) {
16
- const entry = this.cache.get(key);
17
- if (!entry) {
18
- return null;
19
- }
20
- if (Date.now() > entry.expires) {
21
- this.cache.delete(key);
22
- return null;
23
- }
24
- return entry.data;
25
- }
26
- /**
27
- * Set a value in the cache
28
- *
29
- * @param key - Cache key
30
- * @param data - Data to cache
31
- * @param ttl - Time to live in milliseconds (defaults to 60s)
32
- */
33
- set(key, data, ttl = this.TTL) {
34
- const expires = ttl <= 0 ? Date.now() - 1 : Date.now() + ttl;
35
- this.cache.set(key, {
36
- data,
37
- expires
38
- });
39
- }
40
- /**
41
- * Delete a specific key from the cache
42
- *
43
- * @param key - Cache key to delete
44
- */
45
- delete(key) {
46
- this.cache.delete(key);
47
- }
48
- /**
49
- * Invalidate cache entries matching a pattern
50
- *
51
- * @param pattern - Pattern to match against cache keys
52
- */
53
- invalidate(pattern) {
54
- const keysToDelete = [];
55
- for (const key of this.cache.keys()) {
56
- if (key.includes(pattern)) {
57
- keysToDelete.push(key);
58
- }
59
- }
60
- keysToDelete.forEach((key) => this.cache.delete(key));
61
- this.invalidationCallbacks.forEach((callback) => callback(pattern));
62
- }
63
- /**
64
- * Clear all cache entries
65
- */
66
- clear() {
67
- this.cache.clear();
68
- }
69
- /**
70
- * Get cache statistics
71
- */
72
- getStats() {
73
- return {
74
- size: this.cache.size,
75
- ttl: this.TTL,
76
- keys: Array.from(this.cache.keys())
77
- };
78
- }
79
- /**
80
- * Add an invalidation callback
81
- *
82
- * @param callback - Function to call when cache is invalidated
83
- */
84
- onInvalidate(callback) {
85
- this.invalidationCallbacks.add(callback);
86
- return () => {
87
- this.invalidationCallbacks.delete(callback);
88
- };
89
- }
90
- /**
91
- * Generate cache key for permission check
92
- *
93
- * @param key - Permission cache key object
94
- * @returns String cache key
95
- */
96
- static generatePermissionKey(key) {
97
- const parts = [
98
- "perm",
99
- key.userId,
100
- key.organisationId || "null",
101
- key.eventId || "null",
102
- key.appId || "null",
103
- key.permission || "null",
104
- key.pageId || "null"
105
- ];
106
- return parts.join(":");
107
- }
108
- /**
109
- * Generate cache key for access level
110
- *
111
- * @param userId - User ID
112
- * @param organisationId - Organisation ID
113
- * @param eventId - Event ID (optional)
114
- * @param appId - App ID (optional)
115
- * @returns String cache key
116
- */
117
- static generateAccessLevelKey(userId, organisationId, eventId, appId) {
118
- const parts = [
119
- "access",
120
- userId,
121
- organisationId,
122
- eventId || "null",
123
- appId || "null"
124
- ];
125
- return parts.join(":");
126
- }
127
- /**
128
- * Generate cache key for permission map
129
- *
130
- * @param userId - User ID
131
- * @param organisationId - Organisation ID
132
- * @param eventId - Event ID (optional)
133
- * @param appId - App ID (optional)
134
- * @returns String cache key
135
- */
136
- static generatePermissionMapKey(userId, organisationId, eventId, appId) {
137
- const parts = [
138
- "map",
139
- userId,
140
- organisationId,
141
- eventId || "null",
142
- appId || "null"
143
- ];
144
- return parts.join(":");
145
- }
146
- };
147
- var rbacCache = new RBACCache();
148
- var CACHE_PATTERNS = {
149
- USER: (userId) => `user:${userId}`,
150
- ORGANISATION: (organisationId) => `org:${organisationId}`,
151
- EVENT: (eventId) => `event:${eventId}`,
152
- APP: (appId) => `app:${appId}`,
153
- PERMISSION: (userId, organisationId) => `perm:${userId}:${organisationId}`
154
- };
155
-
156
- export {
157
- RBACCache,
158
- rbacCache,
159
- CACHE_PATTERNS
160
- };
161
- //# sourceMappingURL=chunk-MRRFJ6SA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/rbac/cache.ts"],"sourcesContent":["/**\n * RBAC Cache Implementation\n * @package @jmruthers/pace-core\n * @module RBAC/Cache\n * @since 1.0.0\n * \n * This module provides caching functionality for RBAC operations with TTL and invalidation.\n */\n\nimport { UUID } from './types';\nimport { CacheEntry, PermissionCacheKey } from './types';\n\n/**\n * In-memory cache for RBAC operations\n * \n * Provides 60-second TTL and pattern-based invalidation for permission checks.\n */\nexport class RBACCache {\n private cache = new Map<string, CacheEntry<any>>();\n private readonly TTL = 60 * 1000; // 60 seconds\n private invalidationCallbacks: Set<(pattern: string) => void> = new Set();\n\n /**\n * Get a value from the cache\n * \n * @param key - Cache key\n * @returns Cached value or null if not found/expired\n */\n get<T>(key: string): T | null {\n const entry = this.cache.get(key);\n \n if (!entry) {\n return null;\n }\n\n if (Date.now() > entry.expires) {\n this.cache.delete(key);\n return null;\n }\n\n return entry.data as T;\n }\n\n /**\n * Set a value in the cache\n * \n * @param key - Cache key\n * @param data - Data to cache\n * @param ttl - Time to live in milliseconds (defaults to 60s)\n */\n set<T>(key: string, data: T, ttl: number = this.TTL): void {\n // For zero or negative TTL, set expires to current time to make it immediately expired\n const expires = ttl <= 0 ? Date.now() - 1 : Date.now() + ttl;\n this.cache.set(key, {\n data,\n expires,\n });\n }\n\n /**\n * Delete a specific key from the cache\n * \n * @param key - Cache key to delete\n */\n delete(key: string): void {\n this.cache.delete(key);\n }\n\n /**\n * Invalidate cache entries matching a pattern\n * \n * @param pattern - Pattern to match against cache keys\n */\n invalidate(pattern: string): void {\n const keysToDelete: string[] = [];\n \n for (const key of this.cache.keys()) {\n if (key.includes(pattern)) {\n keysToDelete.push(key);\n }\n }\n\n keysToDelete.forEach(key => this.cache.delete(key));\n \n // Notify invalidation callbacks\n this.invalidationCallbacks.forEach(callback => callback(pattern));\n }\n\n /**\n * Clear all cache entries\n */\n clear(): void {\n this.cache.clear();\n }\n\n /**\n * Get cache statistics\n */\n getStats(): {\n size: number;\n ttl: number;\n keys: string[];\n } {\n return {\n size: this.cache.size,\n ttl: this.TTL,\n keys: Array.from(this.cache.keys()),\n };\n }\n\n /**\n * Add an invalidation callback\n * \n * @param callback - Function to call when cache is invalidated\n */\n onInvalidate(callback: (pattern: string) => void): () => void {\n this.invalidationCallbacks.add(callback);\n \n // Return unsubscribe function\n return () => {\n this.invalidationCallbacks.delete(callback);\n };\n }\n\n /**\n * Generate cache key for permission check\n * \n * @param key - Permission cache key object\n * @returns String cache key\n */\n static generatePermissionKey(key: PermissionCacheKey): string {\n const parts = [\n 'perm',\n key.userId,\n key.organisationId || 'null',\n key.eventId || 'null',\n key.appId || 'null',\n key.permission || 'null',\n key.pageId || 'null',\n ];\n \n return parts.join(':');\n }\n\n /**\n * Generate cache key for access level\n * \n * @param userId - User ID\n * @param organisationId - Organisation ID\n * @param eventId - Event ID (optional)\n * @param appId - App ID (optional)\n * @returns String cache key\n */\n static generateAccessLevelKey(\n userId: UUID,\n organisationId: UUID,\n eventId?: string,\n appId?: UUID\n ): string {\n const parts = [\n 'access',\n userId,\n organisationId,\n eventId || 'null',\n appId || 'null',\n ];\n \n return parts.join(':');\n }\n\n /**\n * Generate cache key for permission map\n * \n * @param userId - User ID\n * @param organisationId - Organisation ID\n * @param eventId - Event ID (optional)\n * @param appId - App ID (optional)\n * @returns String cache key\n */\n static generatePermissionMapKey(\n userId: UUID,\n organisationId: UUID,\n eventId?: string,\n appId?: UUID\n ): string {\n const parts = [\n 'map',\n userId,\n organisationId,\n eventId || 'null',\n appId || 'null',\n ];\n \n return parts.join(':');\n }\n}\n\n/**\n * Global cache instance\n * \n * This is the default cache instance used by the RBAC system.\n * You can create additional instances if needed for different contexts.\n */\nexport const rbacCache = new RBACCache();\n\n/**\n * Cache key patterns for invalidation\n */\nexport const CACHE_PATTERNS = {\n USER: (userId: UUID) => `user:${userId}`,\n ORGANISATION: (organisationId: UUID) => `org:${organisationId}`,\n EVENT: (eventId: string) => `event:${eventId}`,\n APP: (appId: UUID) => `app:${appId}`,\n PERMISSION: (userId: UUID, organisationId: UUID) => `perm:${userId}:${organisationId}`,\n} as const;\n"],"mappings":";AAiBO,IAAM,YAAN,MAAgB;AAAA,EAAhB;AACL,SAAQ,QAAQ,oBAAI,IAA6B;AACjD,SAAiB,MAAM,KAAK;AAC5B;AAAA,SAAQ,wBAAwD,oBAAI,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQxE,IAAO,KAAuB;AAC5B,UAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAEhC,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,IAAI,IAAI,MAAM,SAAS;AAC9B,WAAK,MAAM,OAAO,GAAG;AACrB,aAAO;AAAA,IACT;AAEA,WAAO,MAAM;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAO,KAAa,MAAS,MAAc,KAAK,KAAW;AAEzD,UAAM,UAAU,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI;AACzD,SAAK,MAAM,IAAI,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,KAAmB;AACxB,SAAK,MAAM,OAAO,GAAG;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW,SAAuB;AAChC,UAAM,eAAyB,CAAC;AAEhC,eAAW,OAAO,KAAK,MAAM,KAAK,GAAG;AACnC,UAAI,IAAI,SAAS,OAAO,GAAG;AACzB,qBAAa,KAAK,GAAG;AAAA,MACvB;AAAA,IACF;AAEA,iBAAa,QAAQ,SAAO,KAAK,MAAM,OAAO,GAAG,CAAC;AAGlD,SAAK,sBAAsB,QAAQ,cAAY,SAAS,OAAO,CAAC;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA,EAKA,QAAc;AACZ,SAAK,MAAM,MAAM;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAKA,WAIE;AACA,WAAO;AAAA,MACL,MAAM,KAAK,MAAM;AAAA,MACjB,KAAK,KAAK;AAAA,MACV,MAAM,MAAM,KAAK,KAAK,MAAM,KAAK,CAAC;AAAA,IACpC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,UAAiD;AAC5D,SAAK,sBAAsB,IAAI,QAAQ;AAGvC,WAAO,MAAM;AACX,WAAK,sBAAsB,OAAO,QAAQ;AAAA,IAC5C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,sBAAsB,KAAiC;AAC5D,UAAM,QAAQ;AAAA,MACZ;AAAA,MACA,IAAI;AAAA,MACJ,IAAI,kBAAkB;AAAA,MACtB,IAAI,WAAW;AAAA,MACf,IAAI,SAAS;AAAA,MACb,IAAI,cAAc;AAAA,MAClB,IAAI,UAAU;AAAA,IAChB;AAEA,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,uBACL,QACA,gBACA,SACA,OACQ;AACR,UAAM,QAAQ;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,SAAS;AAAA,IACX;AAEA,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,yBACL,QACA,gBACA,SACA,OACQ;AACR,UAAM,QAAQ;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,SAAS;AAAA,IACX;AAEA,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB;AACF;AAQO,IAAM,YAAY,IAAI,UAAU;AAKhC,IAAM,iBAAiB;AAAA,EAC5B,MAAM,CAAC,WAAiB,QAAQ,MAAM;AAAA,EACtC,cAAc,CAAC,mBAAyB,OAAO,cAAc;AAAA,EAC7D,OAAO,CAAC,YAAoB,SAAS,OAAO;AAAA,EAC5C,KAAK,CAAC,UAAgB,OAAO,KAAK;AAAA,EAClC,YAAY,CAAC,QAAc,mBAAyB,QAAQ,MAAM,IAAI,cAAc;AACtF;","names":[]}