@aceshooting/lyra-ui 3.5.0 → 3.7.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/README.md +111 -2
  2. package/custom-elements.json +50239 -41857
  3. package/dist/components/animated-image/animated-image.class.d.ts +131 -0
  4. package/dist/components/animated-image/animated-image.class.d.ts.map +1 -0
  5. package/dist/components/animated-image/animated-image.class.js +296 -0
  6. package/dist/components/animated-image/animated-image.class.js.map +1 -0
  7. package/dist/components/animated-image/animated-image.d.ts +2 -0
  8. package/dist/components/animated-image/animated-image.d.ts.map +1 -0
  9. package/dist/components/animated-image/animated-image.js +5 -0
  10. package/dist/components/animated-image/animated-image.js.map +1 -0
  11. package/dist/components/animated-image/animated-image.styles.d.ts +2 -0
  12. package/dist/components/animated-image/animated-image.styles.d.ts.map +1 -0
  13. package/dist/components/animated-image/animated-image.styles.js +117 -0
  14. package/dist/components/animated-image/animated-image.styles.js.map +1 -0
  15. package/dist/components/animation/animation.class.d.ts +119 -0
  16. package/dist/components/animation/animation.class.d.ts.map +1 -0
  17. package/dist/components/animation/animation.class.js +420 -0
  18. package/dist/components/animation/animation.class.js.map +1 -0
  19. package/dist/components/animation/animation.d.ts +2 -0
  20. package/dist/components/animation/animation.d.ts.map +1 -0
  21. package/dist/components/animation/animation.js +5 -0
  22. package/dist/components/animation/animation.js.map +1 -0
  23. package/dist/components/animation/animation.styles.d.ts +2 -0
  24. package/dist/components/animation/animation.styles.d.ts.map +1 -0
  25. package/dist/components/animation/animation.styles.js +18 -0
  26. package/dist/components/animation/animation.styles.js.map +1 -0
  27. package/dist/components/avatar-group/avatar-group.class.d.ts +110 -0
  28. package/dist/components/avatar-group/avatar-group.class.d.ts.map +1 -0
  29. package/dist/components/avatar-group/avatar-group.class.js +182 -0
  30. package/dist/components/avatar-group/avatar-group.class.js.map +1 -0
  31. package/dist/components/avatar-group/avatar-group.d.ts +2 -0
  32. package/dist/components/avatar-group/avatar-group.d.ts.map +1 -0
  33. package/dist/components/avatar-group/avatar-group.js +5 -0
  34. package/dist/components/avatar-group/avatar-group.js.map +1 -0
  35. package/dist/components/avatar-group/avatar-group.styles.d.ts +2 -0
  36. package/dist/components/avatar-group/avatar-group.styles.d.ts.map +1 -0
  37. package/dist/components/avatar-group/avatar-group.styles.js +112 -0
  38. package/dist/components/avatar-group/avatar-group.styles.js.map +1 -0
  39. package/dist/components/button/button.class.d.ts +5 -2
  40. package/dist/components/button/button.class.d.ts.map +1 -1
  41. package/dist/components/button/button.class.js +4 -1
  42. package/dist/components/button/button.class.js.map +1 -1
  43. package/dist/components/button/button.styles.d.ts.map +1 -1
  44. package/dist/components/button/button.styles.js +16 -0
  45. package/dist/components/button/button.styles.js.map +1 -1
  46. package/dist/components/calendar/calendar.class.d.ts.map +1 -1
  47. package/dist/components/calendar/calendar.class.js +1 -12
  48. package/dist/components/calendar/calendar.class.js.map +1 -1
  49. package/dist/components/calendar-viewer/calendar-viewer.class.d.ts +1 -1
  50. package/dist/components/calendar-viewer/calendar-viewer.class.d.ts.map +1 -1
  51. package/dist/components/calendar-viewer/calendar-viewer.class.js +2 -2
  52. package/dist/components/calendar-viewer/calendar-viewer.class.js.map +1 -1
  53. package/dist/components/chart/box-plot.class.d.ts.map +1 -1
  54. package/dist/components/chart/box-plot.class.js +1 -3
  55. package/dist/components/chart/box-plot.class.js.map +1 -1
  56. package/dist/components/chart/chart.class.d.ts.map +1 -1
  57. package/dist/components/chart/chart.class.js +1 -3
  58. package/dist/components/chart/chart.class.js.map +1 -1
  59. package/dist/components/code-editor/code-editor.styles.d.ts.map +1 -1
  60. package/dist/components/code-editor/code-editor.styles.js +5 -2
  61. package/dist/components/code-editor/code-editor.styles.js.map +1 -1
  62. package/dist/components/contact-viewer/contact-viewer.class.d.ts +4 -1
  63. package/dist/components/contact-viewer/contact-viewer.class.d.ts.map +1 -1
  64. package/dist/components/contact-viewer/contact-viewer.class.js +5 -2
  65. package/dist/components/contact-viewer/contact-viewer.class.js.map +1 -1
  66. package/dist/components/email-viewer/email-viewer.class.d.ts +4 -1
  67. package/dist/components/email-viewer/email-viewer.class.d.ts.map +1 -1
  68. package/dist/components/email-viewer/email-viewer.class.js +5 -2
  69. package/dist/components/email-viewer/email-viewer.class.js.map +1 -1
  70. package/dist/components/file-icon/file-icon.class.d.ts +5 -1
  71. package/dist/components/file-icon/file-icon.class.d.ts.map +1 -1
  72. package/dist/components/file-icon/file-icon.class.js +20 -2
  73. package/dist/components/file-icon/file-icon.class.js.map +1 -1
  74. package/dist/components/file-icon/file-icon.styles.d.ts.map +1 -1
  75. package/dist/components/file-icon/file-icon.styles.js +4 -0
  76. package/dist/components/file-icon/file-icon.styles.js.map +1 -1
  77. package/dist/components/graph/graph.class.d.ts.map +1 -1
  78. package/dist/components/graph/graph.class.js +1 -3
  79. package/dist/components/graph/graph.class.js.map +1 -1
  80. package/dist/components/heatmap/heatmap.class.d.ts.map +1 -1
  81. package/dist/components/heatmap/heatmap.class.js +1 -8
  82. package/dist/components/heatmap/heatmap.class.js.map +1 -1
  83. package/dist/components/icon/icon.styles.d.ts.map +1 -1
  84. package/dist/components/icon/icon.styles.js +1 -1
  85. package/dist/components/icon/icon.styles.js.map +1 -1
  86. package/dist/components/include/include.class.d.ts +104 -0
  87. package/dist/components/include/include.class.d.ts.map +1 -0
  88. package/dist/components/include/include.class.js +149 -0
  89. package/dist/components/include/include.class.js.map +1 -0
  90. package/dist/components/include/include.d.ts +2 -0
  91. package/dist/components/include/include.d.ts.map +1 -0
  92. package/dist/components/include/include.js +5 -0
  93. package/dist/components/include/include.js.map +1 -0
  94. package/dist/components/include/include.styles.d.ts +2 -0
  95. package/dist/components/include/include.styles.d.ts.map +1 -0
  96. package/dist/components/include/include.styles.js +14 -0
  97. package/dist/components/include/include.styles.js.map +1 -0
  98. package/dist/components/kbd/kbd.class.d.ts.map +1 -1
  99. package/dist/components/kbd/kbd.class.js +1 -11
  100. package/dist/components/kbd/kbd.class.js.map +1 -1
  101. package/dist/components/known-date/known-date.class.d.ts +208 -0
  102. package/dist/components/known-date/known-date.class.d.ts.map +1 -0
  103. package/dist/components/known-date/known-date.class.js +588 -0
  104. package/dist/components/known-date/known-date.class.js.map +1 -0
  105. package/dist/components/known-date/known-date.d.ts +2 -0
  106. package/dist/components/known-date/known-date.d.ts.map +1 -0
  107. package/dist/components/known-date/known-date.js +5 -0
  108. package/dist/components/known-date/known-date.js.map +1 -0
  109. package/dist/components/known-date/known-date.styles.d.ts +2 -0
  110. package/dist/components/known-date/known-date.styles.d.ts.map +1 -0
  111. package/dist/components/known-date/known-date.styles.js +134 -0
  112. package/dist/components/known-date/known-date.styles.js.map +1 -0
  113. package/dist/components/lightbox/lightbox.class.d.ts +187 -0
  114. package/dist/components/lightbox/lightbox.class.d.ts.map +1 -0
  115. package/dist/components/lightbox/lightbox.class.js +415 -0
  116. package/dist/components/lightbox/lightbox.class.js.map +1 -0
  117. package/dist/components/lightbox/lightbox.d.ts +3 -0
  118. package/dist/components/lightbox/lightbox.d.ts.map +1 -0
  119. package/dist/components/lightbox/lightbox.js +6 -0
  120. package/dist/components/lightbox/lightbox.js.map +1 -0
  121. package/dist/components/lightbox/lightbox.styles.d.ts +2 -0
  122. package/dist/components/lightbox/lightbox.styles.d.ts.map +1 -0
  123. package/dist/components/lightbox/lightbox.styles.js +179 -0
  124. package/dist/components/lightbox/lightbox.styles.js.map +1 -0
  125. package/dist/components/map/map.class.d.ts.map +1 -1
  126. package/dist/components/map/map.class.js +11 -23
  127. package/dist/components/map/map.class.js.map +1 -1
  128. package/dist/components/menu/menu.class.d.ts +1 -1
  129. package/dist/components/model-settings-panel/model-settings-panel.class.d.ts.map +1 -1
  130. package/dist/components/model-settings-panel/model-settings-panel.class.js +1 -10
  131. package/dist/components/model-settings-panel/model-settings-panel.class.js.map +1 -1
  132. package/dist/components/qr-code/qr-code-loader.d.ts +15 -0
  133. package/dist/components/qr-code/qr-code-loader.d.ts.map +1 -0
  134. package/dist/components/qr-code/qr-code-loader.js +28 -0
  135. package/dist/components/qr-code/qr-code-loader.js.map +1 -0
  136. package/dist/components/qr-code/qr-code.class.d.ts +121 -0
  137. package/dist/components/qr-code/qr-code.class.d.ts.map +1 -0
  138. package/dist/components/qr-code/qr-code.class.js +392 -0
  139. package/dist/components/qr-code/qr-code.class.js.map +1 -0
  140. package/dist/components/qr-code/qr-code.d.ts +2 -0
  141. package/dist/components/qr-code/qr-code.d.ts.map +1 -0
  142. package/dist/components/qr-code/qr-code.js +5 -0
  143. package/dist/components/qr-code/qr-code.js.map +1 -0
  144. package/dist/components/qr-code/qr-code.styles.d.ts +2 -0
  145. package/dist/components/qr-code/qr-code.styles.d.ts.map +1 -0
  146. package/dist/components/qr-code/qr-code.styles.js +48 -0
  147. package/dist/components/qr-code/qr-code.styles.js.map +1 -0
  148. package/dist/components/random-content/random-content.class.d.ts +99 -0
  149. package/dist/components/random-content/random-content.class.d.ts.map +1 -0
  150. package/dist/components/random-content/random-content.class.js +268 -0
  151. package/dist/components/random-content/random-content.class.js.map +1 -0
  152. package/dist/components/random-content/random-content.d.ts +2 -0
  153. package/dist/components/random-content/random-content.d.ts.map +1 -0
  154. package/dist/components/random-content/random-content.js +5 -0
  155. package/dist/components/random-content/random-content.js.map +1 -0
  156. package/dist/components/random-content/random-content.styles.d.ts +2 -0
  157. package/dist/components/random-content/random-content.styles.d.ts.map +1 -0
  158. package/dist/components/random-content/random-content.styles.js +94 -0
  159. package/dist/components/random-content/random-content.styles.js.map +1 -0
  160. package/dist/components/result-card/result-card.class.d.ts +9 -8
  161. package/dist/components/result-card/result-card.class.d.ts.map +1 -1
  162. package/dist/components/result-card/result-card.class.js +7 -26
  163. package/dist/components/result-card/result-card.class.js.map +1 -1
  164. package/dist/components/result-card/result-field.class.d.ts.map +1 -1
  165. package/dist/components/result-card/result-field.class.js +1 -11
  166. package/dist/components/result-card/result-field.class.js.map +1 -1
  167. package/dist/components/slider/slider.class.d.ts.map +1 -1
  168. package/dist/components/slider/slider.class.js +1 -19
  169. package/dist/components/slider/slider.class.js.map +1 -1
  170. package/dist/components/source-card/source-card.class.d.ts +8 -7
  171. package/dist/components/source-card/source-card.class.d.ts.map +1 -1
  172. package/dist/components/source-card/source-card.class.js +6 -25
  173. package/dist/components/source-card/source-card.class.js.map +1 -1
  174. package/dist/components/stat/stat.class.js +1 -1
  175. package/dist/components/stat/stat.class.js.map +1 -1
  176. package/dist/components/swatch-picker/swatch-picker.class.d.ts +55 -0
  177. package/dist/components/swatch-picker/swatch-picker.class.d.ts.map +1 -0
  178. package/dist/components/swatch-picker/swatch-picker.class.js +120 -0
  179. package/dist/components/swatch-picker/swatch-picker.class.js.map +1 -0
  180. package/dist/components/swatch-picker/swatch-picker.d.ts +2 -0
  181. package/dist/components/swatch-picker/swatch-picker.d.ts.map +1 -0
  182. package/dist/components/swatch-picker/swatch-picker.js +5 -0
  183. package/dist/components/swatch-picker/swatch-picker.js.map +1 -0
  184. package/dist/components/swatch-picker/swatch-picker.styles.d.ts +2 -0
  185. package/dist/components/swatch-picker/swatch-picker.styles.d.ts.map +1 -0
  186. package/dist/components/swatch-picker/swatch-picker.styles.js +55 -0
  187. package/dist/components/swatch-picker/swatch-picker.styles.js.map +1 -0
  188. package/dist/components/time-range/time-range.class.d.ts.map +1 -1
  189. package/dist/components/time-range/time-range.class.js +1 -21
  190. package/dist/components/time-range/time-range.class.js.map +1 -1
  191. package/dist/components/timeline/timeline-item.class.d.ts +120 -0
  192. package/dist/components/timeline/timeline-item.class.d.ts.map +1 -0
  193. package/dist/components/timeline/timeline-item.class.js +203 -0
  194. package/dist/components/timeline/timeline-item.class.js.map +1 -0
  195. package/dist/components/timeline/timeline-item.d.ts +3 -0
  196. package/dist/components/timeline/timeline-item.d.ts.map +1 -0
  197. package/dist/components/timeline/timeline-item.js +10 -0
  198. package/dist/components/timeline/timeline-item.js.map +1 -0
  199. package/dist/components/timeline/timeline-item.styles.d.ts +2 -0
  200. package/dist/components/timeline/timeline-item.styles.d.ts.map +1 -0
  201. package/dist/components/timeline/timeline-item.styles.js +149 -0
  202. package/dist/components/timeline/timeline-item.styles.js.map +1 -0
  203. package/dist/components/timeline/timeline.class.d.ts +59 -0
  204. package/dist/components/timeline/timeline.class.d.ts.map +1 -0
  205. package/dist/components/timeline/timeline.class.js +100 -0
  206. package/dist/components/timeline/timeline.class.js.map +1 -0
  207. package/dist/components/timeline/timeline.d.ts +2 -0
  208. package/dist/components/timeline/timeline.d.ts.map +1 -0
  209. package/dist/components/timeline/timeline.js +5 -0
  210. package/dist/components/timeline/timeline.js.map +1 -0
  211. package/dist/components/timeline/timeline.styles.d.ts +2 -0
  212. package/dist/components/timeline/timeline.styles.d.ts.map +1 -0
  213. package/dist/components/timeline/timeline.styles.js +52 -0
  214. package/dist/components/timeline/timeline.styles.js.map +1 -0
  215. package/dist/components/toast/toast-item.class.d.ts.map +1 -1
  216. package/dist/components/toast/toast-item.class.js +1 -3
  217. package/dist/components/toast/toast-item.class.js.map +1 -1
  218. package/dist/components/tool-param-form/tool-param-form.class.d.ts.map +1 -1
  219. package/dist/components/tool-param-form/tool-param-form.class.js +0 -1
  220. package/dist/components/tool-param-form/tool-param-form.class.js.map +1 -1
  221. package/dist/components/tour/tour.class.d.ts +250 -0
  222. package/dist/components/tour/tour.class.d.ts.map +1 -0
  223. package/dist/components/tour/tour.class.js +530 -0
  224. package/dist/components/tour/tour.class.js.map +1 -0
  225. package/dist/components/tour/tour.d.ts +2 -0
  226. package/dist/components/tour/tour.d.ts.map +1 -0
  227. package/dist/components/tour/tour.js +5 -0
  228. package/dist/components/tour/tour.js.map +1 -0
  229. package/dist/components/tour/tour.styles.d.ts +2 -0
  230. package/dist/components/tour/tour.styles.d.ts.map +1 -0
  231. package/dist/components/tour/tour.styles.js +165 -0
  232. package/dist/components/tour/tour.styles.js.map +1 -0
  233. package/dist/components/virtual-list/virtual-list.class.d.ts.map +1 -1
  234. package/dist/components/virtual-list/virtual-list.class.js +1 -3
  235. package/dist/components/virtual-list/virtual-list.class.js.map +1 -1
  236. package/dist/components/word-cloud/word-cloud.class.d.ts.map +1 -1
  237. package/dist/components/word-cloud/word-cloud.class.js +1 -8
  238. package/dist/components/word-cloud/word-cloud.class.js.map +1 -1
  239. package/dist/components/zoomable-frame/zoomable-frame.class.d.ts +15 -0
  240. package/dist/components/zoomable-frame/zoomable-frame.class.d.ts.map +1 -1
  241. package/dist/components/zoomable-frame/zoomable-frame.class.js +18 -0
  242. package/dist/components/zoomable-frame/zoomable-frame.class.js.map +1 -1
  243. package/dist/internal/a11y.d.ts +4 -0
  244. package/dist/internal/a11y.d.ts.map +1 -1
  245. package/dist/internal/a11y.js +17 -0
  246. package/dist/internal/a11y.js.map +1 -1
  247. package/dist/internal/canvas.d.ts +8 -0
  248. package/dist/internal/canvas.d.ts.map +1 -0
  249. package/dist/internal/canvas.js +14 -0
  250. package/dist/internal/canvas.js.map +1 -0
  251. package/dist/internal/localization.d.ts +1 -1
  252. package/dist/internal/localization.d.ts.map +1 -1
  253. package/dist/internal/localization.js +21 -2
  254. package/dist/internal/localization.js.map +1 -1
  255. package/dist/internal/motion.d.ts +5 -0
  256. package/dist/internal/motion.d.ts.map +1 -0
  257. package/dist/internal/motion.js +7 -0
  258. package/dist/internal/motion.js.map +1 -0
  259. package/dist/internal/numbers.d.ts +11 -0
  260. package/dist/internal/numbers.d.ts.map +1 -1
  261. package/dist/internal/numbers.js +21 -0
  262. package/dist/internal/numbers.js.map +1 -1
  263. package/dist/internal/positioner.d.ts +14 -0
  264. package/dist/internal/positioner.d.ts.map +1 -1
  265. package/dist/internal/positioner.js +27 -0
  266. package/dist/internal/positioner.js.map +1 -1
  267. package/dist/internal/root-registration-allowlist.d.ts +1 -1
  268. package/dist/internal/root-registration-allowlist.d.ts.map +1 -1
  269. package/dist/internal/root-registration-allowlist.js +12 -0
  270. package/dist/internal/root-registration-allowlist.js.map +1 -1
  271. package/dist/internal/rtl.d.ts +0 -11
  272. package/dist/internal/rtl.d.ts.map +1 -1
  273. package/dist/internal/rtl.js +0 -13
  274. package/dist/internal/rtl.js.map +1 -1
  275. package/dist/internal/safe-css.d.ts +15 -0
  276. package/dist/internal/safe-css.d.ts.map +1 -0
  277. package/dist/internal/safe-css.js +25 -0
  278. package/dist/internal/safe-css.js.map +1 -0
  279. package/dist/internal/strip-host-title.d.ts +24 -0
  280. package/dist/internal/strip-host-title.d.ts.map +1 -0
  281. package/dist/internal/strip-host-title.js +46 -0
  282. package/dist/internal/strip-host-title.js.map +1 -0
  283. package/dist/internal/tokens.styles.d.ts.map +1 -1
  284. package/dist/internal/tokens.styles.js +4 -0
  285. package/dist/internal/tokens.styles.js.map +1 -1
  286. package/dist/lyra.d.ts +37 -0
  287. package/dist/lyra.d.ts.map +1 -1
  288. package/dist/lyra.js +24 -0
  289. package/dist/lyra.js.map +1 -1
  290. package/llms-full.txt +161 -5
  291. package/llms.txt +5 -2
  292. package/package.json +43 -6
  293. package/vscode-css-data.json +733 -0
  294. package/vscode-html-data.json +10616 -0
  295. package/web-types.json +12206 -0
@@ -0,0 +1,268 @@
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 { property, query } from 'lit/decorators.js';
9
+ import { LyraElement } from '../../internal/lyra-element.js';
10
+ import { finiteDuration } from '../../internal/numbers.js';
11
+ import { styles } from './random-content.styles.js';
12
+ /**
13
+ * `<lyra-random-content>` — displays a randomly (or sequentially) chosen
14
+ * subset of its slotted children and hides the rest, for A/B copy testing,
15
+ * testimonial/quote rotation, or varying marketing copy on each render or
16
+ * interval without any custom JS beyond slotting the candidates.
17
+ *
18
+ * Not a form-associated control and has no textual chrome of its own — a
19
+ * pure content-rotation primitive over caller-supplied children, so the
20
+ * label/hint/error frame doesn't apply.
21
+ *
22
+ * The host renders `display: block` by default, like the rest of this
23
+ * family. A consumer needing an inline text-fragment swap inside a sentence
24
+ * can override `lyra-random-content { display: inline; }` from outside —
25
+ * that isn't baked in here, since `display: contents` on the host risks
26
+ * accessibility-tree inconsistencies across engines.
27
+ *
28
+ * There is no built-in trigger UI (no next/previous/shuffle button):
29
+ * selection is driven only by `autoplay`/`autoplayInterval` and the public
30
+ * `randomize()` method. Consequently there is no keyboard interaction and no
31
+ * RTL-aware arrow-key handling to implement here — that guarantee only
32
+ * applies to components with roving/arrow-key navigation, which this one
33
+ * structurally lacks.
34
+ *
35
+ * `fade-left`/`fade-right` are physical-direction transforms (matching the
36
+ * upstream naming this component mirrors), not "previous/next" navigational
37
+ * semantics like a carousel chevron, so they are deliberately **not**
38
+ * mirrored under `:host(:dir(rtl))`.
39
+ *
40
+ * @customElement lyra-random-content
41
+ * @slot - The pool of candidate children. Only direct element children are eligible.
42
+ * @event lyra-content-change - The displayed selection changed (first render, `randomize()`,
43
+ * a slot-change-triggered reselection, or an autoplay tick). `detail: { items }` is the exact
44
+ * array of elements now shown, in display order. Not emitted when the eligible pool is empty.
45
+ * @csspart base - The wrapping element around the default slot.
46
+ * @cssprop [--lyra-random-content-animation-duration=300ms] - Duration of the entrance animation.
47
+ * @cssprop [--lyra-random-content-animation-easing=ease] - Easing function for the entrance animation.
48
+ * @cssprop [--lyra-random-content-animation-translate=var(--lyra-size-0-5em)] - Translation distance for directional animations.
49
+ */
50
+ export class LyraRandomContent extends LyraElement {
51
+ constructor() {
52
+ super(...arguments);
53
+ /** Entrance effect applied to a child the instant it becomes shown. */
54
+ this.animation = 'none';
55
+ /** Whether the displayed selection automatically re-rolls on an interval. */
56
+ this.autoplay = false;
57
+ /** Milliseconds between autoplay ticks. Clamped to a 1000ms floor. */
58
+ this.autoplayInterval = 3000;
59
+ /** How many children are shown simultaneously. Clamped to at least 1 and at most the pool size. */
60
+ this.items = 1;
61
+ /** Selection algorithm — see `randomize()`. */
62
+ this.mode = 'unique';
63
+ this.reduceMotion = false;
64
+ this.sequenceCursor = 0;
65
+ this.lastPool = [];
66
+ // Distinguishes a genuine later `updated()` pass from the very first one.
67
+ // Lit reports every declared reactive property as "changed" on the first
68
+ // update (including `items`, which otherwise would make `updated()` run a
69
+ // redundant second selection right after `firstUpdated()` already ran one
70
+ // -- doubling the emitted `lyra-content-change` event and, for
71
+ // mode="sequence", double-advancing the cursor).
72
+ this.hasUpdatedOnce = false;
73
+ this.onMotionPreferenceChange = (event) => {
74
+ this.reduceMotion = event.matches;
75
+ this.restartAutoplay();
76
+ };
77
+ this.onSlotChange = () => {
78
+ const pool = this.eligible();
79
+ // A slot's first assignment of already-present light-DOM children can
80
+ // itself dispatch an async `slotchange` shortly after `firstUpdated()`
81
+ // already handled that same content synchronously above -- skip when
82
+ // nothing about the pool actually changed to avoid double-emitting
83
+ // `lyra-content-change` (and, for mode="sequence", double-advancing the
84
+ // cursor) for a single real content change.
85
+ if (this.poolsEqual(pool, this.lastPool))
86
+ return;
87
+ this.reselect({ resetPrevious: true });
88
+ this.restartAutoplay();
89
+ };
90
+ /**
91
+ * Selects a new set of children using the current mode. Applies
92
+ * `hidden`/`aria-hidden`, emits `lyra-content-change`, and returns the
93
+ * elements now shown. Does not reset or restart the autoplay timer.
94
+ */
95
+ this.randomize = () => this.reselect();
96
+ }
97
+ static { this.styles = [LyraElement.styles, styles]; }
98
+ connectedCallback() {
99
+ super.connectedCallback();
100
+ this.mediaQuery = typeof matchMedia === 'function' ? matchMedia('(prefers-reduced-motion: reduce)') : undefined;
101
+ this.reduceMotion = this.mediaQuery?.matches ?? false;
102
+ this.mediaQuery?.addEventListener('change', this.onMotionPreferenceChange);
103
+ // `firstUpdated()` only ever runs once per element lifetime, but
104
+ // `disconnectedCallback()` unconditionally stops the timer on every
105
+ // disconnect -- without restarting here too, a disconnect/reconnect
106
+ // cycle (e.g. a virtualized list reordering this element) would leave
107
+ // autoplay permanently stopped. Harmless no-op before the shadow tree's
108
+ // slot exists yet (`eligible()` returns `[]`, gated off below).
109
+ this.restartAutoplay();
110
+ }
111
+ disconnectedCallback() {
112
+ this.stopAutoplay();
113
+ this.mediaQuery?.removeEventListener('change', this.onMotionPreferenceChange);
114
+ this.mediaQuery = undefined;
115
+ super.disconnectedCallback();
116
+ }
117
+ firstUpdated() {
118
+ // Handles slotted content present at parse time: the slot's assigned
119
+ // elements are already resolved synchronously once the shadow tree
120
+ // renders, so this doesn't need to wait on the (async, and not
121
+ // guaranteed-timed across engines) `slotchange` event just to read the
122
+ // initial pool. `onSlotChange` below still exists for genuinely later
123
+ // pool changes and as a fallback if `slotchange` is the only signal a
124
+ // given engine ever fires for this content.
125
+ this.reselect();
126
+ this.restartAutoplay();
127
+ }
128
+ updated(changed) {
129
+ if (this.hasUpdatedOnce) {
130
+ if (changed.has('items'))
131
+ this.reselect();
132
+ if (changed.has('autoplay') || changed.has('autoplayInterval'))
133
+ this.restartAutoplay();
134
+ }
135
+ this.hasUpdatedOnce = true;
136
+ }
137
+ eligible() {
138
+ return (this.slotEl?.assignedElements() ?? []).filter((el) => el instanceof HTMLElement);
139
+ }
140
+ clampedCount(poolSize) {
141
+ const n = Number.isFinite(this.items) ? Math.max(1, Math.trunc(this.items)) : 1;
142
+ return Math.min(n, poolSize);
143
+ }
144
+ poolsEqual(a, b) {
145
+ if (a.length !== b.length)
146
+ return false;
147
+ return a.every((el, index) => el === b[index]);
148
+ }
149
+ shuffledPick(pool, count) {
150
+ const arr = pool.slice();
151
+ const n = Math.min(count, arr.length);
152
+ for (let i = 0; i < n; i += 1) {
153
+ const j = i + Math.floor(Math.random() * (arr.length - i));
154
+ const swap = arr[i];
155
+ arr[i] = arr[j];
156
+ arr[j] = swap;
157
+ }
158
+ return arr.slice(0, n);
159
+ }
160
+ sameAsPrevious(selection) {
161
+ const previous = this.previousSelection;
162
+ if (!previous || previous.length !== selection.length)
163
+ return false;
164
+ const previousSet = new Set(previous);
165
+ return selection.every((el) => previousSet.has(el));
166
+ }
167
+ selectUnique(pool, count) {
168
+ let picked = this.shuffledPick(pool, count);
169
+ if (pool.length > count) {
170
+ let attempts = 0;
171
+ while (attempts < 10 && this.sameAsPrevious(picked)) {
172
+ picked = this.shuffledPick(pool, count);
173
+ attempts += 1;
174
+ }
175
+ }
176
+ return picked;
177
+ }
178
+ selectSequence(pool, count) {
179
+ const total = pool.length;
180
+ const start = this.sequenceCursor % total;
181
+ const picked = [];
182
+ for (let k = 0; k < count; k += 1) {
183
+ picked.push(pool[(start + k) % total]);
184
+ }
185
+ this.sequenceCursor = (start + count) % total;
186
+ return picked;
187
+ }
188
+ computeSelectionForMode(pool, count) {
189
+ switch (this.mode) {
190
+ case 'sequence':
191
+ return this.selectSequence(pool, count);
192
+ case 'unique':
193
+ return this.selectUnique(pool, count);
194
+ case 'random':
195
+ default:
196
+ return this.shuffledPick(pool, count);
197
+ }
198
+ }
199
+ applySelection(pool, selected) {
200
+ const selectedSet = new Set(selected);
201
+ for (const el of pool) {
202
+ const shown = selectedSet.has(el);
203
+ el.toggleAttribute('hidden', !shown);
204
+ el.setAttribute('aria-hidden', shown ? 'false' : 'true');
205
+ }
206
+ }
207
+ reselect(options = {}) {
208
+ const pool = this.eligible();
209
+ this.lastPool = pool;
210
+ if (pool.length === 0) {
211
+ this.previousSelection = undefined;
212
+ return [];
213
+ }
214
+ if (options.resetPrevious)
215
+ this.previousSelection = undefined;
216
+ const count = this.clampedCount(pool.length);
217
+ const selected = this.computeSelectionForMode(pool, count);
218
+ this.applySelection(pool, selected);
219
+ this.previousSelection = selected;
220
+ this.emit('lyra-content-change', { items: selected });
221
+ return selected;
222
+ }
223
+ stopAutoplay() {
224
+ if (this.timer !== undefined)
225
+ window.clearInterval(this.timer);
226
+ this.timer = undefined;
227
+ }
228
+ restartAutoplay() {
229
+ this.stopAutoplay();
230
+ if (!this.autoplay || this.reduceMotion || this.eligible().length < 2)
231
+ return;
232
+ const interval = finiteDuration(this.autoplayInterval, 3000, 1000);
233
+ this.timer = window.setInterval(() => {
234
+ this.reselect();
235
+ }, interval);
236
+ }
237
+ render() {
238
+ const hostLabel = this.getAttribute('aria-label');
239
+ return html `<div
240
+ part="base"
241
+ role="status"
242
+ aria-live=${this.autoplay ? 'off' : 'polite'}
243
+ aria-atomic="true"
244
+ aria-label=${hostLabel === null ? nothing : hostLabel}
245
+ >
246
+ <slot @slotchange=${this.onSlotChange}></slot>
247
+ </div>`;
248
+ }
249
+ }
250
+ __decorate([
251
+ property({ reflect: true })
252
+ ], LyraRandomContent.prototype, "animation", void 0);
253
+ __decorate([
254
+ property({ type: Boolean, reflect: true })
255
+ ], LyraRandomContent.prototype, "autoplay", void 0);
256
+ __decorate([
257
+ property({ type: Number, attribute: 'autoplay-interval' })
258
+ ], LyraRandomContent.prototype, "autoplayInterval", void 0);
259
+ __decorate([
260
+ property({ type: Number })
261
+ ], LyraRandomContent.prototype, "items", void 0);
262
+ __decorate([
263
+ property()
264
+ ], LyraRandomContent.prototype, "mode", void 0);
265
+ __decorate([
266
+ query('slot')
267
+ ], LyraRandomContent.prototype, "slotEl", void 0);
268
+ //# sourceMappingURL=random-content.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random-content.class.js","sourceRoot":"","sources":["../../../src/components/random-content/random-content.class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './random-content.class.js';
2
+ //# sourceMappingURL=random-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random-content.d.ts","sourceRoot":"","sources":["../../../src/components/random-content/random-content.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './random-content.class.js';
2
+ import { LyraRandomContent } from './random-content.class.js';
3
+ import { defineElement } from '../../internal/prefix.js';
4
+ defineElement('random-content', LyraRandomContent);
5
+ //# sourceMappingURL=random-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random-content.js","sourceRoot":"","sources":["../../../src/components/random-content/random-content.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,aAAa,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=random-content.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random-content.styles.d.ts","sourceRoot":"","sources":["../../../src/components/random-content/random-content.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBA2FlB,CAAC"}
@@ -0,0 +1,94 @@
1
+ import { css } from 'lit';
2
+ export const styles = css `
3
+ :host {
4
+ display: block;
5
+ min-inline-size: 0;
6
+ }
7
+ /* Consumers needing an inline text-fragment swap inside a sentence can override
8
+ "lyra-random-content { display: inline; }" from outside -- not baked in here, since
9
+ "display: contents" on the host risks a11y-tree inconsistencies across engines and every
10
+ other component in this family defaults to "display: block". */
11
+ [part='base'] {
12
+ display: block;
13
+ min-inline-size: 0;
14
+ }
15
+ ::slotted(*) {
16
+ animation-duration: var(--lyra-random-content-animation-duration, 300ms);
17
+ animation-timing-function: var(--lyra-random-content-animation-easing, ease);
18
+ }
19
+ :host(:not([animation='none'])) ::slotted(:not([hidden])) {
20
+ animation-name: lyra-random-content-fade-in;
21
+ }
22
+ :host([animation='fade-up']) ::slotted(:not([hidden])) {
23
+ animation-name: lyra-random-content-fade-in-up;
24
+ }
25
+ :host([animation='fade-down']) ::slotted(:not([hidden])) {
26
+ animation-name: lyra-random-content-fade-in-down;
27
+ }
28
+ :host([animation='fade-left']) ::slotted(:not([hidden])) {
29
+ animation-name: lyra-random-content-fade-in-left;
30
+ }
31
+ :host([animation='fade-right']) ::slotted(:not([hidden])) {
32
+ animation-name: lyra-random-content-fade-in-right;
33
+ }
34
+ @keyframes lyra-random-content-fade-in {
35
+ from {
36
+ opacity: 0;
37
+ }
38
+ to {
39
+ opacity: 1;
40
+ }
41
+ }
42
+ @keyframes lyra-random-content-fade-in-up {
43
+ from {
44
+ opacity: 0;
45
+ transform: translateY(var(--lyra-random-content-animation-translate, var(--lyra-size-0-5em)));
46
+ }
47
+ to {
48
+ opacity: 1;
49
+ transform: translateY(0);
50
+ }
51
+ }
52
+ @keyframes lyra-random-content-fade-in-down {
53
+ from {
54
+ opacity: 0;
55
+ transform: translateY(calc(-1 * var(--lyra-random-content-animation-translate, var(--lyra-size-0-5em))));
56
+ }
57
+ to {
58
+ opacity: 1;
59
+ transform: translateY(0);
60
+ }
61
+ }
62
+ /* fade-left/fade-right are physical-direction transforms (matching the upstream naming this
63
+ component mirrors), not "previous/next" navigational semantics like a carousel chevron, so
64
+ they are deliberately not flipped under :host(:dir(rtl)). */
65
+ @keyframes lyra-random-content-fade-in-left {
66
+ from {
67
+ opacity: 0;
68
+ transform: translateX(var(--lyra-random-content-animation-translate, var(--lyra-size-0-5em)));
69
+ }
70
+ to {
71
+ opacity: 1;
72
+ transform: translateX(0);
73
+ }
74
+ }
75
+ @keyframes lyra-random-content-fade-in-right {
76
+ from {
77
+ opacity: 0;
78
+ transform: translateX(calc(-1 * var(--lyra-random-content-animation-translate, var(--lyra-size-0-5em))));
79
+ }
80
+ to {
81
+ opacity: 1;
82
+ transform: translateX(0);
83
+ }
84
+ }
85
+ /* The shared reduced-motion rule in tokens.styles.ts (:host *, :host *::before, ...) only
86
+ reaches the *shadow* tree -- it does not reach ::slotted() content, since slotted elements
87
+ live in the host's light DOM, not its shadow tree. Guard the entrance animation explicitly. */
88
+ @media (prefers-reduced-motion: reduce) {
89
+ ::slotted(*) {
90
+ animation: none !important;
91
+ }
92
+ }
93
+ `;
94
+ //# sourceMappingURL=random-content.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random-content.styles.js","sourceRoot":"","sources":["../../../src/components/random-content/random-content.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FxB,CAAC"}
@@ -1,5 +1,8 @@
1
- import { type PropertyValues, type TemplateResult } from 'lit';
1
+ import { type TemplateResult } from 'lit';
2
2
  import { LyraElement } from '../../internal/lyra-element.js';
3
+ declare class LyraResultCardBase extends LyraElement {
4
+ }
5
+ declare const LyraResultCard_base: typeof LyraResultCardBase;
3
6
  /**
4
7
  * `<lyra-result-card>` — a small bordered card shell for a custom tool-result
5
8
  * renderer's body (see `<lyra-tool-result-view>`'s `registerToolRenderer()`
@@ -27,13 +30,13 @@ import { LyraElement } from '../../internal/lyra-element.js';
27
30
  * hovering the truncated text reveals it via the browser's default tooltip,
28
31
  * scoped to just this element rather than the whole card. The host's own
29
32
  * `title` attribute is stripped once Lit has synced it into the `title`
30
- * property (see `attributeChangedCallback`/`updated` below), so the native
31
- * tooltip never also covers the rest of the card.
33
+ * property (see `StripHostTitleAttribute` in `internal/strip-host-title.ts`),
34
+ * so the native tooltip never also covers the rest of the card.
32
35
  * @csspart actions - The wrapper around the `actions` slot. `hidden`
33
36
  * whenever the slot has no assigned content.
34
37
  * @csspart body - The wrapper around the default slot.
35
38
  */
36
- export declare class LyraResultCard extends LyraElement {
39
+ export declare class LyraResultCard extends LyraResultCard_base {
37
40
  static styles: import("lit").CSSResultGroup[];
38
41
  /** Small heading for the card. Leave unset for an untitled card (e.g. a
39
42
  * bare block of `<lyra-result-field>` rows with no natural heading).
@@ -43,13 +46,10 @@ export declare class LyraResultCard extends LyraElement {
43
46
  * `title` attribute (the browser's global tooltip attribute) is actively
44
47
  * stripped once Lit has synced it into this property, so the card never
45
48
  * grows an unsolicited native tooltip repeating the same text. See
46
- * `attributeChangedCallback` and `updated` below. */
49
+ * `StripHostTitleAttribute` (`internal/strip-host-title.ts`). */
47
50
  title: string;
48
51
  private hasActionsSlot;
49
- private stripHostTitleAttr;
50
52
  protected willUpdate(): void;
51
- attributeChangedCallback(name: string, old: string | null, value: string | null): void;
52
- protected updated(changed: PropertyValues<this>): void;
53
53
  private onActionsSlotChange;
54
54
  render(): TemplateResult;
55
55
  }
@@ -58,4 +58,5 @@ declare global {
58
58
  'lyra-result-card': LyraResultCard;
59
59
  }
60
60
  }
61
+ export {};
61
62
  //# sourceMappingURL=result-card.class.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"result-card.class.d.ts","sourceRoot":"","sources":["../../../src/components/result-card/result-card.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,MAAM,CAAC,MAAM,iCAAgC;IAE7C;;;;;;;;0DAQsD;IAC1C,KAAK,SAAM;IAOd,OAAO,CAAC,cAAc,CAAS;IAOxC,OAAO,CAAC,kBAAkB,CAAS;IAEnC,SAAS,CAAC,UAAU,IAAI,IAAI,CAI3B;IAED,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAGrF;IAED,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAUrD;IAED,OAAO,CAAC,mBAAmB,CAEzB;IAEF,MAAM,IAAI,cAAc,CAcvB;CACF;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
1
+ {"version":3,"file":"result-card.class.d.ts","sourceRoot":"","sources":["../../../src/components/result-card/result-card.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAI7D,cAAM,kBAAmB,SAAQ,WAAW;CAAG;;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,cAAe,SAAQ,mBAA2C;IAC7E,MAAM,CAAC,MAAM,iCAAgC;IAE7C;;;;;;;;sEAQkE;IACtD,KAAK,SAAM;IAOd,OAAO,CAAC,cAAc,CAAS;IAExC,SAAS,CAAC,UAAU,IAAI,IAAI,CAI3B;IAED,OAAO,CAAC,mBAAmB,CAEzB;IAEF,MAAM,IAAI,cAAc,CAcvB;CACF;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
@@ -7,7 +7,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { html, nothing } from 'lit';
8
8
  import { property, state } from 'lit/decorators.js';
9
9
  import { LyraElement } from '../../internal/lyra-element.js';
10
+ import { StripHostTitleAttribute } from '../../internal/strip-host-title.js';
10
11
  import { styles } from './result-card.styles.js';
12
+ class LyraResultCardBase extends LyraElement {
13
+ }
11
14
  /**
12
15
  * `<lyra-result-card>` — a small bordered card shell for a custom tool-result
13
16
  * renderer's body (see `<lyra-tool-result-view>`'s `registerToolRenderer()`
@@ -35,13 +38,13 @@ import { styles } from './result-card.styles.js';
35
38
  * hovering the truncated text reveals it via the browser's default tooltip,
36
39
  * scoped to just this element rather than the whole card. The host's own
37
40
  * `title` attribute is stripped once Lit has synced it into the `title`
38
- * property (see `attributeChangedCallback`/`updated` below), so the native
39
- * tooltip never also covers the rest of the card.
41
+ * property (see `StripHostTitleAttribute` in `internal/strip-host-title.ts`),
42
+ * so the native tooltip never also covers the rest of the card.
40
43
  * @csspart actions - The wrapper around the `actions` slot. `hidden`
41
44
  * whenever the slot has no assigned content.
42
45
  * @csspart body - The wrapper around the default slot.
43
46
  */
44
- export class LyraResultCard extends LyraElement {
47
+ export class LyraResultCard extends StripHostTitleAttribute(LyraResultCardBase) {
45
48
  constructor() {
46
49
  super(...arguments);
47
50
  /** Small heading for the card. Leave unset for an untitled card (e.g. a
@@ -52,7 +55,7 @@ export class LyraResultCard extends LyraElement {
52
55
  * `title` attribute (the browser's global tooltip attribute) is actively
53
56
  * stripped once Lit has synced it into this property, so the card never
54
57
  * grows an unsolicited native tooltip repeating the same text. See
55
- * `attributeChangedCallback` and `updated` below. */
58
+ * `StripHostTitleAttribute` (`internal/strip-host-title.ts`). */
56
59
  this.title = '';
57
60
  // See `<lyra-widget>`'s identical `hasActionsSlot` -- a `[part]` wrapper
58
61
  // always contains a literal `<slot>` child regardless of assigned
@@ -60,12 +63,6 @@ export class LyraResultCard extends LyraElement {
60
63
  // in JS instead and used to both hide the actions wrapper and decide
61
64
  // whether the header row itself has anything to show.
62
65
  this.hasActionsSlot = false;
63
- // Guards the `removeAttribute('title')` call in `updated()` below: removing
64
- // an observed attribute fires `attributeChangedCallback` synchronously just
65
- // like setting one does, and without this flag Lit would treat the removal
66
- // as a fresh (empty) attribute value and reset the `title` property right
67
- // back to `null`, losing the value it just finished syncing in.
68
- this.stripHostTitleAttr = false;
69
66
  this.onActionsSlotChange = (e) => {
70
67
  this.hasActionsSlot = e.target.assignedElements({ flatten: true }).length > 0;
71
68
  };
@@ -76,22 +73,6 @@ export class LyraResultCard extends LyraElement {
76
73
  this.hasActionsSlot = Array.from(this.children).some((el) => el.getAttribute('slot') === 'actions');
77
74
  }
78
75
  }
79
- attributeChangedCallback(name, old, value) {
80
- if (name === 'title' && this.stripHostTitleAttr)
81
- return;
82
- super.attributeChangedCallback(name, old, value);
83
- }
84
- updated(changed) {
85
- if (changed.has('title') && this.hasAttribute('title')) {
86
- // The attribute has already been converted into the `title` property
87
- // by this point (that's how it got here), so the DOM attribute itself
88
- // is now redundant -- and, left in place, would make the whole card
89
- // show a native tooltip repeating the title text on hover.
90
- this.stripHostTitleAttr = true;
91
- this.removeAttribute('title');
92
- this.stripHostTitleAttr = false;
93
- }
94
- }
95
76
  render() {
96
77
  const hasTitle = this.title.length > 0;
97
78
  const hasHeader = hasTitle || this.hasActionsSlot;
@@ -1 +1 @@
1
- {"version":3,"file":"result-card.class.js","sourceRoot":"","sources":["../../../src/components/result-card/result-card.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAA4C,MAAM,KAAK,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,cAAe,SAAQ,WAAW;IAA/C;;QAGE;;;;;;;;8DAQsD;QAC1C,UAAK,GAAG,EAAE,CAAC;QAEvB,yEAAyE;QACzE,kEAAkE;QAClE,yEAAyE;QACzE,qEAAqE;QACrE,sDAAsD;QACrC,mBAAc,GAAG,KAAK,CAAC;QAExC,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,0EAA0E;QAC1E,gEAAgE;QACxD,uBAAkB,GAAG,KAAK,CAAC;QAyB3B,wBAAmB,GAAG,CAAC,CAAQ,EAAQ,EAAE;YAC/C,IAAI,CAAC,cAAc,GAAI,CAAC,CAAC,MAA0B,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACrG,CAAC,CAAC;IAiBJ,CAAC;aArEQ,WAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,AAA/B,CAAgC;IA2BnC,UAAU;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED,wBAAwB,CAAC,IAAY,EAAE,GAAkB,EAAE,KAAoB;QAC7E,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,kBAAkB;YAAE,OAAO;QACxD,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAES,OAAO,CAAC,OAA6B;QAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,qEAAqE;YACrE,sEAAsE;YACtE,oEAAoE;YACpE,2DAA2D;YAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAClC,CAAC;IACH,CAAC;IAMD,MAAM;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC;QAClD,OAAO,IAAI,CAAA;;qCAEsB,CAAC,SAAS;YACnC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA,4BAA4B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO;wCAC1D,CAAC,IAAI,CAAC,cAAc;+CACb,IAAI,CAAC,mBAAmB;;;;;KAKlE,CAAC;IACJ,CAAC;CACF;AA1Da;IAAX,QAAQ,EAAE;6CAAY;AAON;IAAhB,KAAK,EAAE;sDAAgC"}
1
+ {"version":3,"file":"result-card.class.js","sourceRoot":"","sources":["../../../src/components/result-card/result-card.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,kBAAmB,SAAQ,WAAW;CAAG;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,cAAe,SAAQ,uBAAuB,CAAC,kBAAkB,CAAC;IAA/E;;QAGE;;;;;;;;0EAQkE;QACtD,UAAK,GAAG,EAAE,CAAC;QAEvB,yEAAyE;QACzE,kEAAkE;QAClE,yEAAyE;QACzE,qEAAqE;QACrE,sDAAsD;QACrC,mBAAc,GAAG,KAAK,CAAC;QAQhC,wBAAmB,GAAG,CAAC,CAAQ,EAAQ,EAAE;YAC/C,IAAI,CAAC,cAAc,GAAI,CAAC,CAAC,MAA0B,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACrG,CAAC,CAAC;IAiBJ,CAAC;aA7CQ,WAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,AAA/B,CAAgC;IAoBnC,UAAU;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAMD,MAAM;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC;QAClD,OAAO,IAAI,CAAA;;qCAEsB,CAAC,SAAS;YACnC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA,4BAA4B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO;wCAC1D,CAAC,IAAI,CAAC,cAAc;+CACb,IAAI,CAAC,mBAAmB;;;;;KAKlE,CAAC;IACJ,CAAC;CACF;AAlCa;IAAX,QAAQ,EAAE;6CAAY;AAON;IAAhB,KAAK,EAAE;sDAAgC"}
@@ -1 +1 @@
1
- {"version":3,"file":"result-field.class.d.ts","sourceRoot":"","sources":["../../../src/components/result-card/result-field.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAe7D;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,MAAM,CAAC,MAAM,iCAAgC;IAE7C,kFAAkF;IACtE,KAAK,SAAM;IAEvB;8CAC0C;IAC9B,KAAK,SAAM;IAEd,OAAO,CAAC,YAAY,CAAS;IAEtC,SAAS,CAAC,UAAU,IAAI,IAAI,CAI3B;IAED,YAAY,IAAI,IAAI,CAOnB;IAED,OAAO,CAAC,YAAY,CAElB;IAEF,MAAM,IAAI,cAAc,CAUvB;CACF;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
1
+ {"version":3,"file":"result-field.class.d.ts","sourceRoot":"","sources":["../../../src/components/result-card/result-field.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAI7D;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,MAAM,CAAC,MAAM,iCAAgC;IAE7C,kFAAkF;IACtE,KAAK,SAAM;IAEvB;8CAC0C;IAC9B,KAAK,SAAM;IAEd,OAAO,CAAC,YAAY,CAAS;IAEtC,SAAS,CAAC,UAAU,IAAI,IAAI,CAI3B;IAED,YAAY,IAAI,IAAI,CAOnB;IAED,OAAO,CAAC,YAAY,CAElB;IAEF,MAAM,IAAI,cAAc,CAUvB;CACF;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
@@ -7,18 +7,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { html, nothing } from 'lit';
8
8
  import { property, state } from 'lit/decorators.js';
9
9
  import { LyraElement } from '../../internal/lyra-element.js';
10
+ import { hasRealContent } from '../../internal/a11y.js';
10
11
  import { styles } from './result-field.styles.js';
11
- // An element always counts as real slot content, even one with no text of
12
- // its own (e.g. a `<lyra-chip>` status badge whose label comes from an
13
- // attribute, not slotted text) -- assignedElements()-only checks (as
14
- // lyra-widget's hasActionsSlot/lyra-source-card's hasFullSlot use) would
15
- // miss that case. A bare text node only counts once trimmed of whitespace,
16
- // matching lyra-checkbox's hasLabelSlot. Together this catches both a
17
- // plain-text value override (`<lyra-result-field label="Status">200 OK`)
18
- // and a rich slotted badge.
19
- function hasRealContent(nodes) {
20
- return nodes.some((n) => n.nodeType === Node.ELEMENT_NODE || (n.textContent ?? '').trim().length > 0);
21
- }
22
12
  /**
23
13
  * `<lyra-result-field>` — a single label/value row, meant for use inside a
24
14
  * `<lyra-result-card>` body (though it works standalone too). Renders as a
@@ -1 +1 @@
1
- {"version":3,"file":"result-field.class.js","sourceRoot":"","sources":["../../../src/components/result-card/result-field.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,0EAA0E;AAC1E,uEAAuE;AACvE,qEAAqE;AACrE,yEAAyE;AACzE,2EAA2E;AAC3E,sEAAsE;AACtE,yEAAyE;AACzE,4BAA4B;AAC5B,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxG,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAAhD;;QAGE,kFAAkF;QACtE,UAAK,GAAG,EAAE,CAAC;QAEvB;kDAC0C;QAC9B,UAAK,GAAG,EAAE,CAAC;QAEN,iBAAY,GAAG,KAAK,CAAC;QAiB9B,iBAAY,GAAG,CAAC,CAAQ,EAAQ,EAAE;YACxC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAE,CAAC,CAAC,MAA0B,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrG,CAAC,CAAC;IAaJ,CAAC;aAzCQ,WAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,AAA/B,CAAgC;IAWnC,UAAU;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,YAAY;QACV,sEAAsE;QACtE,uEAAuE;QACvE,qEAAqE;QACrE,2DAA2D;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,UAAW,CAAC,aAAa,CAAC,MAAM,CAAoB,CAAC;QACvE,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAMD,MAAM;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,OAAO,IAAI,CAAA;;UAEL,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA,sBAAsB,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO;;aAEhE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,qBAAqB,IAAI,CAAC,YAAY;;;KAGtF,CAAC;IACJ,CAAC;CACF;AAtCa;IAAX,QAAQ,EAAE;8CAAY;AAIX;IAAX,QAAQ,EAAE;8CAAY;AAEN;IAAhB,KAAK,EAAE;qDAA8B"}
1
+ {"version":3,"file":"result-field.class.js","sourceRoot":"","sources":["../../../src/components/result-card/result-field.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAAhD;;QAGE,kFAAkF;QACtE,UAAK,GAAG,EAAE,CAAC;QAEvB;kDAC0C;QAC9B,UAAK,GAAG,EAAE,CAAC;QAEN,iBAAY,GAAG,KAAK,CAAC;QAiB9B,iBAAY,GAAG,CAAC,CAAQ,EAAQ,EAAE;YACxC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAE,CAAC,CAAC,MAA0B,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrG,CAAC,CAAC;IAaJ,CAAC;aAzCQ,WAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,AAA/B,CAAgC;IAWnC,UAAU;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,YAAY;QACV,sEAAsE;QACtE,uEAAuE;QACvE,qEAAqE;QACrE,2DAA2D;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,UAAW,CAAC,aAAa,CAAC,MAAM,CAAoB,CAAC;QACvE,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAMD,MAAM;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,OAAO,IAAI,CAAA;;UAEL,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA,sBAAsB,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO;;aAEhE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,qBAAqB,IAAI,CAAC,YAAY;;;KAGtF,CAAC;IACJ,CAAC;CACF;AAtCa;IAAX,QAAQ,EAAE;8CAAY;AAIX;IAAX,QAAQ,EAAE;8CAAY;AAEN;IAAhB,KAAK,EAAE;qDAA8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"slider.class.d.ts","sourceRoot":"","sources":["../../../src/components/slider/slider.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAgC7D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,WAAW,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,aAAa,EAAE,WAAW,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/C;AACD,cAAM,cAAe,SAAQ,WAAW,CAAC,kBAAkB,CAAC;CAAG;;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,UAAW,SAAQ,eAA8B;IAC5D,MAAM,CAAC,MAAM,iCAAgC;IAM7C,MAAM,CAAC,UAAU;QACf,GAAG;YAAI,IAAI;YAAU,UAAU;;QAC/B,GAAG;YAAI,IAAI;YAAU,UAAU;;QAC/B,IAAI;YAAI,IAAI;YAAU,UAAU;;MAChC;IAEF,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,KAAK,CAAK;IAKlB,OAAO,CAAC,YAAY,CAAqB;IAEzC,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAKnB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAKnB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAQpB;IACD;;;;0EAIsE;IAC1D,KAAK,SAAM;IACvB;;;;;qCAKiC;IACqB,SAAS,UAAQ;IAKvE,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAS;IAEhC,iBAAiB,IAAI,IAAI,CASxB;IAED,oBAAoB,IAAI,IAAI,CAY3B;IAED;;;;;6BAKyB;IACzB,IAAI,aAAa,IAAI,MAAM,CAI1B;IAED,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,EAE7B;IAED;;;;OAIG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAUrB;IAED,iBAAiB,IAAI,IAAI,CAGxB;IAED;;0EAEsE;IACtE,OAAO,CAAC,WAAW;IAInB,qFAAqF;IACrF,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,SAAS,CAgCf;IAEF,OAAO,CAAC,OAAO,CAcb;IAEF;;;;2DAIuD;IACvD,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,aAAa,CAGnB;IAEF;;;;;;;;qBAQiB;IACjB,OAAO,CAAC,iBAAiB,CAiBvB;IAEF,OAAO,CAAC,aAAa,CAqBnB;IAEF,OAAO,CAAC,WAAW,CAEjB;IAEF,qFAAqF;IACrF,OAAO,CAAC,OAAO;IAef,MAAM,IAAI,cAAc,CA4BvB;CACF;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
1
+ {"version":3,"file":"slider.class.d.ts","sourceRoot":"","sources":["../../../src/components/slider/slider.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAY7D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,WAAW,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,aAAa,EAAE,WAAW,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/C;AACD,cAAM,cAAe,SAAQ,WAAW,CAAC,kBAAkB,CAAC;CAAG;;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,UAAW,SAAQ,eAA8B;IAC5D,MAAM,CAAC,MAAM,iCAAgC;IAM7C,MAAM,CAAC,UAAU;QACf,GAAG;YAAI,IAAI;YAAU,UAAU;;QAC/B,GAAG;YAAI,IAAI;YAAU,UAAU;;QAC/B,IAAI;YAAI,IAAI;YAAU,UAAU;;MAChC;IAEF,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,KAAK,CAAK;IAKlB,OAAO,CAAC,YAAY,CAAqB;IAEzC,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAKnB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAKnB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAQpB;IACD;;;;0EAIsE;IAC1D,KAAK,SAAM;IACvB;;;;;qCAKiC;IACqB,SAAS,UAAQ;IAKvE,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAS;IAEhC,iBAAiB,IAAI,IAAI,CASxB;IAED,oBAAoB,IAAI,IAAI,CAY3B;IAED;;;;;6BAKyB;IACzB,IAAI,aAAa,IAAI,MAAM,CAI1B;IAED,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,EAE7B;IAED;;;;OAIG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAUrB;IAED,iBAAiB,IAAI,IAAI,CAGxB;IAED;;0EAEsE;IACtE,OAAO,CAAC,WAAW;IAInB,qFAAqF;IACrF,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,SAAS,CAgCf;IAEF,OAAO,CAAC,OAAO,CAcb;IAEF;;;;2DAIuD;IACvD,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,aAAa,CAGnB;IAEF;;;;;;;;qBAQiB;IACjB,OAAO,CAAC,iBAAiB,CAiBvB;IAEF,OAAO,CAAC,aAAa,CAqBnB;IAEF,OAAO,CAAC,WAAW,CAEjB;IAEF,qFAAqF;IACrF,OAAO,CAAC,OAAO;IAef,MAAM,IAAI,cAAc,CA4BvB;CACF;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
@@ -9,31 +9,13 @@ import { property } from 'lit/decorators.js';
9
9
  import { LyraElement } from '../../internal/lyra-element.js';
10
10
  import { FormAssociated } from '../../internal/form-associated.js';
11
11
  import { isRtl } from '../../internal/rtl.js';
12
- import { finiteNumber, finiteRange } from '../../internal/numbers.js';
12
+ import { finiteNumber, finiteRange, isSliderKey, decimalPlaces } from '../../internal/numbers.js';
13
13
  import { styles } from './slider.styles.js';
14
14
  /** PageUp/PageDown move by a larger increment than a single Arrow step,
15
15
  * matching the WAI-ARIA APG slider pattern's expected keyboard interactions
16
16
  * (and native `<input type=range>`). Mirrors lyra-time-range's identical
17
17
  * constant. */
18
18
  const PAGE_STEP_MULTIPLIER = 10;
19
- function isArrowKey(key) {
20
- return key === 'ArrowRight' || key === 'ArrowUp' || key === 'ArrowLeft' || key === 'ArrowDown';
21
- }
22
- /** Keys that onKeyDown acts on and onKeyUp commits after. */
23
- function isSliderKey(key) {
24
- return isArrowKey(key) || key === 'Home' || key === 'End' || key === 'PageUp' || key === 'PageDown';
25
- }
26
- /** Number of decimal places implied by `n`, including exponent notation.
27
- * `0.1` -> 1, `5` -> 0, and `1e-7` -> 7. Used to round a stepped value back
28
- * to the precision `step` itself implies, instead of leaving binary
29
- * floating-point noise in place. */
30
- function decimalPlaces(n) {
31
- if (!Number.isFinite(n) || n === 0)
32
- return 0;
33
- const [mantissa, exponentText] = n.toExponential().split('e');
34
- const mantissaPlaces = mantissa.includes('.') ? mantissa.length - mantissa.indexOf('.') - 1 : 0;
35
- return Math.max(0, mantissaPlaces - Number(exponentText));
36
- }
37
19
  class LyraSliderBase extends LyraElement {
38
20
  }
39
21
  /**