@aceshooting/lyra-ui 1.2.0 → 2.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 (384) hide show
  1. package/README.md +98 -14
  2. package/custom-elements.json +30279 -12124
  3. package/dist/components/app-rail/app-rail-item.d.ts +30 -0
  4. package/dist/components/app-rail/app-rail-item.js +68 -0
  5. package/dist/components/app-rail/app-rail-item.styles.d.ts +1 -0
  6. package/dist/components/app-rail/app-rail-item.styles.js +65 -0
  7. package/dist/components/app-rail/app-rail.d.ts +168 -0
  8. package/dist/components/app-rail/app-rail.js +419 -0
  9. package/dist/components/app-rail/app-rail.styles.d.ts +1 -0
  10. package/dist/components/app-rail/app-rail.styles.js +128 -0
  11. package/dist/components/attachment-chip/attachment-chip.d.ts +141 -0
  12. package/dist/components/attachment-chip/attachment-chip.js +356 -0
  13. package/dist/components/attachment-chip/attachment-chip.styles.d.ts +1 -0
  14. package/dist/components/attachment-chip/attachment-chip.styles.js +184 -0
  15. package/dist/components/attachment-trigger/attachment-trigger.d.ts +96 -0
  16. package/dist/components/attachment-trigger/attachment-trigger.js +270 -0
  17. package/dist/components/attachment-trigger/attachment-trigger.styles.d.ts +1 -0
  18. package/dist/components/attachment-trigger/attachment-trigger.styles.js +90 -0
  19. package/dist/components/chart/bar-chart.js +2 -18
  20. package/dist/components/chart/box-plot.d.ts +25 -1
  21. package/dist/components/chart/box-plot.js +147 -7
  22. package/dist/components/chart/box-plot.styles.js +13 -0
  23. package/dist/components/chart/bubble-chart.js +2 -18
  24. package/dist/components/chart/chart-loader.d.ts +44 -13
  25. package/dist/components/chart/chart-loader.js +65 -18
  26. package/dist/components/chart/chart.d.ts +55 -12
  27. package/dist/components/chart/chart.js +247 -49
  28. package/dist/components/chart/doughnut-chart.js +2 -18
  29. package/dist/components/chart/histogram-bin.d.ts +7 -1
  30. package/dist/components/chart/histogram-bin.js +32 -14
  31. package/dist/components/chart/histogram.js +8 -16
  32. package/dist/components/chart/line-chart.js +2 -18
  33. package/dist/components/chart/lite-chart.d.ts +134 -3
  34. package/dist/components/chart/lite-chart.js +382 -67
  35. package/dist/components/chart/lite-chart.styles.js +9 -0
  36. package/dist/components/chart/pie-chart.js +2 -18
  37. package/dist/components/chart/polar-area-chart.js +2 -18
  38. package/dist/components/chart/radar-chart.js +2 -18
  39. package/dist/components/chart/scatter-chart.js +2 -18
  40. package/dist/components/chat-composer/chat-composer.d.ts +133 -0
  41. package/dist/components/chat-composer/chat-composer.js +366 -0
  42. package/dist/components/chat-composer/chat-composer.styles.d.ts +1 -0
  43. package/dist/components/chat-composer/chat-composer.styles.js +145 -0
  44. package/dist/components/chat-message/chat-message.d.ts +141 -0
  45. package/dist/components/chat-message/chat-message.js +331 -0
  46. package/dist/components/chat-message/chat-message.styles.d.ts +1 -0
  47. package/dist/components/chat-message/chat-message.styles.js +203 -0
  48. package/dist/components/checkbox/checkbox.d.ts +117 -0
  49. package/dist/components/checkbox/checkbox.js +353 -0
  50. package/dist/components/checkbox/checkbox.styles.d.ts +1 -0
  51. package/dist/components/checkbox/checkbox.styles.js +77 -0
  52. package/dist/components/chip/chip-group.d.ts +56 -0
  53. package/dist/components/chip/chip-group.js +130 -0
  54. package/dist/components/chip/chip-group.styles.d.ts +1 -0
  55. package/dist/components/chip/chip-group.styles.js +57 -0
  56. package/dist/components/chip/chip.d.ts +64 -0
  57. package/dist/components/chip/chip.js +122 -0
  58. package/dist/components/chip/chip.styles.d.ts +1 -0
  59. package/dist/components/chip/chip.styles.js +115 -0
  60. package/dist/components/citation-badge/citation-badge.d.ts +113 -0
  61. package/dist/components/citation-badge/citation-badge.js +318 -0
  62. package/dist/components/citation-badge/citation-badge.styles.d.ts +1 -0
  63. package/dist/components/citation-badge/citation-badge.styles.js +96 -0
  64. package/dist/components/code-block/code-block.d.ts +127 -0
  65. package/dist/components/code-block/code-block.js +382 -0
  66. package/dist/components/code-block/code-block.styles.d.ts +1 -0
  67. package/dist/components/code-block/code-block.styles.js +187 -0
  68. package/dist/components/code-block/code-loader.d.ts +87 -0
  69. package/dist/components/code-block/code-loader.js +142 -0
  70. package/dist/components/combobox/combobox.d.ts +65 -6
  71. package/dist/components/combobox/combobox.js +258 -48
  72. package/dist/components/combobox/combobox.styles.js +3 -3
  73. package/dist/components/combobox/option.d.ts +5 -1
  74. package/dist/components/combobox/option.js +35 -0
  75. package/dist/components/context-meter/context-meter.d.ts +53 -0
  76. package/dist/components/context-meter/context-meter.js +159 -0
  77. package/dist/components/context-meter/context-meter.styles.d.ts +1 -0
  78. package/dist/components/context-meter/context-meter.styles.js +114 -0
  79. package/dist/components/conversation-item/conversation-item.d.ts +125 -0
  80. package/dist/components/conversation-item/conversation-item.js +331 -0
  81. package/dist/components/conversation-item/conversation-item.styles.d.ts +1 -0
  82. package/dist/components/conversation-item/conversation-item.styles.js +155 -0
  83. package/dist/components/date-picker/calendar-core.d.ts +24 -0
  84. package/dist/components/date-picker/calendar-core.js +51 -4
  85. package/dist/components/date-picker/date-input.d.ts +100 -9
  86. package/dist/components/date-picker/date-input.js +383 -66
  87. package/dist/components/date-picker/date-picker.d.ts +35 -4
  88. package/dist/components/date-picker/date-picker.js +171 -44
  89. package/dist/components/dialog/confirm.d.ts +40 -0
  90. package/dist/components/dialog/confirm.js +76 -0
  91. package/dist/components/dialog/dialog.d.ts +129 -0
  92. package/dist/components/dialog/dialog.js +288 -0
  93. package/dist/components/dialog/dialog.styles.d.ts +1 -0
  94. package/dist/components/dialog/dialog.styles.js +96 -0
  95. package/dist/components/dock-panel/dock-panel.d.ts +142 -0
  96. package/dist/components/dock-panel/dock-panel.js +359 -0
  97. package/dist/components/dock-panel/dock-panel.styles.d.ts +1 -0
  98. package/dist/components/dock-panel/dock-panel.styles.js +159 -0
  99. package/dist/components/document-preview/document-preview.d.ts +143 -0
  100. package/dist/components/document-preview/document-preview.js +388 -0
  101. package/dist/components/document-preview/document-preview.styles.d.ts +1 -0
  102. package/dist/components/document-preview/document-preview.styles.js +191 -0
  103. package/dist/components/empty/empty.d.ts +1 -2
  104. package/dist/components/empty/empty.js +18 -12
  105. package/dist/components/empty/empty.styles.js +0 -3
  106. package/dist/components/export-button/csv.js +1 -1
  107. package/dist/components/export-button/export-button.d.ts +12 -0
  108. package/dist/components/export-button/export-button.js +35 -5
  109. package/dist/components/export-button/export-button.styles.js +5 -1
  110. package/dist/components/file-input/accept.js +2 -0
  111. package/dist/components/file-input/file-input.d.ts +10 -1
  112. package/dist/components/file-input/file-input.js +36 -5
  113. package/dist/components/flag/flag.d.ts +29 -13
  114. package/dist/components/flag/flag.js +54 -14
  115. package/dist/components/flag/flag.styles.js +1 -1
  116. package/dist/components/flag/language-map.d.ts +4 -1
  117. package/dist/components/flag/language-map.js +6 -3
  118. package/dist/components/gauge/gauge.d.ts +10 -1
  119. package/dist/components/gauge/gauge.js +41 -13
  120. package/dist/components/generation-status/generation-status.d.ts +117 -0
  121. package/dist/components/generation-status/generation-status.js +327 -0
  122. package/dist/components/generation-status/generation-status.styles.d.ts +1 -0
  123. package/dist/components/generation-status/generation-status.styles.js +84 -0
  124. package/dist/components/graph/graph.d.ts +37 -3
  125. package/dist/components/graph/graph.js +132 -20
  126. package/dist/components/heatmap/calendar-grid.d.ts +19 -7
  127. package/dist/components/heatmap/calendar-grid.js +42 -18
  128. package/dist/components/heatmap/heatmap-scale.d.ts +11 -1
  129. package/dist/components/heatmap/heatmap-scale.js +14 -2
  130. package/dist/components/heatmap/heatmap.d.ts +227 -12
  131. package/dist/components/heatmap/heatmap.js +488 -93
  132. package/dist/components/json-viewer/json-viewer.d.ts +70 -0
  133. package/dist/components/json-viewer/json-viewer.js +361 -0
  134. package/dist/components/json-viewer/json-viewer.styles.d.ts +1 -0
  135. package/dist/components/json-viewer/json-viewer.styles.js +177 -0
  136. package/dist/components/kbd/kbd.d.ts +77 -0
  137. package/dist/components/kbd/kbd.js +231 -0
  138. package/dist/components/kbd/kbd.styles.d.ts +1 -0
  139. package/dist/components/kbd/kbd.styles.js +52 -0
  140. package/dist/components/live-region/live-region.d.ts +90 -0
  141. package/dist/components/live-region/live-region.js +189 -0
  142. package/dist/components/live-region/live-region.styles.d.ts +1 -0
  143. package/dist/components/live-region/live-region.styles.js +10 -0
  144. package/dist/components/map/map.d.ts +32 -7
  145. package/dist/components/map/map.js +133 -32
  146. package/dist/components/markdown/markdown-loader.d.ts +58 -0
  147. package/dist/components/markdown/markdown-loader.js +77 -0
  148. package/dist/components/markdown/markdown.d.ts +119 -0
  149. package/dist/components/markdown/markdown.js +389 -0
  150. package/dist/components/markdown/markdown.styles.d.ts +1 -0
  151. package/dist/components/markdown/markdown.styles.js +88 -0
  152. package/dist/components/media-card/media-card.d.ts +130 -0
  153. package/dist/components/media-card/media-card.js +273 -0
  154. package/dist/components/media-card/media-card.styles.d.ts +1 -0
  155. package/dist/components/media-card/media-card.styles.js +132 -0
  156. package/dist/components/mention-popover/mention-popover.d.ts +203 -0
  157. package/dist/components/mention-popover/mention-popover.js +493 -0
  158. package/dist/components/mention-popover/mention-popover.styles.d.ts +1 -0
  159. package/dist/components/mention-popover/mention-popover.styles.js +101 -0
  160. package/dist/components/menu/menu-item.d.ts +91 -0
  161. package/dist/components/menu/menu-item.js +206 -0
  162. package/dist/components/menu/menu-item.styles.d.ts +1 -0
  163. package/dist/components/menu/menu-item.styles.js +75 -0
  164. package/dist/components/menu/menu.d.ts +167 -0
  165. package/dist/components/menu/menu.js +461 -0
  166. package/dist/components/menu/menu.styles.d.ts +1 -0
  167. package/dist/components/menu/menu.styles.js +67 -0
  168. package/dist/components/model-select/model-select.d.ts +170 -0
  169. package/dist/components/model-select/model-select.js +588 -0
  170. package/dist/components/model-select/model-select.styles.d.ts +1 -0
  171. package/dist/components/model-select/model-select.styles.js +203 -0
  172. package/dist/components/model-settings-panel/model-settings-panel.d.ts +93 -0
  173. package/dist/components/model-settings-panel/model-settings-panel.js +209 -0
  174. package/dist/components/model-settings-panel/model-settings-panel.styles.d.ts +1 -0
  175. package/dist/components/model-settings-panel/model-settings-panel.styles.js +82 -0
  176. package/dist/components/playback/playback.d.ts +19 -3
  177. package/dist/components/playback/playback.js +109 -33
  178. package/dist/components/playback/playback.styles.js +6 -1
  179. package/dist/components/responsive-panel/responsive-panel.d.ts +163 -0
  180. package/dist/components/responsive-panel/responsive-panel.js +363 -0
  181. package/dist/components/responsive-panel/responsive-panel.styles.d.ts +1 -0
  182. package/dist/components/responsive-panel/responsive-panel.styles.js +103 -0
  183. package/dist/components/result-card/result-card.d.ts +50 -0
  184. package/dist/components/result-card/result-card.js +89 -0
  185. package/dist/components/result-card/result-card.styles.d.ts +1 -0
  186. package/dist/components/result-card/result-card.styles.js +49 -0
  187. package/dist/components/result-card/result-field.d.ts +36 -0
  188. package/dist/components/result-card/result-field.js +87 -0
  189. package/dist/components/result-card/result-field.styles.d.ts +1 -0
  190. package/dist/components/result-card/result-field.styles.js +32 -0
  191. package/dist/components/select/select.d.ts +84 -4
  192. package/dist/components/select/select.js +251 -36
  193. package/dist/components/skeleton/skeleton.d.ts +3 -0
  194. package/dist/components/skeleton/skeleton.js +7 -1
  195. package/dist/components/skeleton/skeleton.styles.js +5 -4
  196. package/dist/components/slider/slider.d.ts +141 -0
  197. package/dist/components/slider/slider.js +467 -0
  198. package/dist/components/slider/slider.styles.d.ts +1 -0
  199. package/dist/components/slider/slider.styles.js +87 -0
  200. package/dist/components/source-card/source-card.d.ts +104 -0
  201. package/dist/components/source-card/source-card.js +195 -0
  202. package/dist/components/source-card/source-card.styles.d.ts +1 -0
  203. package/dist/components/source-card/source-card.styles.js +69 -0
  204. package/dist/components/source-list/source-list.d.ts +63 -0
  205. package/dist/components/source-list/source-list.js +130 -0
  206. package/dist/components/source-list/source-list.styles.d.ts +1 -0
  207. package/dist/components/source-list/source-list.styles.js +59 -0
  208. package/dist/components/sparkline/sparkline.js +58 -20
  209. package/dist/components/split/split.d.ts +224 -5
  210. package/dist/components/split/split.js +617 -43
  211. package/dist/components/split/split.styles.js +47 -0
  212. package/dist/components/stat/stat.d.ts +15 -4
  213. package/dist/components/stat/stat.js +53 -12
  214. package/dist/components/stream-status/stream-status.d.ts +126 -0
  215. package/dist/components/stream-status/stream-status.js +292 -0
  216. package/dist/components/stream-status/stream-status.styles.d.ts +1 -0
  217. package/dist/components/stream-status/stream-status.styles.js +103 -0
  218. package/dist/components/streaming-text/streaming-text.d.ts +104 -0
  219. package/dist/components/streaming-text/streaming-text.js +224 -0
  220. package/dist/components/streaming-text/streaming-text.styles.d.ts +1 -0
  221. package/dist/components/streaming-text/streaming-text.styles.js +63 -0
  222. package/dist/components/switch/switch.d.ts +103 -0
  223. package/dist/components/switch/switch.js +250 -0
  224. package/dist/components/switch/switch.styles.d.ts +1 -0
  225. package/dist/components/switch/switch.styles.js +75 -0
  226. package/dist/components/table/table.d.ts +89 -5
  227. package/dist/components/table/table.js +243 -26
  228. package/dist/components/table/table.styles.js +6 -1
  229. package/dist/components/tabs/tabs.d.ts +74 -0
  230. package/dist/components/tabs/tabs.js +254 -0
  231. package/dist/components/tabs/tabs.styles.d.ts +1 -0
  232. package/dist/components/tabs/tabs.styles.js +74 -0
  233. package/dist/components/thinking-panel/thinking-panel.d.ts +123 -0
  234. package/dist/components/thinking-panel/thinking-panel.js +260 -0
  235. package/dist/components/thinking-panel/thinking-panel.styles.d.ts +1 -0
  236. package/dist/components/thinking-panel/thinking-panel.styles.js +123 -0
  237. package/dist/components/time-range/time-range.d.ts +59 -2
  238. package/dist/components/time-range/time-range.js +163 -67
  239. package/dist/components/toast/toast-item.d.ts +12 -2
  240. package/dist/components/toast/toast-item.js +106 -44
  241. package/dist/components/toast/toast-item.styles.js +59 -28
  242. package/dist/components/toast/toast.js +17 -5
  243. package/dist/components/toast/toaster.js +10 -1
  244. package/dist/components/tool-approval-dialog/tool-approval-dialog.d.ts +131 -0
  245. package/dist/components/tool-approval-dialog/tool-approval-dialog.js +329 -0
  246. package/dist/components/tool-approval-dialog/tool-approval-dialog.styles.d.ts +1 -0
  247. package/dist/components/tool-approval-dialog/tool-approval-dialog.styles.js +160 -0
  248. package/dist/components/tool-call-chip/tool-call-chip.d.ts +105 -0
  249. package/dist/components/tool-call-chip/tool-call-chip.js +349 -0
  250. package/dist/components/tool-call-chip/tool-call-chip.styles.d.ts +1 -0
  251. package/dist/components/tool-call-chip/tool-call-chip.styles.js +203 -0
  252. package/dist/components/tool-param-form/tool-param-form.d.ts +206 -0
  253. package/dist/components/tool-param-form/tool-param-form.js +610 -0
  254. package/dist/components/tool-param-form/tool-param-form.styles.d.ts +1 -0
  255. package/dist/components/tool-param-form/tool-param-form.styles.js +75 -0
  256. package/dist/components/tool-result-dialog/tool-result-dialog.d.ts +122 -0
  257. package/dist/components/tool-result-dialog/tool-result-dialog.js +358 -0
  258. package/dist/components/tool-result-dialog/tool-result-dialog.styles.d.ts +1 -0
  259. package/dist/components/tool-result-dialog/tool-result-dialog.styles.js +176 -0
  260. package/dist/components/tool-result-view/registry.d.ts +73 -0
  261. package/dist/components/tool-result-view/registry.js +89 -0
  262. package/dist/components/tool-result-view/tool-result-view.d.ts +58 -0
  263. package/dist/components/tool-result-view/tool-result-view.js +152 -0
  264. package/dist/components/tool-result-view/tool-result-view.styles.d.ts +1 -0
  265. package/dist/components/tool-result-view/tool-result-view.styles.js +13 -0
  266. package/dist/components/tool-select-dialog/tool-select-dialog.d.ts +151 -0
  267. package/dist/components/tool-select-dialog/tool-select-dialog.js +350 -0
  268. package/dist/components/tool-select-dialog/tool-select-dialog.styles.d.ts +1 -0
  269. package/dist/components/tool-select-dialog/tool-select-dialog.styles.js +191 -0
  270. package/dist/components/tree/tree-node.d.ts +15 -3
  271. package/dist/components/tree/tree-node.js +20 -7
  272. package/dist/components/tree/tree.d.ts +25 -10
  273. package/dist/components/tree/tree.js +39 -31
  274. package/dist/components/typing-indicator/typing-indicator.d.ts +70 -0
  275. package/dist/components/typing-indicator/typing-indicator.js +108 -0
  276. package/dist/components/typing-indicator/typing-indicator.styles.d.ts +1 -0
  277. package/dist/components/typing-indicator/typing-indicator.styles.js +132 -0
  278. package/dist/components/virtual-list/virtual-list.d.ts +210 -0
  279. package/dist/components/virtual-list/virtual-list.js +607 -0
  280. package/dist/components/virtual-list/virtual-list.styles.d.ts +1 -0
  281. package/dist/components/virtual-list/virtual-list.styles.js +56 -0
  282. package/dist/components/widget/widget.d.ts +5 -4
  283. package/dist/components/widget/widget.js +54 -120
  284. package/dist/components/widget/widget.styles.js +8 -2
  285. package/dist/components/word-cloud/word-cloud-layout.d.ts +7 -0
  286. package/dist/components/word-cloud/word-cloud-layout.js +29 -2
  287. package/dist/components/word-cloud/word-cloud.d.ts +28 -2
  288. package/dist/components/word-cloud/word-cloud.js +69 -19
  289. package/dist/components/word-cloud/word-cloud.styles.js +16 -3
  290. package/dist/internal/anchored-validity.d.ts +1 -0
  291. package/dist/internal/anchored-validity.js +86 -0
  292. package/dist/internal/announcer.d.ts +57 -0
  293. package/dist/internal/announcer.js +71 -0
  294. package/dist/internal/form-associated.d.ts +8 -0
  295. package/dist/internal/form-associated.js +98 -15
  296. package/dist/internal/group-by-recency.d.ts +50 -0
  297. package/dist/internal/group-by-recency.js +80 -0
  298. package/dist/internal/numbers.d.ts +12 -0
  299. package/dist/internal/numbers.js +26 -0
  300. package/dist/internal/overlay-manager.d.ts +51 -0
  301. package/dist/internal/overlay-manager.js +523 -0
  302. package/dist/internal/positioner.js +27 -3
  303. package/dist/internal/rtl.d.ts +23 -0
  304. package/dist/internal/rtl.js +28 -0
  305. package/dist/internal/safe-url.d.ts +12 -0
  306. package/dist/internal/safe-url.js +41 -0
  307. package/dist/internal/scroll-lock.d.ts +10 -5
  308. package/dist/internal/scroll-lock.js +30 -14
  309. package/dist/internal/tokens.styles.js +22 -10
  310. package/dist/lyra.d.ts +133 -31
  311. package/dist/lyra.js +96 -26
  312. package/llms-full.txt +4546 -183
  313. package/llms.txt +21 -5
  314. package/package.json +41 -6
  315. package/dist/components/chart/bar-chart.stories.d.ts +0 -5
  316. package/dist/components/chart/bar-chart.stories.js +0 -20
  317. package/dist/components/chart/box-plot.stories.d.ts +0 -5
  318. package/dist/components/chart/box-plot.stories.js +0 -29
  319. package/dist/components/chart/bubble-chart.stories.d.ts +0 -5
  320. package/dist/components/chart/bubble-chart.stories.js +0 -26
  321. package/dist/components/chart/chart.stories.d.ts +0 -32
  322. package/dist/components/chart/chart.stories.js +0 -141
  323. package/dist/components/chart/doughnut-chart.stories.d.ts +0 -5
  324. package/dist/components/chart/doughnut-chart.stories.js +0 -26
  325. package/dist/components/chart/histogram.stories.d.ts +0 -5
  326. package/dist/components/chart/histogram.stories.js +0 -17
  327. package/dist/components/chart/line-chart.stories.d.ts +0 -22
  328. package/dist/components/chart/line-chart.stories.js +0 -99
  329. package/dist/components/chart/lite-chart.stories.d.ts +0 -14
  330. package/dist/components/chart/lite-chart.stories.js +0 -114
  331. package/dist/components/chart/pie-chart.stories.d.ts +0 -5
  332. package/dist/components/chart/pie-chart.stories.js +0 -26
  333. package/dist/components/chart/polar-area-chart.stories.d.ts +0 -5
  334. package/dist/components/chart/polar-area-chart.stories.js +0 -20
  335. package/dist/components/chart/radar-chart.stories.d.ts +0 -5
  336. package/dist/components/chart/radar-chart.stories.js +0 -20
  337. package/dist/components/chart/scatter-chart.stories.d.ts +0 -5
  338. package/dist/components/chart/scatter-chart.stories.js +0 -31
  339. package/dist/components/combobox/combobox.stories.d.ts +0 -24
  340. package/dist/components/combobox/combobox.stories.js +0 -102
  341. package/dist/components/date-picker/date-input.stories.d.ts +0 -10
  342. package/dist/components/date-picker/date-input.stories.js +0 -48
  343. package/dist/components/date-picker/date-picker.stories.d.ts +0 -10
  344. package/dist/components/date-picker/date-picker.stories.js +0 -25
  345. package/dist/components/empty/empty.stories.d.ts +0 -7
  346. package/dist/components/empty/empty.stories.js +0 -34
  347. package/dist/components/export-button/export-button.stories.d.ts +0 -7
  348. package/dist/components/export-button/export-button.stories.js +0 -37
  349. package/dist/components/file-input/file-input.stories.d.ts +0 -7
  350. package/dist/components/file-input/file-input.stories.js +0 -19
  351. package/dist/components/flag/flag.stories.d.ts +0 -6
  352. package/dist/components/flag/flag.stories.js +0 -31
  353. package/dist/components/gauge/gauge.stories.d.ts +0 -8
  354. package/dist/components/gauge/gauge.stories.js +0 -19
  355. package/dist/components/graph/graph.stories.d.ts +0 -8
  356. package/dist/components/graph/graph.stories.js +0 -68
  357. package/dist/components/heatmap/heatmap.stories.d.ts +0 -27
  358. package/dist/components/heatmap/heatmap.stories.js +0 -179
  359. package/dist/components/map/map.stories.d.ts +0 -15
  360. package/dist/components/map/map.stories.js +0 -135
  361. package/dist/components/playback/playback.stories.d.ts +0 -7
  362. package/dist/components/playback/playback.stories.js +0 -16
  363. package/dist/components/select/select.stories.d.ts +0 -21
  364. package/dist/components/select/select.stories.js +0 -91
  365. package/dist/components/skeleton/skeleton.stories.d.ts +0 -5
  366. package/dist/components/skeleton/skeleton.stories.js +0 -16
  367. package/dist/components/sparkline/sparkline.stories.d.ts +0 -11
  368. package/dist/components/sparkline/sparkline.stories.js +0 -39
  369. package/dist/components/split/split.stories.d.ts +0 -7
  370. package/dist/components/split/split.stories.js +0 -36
  371. package/dist/components/stat/stat.stories.d.ts +0 -9
  372. package/dist/components/stat/stat.stories.js +0 -81
  373. package/dist/components/table/table.stories.d.ts +0 -12
  374. package/dist/components/table/table.stories.js +0 -67
  375. package/dist/components/time-range/time-range.stories.d.ts +0 -8
  376. package/dist/components/time-range/time-range.stories.js +0 -26
  377. package/dist/components/toast/toast.stories.d.ts +0 -8
  378. package/dist/components/toast/toast.stories.js +0 -72
  379. package/dist/components/tree/tree.stories.d.ts +0 -9
  380. package/dist/components/tree/tree.stories.js +0 -52
  381. package/dist/components/widget/widget.stories.d.ts +0 -9
  382. package/dist/components/widget/widget.stories.js +0 -74
  383. package/dist/components/word-cloud/word-cloud.stories.d.ts +0 -10
  384. package/dist/components/word-cloud/word-cloud.stories.js +0 -55
@@ -0,0 +1,250 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html, nothing } from 'lit';
8
+ import { state } from 'lit/decorators.js';
9
+ import { LyraElement } from '../../internal/lyra-element.js';
10
+ import { defineElement } from '../../internal/prefix.js';
11
+ import { AnchoredValidityController, VALIDITY_ANCHOR } from '../../internal/anchored-validity.js';
12
+ import { styles } from './switch.styles.js';
13
+ /**
14
+ * `<lyra-switch>` — a boolean toggle-switch form control. Structurally the
15
+ * same idea as a checkbox (form-associated via `ElementInternals`, click and
16
+ * Space/Enter both toggle) but with switch semantics: `role="switch"` +
17
+ * `aria-checked` read to assistive tech as an on/off state rather than a
18
+ * checked/unchecked one, and there is no indeterminate state.
19
+ *
20
+ * `checked` is not a plain string, so this attaches `ElementInternals`
21
+ * directly and implements its own `updateValidity()` rather than using the
22
+ * `FormAssociated` mixin (that mixin's `value` accessor assumes a string —
23
+ * see `<lyra-combobox>` for the same direct-`ElementInternals` shape with a
24
+ * non-string value).
25
+ *
26
+ * @customElement lyra-switch
27
+ * @slot - Label text, rendered next to the track. Clicking it toggles the
28
+ * switch, the same as clicking a checkbox's associated `<label>`. If left
29
+ * empty, set `aria-label` on the host so the control still has an
30
+ * accessible name.
31
+ * @event lyra-change - The user toggled the switch (click or Space/Enter). `detail: { checked }`.
32
+ * @csspart base - The whole interactive control (`role="switch"`); wraps the track and label.
33
+ * @csspart track - The pill-shaped background.
34
+ * @csspart thumb - The circular knob that slides across the track.
35
+ * @csspart label - The wrapper around the default slot.
36
+ */
37
+ export class LyraSwitch extends LyraElement {
38
+ static { this.styles = [LyraElement.styles, styles]; }
39
+ static { this.formAssociated = true; }
40
+ static { this.properties = {
41
+ checked: { type: Boolean, reflect: true, noAccessor: true },
42
+ disabled: { type: Boolean, reflect: true, noAccessor: true },
43
+ name: { reflect: true, noAccessor: true },
44
+ required: { type: Boolean, reflect: true, noAccessor: true },
45
+ value: { noAccessor: true },
46
+ }; }
47
+ /** Whether the control is disabled explicitly or by an ancestor fieldset. */
48
+ get effectiveDisabled() {
49
+ return this.disabled || this._fieldsetDisabled;
50
+ }
51
+ get checked() {
52
+ return this._checked;
53
+ }
54
+ set checked(next) {
55
+ const old = this._checked;
56
+ this._checked = Boolean(next);
57
+ this.syncFormState();
58
+ this.requestUpdate('checked', old);
59
+ }
60
+ get disabled() {
61
+ return this._disabled;
62
+ }
63
+ set disabled(next) {
64
+ const old = this._disabled;
65
+ this._disabled = Boolean(next);
66
+ this.toggleAttribute('disabled', this._disabled);
67
+ this.requestUpdate('disabled', old);
68
+ }
69
+ /** The form submission key, reflected synchronously for native form APIs. */
70
+ get name() {
71
+ return this._name;
72
+ }
73
+ set name(next) {
74
+ const old = this._name;
75
+ this._name = next ?? '';
76
+ if (this._name) {
77
+ this.setAttribute('name', this._name);
78
+ }
79
+ else {
80
+ this.removeAttribute('name');
81
+ }
82
+ this.requestUpdate('name', old);
83
+ }
84
+ get required() {
85
+ return this._required;
86
+ }
87
+ set required(next) {
88
+ const old = this._required;
89
+ this._required = Boolean(next);
90
+ this.toggleAttribute('required', this._required);
91
+ this.updateValidity();
92
+ this.requestUpdate('required', old);
93
+ }
94
+ get value() {
95
+ return this._value;
96
+ }
97
+ set value(next) {
98
+ const old = this._value;
99
+ this._value = next ?? 'on';
100
+ this.syncFormState();
101
+ this.requestUpdate('value', old);
102
+ }
103
+ constructor() {
104
+ super();
105
+ // Tracks whether the default slot carries any real (non-whitespace)
106
+ // content, so the label wrapper — and the `gap` next to the track — can
107
+ // collapse to nothing for an icon-only/aria-label-only switch instead of
108
+ // leaving a stray empty gap. See combobox/date-input's `hasHintSlot`-style
109
+ // state fields; this one checks `assignedNodes` rather than
110
+ // `assignedElements` because a plain slotted text label (the expected
111
+ // common case here, e.g. `<lyra-switch>Enable notifications</lyra-switch>`)
112
+ // is a text node, which `assignedElements` would silently ignore.
113
+ this.hasLabelSlot = false;
114
+ // What `form.reset()` restores to — captured once from the declarative
115
+ // `checked` content attribute at first connect. A pre-connect `.checked`
116
+ // property assignment changes live state but not the reset default, matching
117
+ // native `checked`/`defaultChecked` semantics. `checked` reflects, so unlike
118
+ // `FormAssociated`'s non-reflecting `value` this can't be captured from
119
+ // `attributeChangedCallback` alone — that would also fire (and wrongly
120
+ // redefine the default) every time the property setter itself reflects a
121
+ // later user toggle back into the attribute. Guarding with a one-shot flag
122
+ // instead mirrors `<lyra-combobox>`'s `_defaultCaptured`/`_defaultSelected`.
123
+ this._defaultChecked = false;
124
+ this._defaultCaptured = false;
125
+ this._fieldsetDisabled = false;
126
+ this._name = '';
127
+ this._checked = false;
128
+ this._disabled = false;
129
+ this._required = false;
130
+ this._value = 'on';
131
+ this.onClick = () => {
132
+ this.toggle();
133
+ };
134
+ this.onKeyDown = (e) => {
135
+ if (this.effectiveDisabled)
136
+ return;
137
+ // Space/Enter both activate, matching `<lyra-table>`'s sortable
138
+ // header/row convention (`table.ts`'s `onHeaderKeyDown`/`onRowKeyDown`)
139
+ // for role-based clickable elements — bound to `keydown` rather than
140
+ // `keyup`/native `click`-forwarding like the rest of this library.
141
+ if (e.key === ' ' || e.key === 'Spacebar' || e.key === 'Enter') {
142
+ e.preventDefault();
143
+ this.toggle();
144
+ }
145
+ };
146
+ this.onSlotChange = (e) => {
147
+ const nodes = e.target.assignedNodes({ flatten: true });
148
+ this.hasLabelSlot = nodes.some((n) => (n.textContent ?? '').trim().length > 0);
149
+ };
150
+ this.internals = this.attachInternals();
151
+ this.validityController = new AnchoredValidityController(this, this.internals, () => this[VALIDITY_ANCHOR]());
152
+ this.syncFormState();
153
+ }
154
+ get form() {
155
+ return this.internals.form;
156
+ }
157
+ get labels() {
158
+ return this.internals.labels;
159
+ }
160
+ get validity() {
161
+ return this.internals.validity;
162
+ }
163
+ get validationMessage() {
164
+ return this.internals.validationMessage;
165
+ }
166
+ get willValidate() {
167
+ return this.internals.willValidate;
168
+ }
169
+ /** @internal */
170
+ [VALIDITY_ANCHOR]() {
171
+ return this.renderRoot?.querySelector('[part="base"]') ?? null;
172
+ }
173
+ connectedCallback() {
174
+ super.connectedCallback();
175
+ if (!this._defaultCaptured) {
176
+ this._defaultCaptured = true;
177
+ this._defaultChecked = this.hasAttribute('checked');
178
+ }
179
+ this.updateValidity();
180
+ }
181
+ willUpdate() {
182
+ // Seed `hasLabelSlot` from the light-DOM children synchronously before
183
+ // the very first render (same `!hasUpdated` guard as combobox/date-input's
184
+ // `hasHintSlot` etc.) so declaratively-provided label text doesn't flash
185
+ // hidden for one frame while waiting on the first `slotchange` event.
186
+ if (!this.hasUpdated) {
187
+ this.hasLabelSlot = Array.from(this.childNodes).some((n) => (n.textContent ?? '').trim().length > 0);
188
+ }
189
+ }
190
+ updateValidity() {
191
+ if (this.required && !this.checked) {
192
+ this.validityController.setValidity({ valueMissing: true }, 'Please turn this on.');
193
+ }
194
+ else {
195
+ this.validityController.setValidity({});
196
+ }
197
+ }
198
+ syncFormState() {
199
+ this.internals.setFormValue(this.checked ? this.value : null, this.checked ? 'checked' : 'unchecked');
200
+ this.updateValidity();
201
+ }
202
+ formResetCallback() {
203
+ this.checked = this._defaultChecked;
204
+ }
205
+ formStateRestoreCallback(state, _mode) {
206
+ this.checked = state === 'checked';
207
+ }
208
+ formDisabledCallback(disabled) {
209
+ this._fieldsetDisabled = disabled;
210
+ this.requestUpdate();
211
+ }
212
+ checkValidity() {
213
+ return this.internals.checkValidity();
214
+ }
215
+ reportValidity() {
216
+ return this.internals.reportValidity();
217
+ }
218
+ toggle() {
219
+ if (this.effectiveDisabled)
220
+ return;
221
+ this.checked = !this.checked;
222
+ this.emit('lyra-change', { checked: this.checked });
223
+ }
224
+ render() {
225
+ return html `
226
+ <span
227
+ part="base"
228
+ role="switch"
229
+ tabindex=${this.effectiveDisabled ? '-1' : '0'}
230
+ aria-checked=${this.checked ? 'true' : 'false'}
231
+ aria-required=${this.required ? 'true' : nothing}
232
+ aria-disabled=${this.effectiveDisabled ? 'true' : nothing}
233
+ aria-label=${this.getAttribute('aria-label') || nothing}
234
+ @click=${this.onClick}
235
+ @keydown=${this.onKeyDown}
236
+ >
237
+ <span part="track">
238
+ <span part="thumb"></span>
239
+ </span>
240
+ <span part="label" ?hidden=${!this.hasLabelSlot}>
241
+ <slot @slotchange=${this.onSlotChange}></slot>
242
+ </span>
243
+ </span>
244
+ `;
245
+ }
246
+ }
247
+ __decorate([
248
+ state()
249
+ ], LyraSwitch.prototype, "hasLabelSlot", void 0);
250
+ defineElement('switch', LyraSwitch);
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,75 @@
1
+ import { css } from 'lit';
2
+ export const styles = css `
3
+ :host {
4
+ display: inline-block;
5
+ /* Component-local geometry knobs (same "define your own on :host"
6
+ pattern as lyra-toast's --gap/--width) — a fully-rounded pill/thumb
7
+ needs a radius well past --lyra-radius's small 0.375rem default, so
8
+ it's expressed here rather than bent onto that shared token. */
9
+ --track-inline-size: 2.25rem;
10
+ --track-block-size: 1.25rem;
11
+ --thumb-offset: 2px;
12
+ }
13
+ [part='base'] {
14
+ display: inline-flex;
15
+ align-items: center;
16
+ gap: var(--lyra-space-s);
17
+ cursor: pointer;
18
+ -webkit-tap-highlight-color: transparent;
19
+ }
20
+ [part='base']:focus-visible {
21
+ outline: var(--lyra-focus-ring-width) solid var(--lyra-focus-ring-color);
22
+ outline-offset: var(--lyra-focus-ring-offset);
23
+ }
24
+ :host(:disabled) [part='base'] {
25
+ cursor: not-allowed;
26
+ opacity: var(--lyra-opacity-disabled);
27
+ }
28
+
29
+ [part='track'] {
30
+ position: relative;
31
+ flex: 0 0 auto;
32
+ inline-size: var(--track-inline-size);
33
+ block-size: var(--track-block-size);
34
+ border-radius: 999px;
35
+ background: var(--lyra-color-border);
36
+ transition: background-color var(--lyra-transition-fast);
37
+ }
38
+ :host([checked]) [part='track'] {
39
+ background: var(--lyra-color-brand);
40
+ }
41
+
42
+ [part='thumb'] {
43
+ position: absolute;
44
+ inset-block-start: var(--thumb-offset);
45
+ inset-inline-start: var(--thumb-offset);
46
+ inline-size: calc(var(--track-block-size) - (var(--thumb-offset) * 2));
47
+ block-size: calc(var(--track-block-size) - (var(--thumb-offset) * 2));
48
+ border-radius: 50%;
49
+ background: var(--lyra-color-surface);
50
+ /* Animates the logical 'inset-inline-start' rather than a physical
51
+ 'transform: translateX()' so the slide direction mirrors correctly
52
+ under dir="rtl" — consistent with this library's CSS-logical-
53
+ properties approach to RTL (see internal/lyra-element.ts). */
54
+ transition: inset-inline-start var(--lyra-transition-fast);
55
+ }
56
+ :host([checked]) [part='thumb'] {
57
+ inset-inline-start: calc(var(--track-inline-size) - var(--track-block-size) + var(--thumb-offset));
58
+ }
59
+
60
+ /* No explicit "display" here (unlike e.g. lyra-combobox's
61
+ [part='form-control-label']), so the UA stylesheet's default
62
+ "[hidden] { display: none }" rule needs no author-side override to
63
+ take effect when hasLabelSlot is false. */
64
+ [part='label'] {
65
+ font-size: 0.875rem;
66
+ color: var(--lyra-color-text);
67
+ }
68
+
69
+ @media (prefers-reduced-motion: reduce) {
70
+ [part='track'],
71
+ [part='thumb'] {
72
+ transition: none !important;
73
+ }
74
+ }
75
+ `;
@@ -37,17 +37,37 @@ export interface TableColumn<T> {
37
37
  * Enter/Space still only sort/activate (see `activateColumn()` /
38
38
  * `activateRow()`).
39
39
  *
40
+ * Set `aria-label` on the host to give the `role="grid"` element an
41
+ * accessible name; it's forwarded into the shadow DOM's `<table>`.
42
+ *
40
43
  * `columns[].priority` ('medium' | 'low') hides that column under
41
44
  * `[part='base']`'s `@container` breakpoints; `[part='reveal-columns-button']`
42
- * (rendered whenever any column has a priority) forces them all back into
43
- * view. `columns[].sticky` pins a column's header/cells to the inline-start
44
- * edge while the table scrolls horizontally.
45
+ * forces them all back into view. Rather than a *static* check of whether any
46
+ * column merely declares a `priority`, the button (and the public
47
+ * `columnsHidden` property, see below) reflects whether a `priority` column
48
+ * is *actually* hidden right now — measured via `ResizeObserver` on
49
+ * `[part='base']` plus a post-render DOM check — or `showAllColumns`
50
+ * force-visible mode is currently active (so there's still a way to toggle
51
+ * it back off). `columns[].sticky` pins a column's header/cells to the
52
+ * inline-start edge while the table scrolls horizontally.
45
53
  *
46
54
  * @customElement lyra-table
47
55
  * @event lyra-sort - A sortable header was activated. `detail: { key }`.
48
56
  * @event lyra-row-click - A row was activated. `detail: { row }`.
49
57
  * @event lyra-load-more - The "load more" control was activated.
50
- * @csspart base, table, head, header-cell, row, cell, more-button, sort-icon, reveal-columns-button
58
+ * @event lyra-columns-hidden-change - `columnsHidden` actually changed value
59
+ * (a `priority` column just became hidden/un-hidden by the `@container`
60
+ * rules, or `showAllColumns` force-visible mode was toggled while a
61
+ * `priority` column was hidden). `detail: { hidden: boolean }`.
62
+ * @csspart base - The root wrapper around the `<table>` and its footer controls.
63
+ * @csspart table - The `<table role="grid">` element.
64
+ * @csspart head - The `<thead>` element.
65
+ * @csspart header-cell - Each `<th>` header cell.
66
+ * @csspart row - Each body `<tr>`.
67
+ * @csspart cell - Each body `<td>`.
68
+ * @csspart more-button - The "load more" control, shown when `hasMore` is true.
69
+ * @csspart sort-icon - The chevron shown in the active sortable column's header cell.
70
+ * @csspart reveal-columns-button - The button that toggles `priority`-hidden columns back into view.
51
71
  */
52
72
  export declare class LyraTable<T = unknown> extends LyraElement {
53
73
  static styles: import("lit").CSSResultGroup[];
@@ -72,6 +92,16 @@ export declare class LyraTable<T = unknown> extends LyraElement {
72
92
  noColumnsDescription: string;
73
93
  revealColumnsLabel: string;
74
94
  hideColumnsLabel: string;
95
+ /** Whether a `priority` column is *actually* hidden right now by
96
+ * table.styles.ts's `@container` rules, or `showAllColumns` force-visible
97
+ * mode is currently active — the same computed value that gates whether
98
+ * `[part='reveal-columns-button']` renders at all (see `render()`), kept
99
+ * in sync by `recomputeColumnsHidden()`. Computed/read-only by
100
+ * convention: consumers may read it (and listen for
101
+ * `lyra-columns-hidden-change`), but setting it directly has no lasting
102
+ * effect, since it's recomputed on the very next render or
103
+ * `[part='base']` resize. */
104
+ columnsHidden: boolean;
75
105
  /** Forces `priority`-hidden columns back into view, overriding the
76
106
  * `@container` hide rules in table.styles.ts. Toggled by
77
107
  * `[part='reveal-columns-button']`. */
@@ -86,18 +116,72 @@ export declare class LyraTable<T = unknown> extends LyraElement {
86
116
  private activeRowKey;
87
117
  private rowsByKey;
88
118
  private columnsByKey;
119
+ /** Watches `[part='base']`'s own inline-size — the `@container` query
120
+ * container table.styles.ts's priority-hide rules react to — so a
121
+ * `priority` column flipping hidden/visible from an *external* width
122
+ * change (a window resize, an ancestor flex-layout reflow, ...) is caught
123
+ * even though no Lit-tracked property changed. Mirrors
124
+ * lite-chart.ts's connectedCallback()/disconnectedCallback() ResizeObserver
125
+ * lifecycle. */
126
+ private resizeObserver?;
127
+ /** The `[part='base']` element `resizeObserver` is currently observing —
128
+ * `render()`'s columns/rows-empty branches swap in `<lyra-empty>` instead,
129
+ * a different template shape that gives `[part='base']` a fresh DOM
130
+ * identity on the next non-empty render, so `updated()` re-observes
131
+ * whenever this no longer matches the live element. */
132
+ private observedBase?;
133
+ private readonly observedHeaders;
134
+ connectedCallback(): void;
135
+ disconnectedCallback(): void;
136
+ private observeBase;
137
+ private observeHeaders;
138
+ /** Recomputes `columnsHidden` from the live DOM (mirrors `visibleHeaders()`'s
139
+ * own `offsetParent !== null` technique for detecting `@container`-hidden
140
+ * cells) and dispatches `lyra-columns-hidden-change` only on a real
141
+ * transition. Called from `updated()` (covers a change driven by
142
+ * `columns`/`rows`/`showAllColumns` rather than a container resize) and
143
+ * from the `ResizeObserver` callback (covers a container resize with no
144
+ * Lit-tracked property change at all). */
145
+ private recomputeColumnsHidden;
146
+ private rehomeFocusedColumn;
89
147
  private keyOf;
90
148
  /** The header cell that currently owns `tabindex="0"`. */
91
149
  private focusedColKey;
92
150
  /** The body row that currently owns `tabindex="0"`. */
93
151
  private focusedRowKey;
94
152
  protected willUpdate(changed: PropertyValues): void;
153
+ /** Each sticky column's cumulative inline-start offset — the sum of the *rendered
154
+ * width* of every earlier sticky column — so multiple sticky columns
155
+ * stack left-to-right instead of all pinning to inset-inline-start: 0 and
156
+ * overlapping. Table columns are intrinsically sized (not fixed-width), so
157
+ * this can't be computed in CSS alone; it requires measuring the actual
158
+ * laid-out `offsetWidth` of each earlier sticky column's header cell. */
159
+ private stickyOffsets;
160
+ private applyStickyOffsets;
161
+ /** Applies stickyOffsets()'s measured per-column offsets as an inline
162
+ * `--lyra-table-sticky-offset` custom property on every header cell and
163
+ * body cell in that column (addressed by the shared `data-col-key`
164
+ * attribute). This is a post-render DOM measurement — column widths
165
+ * aren't known until after the browser has laid out this update's
166
+ * render() output — so it runs from `updated()`, not `willUpdate()`,
167
+ * intentionally kept as a separate pass from the rowsByKey/columnsByKey
168
+ * rebuild above: those two must stay in `willUpdate()` so `render()`'s
169
+ * own `focusedRowKey()` call sees the current update's identity maps
170
+ * (e.g. a freshly-assigned `selectedKey` resolving to the correct
171
+ * roving-tabindex row on the very first paint), whereas the sticky-offset
172
+ * measurement can only run after that same paint has happened. Only runs
173
+ * when `hasSticky` is true (opt-in) and simply recomputes on every
174
+ * update; a future optimization pass could cache column widths instead of
175
+ * re-querying every time — out of scope for this correctness fix. */
176
+ protected updated(changed: PropertyValues): void;
95
177
  private activateColumn;
96
178
  private activateRow;
97
179
  /** Header cells currently in the tab sequence — excludes columns hidden by
98
180
  * a `priority`-driven `@container` rule (table.styles.ts), so Left/Right/
99
181
  * Home/End never strand the roving tab stop on a `display: none` cell
100
- * that `.focus()` would silently no-op on. */
182
+ * that `.focus()` would silently no-op on. Scoped to `th` — body `<td>`s
183
+ * now carry the same `data-col-key` attribute (for the sticky-offset
184
+ * measurement pass) but must never be treated as header cells here. */
101
185
  private visibleHeaders;
102
186
  private focusHeader;
103
187
  private focusRow;