@furystack/shades-common-components 10.0.35 → 11.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 (295) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/esm/components/animations.spec.d.ts +2 -0
  3. package/esm/components/animations.spec.d.ts.map +1 -0
  4. package/esm/components/animations.spec.js +201 -0
  5. package/esm/components/animations.spec.js.map +1 -0
  6. package/esm/components/app-bar-link.js +21 -20
  7. package/esm/components/app-bar-link.js.map +1 -1
  8. package/esm/components/app-bar-link.spec.d.ts +2 -0
  9. package/esm/components/app-bar-link.spec.d.ts.map +1 -0
  10. package/esm/components/app-bar-link.spec.js +252 -0
  11. package/esm/components/app-bar-link.spec.js.map +1 -0
  12. package/esm/components/app-bar.js +21 -21
  13. package/esm/components/app-bar.js.map +1 -1
  14. package/esm/components/app-bar.spec.d.ts +2 -0
  15. package/esm/components/app-bar.spec.d.ts.map +1 -0
  16. package/esm/components/app-bar.spec.js +117 -0
  17. package/esm/components/app-bar.spec.js.map +1 -0
  18. package/esm/components/avatar.d.ts.map +1 -1
  19. package/esm/components/avatar.js +15 -19
  20. package/esm/components/avatar.js.map +1 -1
  21. package/esm/components/avatar.spec.d.ts +2 -0
  22. package/esm/components/avatar.spec.d.ts.map +1 -0
  23. package/esm/components/avatar.spec.js +114 -0
  24. package/esm/components/avatar.spec.js.map +1 -0
  25. package/esm/components/button.d.ts.map +1 -1
  26. package/esm/components/button.js +145 -156
  27. package/esm/components/button.js.map +1 -1
  28. package/esm/components/button.spec.d.ts +2 -0
  29. package/esm/components/button.spec.d.ts.map +1 -0
  30. package/esm/components/button.spec.js +155 -0
  31. package/esm/components/button.spec.js.map +1 -0
  32. package/esm/components/command-palette/command-palette-input.d.ts.map +1 -1
  33. package/esm/components/command-palette/command-palette-input.js +18 -16
  34. package/esm/components/command-palette/command-palette-input.js.map +1 -1
  35. package/esm/components/command-palette/command-palette-input.spec.d.ts +2 -0
  36. package/esm/components/command-palette/command-palette-input.spec.d.ts.map +1 -0
  37. package/esm/components/command-palette/command-palette-input.spec.js +233 -0
  38. package/esm/components/command-palette/command-palette-input.spec.js.map +1 -0
  39. package/esm/components/command-palette/command-palette-manager.spec.d.ts +2 -0
  40. package/esm/components/command-palette/command-palette-manager.spec.d.ts.map +1 -0
  41. package/esm/components/command-palette/command-palette-manager.spec.js +362 -0
  42. package/esm/components/command-palette/command-palette-manager.spec.js.map +1 -0
  43. package/esm/components/command-palette/command-palette-suggestion-list.d.ts.map +1 -1
  44. package/esm/components/command-palette/command-palette-suggestion-list.js +42 -46
  45. package/esm/components/command-palette/command-palette-suggestion-list.js.map +1 -1
  46. package/esm/components/command-palette/command-palette-suggestion-list.spec.d.ts +2 -0
  47. package/esm/components/command-palette/command-palette-suggestion-list.spec.d.ts.map +1 -0
  48. package/esm/components/command-palette/command-palette-suggestion-list.spec.js +376 -0
  49. package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -0
  50. package/esm/components/command-palette/index.d.ts.map +1 -1
  51. package/esm/components/command-palette/index.js +100 -110
  52. package/esm/components/command-palette/index.js.map +1 -1
  53. package/esm/components/command-palette/index.spec.d.ts +2 -0
  54. package/esm/components/command-palette/index.spec.d.ts.map +1 -0
  55. package/esm/components/command-palette/index.spec.js +509 -0
  56. package/esm/components/command-palette/index.spec.js.map +1 -0
  57. package/esm/components/data-grid/body.js +1 -1
  58. package/esm/components/data-grid/body.js.map +1 -1
  59. package/esm/components/data-grid/body.spec.d.ts +2 -0
  60. package/esm/components/data-grid/body.spec.d.ts.map +1 -0
  61. package/esm/components/data-grid/body.spec.js +228 -0
  62. package/esm/components/data-grid/body.spec.js.map +1 -0
  63. package/esm/components/data-grid/data-grid-row.d.ts.map +1 -1
  64. package/esm/components/data-grid/data-grid-row.js +49 -73
  65. package/esm/components/data-grid/data-grid-row.js.map +1 -1
  66. package/esm/components/data-grid/data-grid-row.spec.d.ts +2 -0
  67. package/esm/components/data-grid/data-grid-row.spec.d.ts.map +1 -0
  68. package/esm/components/data-grid/data-grid-row.spec.js +296 -0
  69. package/esm/components/data-grid/data-grid-row.spec.js.map +1 -0
  70. package/esm/components/data-grid/data-grid.d.ts.map +1 -1
  71. package/esm/components/data-grid/data-grid.js +35 -28
  72. package/esm/components/data-grid/data-grid.js.map +1 -1
  73. package/esm/components/data-grid/data-grid.spec.d.ts +2 -0
  74. package/esm/components/data-grid/data-grid.spec.d.ts.map +1 -0
  75. package/esm/components/data-grid/data-grid.spec.js +544 -0
  76. package/esm/components/data-grid/data-grid.spec.js.map +1 -0
  77. package/esm/components/data-grid/footer.js +21 -15
  78. package/esm/components/data-grid/footer.js.map +1 -1
  79. package/esm/components/data-grid/footer.spec.d.ts +2 -0
  80. package/esm/components/data-grid/footer.spec.d.ts.map +1 -0
  81. package/esm/components/data-grid/footer.spec.js +264 -0
  82. package/esm/components/data-grid/footer.spec.js.map +1 -0
  83. package/esm/components/data-grid/header.d.ts.map +1 -1
  84. package/esm/components/data-grid/header.js +55 -33
  85. package/esm/components/data-grid/header.js.map +1 -1
  86. package/esm/components/data-grid/header.spec.d.ts +2 -0
  87. package/esm/components/data-grid/header.spec.d.ts.map +1 -0
  88. package/esm/components/data-grid/header.spec.js +421 -0
  89. package/esm/components/data-grid/header.spec.js.map +1 -0
  90. package/esm/components/data-grid/selection-cell.d.ts.map +1 -1
  91. package/esm/components/data-grid/selection-cell.js +13 -6
  92. package/esm/components/data-grid/selection-cell.js.map +1 -1
  93. package/esm/components/data-grid/selection-cell.spec.d.ts +2 -0
  94. package/esm/components/data-grid/selection-cell.spec.d.ts.map +1 -0
  95. package/esm/components/data-grid/selection-cell.spec.js +118 -0
  96. package/esm/components/data-grid/selection-cell.spec.js.map +1 -0
  97. package/esm/components/fab.d.ts.map +1 -1
  98. package/esm/components/fab.js +10 -1
  99. package/esm/components/fab.js.map +1 -1
  100. package/esm/components/fab.spec.d.ts +2 -0
  101. package/esm/components/fab.spec.d.ts.map +1 -0
  102. package/esm/components/fab.spec.js +95 -0
  103. package/esm/components/fab.spec.js.map +1 -0
  104. package/esm/components/form.spec.d.ts +2 -0
  105. package/esm/components/form.spec.d.ts.map +1 -0
  106. package/esm/components/form.spec.js +314 -0
  107. package/esm/components/form.spec.js.map +1 -0
  108. package/esm/components/grid.d.ts.map +1 -1
  109. package/esm/components/grid.js +40 -37
  110. package/esm/components/grid.js.map +1 -1
  111. package/esm/components/grid.spec.d.ts +2 -0
  112. package/esm/components/grid.spec.d.ts.map +1 -0
  113. package/esm/components/grid.spec.js +316 -0
  114. package/esm/components/grid.spec.js.map +1 -0
  115. package/esm/components/inputs/autocomplete.spec.d.ts +2 -0
  116. package/esm/components/inputs/autocomplete.spec.d.ts.map +1 -0
  117. package/esm/components/inputs/autocomplete.spec.js +194 -0
  118. package/esm/components/inputs/autocomplete.spec.js.map +1 -0
  119. package/esm/components/inputs/input.d.ts.map +1 -1
  120. package/esm/components/inputs/input.js +141 -109
  121. package/esm/components/inputs/input.js.map +1 -1
  122. package/esm/components/inputs/input.spec.d.ts +2 -0
  123. package/esm/components/inputs/input.spec.d.ts.map +1 -0
  124. package/esm/components/inputs/input.spec.js +577 -0
  125. package/esm/components/inputs/input.spec.js.map +1 -0
  126. package/esm/components/inputs/text-area.d.ts.map +1 -1
  127. package/esm/components/inputs/text-area.js +54 -58
  128. package/esm/components/inputs/text-area.js.map +1 -1
  129. package/esm/components/inputs/text-area.spec.d.ts +2 -0
  130. package/esm/components/inputs/text-area.spec.d.ts.map +1 -0
  131. package/esm/components/inputs/text-area.spec.js +214 -0
  132. package/esm/components/inputs/text-area.spec.js.map +1 -0
  133. package/esm/components/loader.js +1 -1
  134. package/esm/components/loader.js.map +1 -1
  135. package/esm/components/loader.spec.d.ts +2 -0
  136. package/esm/components/loader.spec.d.ts.map +1 -0
  137. package/esm/components/loader.spec.js +251 -0
  138. package/esm/components/loader.spec.js.map +1 -0
  139. package/esm/components/modal.d.ts.map +1 -1
  140. package/esm/components/modal.js +11 -9
  141. package/esm/components/modal.js.map +1 -1
  142. package/esm/components/modal.spec.d.ts +2 -0
  143. package/esm/components/modal.spec.d.ts.map +1 -0
  144. package/esm/components/modal.spec.js +227 -0
  145. package/esm/components/modal.spec.js.map +1 -0
  146. package/esm/components/noty-list.d.ts.map +1 -1
  147. package/esm/components/noty-list.js +39 -40
  148. package/esm/components/noty-list.js.map +1 -1
  149. package/esm/components/noty-list.spec.d.ts +2 -0
  150. package/esm/components/noty-list.spec.d.ts.map +1 -0
  151. package/esm/components/noty-list.spec.js +486 -0
  152. package/esm/components/noty-list.spec.js.map +1 -0
  153. package/esm/components/paper.d.ts.map +1 -1
  154. package/esm/components/paper.js +15 -12
  155. package/esm/components/paper.js.map +1 -1
  156. package/esm/components/paper.spec.d.ts +2 -0
  157. package/esm/components/paper.spec.d.ts.map +1 -0
  158. package/esm/components/paper.spec.js +63 -0
  159. package/esm/components/paper.spec.js.map +1 -0
  160. package/esm/components/skeleton.js +1 -1
  161. package/esm/components/skeleton.js.map +1 -1
  162. package/esm/components/skeleton.spec.d.ts +2 -0
  163. package/esm/components/skeleton.spec.d.ts.map +1 -0
  164. package/esm/components/skeleton.spec.js +159 -0
  165. package/esm/components/skeleton.spec.js.map +1 -0
  166. package/esm/components/styles.spec.d.ts +2 -0
  167. package/esm/components/styles.spec.d.ts.map +1 -0
  168. package/esm/components/styles.spec.js +56 -0
  169. package/esm/components/styles.spec.js.map +1 -0
  170. package/esm/components/suggest/index.d.ts.map +1 -1
  171. package/esm/components/suggest/index.js +74 -83
  172. package/esm/components/suggest/index.js.map +1 -1
  173. package/esm/components/suggest/index.spec.d.ts +2 -0
  174. package/esm/components/suggest/index.spec.d.ts.map +1 -0
  175. package/esm/components/suggest/index.spec.js +515 -0
  176. package/esm/components/suggest/index.spec.js.map +1 -0
  177. package/esm/components/suggest/suggest-input.d.ts.map +1 -1
  178. package/esm/components/suggest/suggest-input.js +16 -17
  179. package/esm/components/suggest/suggest-input.js.map +1 -1
  180. package/esm/components/suggest/suggest-input.spec.d.ts +2 -0
  181. package/esm/components/suggest/suggest-input.spec.d.ts.map +1 -0
  182. package/esm/components/suggest/suggest-input.spec.js +138 -0
  183. package/esm/components/suggest/suggest-input.spec.js.map +1 -0
  184. package/esm/components/suggest/suggest-manager.spec.d.ts +2 -0
  185. package/esm/components/suggest/suggest-manager.spec.d.ts.map +1 -0
  186. package/esm/components/suggest/suggest-manager.spec.js +308 -0
  187. package/esm/components/suggest/suggest-manager.spec.js.map +1 -0
  188. package/esm/components/suggest/suggestion-list.d.ts.map +1 -1
  189. package/esm/components/suggest/suggestion-list.js +43 -48
  190. package/esm/components/suggest/suggestion-list.js.map +1 -1
  191. package/esm/components/suggest/suggestion-list.spec.d.ts +2 -0
  192. package/esm/components/suggest/suggestion-list.spec.d.ts.map +1 -0
  193. package/esm/components/suggest/suggestion-list.spec.js +252 -0
  194. package/esm/components/suggest/suggestion-list.spec.js.map +1 -0
  195. package/esm/components/tabs.d.ts.map +1 -1
  196. package/esm/components/tabs.js +32 -18
  197. package/esm/components/tabs.js.map +1 -1
  198. package/esm/components/tabs.spec.d.ts +2 -0
  199. package/esm/components/tabs.spec.d.ts.map +1 -0
  200. package/esm/components/tabs.spec.js +187 -0
  201. package/esm/components/tabs.spec.js.map +1 -0
  202. package/esm/components/wizard/index.d.ts.map +1 -1
  203. package/esm/components/wizard/index.js +10 -7
  204. package/esm/components/wizard/index.js.map +1 -1
  205. package/esm/components/wizard/index.spec.d.ts +2 -0
  206. package/esm/components/wizard/index.spec.d.ts.map +1 -0
  207. package/esm/components/wizard/index.spec.js +171 -0
  208. package/esm/components/wizard/index.spec.js.map +1 -0
  209. package/esm/services/collection-service.spec.js +391 -2
  210. package/esm/services/collection-service.spec.js.map +1 -1
  211. package/esm/services/css-variable-theme.d.ts.map +1 -1
  212. package/esm/services/css-variable-theme.js +21 -1
  213. package/esm/services/css-variable-theme.js.map +1 -1
  214. package/esm/services/css-variable-theme.spec.d.ts +2 -0
  215. package/esm/services/css-variable-theme.spec.d.ts.map +1 -0
  216. package/esm/services/css-variable-theme.spec.js +169 -0
  217. package/esm/services/css-variable-theme.spec.js.map +1 -0
  218. package/esm/services/default-palette.d.ts +4 -0
  219. package/esm/services/default-palette.d.ts.map +1 -1
  220. package/esm/services/default-palette.js +22 -0
  221. package/esm/services/default-palette.js.map +1 -1
  222. package/esm/services/theme-provider-service.d.ts +59 -1
  223. package/esm/services/theme-provider-service.d.ts.map +1 -1
  224. package/esm/services/theme-provider-service.js.map +1 -1
  225. package/esm/services/theme-provider-service.spec.d.ts +2 -0
  226. package/esm/services/theme-provider-service.spec.d.ts.map +1 -0
  227. package/esm/services/theme-provider-service.spec.js +166 -0
  228. package/esm/services/theme-provider-service.spec.js.map +1 -0
  229. package/package.json +2 -2
  230. package/src/components/animations.spec.ts +299 -0
  231. package/src/components/app-bar-link.spec.tsx +341 -0
  232. package/src/components/app-bar-link.tsx +21 -21
  233. package/src/components/app-bar.spec.tsx +142 -0
  234. package/src/components/app-bar.tsx +22 -22
  235. package/src/components/avatar.spec.tsx +146 -0
  236. package/src/components/avatar.tsx +17 -20
  237. package/src/components/button.spec.tsx +193 -0
  238. package/src/components/button.tsx +162 -197
  239. package/src/components/command-palette/command-palette-input.spec.tsx +320 -0
  240. package/src/components/command-palette/command-palette-input.tsx +19 -22
  241. package/src/components/command-palette/command-palette-manager.spec.ts +470 -0
  242. package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +499 -0
  243. package/src/components/command-palette/command-palette-suggestion-list.tsx +42 -46
  244. package/src/components/command-palette/index.spec.tsx +684 -0
  245. package/src/components/command-palette/index.tsx +107 -136
  246. package/src/components/data-grid/body.spec.tsx +340 -0
  247. package/src/components/data-grid/body.tsx +1 -1
  248. package/src/components/data-grid/data-grid-row.spec.tsx +382 -0
  249. package/src/components/data-grid/data-grid-row.tsx +50 -82
  250. package/src/components/data-grid/data-grid.spec.tsx +939 -0
  251. package/src/components/data-grid/data-grid.tsx +38 -35
  252. package/src/components/data-grid/footer.spec.tsx +344 -0
  253. package/src/components/data-grid/footer.tsx +19 -19
  254. package/src/components/data-grid/header.spec.tsx +563 -0
  255. package/src/components/data-grid/header.tsx +53 -44
  256. package/src/components/data-grid/selection-cell.spec.tsx +150 -0
  257. package/src/components/data-grid/selection-cell.tsx +12 -6
  258. package/src/components/fab.spec.tsx +108 -0
  259. package/src/components/fab.tsx +10 -1
  260. package/src/components/form.spec.tsx +481 -0
  261. package/src/components/grid.spec.tsx +334 -0
  262. package/src/components/grid.tsx +57 -63
  263. package/src/components/inputs/autocomplete.spec.tsx +258 -0
  264. package/src/components/inputs/input.spec.tsx +808 -0
  265. package/src/components/inputs/input.tsx +153 -139
  266. package/src/components/inputs/text-area.spec.tsx +285 -0
  267. package/src/components/inputs/text-area.tsx +53 -79
  268. package/src/components/loader.spec.tsx +346 -0
  269. package/src/components/loader.tsx +1 -1
  270. package/src/components/modal.spec.tsx +304 -0
  271. package/src/components/modal.tsx +11 -9
  272. package/src/components/noty-list.spec.tsx +631 -0
  273. package/src/components/noty-list.tsx +39 -50
  274. package/src/components/paper.spec.tsx +72 -0
  275. package/src/components/paper.tsx +15 -13
  276. package/src/components/skeleton.spec.tsx +219 -0
  277. package/src/components/skeleton.tsx +1 -1
  278. package/src/components/styles.spec.ts +70 -0
  279. package/src/components/suggest/index.spec.tsx +861 -0
  280. package/src/components/suggest/index.tsx +74 -101
  281. package/src/components/suggest/suggest-input.spec.tsx +181 -0
  282. package/src/components/suggest/suggest-input.tsx +16 -24
  283. package/src/components/suggest/suggest-manager.spec.ts +409 -0
  284. package/src/components/suggest/suggestion-list.spec.tsx +334 -0
  285. package/src/components/suggest/suggestion-list.tsx +43 -48
  286. package/src/components/tabs.spec.tsx +236 -0
  287. package/src/components/tabs.tsx +33 -21
  288. package/src/components/wizard/index.spec.tsx +224 -0
  289. package/src/components/wizard/index.tsx +10 -9
  290. package/src/services/collection-service.spec.ts +492 -3
  291. package/src/services/css-variable-theme.spec.ts +204 -0
  292. package/src/services/css-variable-theme.ts +21 -1
  293. package/src/services/default-palette.ts +22 -0
  294. package/src/services/theme-provider-service.spec.ts +195 -0
  295. package/src/services/theme-provider-service.ts +60 -2
@@ -0,0 +1,316 @@
1
+ import { Injector } from '@furystack/inject';
2
+ import { createComponent, initializeShadeRoot } from '@furystack/shades';
3
+ import { sleepAsync } from '@furystack/utils';
4
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
+ import { Grid } from './grid.js';
6
+ describe('Grid', () => {
7
+ beforeEach(() => {
8
+ document.body.innerHTML = '<div id="root"></div>';
9
+ });
10
+ afterEach(() => {
11
+ document.body.innerHTML = '';
12
+ });
13
+ const renderGrid = async (props) => {
14
+ const injector = new Injector();
15
+ const root = document.getElementById('root');
16
+ initializeShadeRoot({
17
+ injector,
18
+ rootElement: root,
19
+ jsxElement: createComponent(Grid, { ...props }),
20
+ });
21
+ await sleepAsync(50);
22
+ const grid = document.querySelector('shade-grid');
23
+ return {
24
+ injector,
25
+ grid,
26
+ table: grid?.querySelector('table'),
27
+ };
28
+ };
29
+ describe('rendering', () => {
30
+ it('should render a grid element as custom element', async () => {
31
+ const { grid } = await renderGrid({
32
+ columns: ['id', 'name'],
33
+ entries: [],
34
+ });
35
+ expect(grid).toBeTruthy();
36
+ expect(grid.tagName.toLowerCase()).toBe('shade-grid');
37
+ });
38
+ it('should render a table inside the grid element', async () => {
39
+ const { table } = await renderGrid({
40
+ columns: ['id', 'name'],
41
+ entries: [],
42
+ });
43
+ expect(table).toBeTruthy();
44
+ expect(table.tagName.toLowerCase()).toBe('table');
45
+ });
46
+ it('should render thead and tbody', async () => {
47
+ const { table } = await renderGrid({
48
+ columns: ['id', 'name'],
49
+ entries: [],
50
+ });
51
+ expect(table.querySelector('thead')).toBeTruthy();
52
+ expect(table.querySelector('tbody')).toBeTruthy();
53
+ });
54
+ });
55
+ describe('columns', () => {
56
+ it('should render column headers', async () => {
57
+ const { table } = await renderGrid({
58
+ columns: ['id', 'name', 'value'],
59
+ entries: [],
60
+ });
61
+ const headers = table.querySelectorAll('th');
62
+ expect(headers.length).toBe(3);
63
+ });
64
+ it('should render column names as header text by default', async () => {
65
+ const { table } = await renderGrid({
66
+ columns: ['id', 'name', 'value'],
67
+ entries: [],
68
+ });
69
+ const headers = table.querySelectorAll('th');
70
+ expect(headers[0].textContent).toBe('id');
71
+ expect(headers[1].textContent).toBe('name');
72
+ expect(headers[2].textContent).toBe('value');
73
+ });
74
+ it('should use custom header components when provided', async () => {
75
+ const headerComponents = {
76
+ id: (name) => createComponent("span", null,
77
+ "ID Header: ",
78
+ name),
79
+ name: (name) => createComponent("span", null,
80
+ "Name Header: ",
81
+ name),
82
+ };
83
+ const { table } = await renderGrid({
84
+ columns: ['id', 'name', 'value'],
85
+ entries: [],
86
+ headerComponents,
87
+ });
88
+ const headers = table.querySelectorAll('th');
89
+ expect(headers[0].textContent).toContain('ID Header: id');
90
+ expect(headers[1].textContent).toContain('Name Header: name');
91
+ expect(headers[2].textContent).toBe('value');
92
+ });
93
+ it('should use default header component for unspecified columns', async () => {
94
+ const headerComponents = {
95
+ default: (name) => createComponent("strong", null, name.toUpperCase()),
96
+ };
97
+ const { table } = await renderGrid({
98
+ columns: ['id', 'name'],
99
+ entries: [],
100
+ headerComponents,
101
+ });
102
+ const headers = table.querySelectorAll('th');
103
+ expect(headers[0].textContent).toBe('ID');
104
+ expect(headers[1].textContent).toBe('NAME');
105
+ });
106
+ it('should prefer specific header component over default', async () => {
107
+ const headerComponents = {
108
+ id: () => createComponent("span", null, "Custom ID"),
109
+ default: (name) => createComponent("span", null,
110
+ "Default: ",
111
+ name),
112
+ };
113
+ const { table } = await renderGrid({
114
+ columns: ['id', 'name'],
115
+ entries: [],
116
+ headerComponents,
117
+ });
118
+ const headers = table.querySelectorAll('th');
119
+ expect(headers[0].textContent).toBe('Custom ID');
120
+ expect(headers[1].textContent).toBe('Default: name');
121
+ });
122
+ });
123
+ describe('rows', () => {
124
+ const testEntries = [
125
+ { id: 1, name: 'Item 1', value: 'Value 1' },
126
+ { id: 2, name: 'Item 2', value: 'Value 2' },
127
+ { id: 3, name: 'Item 3', value: 'Value 3' },
128
+ ];
129
+ it('should render rows for each entry', async () => {
130
+ const { table } = await renderGrid({
131
+ columns: ['id', 'name'],
132
+ entries: testEntries,
133
+ rowComponents: {
134
+ default: (entry, column) => createComponent("span", null, String(entry[column])),
135
+ },
136
+ });
137
+ const rows = table.querySelectorAll('tbody tr');
138
+ expect(rows.length).toBe(3);
139
+ });
140
+ it('should render cells for each column in each row', async () => {
141
+ const { table } = await renderGrid({
142
+ columns: ['id', 'name', 'value'],
143
+ entries: testEntries,
144
+ rowComponents: {
145
+ default: (entry, column) => createComponent("span", null, String(entry[column])),
146
+ },
147
+ });
148
+ const firstRow = table.querySelector('tbody tr');
149
+ const cells = firstRow.querySelectorAll('td');
150
+ expect(cells.length).toBe(3);
151
+ });
152
+ it('should use custom row components when provided', async () => {
153
+ const rowComponents = {
154
+ id: (entry) => createComponent("span", null,
155
+ "ID: ",
156
+ entry.id),
157
+ name: (entry) => createComponent("strong", null, entry.name),
158
+ };
159
+ const { table } = await renderGrid({
160
+ columns: ['id', 'name', 'value'],
161
+ entries: [testEntries[0]],
162
+ rowComponents,
163
+ });
164
+ const cells = table.querySelectorAll('tbody td');
165
+ expect(cells[0].textContent).toBe('ID: 1');
166
+ expect(cells[1].textContent).toBe('Item 1');
167
+ expect(cells[2].textContent).toBe('');
168
+ });
169
+ it('should use default row component for unspecified columns', async () => {
170
+ const rowComponents = {
171
+ default: (entry, column) => createComponent("span", null, String(entry[column])),
172
+ };
173
+ const { table } = await renderGrid({
174
+ columns: ['id', 'name'],
175
+ entries: [testEntries[0]],
176
+ rowComponents,
177
+ });
178
+ const cells = table.querySelectorAll('tbody td');
179
+ expect(cells[0].textContent).toBe('1');
180
+ expect(cells[1].textContent).toBe('Item 1');
181
+ });
182
+ it('should prefer specific row component over default', async () => {
183
+ const rowComponents = {
184
+ id: (entry) => createComponent("span", null,
185
+ "Custom: ",
186
+ entry.id),
187
+ default: (entry, column) => createComponent("span", null,
188
+ "Default: ",
189
+ String(entry[column])),
190
+ };
191
+ const { table } = await renderGrid({
192
+ columns: ['id', 'name'],
193
+ entries: [testEntries[0]],
194
+ rowComponents,
195
+ });
196
+ const cells = table.querySelectorAll('tbody td');
197
+ expect(cells[0].textContent).toBe('Custom: 1');
198
+ expect(cells[1].textContent).toBe('Default: Item 1');
199
+ });
200
+ it('should render empty cells when no row component is provided', async () => {
201
+ const { table } = await renderGrid({
202
+ columns: ['id', 'name'],
203
+ entries: [testEntries[0]],
204
+ });
205
+ const cells = table.querySelectorAll('tbody td');
206
+ expect(cells[0].textContent).toBe('');
207
+ expect(cells[1].textContent).toBe('');
208
+ });
209
+ });
210
+ describe('empty state', () => {
211
+ it('should render empty tbody when no entries', async () => {
212
+ const { table } = await renderGrid({
213
+ columns: ['id', 'name'],
214
+ entries: [],
215
+ });
216
+ const rows = table.querySelectorAll('tbody tr');
217
+ expect(rows.length).toBe(0);
218
+ });
219
+ it('should still render headers when no entries', async () => {
220
+ const { table } = await renderGrid({
221
+ columns: ['id', 'name', 'value'],
222
+ entries: [],
223
+ });
224
+ const headers = table.querySelectorAll('th');
225
+ expect(headers.length).toBe(3);
226
+ });
227
+ });
228
+ describe('styles', () => {
229
+ const testEntries = [{ id: 1, name: 'Item 1', value: 'Value 1' }];
230
+ it('should apply wrapper styles to the grid element', async () => {
231
+ const { grid } = await renderGrid({
232
+ columns: ['id', 'name'],
233
+ entries: testEntries,
234
+ rowComponents: {
235
+ default: (entry, column) => createComponent("span", null, String(entry[column])),
236
+ },
237
+ styles: {
238
+ wrapper: { backgroundColor: 'rgb(255, 0, 0)' },
239
+ },
240
+ });
241
+ const computedStyle = window.getComputedStyle(grid);
242
+ expect(computedStyle.backgroundColor).toBe('rgb(255, 0, 0)');
243
+ });
244
+ it('should apply header styles to th elements', async () => {
245
+ const { table } = await renderGrid({
246
+ columns: ['id', 'name'],
247
+ entries: [],
248
+ styles: {
249
+ header: { color: 'rgb(0, 255, 0)' },
250
+ },
251
+ });
252
+ const header = table.querySelector('th');
253
+ expect(header.style.color).toBe('rgb(0, 255, 0)');
254
+ });
255
+ it('should apply cell styles to td elements', async () => {
256
+ const { table } = await renderGrid({
257
+ columns: ['id'],
258
+ entries: testEntries,
259
+ rowComponents: {
260
+ default: (entry, column) => createComponent("span", null, String(entry[column])),
261
+ },
262
+ styles: {
263
+ cell: { color: 'rgb(0, 0, 255)' },
264
+ },
265
+ });
266
+ const cell = table.querySelector('td');
267
+ expect(cell.style.color).toBe('rgb(0, 0, 255)');
268
+ });
269
+ it('should apply multiple style properties', async () => {
270
+ const { grid, table } = await renderGrid({
271
+ columns: ['id'],
272
+ entries: testEntries,
273
+ rowComponents: {
274
+ default: (entry, column) => createComponent("span", null, String(entry[column])),
275
+ },
276
+ styles: {
277
+ wrapper: { margin: '10px', padding: '20px' },
278
+ header: { fontWeight: 'bold' },
279
+ cell: { textAlign: 'center' },
280
+ },
281
+ });
282
+ expect(window.getComputedStyle(grid).margin).toBe('10px');
283
+ expect(window.getComputedStyle(grid).padding).toBe('20px');
284
+ expect(table.querySelector('th').style.fontWeight).toBe('bold');
285
+ expect(table.querySelector('td').style.textAlign).toBe('center');
286
+ });
287
+ });
288
+ describe('default styles', () => {
289
+ it('should have full width and height by default', async () => {
290
+ const { grid } = await renderGrid({
291
+ columns: ['id'],
292
+ entries: [],
293
+ });
294
+ const computedStyle = window.getComputedStyle(grid);
295
+ expect(computedStyle.width).toBe('100%');
296
+ expect(computedStyle.height).toBe('100%');
297
+ });
298
+ it('should have overflow auto', async () => {
299
+ const { grid } = await renderGrid({
300
+ columns: ['id'],
301
+ entries: [],
302
+ });
303
+ const computedStyle = window.getComputedStyle(grid);
304
+ expect(computedStyle.overflow).toBe('auto');
305
+ });
306
+ it('should have display block', async () => {
307
+ const { grid } = await renderGrid({
308
+ columns: ['id'],
309
+ entries: [],
310
+ });
311
+ const computedStyle = window.getComputedStyle(grid);
312
+ expect(computedStyle.display).toBe('block');
313
+ });
314
+ });
315
+ });
316
+ //# sourceMappingURL=grid.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.spec.js","sourceRoot":"","sources":["../../src/components/grid.spec.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=autocomplete.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.spec.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/autocomplete.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,194 @@
1
+ import { Injector } from '@furystack/inject';
2
+ import { createComponent, initializeShadeRoot } from '@furystack/shades';
3
+ import { sleepAsync, usingAsync } from '@furystack/utils';
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
5
+ import { Autocomplete } from './autocomplete.js';
6
+ describe('Autocomplete component', () => {
7
+ beforeEach(() => {
8
+ document.body.innerHTML = '<div id="root"></div>';
9
+ });
10
+ afterEach(() => {
11
+ document.body.innerHTML = '';
12
+ });
13
+ it('should render an input with datalist suggestions', async () => {
14
+ await usingAsync(new Injector(), async (injector) => {
15
+ const rootElement = document.getElementById('root');
16
+ const suggestions = ['apple', 'banana', 'cherry'];
17
+ initializeShadeRoot({
18
+ injector,
19
+ rootElement,
20
+ jsxElement: createComponent(Autocomplete, { suggestions: suggestions }),
21
+ });
22
+ await sleepAsync(50);
23
+ const autocomplete = document.querySelector('shade-autocomplete');
24
+ expect(autocomplete).not.toBeNull();
25
+ const input = autocomplete?.querySelector('input');
26
+ expect(input).not.toBeNull();
27
+ const datalist = autocomplete?.querySelector('datalist');
28
+ expect(datalist).not.toBeNull();
29
+ const options = datalist?.querySelectorAll('option');
30
+ expect(options?.length).toBe(3);
31
+ expect(options?.[0].value).toBe('apple');
32
+ expect(options?.[1].value).toBe('banana');
33
+ expect(options?.[2].value).toBe('cherry');
34
+ });
35
+ });
36
+ it('should link the input to the datalist via list attribute', async () => {
37
+ await usingAsync(new Injector(), async (injector) => {
38
+ const rootElement = document.getElementById('root');
39
+ initializeShadeRoot({
40
+ injector,
41
+ rootElement,
42
+ jsxElement: createComponent(Autocomplete, { suggestions: ['option1', 'option2'] }),
43
+ });
44
+ await sleepAsync(50);
45
+ const autocomplete = document.querySelector('shade-autocomplete');
46
+ const input = autocomplete?.querySelector('input');
47
+ const datalist = autocomplete?.querySelector('datalist');
48
+ expect(input).not.toBeNull();
49
+ expect(datalist).not.toBeNull();
50
+ expect(input?.getAttribute('list')).toBe(datalist?.id);
51
+ });
52
+ });
53
+ it('should call onchange callback with valid value', async () => {
54
+ await usingAsync(new Injector(), async (injector) => {
55
+ const rootElement = document.getElementById('root');
56
+ const onchange = vi.fn();
57
+ const suggestions = ['foo', 'bar', 'baz'];
58
+ initializeShadeRoot({
59
+ injector,
60
+ rootElement,
61
+ jsxElement: createComponent(Autocomplete, { suggestions: suggestions, onchange: onchange }),
62
+ });
63
+ await sleepAsync(50);
64
+ const autocomplete = document.querySelector('shade-autocomplete');
65
+ const input = autocomplete?.querySelector('input');
66
+ expect(input).not.toBeNull();
67
+ input.value = 'foo';
68
+ const changeEvent = new Event('change', { bubbles: true });
69
+ input.dispatchEvent(changeEvent);
70
+ await sleepAsync(50);
71
+ expect(onchange).toHaveBeenCalledWith('foo');
72
+ });
73
+ });
74
+ it('should call onchange callback with any value when not in strict mode', async () => {
75
+ await usingAsync(new Injector(), async (injector) => {
76
+ const rootElement = document.getElementById('root');
77
+ const onchange = vi.fn();
78
+ const suggestions = ['foo', 'bar'];
79
+ initializeShadeRoot({
80
+ injector,
81
+ rootElement,
82
+ jsxElement: createComponent(Autocomplete, { suggestions: suggestions, onchange: onchange }),
83
+ });
84
+ await sleepAsync(50);
85
+ const autocomplete = document.querySelector('shade-autocomplete');
86
+ const input = autocomplete?.querySelector('input');
87
+ input.value = 'custom-value';
88
+ const changeEvent = new Event('change', { bubbles: true });
89
+ input.dispatchEvent(changeEvent);
90
+ await sleepAsync(50);
91
+ expect(onchange).toHaveBeenCalledWith('custom-value');
92
+ });
93
+ });
94
+ it('should set custom validity when strict mode is enabled and value is not in suggestions', async () => {
95
+ await usingAsync(new Injector(), async (injector) => {
96
+ const rootElement = document.getElementById('root');
97
+ const onchange = vi.fn();
98
+ const suggestions = ['valid1', 'valid2'];
99
+ initializeShadeRoot({
100
+ injector,
101
+ rootElement,
102
+ jsxElement: createComponent(Autocomplete, { suggestions: suggestions, strict: true, onchange: onchange }),
103
+ });
104
+ await sleepAsync(50);
105
+ const autocomplete = document.querySelector('shade-autocomplete');
106
+ const input = autocomplete?.querySelector('input');
107
+ const setCustomValiditySpy = vi.spyOn(input, 'setCustomValidity');
108
+ input.value = 'invalid-value';
109
+ const changeEvent = new Event('change', { bubbles: true });
110
+ input.dispatchEvent(changeEvent);
111
+ await sleepAsync(50);
112
+ expect(setCustomValiditySpy).toHaveBeenCalledWith('Please select a valid entry!');
113
+ // Verify that onchange was not called with the invalid string value
114
+ // (The Input component may call the underlying handler with the event object,
115
+ // but the Autocomplete's strict validation should prevent calling onchange with the value)
116
+ expect(onchange).not.toHaveBeenCalledWith('invalid-value');
117
+ });
118
+ });
119
+ it('should call onchange when strict mode is enabled and value is in suggestions', async () => {
120
+ await usingAsync(new Injector(), async (injector) => {
121
+ const rootElement = document.getElementById('root');
122
+ const onchange = vi.fn();
123
+ const suggestions = ['valid1', 'valid2'];
124
+ initializeShadeRoot({
125
+ injector,
126
+ rootElement,
127
+ jsxElement: createComponent(Autocomplete, { suggestions: suggestions, strict: true, onchange: onchange }),
128
+ });
129
+ await sleepAsync(50);
130
+ const autocomplete = document.querySelector('shade-autocomplete');
131
+ const input = autocomplete?.querySelector('input');
132
+ input.value = 'valid1';
133
+ const changeEvent = new Event('change', { bubbles: true });
134
+ input.dispatchEvent(changeEvent);
135
+ await sleepAsync(50);
136
+ expect(onchange).toHaveBeenCalledWith('valid1');
137
+ });
138
+ });
139
+ it('should pass inputProps to the underlying Input component', async () => {
140
+ await usingAsync(new Injector(), async (injector) => {
141
+ const rootElement = document.getElementById('root');
142
+ initializeShadeRoot({
143
+ injector,
144
+ rootElement,
145
+ jsxElement: (createComponent(Autocomplete, { suggestions: ['a', 'b'], inputProps: {
146
+ placeholder: 'Select an option',
147
+ disabled: true,
148
+ name: 'autocomplete-field',
149
+ } })),
150
+ });
151
+ await sleepAsync(50);
152
+ const autocomplete = document.querySelector('shade-autocomplete');
153
+ const input = autocomplete?.querySelector('input');
154
+ expect(input.placeholder).toBe('Select an option');
155
+ expect(input.disabled).toBe(true);
156
+ expect(input.name).toBe('autocomplete-field');
157
+ });
158
+ });
159
+ it('should render with empty suggestions', async () => {
160
+ await usingAsync(new Injector(), async (injector) => {
161
+ const rootElement = document.getElementById('root');
162
+ initializeShadeRoot({
163
+ injector,
164
+ rootElement,
165
+ jsxElement: createComponent(Autocomplete, { suggestions: [] }),
166
+ });
167
+ await sleepAsync(50);
168
+ const autocomplete = document.querySelector('shade-autocomplete');
169
+ expect(autocomplete).not.toBeNull();
170
+ const datalist = autocomplete?.querySelector('datalist');
171
+ expect(datalist).not.toBeNull();
172
+ const options = datalist?.querySelectorAll('option');
173
+ expect(options?.length).toBe(0);
174
+ });
175
+ });
176
+ it('should work without onchange callback', async () => {
177
+ await usingAsync(new Injector(), async (injector) => {
178
+ const rootElement = document.getElementById('root');
179
+ initializeShadeRoot({
180
+ injector,
181
+ rootElement,
182
+ jsxElement: createComponent(Autocomplete, { suggestions: ['test'] }),
183
+ });
184
+ await sleepAsync(50);
185
+ const autocomplete = document.querySelector('shade-autocomplete');
186
+ const input = autocomplete?.querySelector('input');
187
+ input.value = 'test';
188
+ const changeEvent = new Event('change', { bubbles: true });
189
+ // Should not throw when onchange is not provided
190
+ expect(() => input.dispatchEvent(changeEvent)).not.toThrow();
191
+ });
192
+ });
193
+ });
194
+ //# sourceMappingURL=autocomplete.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.spec.js","sourceRoot":"","sources":["../../../src/components/inputs/autocomplete.spec.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0CAA0C,CAAA;AAIvE,MAAM,MAAM,0BAA0B,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAA;AAE1D,MAAM,MAAM,4BAA4B,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9E,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,4BAA4B,CAAA;AAE7F,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,gBAAgB,CAAC;IACtE;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC;;OAEG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;IAEjC;;OAEG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IAE7C;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAAA;IAClC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAA;IAE5B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,cAAc,CAAA;KAAE,KAAK,qBAAqB,CAAA;IAEnF;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;IAEtH;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;IAErH;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;CACpH;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,aAAa;QACrB,MAAM,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAA;KACrC;CACF;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,aAAa,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;CACrC,CAAA;AA0GD,eAAO,MAAM,KAAK;;sEAoLhB,CAAA"}
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAIvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0CAA0C,CAAA;AAIvE,MAAM,MAAM,0BAA0B,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAA;AAE1D,MAAM,MAAM,4BAA4B,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9E,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,4BAA4B,CAAA;AAE7F,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,gBAAgB,CAAC;IACtE;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC;;OAEG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;IAEjC;;OAEG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IAE7C;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAAA;IAClC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAA;IAE5B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,cAAc,CAAA;KAAE,KAAK,qBAAqB,CAAA;IAEnF;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;IAEtH;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;IAErH;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;CACpH;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,aAAa;QACrB,MAAM,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAA;KACrC;CACF;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,aAAa,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;CACrC,CAAA;AAsDD,eAAO,MAAM,KAAK;;sEAqPhB,CAAA"}