@aceshooting/lyra-ui 11.2.0 → 12.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 (222) hide show
  1. package/CHANGELOG.md +407 -0
  2. package/README.md +11 -8
  3. package/custom-elements.json +1 -1
  4. package/dist/all.d.ts +1 -0
  5. package/dist/all.js +1 -1
  6. package/dist/autoloader.js +1 -1
  7. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +0 -1
  8. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +1 -1
  9. package/dist/components/charts/chart/chart.class.d.ts +13 -1
  10. package/dist/components/charts/chart/histogram-bin.d.ts +0 -1
  11. package/dist/components/charts/chart/histogram-bin.js +1 -1
  12. package/dist/components/charts/chart/lite-chart.class.d.ts +22 -9
  13. package/dist/components/charts/chart/lite-chart.class.js +6 -6
  14. package/dist/components/conversation/code-block/code-block-shared.d.ts +4 -54
  15. package/dist/components/conversation/code-block/code-block-shared.js +1 -1
  16. package/dist/components/conversation/code-block/shiki-types.d.ts +2 -1
  17. package/dist/components/conversation/generation-metrics/generation-metrics.class.js +1 -1
  18. package/dist/components/conversation/model-select/model-select.class.d.ts +0 -3
  19. package/dist/components/conversation/model-select/model-select.class.js +1 -1
  20. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
  21. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +0 -1
  22. package/dist/components/conversation/voice-picker/voice-picker.class.js +1 -1
  23. package/dist/components/data/data-grid/data-grid.class.js +1 -1
  24. package/dist/components/data/funnel/funnel.class.d.ts +92 -0
  25. package/dist/components/data/funnel/funnel.class.js +25 -0
  26. package/dist/components/data/funnel/funnel.d.ts +1 -0
  27. package/dist/components/data/funnel/funnel.js +1 -0
  28. package/dist/components/data/funnel/funnel.styles.d.ts +1 -0
  29. package/dist/components/data/funnel/funnel.styles.js +127 -0
  30. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +0 -1
  31. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
  32. package/dist/components/data/heatmap/heatmap.class.d.ts +199 -14
  33. package/dist/components/data/heatmap/heatmap.class.js +30 -22
  34. package/dist/components/data/heatmap/heatmap.styles.js +36 -0
  35. package/dist/components/data/index.d.ts +1 -0
  36. package/dist/components/data/index.js +1 -1
  37. package/dist/components/data/table/table.class.d.ts +18 -4
  38. package/dist/components/data/table/table.class.js +2 -2
  39. package/dist/components/data/table/table.styles.js +2 -1
  40. package/dist/components/data/timeline/timeline-cluster.d.ts +1 -0
  41. package/dist/components/data/timeline/timeline-cluster.js +1 -0
  42. package/dist/components/data/timeline/timeline-item.class.d.ts +17 -2
  43. package/dist/components/data/timeline/timeline-item.class.js +13 -2
  44. package/dist/components/data/timeline/timeline-item.styles.js +65 -0
  45. package/dist/components/data/timeline/timeline.class.d.ts +83 -27
  46. package/dist/components/data/timeline/timeline.class.js +3 -3
  47. package/dist/components/data/timeline/timeline.d.ts +1 -0
  48. package/dist/components/data/timeline/timeline.js +1 -1
  49. package/dist/components/data/timeline/timeline.styles.js +14 -0
  50. package/dist/components/forms/button/button.class.js +1 -1
  51. package/dist/components/forms/checkbox/checkbox.class.d.ts +0 -1
  52. package/dist/components/forms/checkbox/checkbox.class.js +1 -1
  53. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +0 -1
  54. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  55. package/dist/components/forms/code-editor/code-editor.class.js +1 -1
  56. package/dist/components/forms/color-picker/color-picker.class.js +1 -1
  57. package/dist/components/forms/combobox/combobox.class.d.ts +7 -1
  58. package/dist/components/forms/combobox/combobox.class.js +3 -2
  59. package/dist/components/forms/combobox/combobox.styles.js +1 -1
  60. package/dist/components/forms/date-picker/date-input.class.d.ts +23 -0
  61. package/dist/components/forms/date-picker/date-input.class.js +1 -1
  62. package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +0 -1
  63. package/dist/components/forms/input/native-time-input.class.js +1 -1
  64. package/dist/components/forms/input/time-input-shared.d.ts +2 -1
  65. package/dist/components/forms/input/time-input.class.js +1 -1
  66. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +0 -1
  67. package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
  68. package/dist/components/forms/radio/radio-button.styles.d.ts +0 -1
  69. package/dist/components/forms/radio/radio-button.styles.js +1 -1
  70. package/dist/components/forms/radio/radio-group.class.d.ts +0 -1
  71. package/dist/components/forms/radio/radio-group.class.js +1 -1
  72. package/dist/components/forms/radio/radio.class.d.ts +0 -1
  73. package/dist/components/forms/radio/radio.class.js +1 -1
  74. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +0 -1
  75. package/dist/components/forms/rubric-form/rubric-form.class.js +1 -1
  76. package/dist/components/forms/select/select.class.d.ts +0 -1
  77. package/dist/components/forms/select/select.class.js +1 -1
  78. package/dist/components/forms/slider/slider.class.d.ts +0 -1
  79. package/dist/components/forms/slider/slider.class.js +1 -1
  80. package/dist/components/forms/switch/switch.class.d.ts +0 -1
  81. package/dist/components/forms/switch/switch.class.js +1 -1
  82. package/dist/components/forms/time-range/time-range.class.d.ts +0 -1
  83. package/dist/components/forms/time-range/time-range.class.js +1 -1
  84. package/dist/components/forms/token-input/token-input.class.d.ts +0 -1
  85. package/dist/components/forms/token-input/token-input.class.js +1 -1
  86. package/dist/components/layout/app-rail/app-rail-item.class.d.ts +16 -0
  87. package/dist/components/layout/app-rail/app-rail-item.class.js +4 -4
  88. package/dist/components/layout/dashboard-grid/layout-internal.d.ts +0 -1
  89. package/dist/components/layout/dashboard-grid/layout-internal.js +1 -1
  90. package/dist/components/layout/details/accordion-owner.d.ts +1 -1
  91. package/dist/components/layout/filter-bar/filter-bar.class.d.ts +32 -3
  92. package/dist/components/layout/filter-bar/filter-bar.class.js +2 -1
  93. package/dist/components/layout/menu/menu-item.class.js +1 -1
  94. package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
  95. package/dist/components/layout/widget/widget.class.d.ts +16 -0
  96. package/dist/components/layout/widget/widget.class.js +2 -2
  97. package/dist/components/lr-funnel.d.ts +1 -0
  98. package/dist/components/lr-funnel.js +1 -0
  99. package/dist/components/media/av-player/av-metadata.d.ts +0 -2
  100. package/dist/components/media/av-player/av-metadata.js +1 -1
  101. package/dist/components/media/file-input/file-input.class.d.ts +0 -1
  102. package/dist/components/media/file-input/file-input.class.js +1 -1
  103. package/dist/components/media/flag/flag-peer-bulk-standard.d.ts +25 -0
  104. package/dist/components/media/flag/flag-peer-bulk-standard.js +1 -0
  105. package/dist/components/media/flag/flag.class.d.ts +8 -0
  106. package/dist/components/media/flag/flag.class.js +1 -1
  107. package/dist/components/media/map/map-loader.d.ts +4 -1
  108. package/dist/components/media/map/map.class.d.ts +242 -23
  109. package/dist/components/media/map/map.class.js +2 -2
  110. package/dist/components/overlays/chip/chip-group.class.d.ts +16 -0
  111. package/dist/components/overlays/chip/chip-group.class.js +10 -3
  112. package/dist/components/overlays/overlay/popover.class.d.ts +7 -1
  113. package/dist/components/overlays/overlay/popover.class.js +1 -1
  114. package/dist/components/overlays/overlay/tooltip.class.d.ts +1 -0
  115. package/dist/components/overlays/overlay/tooltip.class.js +1 -1
  116. package/dist/components/overlays/progress/progress-shared.d.ts +0 -2
  117. package/dist/components/overlays/progress/progress-shared.js +1 -1
  118. package/dist/components/overlays/rating/rating.class.js +1 -1
  119. package/dist/components/retrieval/graph/graph-canvas.d.ts +10 -9
  120. package/dist/components/retrieval/mind-map/mind-map-layout.d.ts +0 -4
  121. package/dist/components/retrieval/mind-map/mind-map-layout.js +1 -1
  122. package/dist/components/utility/format/format-options.d.ts +0 -2
  123. package/dist/components/utility/format/format-options.js +1 -1
  124. package/dist/components/utility/icon/icon-resource.d.ts +0 -2
  125. package/dist/components/utility/icon/icon-resource.js +1 -1
  126. package/dist/components/viewers/archive-viewer/zip-resource-guard.d.ts +2 -1
  127. package/dist/components/viewers/docx-viewer/docx-resource-guard.d.ts +0 -3
  128. package/dist/components/viewers/docx-viewer/docx-resource-guard.js +1 -1
  129. package/dist/components/viewers/ebook-viewer/ebook-loader.d.ts +2 -1
  130. package/dist/components/viewers/ebook-viewer/epub-resource-guard.d.ts +0 -3
  131. package/dist/components/viewers/ebook-viewer/epub-resource-guard.js +1 -1
  132. package/dist/components/viewers/pdf-viewer/pdf-loader.d.ts +2 -2
  133. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +2 -2
  134. package/dist/components/viewers/pptx-viewer/pptx-resource-guard.d.ts +0 -2
  135. package/dist/components/viewers/pptx-viewer/pptx-resource-guard.js +1 -1
  136. package/dist/components/viewers/spreadsheet-viewer/xlsx-resource-guard.d.ts +0 -5
  137. package/dist/components/viewers/spreadsheet-viewer/xlsx-resource-guard.js +1 -1
  138. package/dist/custom-elements-jsx.d.ts +16 -8
  139. package/dist/events.d.ts +15 -0
  140. package/dist/internal/accessibility-visibility.d.ts +1 -1
  141. package/dist/internal/anchor-target.d.ts +1 -3
  142. package/dist/internal/anchor-target.js +2 -2
  143. package/dist/internal/anchored-overlay-runtime.d.ts +7 -0
  144. package/dist/internal/anchored-overlay-runtime.js +1 -0
  145. package/dist/internal/announcement-text.d.ts +1 -1
  146. package/dist/internal/ansi.d.ts +0 -4
  147. package/dist/internal/ansi.js +1 -1
  148. package/dist/internal/aria-ownership.d.ts +2 -1
  149. package/dist/internal/autoloader-manifest.js +1 -1
  150. package/dist/internal/autoloader-tags.d.ts +1 -1
  151. package/dist/internal/autoloader-tags.js +1 -1
  152. package/dist/internal/default-strings.generated.d.ts +1 -0
  153. package/dist/internal/default-strings.generated.js +1 -1
  154. package/dist/internal/focus-navigation.d.ts +3 -2
  155. package/dist/internal/form-associated.d.ts +0 -1
  156. package/dist/internal/form-associated.js +1 -1
  157. package/dist/internal/form-control-labels.d.ts +0 -3
  158. package/dist/internal/form-control-labels.js +1 -1
  159. package/dist/internal/localization-runtime.js +1 -1
  160. package/dist/internal/localization-types.d.ts +1 -1
  161. package/dist/internal/localization.js +1 -1
  162. package/dist/internal/lyra-element.d.ts +7 -14
  163. package/dist/internal/lyra-element.js +1 -1
  164. package/dist/internal/nonmodal-overlay-manager.d.ts +9 -0
  165. package/dist/internal/nonmodal-overlay-manager.js +1 -0
  166. package/dist/internal/overlay-manager.d.ts +4 -20
  167. package/dist/internal/overlay-manager.js +1 -1
  168. package/dist/internal/overlay-stack.d.ts +66 -0
  169. package/dist/internal/overlay-stack.js +1 -0
  170. package/dist/internal/package-metadata.d.ts +1 -1
  171. package/dist/internal/package-metadata.js +1 -1
  172. package/dist/internal/positioner.js +1 -1
  173. package/dist/internal/root-registration-allowlist.d.ts +1 -1
  174. package/dist/internal/root-registration-allowlist.js +1 -1
  175. package/dist/internal/text-quote.d.ts +1 -1
  176. package/dist/lyra.d.ts +5 -4
  177. package/dist/lyra.js +1 -1
  178. package/dist/ssr/all.d.ts +1 -0
  179. package/dist/ssr/all.js +1 -1
  180. package/dist/ssr.d.ts +4 -4
  181. package/dist/styles/tokens-root.css +488 -0
  182. package/dist/svelte.d.ts +17 -8
  183. package/dist/translations/ar.js +1 -1
  184. package/dist/translations/de.js +1 -1
  185. package/dist/translations/es.js +1 -1
  186. package/dist/translations/fa.js +1 -1
  187. package/dist/translations/fr.js +1 -1
  188. package/dist/translations/he.js +1 -1
  189. package/dist/translations/ja.js +1 -1
  190. package/dist/translations/pt-BR.js +1 -1
  191. package/dist/translations/ru.js +1 -1
  192. package/dist/translations/zh-CN.js +1 -1
  193. package/dist/utilities/localization.js +1 -1
  194. package/dist/vue.d.ts +16 -8
  195. package/llms/components/lr-app-rail-item.md +8 -1
  196. package/llms/components/lr-app-rail.md +6 -0
  197. package/llms/components/lr-chip-group.md +7 -0
  198. package/llms/components/lr-chip.md +7 -0
  199. package/llms/components/lr-combobox.md +42 -0
  200. package/llms/components/lr-date-input.md +19 -1
  201. package/llms/components/lr-date-picker.md +19 -1
  202. package/llms/components/lr-filter-bar.md +50 -1
  203. package/llms/components/lr-flag.md +14 -0
  204. package/llms/components/lr-funnel.md +122 -0
  205. package/llms/components/lr-heatmap.md +55 -8
  206. package/llms/components/lr-lite-chart.md +20 -8
  207. package/llms/components/lr-map.md +109 -22
  208. package/llms/components/lr-option.md +42 -0
  209. package/llms/components/lr-popover.md +39 -0
  210. package/llms/components/lr-table.md +7 -3
  211. package/llms/components/lr-timeline-item.md +49 -24
  212. package/llms/components/lr-timeline.md +49 -24
  213. package/llms/components/lr-widget.md +7 -1
  214. package/llms/index.md +3 -2
  215. package/llms/peers.md +1 -1
  216. package/llms/shared.md +110 -1
  217. package/llms-full.txt +681 -67
  218. package/llms.txt +1 -1
  219. package/package.json +26 -8
  220. package/vscode-css-data.json +63 -0
  221. package/vscode-html-data.json +108 -23
  222. package/web-types.json +32738 -310
package/dist/all.d.ts CHANGED
@@ -106,6 +106,7 @@ import './components/data/flow-run-status/flow-run-status.js';
106
106
  import './components/utility/format/format-bytes.js';
107
107
  import './components/utility/format/format-date.js';
108
108
  import './components/utility/format/format-number.js';
109
+ import './components/data/funnel/funnel.js';
109
110
  import './components/data/gauge/gauge.js';
110
111
  import './components/conversation/generation-metrics/generation-metrics.js';
111
112
  import './components/retrieval/graph-legend/graph-legend.js';
package/dist/all.js CHANGED
@@ -1 +1 @@
1
- import"./components/layout/details/accordion.js";import"./components/layout/details/accordion-item.js";import"./components/agent-tools/activity-feed/activity-feed.js";import"./components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.js";import"./components/agent-tools/agent-run/agent-run.js";import"./components/agent-tools/agent-trace/agent-trace.js";import"./components/conversation/agent-workspace/agent-workspace.js";import"./components/overlays/alert/alert.js";import"./components/media/animated-image/animated-image.js";import"./components/media/animation/animation.js";import"./components/layout/app-rail/app-rail.js";import"./components/layout/app-rail/app-rail-item.js";import"./components/agent-tools/approval-queue/approval-queue.js";import"./components/viewers/archive-viewer/archive-viewer.js";import"./components/agent-tools/artifact-panel/artifact-panel.js";import"./components/media/attachment-chip/attachment-chip.js";import"./components/media/attachment-trigger/attachment-trigger.js";import"./components/conversation/audio-visualizer/audio-visualizer.js";import"./components/media/av-player/av-player.js";import"./components/media/avatar/avatar.js";import"./components/media/avatar-group/avatar-group.js";import"./components/overlays/badge/badge.js";import"./components/conversation/branch-picker/branch-picker.js";import"./components/layout/breadcrumb/breadcrumb.js";import"./components/layout/breadcrumb/breadcrumb-item.js";import"./components/agent-tools/browser-frame/browser-frame.js";import"./components/forms/button/button.js";import"./components/layout/button-group/button-group.js";import"./components/data/calendar/calendar.js";import"./components/viewers/calendar-viewer/calendar-viewer.js";import"./components/overlays/callout/callout.js";import"./components/layout/card/card.js";import"./components/layout/carousel/carousel.js";import"./components/layout/carousel/carousel-item.js";import"./components/conversation/chat-composer/chat-composer.js";import"./components/conversation/chat-message/chat-message.js";import"./components/conversation/chat-viewport/chat-viewport.js";import"./components/forms/checkbox/checkbox.js";import"./components/forms/checkbox-group/checkbox-group.js";import"./components/conversation/checkpoint/checkpoint.js";import"./components/overlays/chip/chip.js";import"./components/overlays/chip/chip-group.js";import"./components/retrieval/chunk-inspector/chunk-inspector.js";import"./components/retrieval/citation-badge/citation-badge.js";import"./components/retrieval/claim-evidence/claim-evidence.js";import"./components/conversation/code-block/code-block.js";import"./components/conversation/code-block/code-block-core.js";import"./components/forms/code-editor/code-editor.js";import"./components/forms/color-picker/color-picker.js";import"./components/forms/combobox/combobox.js";import"./components/layout/command-palette/command-palette.js";import"./components/agent-tools/commit-card/commit-card.js";import"./components/retrieval/community-card/community-card.js";import"./components/agent-tools/compare-panel/compare-panel.js";import"./components/data/condition-builder/condition-builder.js";import"./components/agent-tools/confirm-bar/confirm-bar.js";import"./components/viewers/contact-viewer/contact-viewer.js";import"./components/agent-tools/context-inspector/context-inspector.js";import"./components/data/context-meter/context-meter.js";import"./components/layout/control-group/control-group.js";import"./components/conversation/conversation-item/conversation-item.js";import"./components/utility/copy-button/copy-button.js";import"./components/viewers/csv-viewer/csv-viewer.js";import"./components/layout/dashboard-grid/dashboard-grid.js";import"./components/data/data-grid/data-grid.js";import"./components/viewers/dataset-viewer/dataset-viewer.js";import"./components/forms/date-picker/date-input.js";import"./components/forms/date-picker/date-picker.js";import"./components/layout/details/details.js";import"./components/overlays/dialog/dialog.js";import"./components/utility/diff-view/diff-view.js";import"./components/utility/divider/divider.js";import"./components/layout/dock-panel/dock-panel.js";import"./components/viewers/document-compare/document-compare.js";import"./components/data/document-library/document-library.js";import"./components/viewers/document-preview/document-preview.js";import"./components/viewers/document-viewer/document-viewer.js";import"./components/viewers/docx-viewer/docx-viewer.js";import"./components/overlays/drawer/drawer.js";import"./components/layout/drilldown-panel/drilldown-panel.js";import"./components/overlays/overlay/dropdown.js";import"./components/layout/menu/dropdown-item.js";import"./components/viewers/ebook-viewer/ebook-viewer.js";import"./components/viewers/email-viewer/email-viewer.js";import"./components/retrieval/embedding-explorer/embedding-explorer.js";import"./components/forms/emoji-picker/emoji-picker.js";import"./components/overlays/empty/empty.js";import"./components/retrieval/entity-card/entity-card.js";import"./components/retrieval/entity-chip/entity-chip.js";import"./components/retrieval/entity-dossier/entity-dossier.js";import"./components/data/env-list/env-list.js";import"./components/agent-tools/eval-dataset/eval-dataset.js";import"./components/agent-tools/eval-result/eval-result.js";import"./components/agent-tools/evaluation-run/evaluation-run.js";import"./components/utility/export-button/export-button.js";import"./components/media/file-icon/file-icon.js";import"./components/media/file-input/file-input.js";import"./components/data/file-tree/file-tree.js";import"./components/layout/filter-bar/filter-bar.js";import"./components/media/flag/flag.js";import"./components/data/flow-canvas/flow-canvas.js";import"./components/data/flow-controls/flow-controls.js";import"./components/data/flow-minimap/flow-minimap.js";import"./components/data/flow-node/flow-node.js";import"./components/data/flow-run-status/flow-run-status.js";import"./components/utility/format/format-bytes.js";import"./components/utility/format/format-date.js";import"./components/utility/format/format-number.js";import"./components/data/gauge/gauge.js";import"./components/conversation/generation-metrics/generation-metrics.js";import"./components/retrieval/graph-legend/graph-legend.js";import"./components/data/graph-query-builder/graph-query-builder.js";import"./components/retrieval/grounding-summary/grounding-summary.js";import"./components/conversation/handoff-divider/handoff-divider.js";import"./components/data/heatmap/heatmap.js";import"./components/viewers/highlight-layer/highlight-layer.js";import"./components/viewers/html-viewer/html-viewer.js";import"./components/utility/icon/icon.js";import"./components/forms/icon-button/icon-button.js";import"./components/media/image-comparer/image-comparer.js";import"./components/media/image-viewer/image-viewer.js";import"./components/viewers/include/include.js";import"./components/retrieval/ingestion-queue/ingestion-queue.js";import"./components/forms/input/input.js";import"./components/utility/intersection-observer/intersection-observer.js";import"./components/agent-tools/schema-viewer/schema-viewer.js";import"./components/utility/json-viewer/json-viewer.js";import"./components/overlays/kbd/kbd.js";import"./components/retrieval/knowledge-base/knowledge-base.js";import"./components/retrieval/knowledge-base-admin/knowledge-base-admin.js";import"./components/utility/known-date/known-date.js";import"./components/media/lightbox/lightbox.js";import"./components/charts/chart/lite-chart.js";import"./components/utility/live-region/live-region.js";import"./components/forms/locale-picker/locale-picker.js";import"./components/conversation/markdown/markdown.js";import"./components/conversation/markdown/markdown-core.js";import"./components/agent-tools/mcp-app/mcp-app.js";import"./components/media/media-card/media-card.js";import"./components/retrieval/memory-panel/memory-panel.js";import"./components/utility/mention-popover/mention-popover.js";import"./components/layout/menu/menu.js";import"./components/layout/menu/menu-item.js";import"./components/layout/menu/menu-label.js";import"./components/conversation/message-actions/message-actions.js";import"./components/conversation/message-feedback/message-feedback.js";import"./components/conversation/message-parts/message-parts.js";import"./components/retrieval/mind-map/mind-map.js";import"./components/conversation/model-select/model-select.js";import"./components/conversation/model-settings-panel/model-settings-panel.js";import"./components/layout/multi-split/multi-split.js";import"./components/utility/mutation-observer/mutation-observer.js";import"./components/forms/input/native-time-input.js";import"./components/retrieval/neighbor-list/neighbor-list.js";import"./components/retrieval/node-palette/node-palette.js";import"./components/viewers/notebook-viewer/notebook-viewer.js";import"./components/forms/input/number-input.js";import"./components/forms/combobox/option.js";import"./components/forms/otp-input/otp-input.js";import"./components/layout/page/page.js";import"./components/viewers/page-rail/page-rail.js";import"./components/data/pagination/pagination.js";import"./components/media/pan-zoom/pan-zoom.js";import"./components/retrieval/path-strip/path-strip.js";import"./components/viewers/pdf-viewer/pdf-viewer.js";import"./components/forms/phone-input/phone-input.js";import"./components/agent-tools/policy-summary/policy-summary.js";import"./components/utility/poll-status/poll-status.js";import"./components/overlays/overlay/popover.js";import"./components/overlays/popup/popup.js";import"./components/viewers/pptx-viewer/pptx-viewer.js";import"./components/overlays/progress/progress-bar.js";import"./components/overlays/progress/progress-ring.js";import"./components/conversation/prompt-input/prompt-input.js";import"./components/conversation/prompt-queue/prompt-queue.js";import"./components/agent-tools/prompt-studio/prompt-studio.js";import"./components/retrieval/provenance-panel/provenance-panel.js";import"./components/conversation/push-to-talk/push-to-talk.js";import"./components/media/qr-code/qr-code.js";import"./components/forms/radio/radio.js";import"./components/forms/radio/radio-button.js";import"./components/forms/radio/radio-group.js";import"./components/retrieval/rag-answer/rag-answer.js";import"./components/retrieval/rag-eval-dashboard/rag-eval-dashboard.js";import"./components/utility/random-content/random-content.js";import"./components/overlays/rating/rating.js";import"./components/conversation/realtime-session/realtime-session.js";import"./components/utility/format/relative-time.js";import"./components/layout/reorder-list/reorder-item.js";import"./components/layout/reorder-list/reorder-list.js";import"./components/utility/resize-observer/resize-observer.js";import"./components/layout/responsive-panel/responsive-panel.js";import"./components/agent-tools/result-card/result-card.js";import"./components/agent-tools/result-card/result-field.js";import"./components/retrieval/retrieval-compare/retrieval-compare.js";import"./components/retrieval/retrieval-results/retrieval-results.js";import"./components/retrieval/retrieval-search/retrieval-search.js";import"./components/retrieval/retrieval-trace/retrieval-trace.js";import"./components/forms/rubric-form/rubric-form.js";import"./components/layout/scroller/scroller.js";import"./components/layout/segmented/segmented.js";import"./components/forms/select/select.js";import"./components/conversation/selection-toolbar/selection-toolbar.js";import"./components/media/sequence-playback/sequence-playback.js";import"./components/data/sequence-strip/sequence-strip.js";import"./components/overlays/skeleton/skeleton.js";import"./components/forms/slider/slider.js";import"./components/retrieval/source-card/source-card.js";import"./components/retrieval/source-list/source-list.js";import"./components/retrieval/source-picker/source-picker.js";import"./components/agent-tools/span-waterfall/span-waterfall.js";import"./components/data/sparkline/sparkline.js";import"./components/overlays/spinner/spinner.js";import"./components/layout/split-panel/split-panel.js";import"./components/viewers/spreadsheet-viewer/spreadsheet-viewer.js";import"./components/agent-tools/stack-trace/stack-trace.js";import"./components/data/stat/stat.js";import"./components/layout/stepper/stepper.js";import"./components/conversation/stream-status/stream-status.js";import"./components/conversation/streaming-text/streaming-text.js";import"./components/agent-tools/subagent-panel/subagent-panel.js";import"./components/conversation/suggestion-chips/suggestion-chips.js";import"./components/viewers/svg-viewer/svg-viewer.js";import"./components/forms/swatch-picker/swatch-picker.js";import"./components/forms/switch/switch.js";import"./components/layout/tab-group/tab.js";import"./components/layout/tab-group/tab-group.js";import"./components/layout/tab-group/tab-panel.js";import"./components/data/table/table.js";import"./components/overlays/badge/tag.js";import"./components/agent-tools/task-list/task-list.js";import"./components/agent-tools/terminal/terminal.js";import"./components/agent-tools/test-results/test-results.js";import"./components/forms/textarea/textarea.js";import"./components/agent-tools/thinking-panel/thinking-panel.js";import"./components/conversation/thread-list/thread-list.js";import"./components/forms/input/time-input.js";import"./components/forms/time-range/time-range.js";import"./components/data/timeline/timeline.js";import"./components/data/timeline/timeline-item.js";import"./components/overlays/toast/toast.js";import"./components/overlays/toast/toast-item.js";import"./components/forms/token-input/token-input.js";import"./components/agent-tools/tool-approval-dialog/tool-approval-dialog.js";import"./components/agent-tools/tool-call-chip/tool-call-chip.js";import"./components/agent-tools/tool-param-form/tool-param-form.js";import"./components/agent-tools/tool-result-dialog/tool-result-dialog.js";import"./components/agent-tools/tool-result-view/tool-result-view.js";import"./components/agent-tools/tool-select-dialog/tool-select-dialog.js";import"./components/agent-tools/tool-timeline/tool-timeline.js";import"./components/overlays/overlay/tooltip.js";import"./components/utility/tour/tour.js";import"./components/agent-tools/trace-tree/trace-tree.js";import"./components/conversation/transcript-feed/transcript-feed.js";import"./components/data/tree/tree.js";import"./components/data/tree/tree-item.js";import"./components/conversation/typing-indicator/typing-indicator.js";import"./components/conversation/usage-badge/usage-badge.js";import"./components/media/video/video.js";import"./components/media/video-playlist/video-playlist.js";import"./components/layout/virtual-list/virtual-list.js";import"./components/utility/visually-hidden/visually-hidden.js";import"./components/conversation/voice-picker/voice-picker.js";import"./components/layout/widget/widget.js";import"./components/conversation/widget-renderer/widget-renderer.js";import"./components/data/word-cloud/word-cloud.js";import"./components/viewers/xml-viewer/xml-viewer.js";import"./components/media/zoomable-frame/zoomable-frame.js";import"./components/viewers/archive-viewer/archive-viewer-register.js";import"./components/viewers/ebook-viewer/ebook-viewer-register.js";export*from"./lyra.js";
1
+ import"./components/layout/details/accordion.js";import"./components/layout/details/accordion-item.js";import"./components/agent-tools/activity-feed/activity-feed.js";import"./components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.js";import"./components/agent-tools/agent-run/agent-run.js";import"./components/agent-tools/agent-trace/agent-trace.js";import"./components/conversation/agent-workspace/agent-workspace.js";import"./components/overlays/alert/alert.js";import"./components/media/animated-image/animated-image.js";import"./components/media/animation/animation.js";import"./components/layout/app-rail/app-rail.js";import"./components/layout/app-rail/app-rail-item.js";import"./components/agent-tools/approval-queue/approval-queue.js";import"./components/viewers/archive-viewer/archive-viewer.js";import"./components/agent-tools/artifact-panel/artifact-panel.js";import"./components/media/attachment-chip/attachment-chip.js";import"./components/media/attachment-trigger/attachment-trigger.js";import"./components/conversation/audio-visualizer/audio-visualizer.js";import"./components/media/av-player/av-player.js";import"./components/media/avatar/avatar.js";import"./components/media/avatar-group/avatar-group.js";import"./components/overlays/badge/badge.js";import"./components/conversation/branch-picker/branch-picker.js";import"./components/layout/breadcrumb/breadcrumb.js";import"./components/layout/breadcrumb/breadcrumb-item.js";import"./components/agent-tools/browser-frame/browser-frame.js";import"./components/forms/button/button.js";import"./components/layout/button-group/button-group.js";import"./components/data/calendar/calendar.js";import"./components/viewers/calendar-viewer/calendar-viewer.js";import"./components/overlays/callout/callout.js";import"./components/layout/card/card.js";import"./components/layout/carousel/carousel.js";import"./components/layout/carousel/carousel-item.js";import"./components/conversation/chat-composer/chat-composer.js";import"./components/conversation/chat-message/chat-message.js";import"./components/conversation/chat-viewport/chat-viewport.js";import"./components/forms/checkbox/checkbox.js";import"./components/forms/checkbox-group/checkbox-group.js";import"./components/conversation/checkpoint/checkpoint.js";import"./components/overlays/chip/chip.js";import"./components/overlays/chip/chip-group.js";import"./components/retrieval/chunk-inspector/chunk-inspector.js";import"./components/retrieval/citation-badge/citation-badge.js";import"./components/retrieval/claim-evidence/claim-evidence.js";import"./components/conversation/code-block/code-block.js";import"./components/conversation/code-block/code-block-core.js";import"./components/forms/code-editor/code-editor.js";import"./components/forms/color-picker/color-picker.js";import"./components/forms/combobox/combobox.js";import"./components/layout/command-palette/command-palette.js";import"./components/agent-tools/commit-card/commit-card.js";import"./components/retrieval/community-card/community-card.js";import"./components/agent-tools/compare-panel/compare-panel.js";import"./components/data/condition-builder/condition-builder.js";import"./components/agent-tools/confirm-bar/confirm-bar.js";import"./components/viewers/contact-viewer/contact-viewer.js";import"./components/agent-tools/context-inspector/context-inspector.js";import"./components/data/context-meter/context-meter.js";import"./components/layout/control-group/control-group.js";import"./components/conversation/conversation-item/conversation-item.js";import"./components/utility/copy-button/copy-button.js";import"./components/viewers/csv-viewer/csv-viewer.js";import"./components/layout/dashboard-grid/dashboard-grid.js";import"./components/data/data-grid/data-grid.js";import"./components/viewers/dataset-viewer/dataset-viewer.js";import"./components/forms/date-picker/date-input.js";import"./components/forms/date-picker/date-picker.js";import"./components/layout/details/details.js";import"./components/overlays/dialog/dialog.js";import"./components/utility/diff-view/diff-view.js";import"./components/utility/divider/divider.js";import"./components/layout/dock-panel/dock-panel.js";import"./components/viewers/document-compare/document-compare.js";import"./components/data/document-library/document-library.js";import"./components/viewers/document-preview/document-preview.js";import"./components/viewers/document-viewer/document-viewer.js";import"./components/viewers/docx-viewer/docx-viewer.js";import"./components/overlays/drawer/drawer.js";import"./components/layout/drilldown-panel/drilldown-panel.js";import"./components/overlays/overlay/dropdown.js";import"./components/layout/menu/dropdown-item.js";import"./components/viewers/ebook-viewer/ebook-viewer.js";import"./components/viewers/email-viewer/email-viewer.js";import"./components/retrieval/embedding-explorer/embedding-explorer.js";import"./components/forms/emoji-picker/emoji-picker.js";import"./components/overlays/empty/empty.js";import"./components/retrieval/entity-card/entity-card.js";import"./components/retrieval/entity-chip/entity-chip.js";import"./components/retrieval/entity-dossier/entity-dossier.js";import"./components/data/env-list/env-list.js";import"./components/agent-tools/eval-dataset/eval-dataset.js";import"./components/agent-tools/eval-result/eval-result.js";import"./components/agent-tools/evaluation-run/evaluation-run.js";import"./components/utility/export-button/export-button.js";import"./components/media/file-icon/file-icon.js";import"./components/media/file-input/file-input.js";import"./components/data/file-tree/file-tree.js";import"./components/layout/filter-bar/filter-bar.js";import"./components/media/flag/flag.js";import"./components/data/flow-canvas/flow-canvas.js";import"./components/data/flow-controls/flow-controls.js";import"./components/data/flow-minimap/flow-minimap.js";import"./components/data/flow-node/flow-node.js";import"./components/data/flow-run-status/flow-run-status.js";import"./components/utility/format/format-bytes.js";import"./components/utility/format/format-date.js";import"./components/utility/format/format-number.js";import"./components/data/funnel/funnel.js";import"./components/data/gauge/gauge.js";import"./components/conversation/generation-metrics/generation-metrics.js";import"./components/retrieval/graph-legend/graph-legend.js";import"./components/data/graph-query-builder/graph-query-builder.js";import"./components/retrieval/grounding-summary/grounding-summary.js";import"./components/conversation/handoff-divider/handoff-divider.js";import"./components/data/heatmap/heatmap.js";import"./components/viewers/highlight-layer/highlight-layer.js";import"./components/viewers/html-viewer/html-viewer.js";import"./components/utility/icon/icon.js";import"./components/forms/icon-button/icon-button.js";import"./components/media/image-comparer/image-comparer.js";import"./components/media/image-viewer/image-viewer.js";import"./components/viewers/include/include.js";import"./components/retrieval/ingestion-queue/ingestion-queue.js";import"./components/forms/input/input.js";import"./components/utility/intersection-observer/intersection-observer.js";import"./components/agent-tools/schema-viewer/schema-viewer.js";import"./components/utility/json-viewer/json-viewer.js";import"./components/overlays/kbd/kbd.js";import"./components/retrieval/knowledge-base/knowledge-base.js";import"./components/retrieval/knowledge-base-admin/knowledge-base-admin.js";import"./components/utility/known-date/known-date.js";import"./components/media/lightbox/lightbox.js";import"./components/charts/chart/lite-chart.js";import"./components/utility/live-region/live-region.js";import"./components/forms/locale-picker/locale-picker.js";import"./components/conversation/markdown/markdown.js";import"./components/conversation/markdown/markdown-core.js";import"./components/agent-tools/mcp-app/mcp-app.js";import"./components/media/media-card/media-card.js";import"./components/retrieval/memory-panel/memory-panel.js";import"./components/utility/mention-popover/mention-popover.js";import"./components/layout/menu/menu.js";import"./components/layout/menu/menu-item.js";import"./components/layout/menu/menu-label.js";import"./components/conversation/message-actions/message-actions.js";import"./components/conversation/message-feedback/message-feedback.js";import"./components/conversation/message-parts/message-parts.js";import"./components/retrieval/mind-map/mind-map.js";import"./components/conversation/model-select/model-select.js";import"./components/conversation/model-settings-panel/model-settings-panel.js";import"./components/layout/multi-split/multi-split.js";import"./components/utility/mutation-observer/mutation-observer.js";import"./components/forms/input/native-time-input.js";import"./components/retrieval/neighbor-list/neighbor-list.js";import"./components/retrieval/node-palette/node-palette.js";import"./components/viewers/notebook-viewer/notebook-viewer.js";import"./components/forms/input/number-input.js";import"./components/forms/combobox/option.js";import"./components/forms/otp-input/otp-input.js";import"./components/layout/page/page.js";import"./components/viewers/page-rail/page-rail.js";import"./components/data/pagination/pagination.js";import"./components/media/pan-zoom/pan-zoom.js";import"./components/retrieval/path-strip/path-strip.js";import"./components/viewers/pdf-viewer/pdf-viewer.js";import"./components/forms/phone-input/phone-input.js";import"./components/agent-tools/policy-summary/policy-summary.js";import"./components/utility/poll-status/poll-status.js";import"./components/overlays/overlay/popover.js";import"./components/overlays/popup/popup.js";import"./components/viewers/pptx-viewer/pptx-viewer.js";import"./components/overlays/progress/progress-bar.js";import"./components/overlays/progress/progress-ring.js";import"./components/conversation/prompt-input/prompt-input.js";import"./components/conversation/prompt-queue/prompt-queue.js";import"./components/agent-tools/prompt-studio/prompt-studio.js";import"./components/retrieval/provenance-panel/provenance-panel.js";import"./components/conversation/push-to-talk/push-to-talk.js";import"./components/media/qr-code/qr-code.js";import"./components/forms/radio/radio.js";import"./components/forms/radio/radio-button.js";import"./components/forms/radio/radio-group.js";import"./components/retrieval/rag-answer/rag-answer.js";import"./components/retrieval/rag-eval-dashboard/rag-eval-dashboard.js";import"./components/utility/random-content/random-content.js";import"./components/overlays/rating/rating.js";import"./components/conversation/realtime-session/realtime-session.js";import"./components/utility/format/relative-time.js";import"./components/layout/reorder-list/reorder-item.js";import"./components/layout/reorder-list/reorder-list.js";import"./components/utility/resize-observer/resize-observer.js";import"./components/layout/responsive-panel/responsive-panel.js";import"./components/agent-tools/result-card/result-card.js";import"./components/agent-tools/result-card/result-field.js";import"./components/retrieval/retrieval-compare/retrieval-compare.js";import"./components/retrieval/retrieval-results/retrieval-results.js";import"./components/retrieval/retrieval-search/retrieval-search.js";import"./components/retrieval/retrieval-trace/retrieval-trace.js";import"./components/forms/rubric-form/rubric-form.js";import"./components/layout/scroller/scroller.js";import"./components/layout/segmented/segmented.js";import"./components/forms/select/select.js";import"./components/conversation/selection-toolbar/selection-toolbar.js";import"./components/media/sequence-playback/sequence-playback.js";import"./components/data/sequence-strip/sequence-strip.js";import"./components/overlays/skeleton/skeleton.js";import"./components/forms/slider/slider.js";import"./components/retrieval/source-card/source-card.js";import"./components/retrieval/source-list/source-list.js";import"./components/retrieval/source-picker/source-picker.js";import"./components/agent-tools/span-waterfall/span-waterfall.js";import"./components/data/sparkline/sparkline.js";import"./components/overlays/spinner/spinner.js";import"./components/layout/split-panel/split-panel.js";import"./components/viewers/spreadsheet-viewer/spreadsheet-viewer.js";import"./components/agent-tools/stack-trace/stack-trace.js";import"./components/data/stat/stat.js";import"./components/layout/stepper/stepper.js";import"./components/conversation/stream-status/stream-status.js";import"./components/conversation/streaming-text/streaming-text.js";import"./components/agent-tools/subagent-panel/subagent-panel.js";import"./components/conversation/suggestion-chips/suggestion-chips.js";import"./components/viewers/svg-viewer/svg-viewer.js";import"./components/forms/swatch-picker/swatch-picker.js";import"./components/forms/switch/switch.js";import"./components/layout/tab-group/tab.js";import"./components/layout/tab-group/tab-group.js";import"./components/layout/tab-group/tab-panel.js";import"./components/data/table/table.js";import"./components/overlays/badge/tag.js";import"./components/agent-tools/task-list/task-list.js";import"./components/agent-tools/terminal/terminal.js";import"./components/agent-tools/test-results/test-results.js";import"./components/forms/textarea/textarea.js";import"./components/agent-tools/thinking-panel/thinking-panel.js";import"./components/conversation/thread-list/thread-list.js";import"./components/forms/input/time-input.js";import"./components/forms/time-range/time-range.js";import"./components/data/timeline/timeline.js";import"./components/data/timeline/timeline-item.js";import"./components/overlays/toast/toast.js";import"./components/overlays/toast/toast-item.js";import"./components/forms/token-input/token-input.js";import"./components/agent-tools/tool-approval-dialog/tool-approval-dialog.js";import"./components/agent-tools/tool-call-chip/tool-call-chip.js";import"./components/agent-tools/tool-param-form/tool-param-form.js";import"./components/agent-tools/tool-result-dialog/tool-result-dialog.js";import"./components/agent-tools/tool-result-view/tool-result-view.js";import"./components/agent-tools/tool-select-dialog/tool-select-dialog.js";import"./components/agent-tools/tool-timeline/tool-timeline.js";import"./components/overlays/overlay/tooltip.js";import"./components/utility/tour/tour.js";import"./components/agent-tools/trace-tree/trace-tree.js";import"./components/conversation/transcript-feed/transcript-feed.js";import"./components/data/tree/tree.js";import"./components/data/tree/tree-item.js";import"./components/conversation/typing-indicator/typing-indicator.js";import"./components/conversation/usage-badge/usage-badge.js";import"./components/media/video/video.js";import"./components/media/video-playlist/video-playlist.js";import"./components/layout/virtual-list/virtual-list.js";import"./components/utility/visually-hidden/visually-hidden.js";import"./components/conversation/voice-picker/voice-picker.js";import"./components/layout/widget/widget.js";import"./components/conversation/widget-renderer/widget-renderer.js";import"./components/data/word-cloud/word-cloud.js";import"./components/viewers/xml-viewer/xml-viewer.js";import"./components/media/zoomable-frame/zoomable-frame.js";import"./components/viewers/archive-viewer/archive-viewer-register.js";import"./components/viewers/ebook-viewer/ebook-viewer-register.js";export*from"./lyra.js";
@@ -1 +1 @@
1
- import{AUTOLOADER_MANIFEST}from"./internal/autoloader-manifest.js";import{loadAutoloaderConstructor}from"./internal/autoloader-loaders.js";import{AUTOLOADER_TAG_SET}from"./internal/autoloader-tags.js";import{registryForRoot}from"./internal/definition-registry.js";import{collectRenderedTree,nativeElementLocalName,renderedTreeTraversalLimits,RenderedTreeTraversalError}from"./internal/rendered-tree-traversal.js";const AUTOLOADER_PENDING_ATTRIBUTE="data-lr-autoload-pending",markerOwners=new Map;let activeContext;function defaultRoot(){return typeof document>"u"?void 0:document}function isReadonlySet(value){if(!value||typeof value!="object")return!1;const candidate=value;return typeof candidate.has=="function"&&typeof candidate[Symbol.iterator]=="function"}function normalizeConcurrency(value){const resolved=value??16;if(!Number.isFinite(resolved)||!Number.isInteger(resolved)||resolved<1)throw new RangeError("Autoloader maxConcurrency must be an integer >= 1");return resolved}function normalizeOptions(options){const traversal=renderedTreeTraversalLimits(options??{},"Autoloader"),maxConcurrency=normalizeConcurrency(options?.maxConcurrency),common={events:options?.events===!0,traversal,maxConcurrency},policy=options?.optionalPeers;if(policy===void 0)return{optionalPeers:new Set,...common};if(policy==="all")return{optionalPeers:"all",...common};if(!Array.isArray(policy)&&!isReadonlySet(policy))throw new TypeError("optionalPeers must be 'all', an array, or a ReadonlySet of package names");const peers=[...policy];if(peers.some(peer=>typeof peer!="string"||peer.length===0||peer!==peer.trim()))throw new TypeError("optionalPeers must contain non-empty package names");return{optionalPeers:new Set(peers),...common}}function isEligible(entry,options){const allowedPeers=options.optionalPeers;return entry.optionalPeers.length===0||allowedPeers==="all"?!0:entry.optionalPeers.every(peer=>allowedPeers.has(peer))}function nativeNodeType(node){try{const NodeConstructor=typeof Node>"u"?void 0:Node;return(NodeConstructor&&Object.getOwnPropertyDescriptor(NodeConstructor.prototype,"nodeType")?.get)?.call(node)??node.nodeType}catch{return}}function ownerDocumentForNode(node){if(nativeNodeType(node)===9)return node;try{const NodeConstructor=typeof Node>"u"?void 0:Node;return(NodeConstructor&&Object.getOwnPropertyDescriptor(NodeConstructor.prototype,"ownerDocument")?.get)?.call(node)??void 0}catch{return}}function eventConstructor(root){const fromWindow=ownerDocumentForNode(root)?.defaultView?.CustomEvent;return fromWindow||(typeof CustomEvent>"u"?void 0:CustomEvent)}function emit(context,name,detail){if(!context.options.events||!context.active)return;const EventConstructor=eventConstructor(context.root);EventConstructor&&context.root.dispatchEvent(new EventConstructor(name,{bubbles:!0,composed:!0,detail}))}function markPending(context,element){let owners=markerOwners.get(element);if(!owners){if(element.hasAttribute(AUTOLOADER_PENDING_ATTRIBUTE))return;owners=new Set,markerOwners.set(element,owners)}const claim={context,element};return owners.add(claim),context.markerClaims.add(claim),element.hasAttribute(AUTOLOADER_PENDING_ATTRIBUTE)||element.setAttribute(AUTOLOADER_PENDING_ATTRIBUTE,""),claim}function clearPending(claim){if(!claim.context.markerClaims.delete(claim))return;const owners=markerOwners.get(claim.element);owners?.delete(claim)&&(owners.size>0||(claim.element.removeAttribute(AUTOLOADER_PENDING_ATTRIBUTE),markerOwners.delete(claim.element)))}function clearAllPending(context){for(const claim of[...context.markerClaims])clearPending(claim)}function definitionMap(context,registry){let definitions=context.definitionLoads.get(registry);return definitions||(definitions=new Map,context.definitionLoads.set(registry,definitions)),definitions}async function waitForUpdate(element){try{const updateComplete=element.updateComplete;updateComplete&&typeof updateComplete.then=="function"&&await updateComplete}catch{}}async function runBounded(items,concurrency,task){let next=0,failed=!1,failure;const worker=async()=>{for(;!failed;){const index=next;if(index>=items.length)return;next+=1;try{await task(items[index])}catch(error){failed||(failed=!0,failure=error)}}},workers=Array.from({length:Math.min(concurrency,items.length)},()=>worker());if(await Promise.all(workers),failed)throw failure}async function withWorkSlot(context,task){if(context.active&&(context.activeWork>=context.options.maxConcurrency&&await new Promise(resolve=>context.workWaiters.push(resolve)),!!context.active)){context.activeWork+=1;try{return await task()}finally{context.activeWork-=1,context.workWaiters.shift()?.()}}}async function defineTag(context,registry,tag){if(registry.get(tag))return;const definitions=definitionMap(context,registry),existing=definitions.get(tag);if(existing)return existing;const entry=AUTOLOADER_MANIFEST[tag],pending=(async()=>{emit(context,"lr-autoload-preload",{tag,optionalPeers:entry.optionalPeers});try{const constructor=await loadAutoloaderConstructor(tag);if(!context.active||(registry.get(tag)||registry.define(tag,constructor),await registry.whenDefined(tag),!context.active))return;context.loadedTags.add(tag),emit(context,"lr-autoload-loaded",{tag,optionalPeers:entry.optionalPeers})}catch(error){throw emit(context,"lr-autoload-error",{tag,optionalPeers:entry.optionalPeers,error}),error}})();definitions.set(tag,pending);const clearDefinition=()=>{definitions.get(tag)===pending&&definitions.delete(tag)};return pending.then(clearDefinition,clearDefinition),pending}function newDiscoveryState(){return{work:0,elements:new Set,roots:new Set}}function collectDiscoveryBatch(context,requestedRoots,state){const batchRoots=[],batchElements=[],rootDepths=new Map,elementDepths=new Map,seenRequests=new Set;for(const request of requestedRoots){if(seenRequests.has(request.root))continue;seenRequests.add(request.root);const result=collectRenderedTree(request.root,context.options.traversal,state,"Autoloader discovery",request.depth);for(const discoveredRoot of result.roots)batchRoots.push(discoveredRoot),rootDepths.set(discoveredRoot,result.rootDepths.get(discoveredRoot)??request.depth);for(const element of result.elements)batchElements.push(element),elementDepths.set(element,result.elementDepths.get(element)??request.depth)}return{roots:batchRoots,elements:batchElements,rootDepths,elementDepths}}function isElement(node){return nativeNodeType(node)===1}function observerConstructor(root){const fromWindow=ownerDocumentForNode(root)?.defaultView?.MutationObserver;return fromWindow||(typeof MutationObserver>"u"?void 0:MutationObserver)}function nativeParentNode(node){try{const NodeConstructor=ownerDocumentForNode(node)?.defaultView?.Node??(typeof Node>"u"?void 0:Node);return(NodeConstructor&&Object.getOwnPropertyDescriptor(NodeConstructor.prototype,"parentNode")?.get)?.call(node)??null}catch{return null}}function parentAcrossOpenShadowBoundary(node){const parent=nativeParentNode(node);if(parent)return parent;if(nativeNodeType(node)!==11||!("host"in node))return null;try{const ShadowRootConstructor=ownerDocumentForNode(node)?.defaultView?.ShadowRoot??(typeof ShadowRoot>"u"?void 0:ShadowRoot),host=(ShadowRootConstructor&&Object.getOwnPropertyDescriptor(ShadowRootConstructor.prototype,"host")?.get)?.call(node)??void 0;return host&&isElement(host)?host:null}catch{return null}}function spendAncestryWork(state,maximum){if(state.work>=maximum)throw new RenderedTreeTraversalError("Autoloader discovery","maxWork",maximum);state.work+=1}function renderedDepthFromRoot(root,node,state,maximumWork){let current=node,depth=0;const seen=new Set;for(;current&&!seen.has(current);){if(spendAncestryWork(state,maximumWork),current===root)return depth;if(seen.add(current),nativeNodeType(current)===11&&"host"in current){const host=parentAcrossOpenShadowBoundary(current);if(!host)return;depth+=1,current=host;continue}const parent=parentAcrossOpenShadowBoundary(current);if(!parent)return;isElement(parent)&&(depth+=1),current=parent}}function isReachableFromRoot(root,node,state,maximumWork){let current=node;const seen=new Set;for(;current&&!seen.has(current);){if(spendAncestryWork(state,maximumWork),current===root)return!0;seen.add(current),current=parentAcrossOpenShadowBoundary(current)}return!1}function observeRoot(context,root){!context.observer||context.observedRoots.has(root)||(context.observer.observe(root,{childList:!0,subtree:!0}),context.observedRoots.add(root))}function pruneDetachedObservedRoots(context,state){const observer=context.observer;if(!observer)return;const reachableRoots=[...context.observedRoots].filter(root=>isReachableFromRoot(context.root,root,state,context.options.traversal.maxWork));if(reachableRoots.length!==context.observedRoots.size){observer.disconnect(),context.observedRoots.clear();for(const root of reachableRoots)observeRoot(context,root)}}function openShadowRootFor(element){try{const ElementConstructor=element.ownerDocument?.defaultView?.Element??(typeof Element>"u"?void 0:Element);return(ElementConstructor&&Object.getOwnPropertyDescriptor(ElementConstructor.prototype,"shadowRoot")?.get)?.call(element)??void 0}catch{return}}async function finishDiscoveredElement(context,element){if(await waitForUpdate(element),!!context.active)return openShadowRootFor(element)}function prepareDiscoveryBatch(context,requestedRoots,state){if(!context.active||requestedRoots.length===0)return;const{roots,elements,elementDepths}=collectDiscoveryBatch(context,requestedRoots,state);for(const discoveredRoot of roots)observeRoot(context,discoveredRoot);const grouped=new Map,definedElements=[],markerClaims=new Map;for(const element of elements){const tag=nativeElementLocalName(element);if(!tag||!AUTOLOADER_TAG_SET.has(tag))continue;const typedTag=tag,entry=AUTOLOADER_MANIFEST[typedTag],registry=registryForRoot(element);if(!registry)continue;let alreadyDefined=!1;try{alreadyDefined=typeof registry.get=="function"&&registry.get(typedTag)!==void 0}catch{continue}if(alreadyDefined){const markerClaim=markPending(context,element);definedElements.push({element,depth:elementDepths.get(element)??0,markerClaim});continue}if(!isEligible(entry,context.options))continue;markerClaims.set(element,markPending(context,element));let tags=grouped.get(registry);tags||(tags=new Map,grouped.set(registry,tags));const matches=tags.get(typedTag)??[];matches.push(element),tags.set(typedTag,matches)}const definitions=[],elementsToFinish=[...definedElements];for(const[registry,tags]of grouped)for(const[tag,matches]of tags){const definition={registry,tag};definitions.push(definition),elementsToFinish.push(...matches.map(element=>({element,depth:elementDepths.get(element)??0,markerClaim:markerClaims.get(element),definition})))}return{definitions,elementsToFinish,state}}async function executeDiscoveryBatch(context,prepared){const{definitions,elementsToFinish,state}=prepared;try{let hasDefinitionFailure=!1,firstDefinitionFailure;const failedDefinitions=new Set;if(await runBounded(definitions,context.options.maxConcurrency,async definition=>{try{await withWorkSlot(context,()=>defineTag(context,definition.registry,definition.tag))}catch(error){failedDefinitions.add(definition),hasDefinitionFailure||(hasDefinitionFailure=!0,firstDefinitionFailure=error)}}),!context.active)return;const postUpdateRoots=new Map;if(await runBounded(elementsToFinish,context.options.maxConcurrency,async work=>{try{if(work.definition&&failedDefinitions.has(work.definition))return;const shadowRoot=await withWorkSlot(context,()=>finishDiscoveredElement(context,work.element));shadowRoot&&postUpdateRoots.set(shadowRoot,work.depth+1)}finally{work.markerClaim&&clearPending(work.markerClaim)}}),context.active&&postUpdateRoots.size>0&&await processDiscoveryBatch(context,[...postUpdateRoots].map(([root,depth])=>({root,depth})),state),hasDefinitionFailure)throw firstDefinitionFailure}finally{for(const{markerClaim}of elementsToFinish)markerClaim&&clearPending(markerClaim)}}async function processDiscoveryBatch(context,requestedRoots,state,queuedClaims=[]){const prepared=prepareDiscoveryBatch(context,requestedRoots,state);for(const claim of queuedClaims)clearPending(claim);prepared&&await executeDiscoveryBatch(context,prepared)}async function discoverRootsWithContext(context,roots){if(!context.active)return[];const before=new Set(context.loadedTags);return await processDiscoveryBatch(context,roots.map(root=>({root,depth:0})),newDiscoveryState()),[...context.loadedTags].filter(tag=>!before.has(tag))}function queueObservedDiscovery(context,roots,state){const queuedClaims=[];for(const{root}of roots){if(!isElement(root))continue;const localName=nativeElementLocalName(root);if(!localName||!AUTOLOADER_TAG_SET.has(localName))continue;const tag=localName,registry=registryForRoot(root);if(!registry)continue;let alreadyDefined=!1;try{alreadyDefined=typeof registry.get=="function"&&registry.get(tag)!==void 0}catch{continue}if(!alreadyDefined&&!isEligible(AUTOLOADER_MANIFEST[tag],context.options))continue;const claim=markPending(context,root);claim&&queuedClaims.push(claim)}const queued=context.discoveryTail.then(()=>processDiscoveryBatch(context,roots,state,queuedClaims));return context.discoveryTail=queued.then(()=>{},()=>{}),queued.finally(()=>{for(const claim of queuedClaims)clearPending(claim)})}function createContext(root,options){return{active:!0,root,options:normalizeOptions(options),markerClaims:new Set,definitionLoads:new WeakMap,loadedTags:new Set,observedRoots:new Set,discoveryTail:Promise.resolve(),activeWork:0,workWaiters:[]}}async function discover(root=defaultRoot(),options){if(!root||typeof root.querySelectorAll!="function")return[];const context=createContext(root,options);try{return await discoverRootsWithContext(context,[root])}finally{context.active=!1,clearAllPending(context)}}async function start(root=defaultRoot(),options){if(stop(),!root||typeof root.querySelectorAll!="function")return[];const context=createContext(root,options);activeContext=context;const Observer=observerConstructor(root);Observer&&(context.observer=new Observer(records=>{if(!context.active)return;const state=newDiscoveryState(),addedRoots=new Map;try{records.some(record=>record.removedNodes.length>0)&&pruneDetachedObservedRoots(context,state);for(const record of records)if(isReachableFromRoot(context.root,record.target,state,context.options.traversal.maxWork))for(const node of record.addedNodes){const nodeType=nativeNodeType(node);if(nodeType!==1&&nodeType!==11)continue;const depth=renderedDepthFromRoot(context.root,node,state,context.options.traversal.maxWork);depth!==void 0&&addedRoots.set(node,depth)}}catch(error){error instanceof RenderedTreeTraversalError&&emit(context,"lr-autoload-traversal-error",{limit:error.limit,maximum:error.maximum,error});return}addedRoots.size!==0&&queueObservedDiscovery(context,[...addedRoots].map(([discoveredRoot,depth])=>({root:discoveredRoot,depth})),state).catch(error=>{error instanceof RenderedTreeTraversalError&&emit(context,"lr-autoload-traversal-error",{limit:error.limit,maximum:error.maximum,error})})}));try{const initialDiscovery=discoverRootsWithContext(context,[root]);return context.discoveryTail=initialDiscovery.then(()=>{},()=>{}),await initialDiscovery}catch(error){throw activeContext===context&&stop(),error}}function stop(){const context=activeContext;if(context){activeContext=void 0,context.active=!1,context.observer?.disconnect(),context.observedRoots.clear();for(const resolve of context.workWaiters.splice(0))resolve();clearAllPending(context)}}export{AUTOLOADER_PENDING_ATTRIBUTE,discover,start,stop};
1
+ import{AUTOLOADER_MANIFEST}from"./internal/autoloader-manifest.js";import{loadAutoloaderConstructor}from"./internal/autoloader-loaders.js";import{AUTOLOADER_TAG_SET}from"./internal/autoloader-tags.js";import{registryForRoot}from"./internal/definition-registry.js";import{collectRenderedTree,nativeElementLocalName,renderedTreeTraversalLimits,RenderedTreeTraversalError}from"./internal/rendered-tree-traversal.js";const AUTOLOADER_PENDING_ATTRIBUTE="data-lr-autoload-pending",markerOwners=new Map;let activeContext;function defaultRoot(){return typeof document>"u"?void 0:document}function isReadonlySet(value){if(!value||typeof value!="object")return!1;const candidate=value;return typeof candidate.has=="function"&&typeof candidate[Symbol.iterator]=="function"}function normalizeConcurrency(value){const resolved=value??16;if(!Number.isFinite(resolved)||!Number.isInteger(resolved)||resolved<1)throw new RangeError("Autoloader maxConcurrency must be an integer >= 1");return resolved}function normalizeOptions(options){const traversal=renderedTreeTraversalLimits(options??{},"Autoloader"),maxConcurrency=normalizeConcurrency(options?.maxConcurrency),common={events:options?.events===!0,traversal,maxConcurrency},policy=options?.optionalPeers;if(policy===void 0)return{optionalPeers:new Set,...common};if(policy==="all")return{optionalPeers:"all",...common};if(!Array.isArray(policy)&&!isReadonlySet(policy))throw new TypeError("optionalPeers must be 'all', an array, or a ReadonlySet of package names");const peers=[...policy];if(peers.some(peer=>typeof peer!="string"||peer.length===0||peer!==peer.trim()))throw new TypeError("optionalPeers must contain non-empty package names");return{optionalPeers:new Set(peers),...common}}function isEligible(entry,options){const allowedPeers=options.optionalPeers;return entry.optionalPeers.length===0||allowedPeers==="all"?!0:entry.optionalPeers.every(peer=>allowedPeers.has(peer))}function nativeNodeType(node){try{const NodeConstructor=typeof Node>"u"?void 0:Node;return(NodeConstructor&&Object.getOwnPropertyDescriptor(NodeConstructor.prototype,"nodeType")?.get)?.call(node)??node.nodeType}catch{return}}function ownerDocumentForNode(node){if(nativeNodeType(node)===9)return node;try{const NodeConstructor=typeof Node>"u"?void 0:Node;return(NodeConstructor&&Object.getOwnPropertyDescriptor(NodeConstructor.prototype,"ownerDocument")?.get)?.call(node)??void 0}catch{return}}function eventConstructor(root){const fromWindow=ownerDocumentForNode(root)?.defaultView?.CustomEvent;return fromWindow||(typeof CustomEvent>"u"?void 0:CustomEvent)}function emit(context,name,detail){if(!context.options.events||!context.active)return;const EventConstructor=eventConstructor(context.root);EventConstructor&&context.root.dispatchEvent(new EventConstructor(name,{bubbles:!0,composed:!0,detail}))}function markPending(context,element){let owners=markerOwners.get(element);if(!owners){if(element.hasAttribute(AUTOLOADER_PENDING_ATTRIBUTE))return;owners=new Set,markerOwners.set(element,owners)}const claim={context,element};return owners.add(claim),context.markerClaims.add(claim),element.hasAttribute(AUTOLOADER_PENDING_ATTRIBUTE)||element.setAttribute(AUTOLOADER_PENDING_ATTRIBUTE,""),claim}function clearPending(claim){if(!claim.context.markerClaims.delete(claim))return;const owners=markerOwners.get(claim.element);owners?.delete(claim)&&(owners.size>0||(claim.element.removeAttribute(AUTOLOADER_PENDING_ATTRIBUTE),markerOwners.delete(claim.element)))}function clearAllPending(context){for(const claim of[...context.markerClaims])clearPending(claim)}function definitionMap(context,registry){let definitions=context.definitionLoads.get(registry);return definitions||(definitions=new Map,context.definitionLoads.set(registry,definitions)),definitions}async function waitForUpdate(element){try{const updateComplete=element.updateComplete;updateComplete&&typeof updateComplete.then=="function"&&await updateComplete}catch{}}async function runBounded(items,concurrency,task){let next=0,failed=!1,failure;const worker=async()=>{for(;!failed;){const index=next;if(index>=items.length)return;next+=1;try{await task(items[index])}catch(error){failed||(failed=!0,failure=error)}}},workers=Array.from({length:Math.min(concurrency,items.length)},()=>worker());if(await Promise.all(workers),failed)throw failure}async function withWorkSlot(context,task){if(context.active)return task()}async function defineTag(context,registry,tag){if(registry.get(tag))return;const definitions=definitionMap(context,registry),existing=definitions.get(tag);if(existing)return existing;const entry=AUTOLOADER_MANIFEST[tag],pending=(async()=>{emit(context,"lr-autoload-preload",{tag,optionalPeers:entry.optionalPeers});try{const constructor=await loadAutoloaderConstructor(tag);if(!context.active||(registry.get(tag)||registry.define(tag,constructor),await registry.whenDefined(tag),!context.active))return;context.loadedTags.add(tag),emit(context,"lr-autoload-loaded",{tag,optionalPeers:entry.optionalPeers})}catch(error){throw emit(context,"lr-autoload-error",{tag,optionalPeers:entry.optionalPeers,error}),error}})();definitions.set(tag,pending);const clearDefinition=()=>{definitions.get(tag)===pending&&definitions.delete(tag)};return pending.then(clearDefinition,clearDefinition),pending}function newDiscoveryState(){return{work:0,elements:new Set,roots:new Set}}function collectDiscoveryBatch(context,requestedRoots,state){const batchRoots=[],batchElements=[],rootDepths=new Map,elementDepths=new Map,seenRequests=new Set;for(const request of requestedRoots){if(seenRequests.has(request.root))continue;seenRequests.add(request.root);const result=collectRenderedTree(request.root,context.options.traversal,state,"Autoloader discovery",request.depth);for(const discoveredRoot of result.roots)batchRoots.push(discoveredRoot),rootDepths.set(discoveredRoot,result.rootDepths.get(discoveredRoot)??request.depth);for(const element of result.elements)batchElements.push(element),elementDepths.set(element,result.elementDepths.get(element)??request.depth)}return{roots:batchRoots,elements:batchElements,rootDepths,elementDepths}}function isElement(node){return nativeNodeType(node)===1}function observerConstructor(root){const fromWindow=ownerDocumentForNode(root)?.defaultView?.MutationObserver;return fromWindow||(typeof MutationObserver>"u"?void 0:MutationObserver)}function nativeParentNode(node){try{const NodeConstructor=ownerDocumentForNode(node)?.defaultView?.Node??(typeof Node>"u"?void 0:Node);return(NodeConstructor&&Object.getOwnPropertyDescriptor(NodeConstructor.prototype,"parentNode")?.get)?.call(node)??null}catch{return null}}function parentAcrossOpenShadowBoundary(node){const parent=nativeParentNode(node);if(parent)return parent;if(nativeNodeType(node)!==11||!("host"in node))return null;try{const ShadowRootConstructor=ownerDocumentForNode(node)?.defaultView?.ShadowRoot??(typeof ShadowRoot>"u"?void 0:ShadowRoot),host=(ShadowRootConstructor&&Object.getOwnPropertyDescriptor(ShadowRootConstructor.prototype,"host")?.get)?.call(node)??void 0;return host&&isElement(host)?host:null}catch{return null}}function spendAncestryWork(state,maximum){if(state.work>=maximum)throw new RenderedTreeTraversalError("Autoloader discovery","maxWork",maximum);state.work+=1}function renderedDepthFromRoot(root,node,state,maximumWork){let current=node,depth=0;const seen=new Set;for(;current&&!seen.has(current);){if(spendAncestryWork(state,maximumWork),current===root)return depth;if(seen.add(current),nativeNodeType(current)===11&&"host"in current){const host=parentAcrossOpenShadowBoundary(current);if(!host)return;depth+=1,current=host;continue}const parent=parentAcrossOpenShadowBoundary(current);if(!parent)return;isElement(parent)&&(depth+=1),current=parent}}function isReachableFromRoot(root,node,state,maximumWork){let current=node;const seen=new Set;for(;current&&!seen.has(current);){if(spendAncestryWork(state,maximumWork),current===root)return!0;seen.add(current),current=parentAcrossOpenShadowBoundary(current)}return!1}function observeRoot(context,root){!context.observer||context.observedRoots.has(root)||(context.observer.observe(root,{childList:!0,subtree:!0}),context.observedRoots.add(root))}function pruneDetachedObservedRoots(context,state){const observer=context.observer;if(!observer)return;const reachableRoots=[...context.observedRoots].filter(root=>isReachableFromRoot(context.root,root,state,context.options.traversal.maxWork));if(reachableRoots.length!==context.observedRoots.size){observer.disconnect(),context.observedRoots.clear();for(const root of reachableRoots)observeRoot(context,root)}}function openShadowRootFor(element){try{const ElementConstructor=element.ownerDocument?.defaultView?.Element??(typeof Element>"u"?void 0:Element);return(ElementConstructor&&Object.getOwnPropertyDescriptor(ElementConstructor.prototype,"shadowRoot")?.get)?.call(element)??void 0}catch{return}}async function finishDiscoveredElement(context,element){if(await waitForUpdate(element),!!context.active)return openShadowRootFor(element)}function prepareDiscoveryBatch(context,requestedRoots,state){if(!context.active||requestedRoots.length===0)return;const{roots,elements,elementDepths}=collectDiscoveryBatch(context,requestedRoots,state);for(const discoveredRoot of roots)observeRoot(context,discoveredRoot);const grouped=new Map,definedElements=[],markerClaims=new Map;for(const element of elements){const tag=nativeElementLocalName(element);if(!tag||!AUTOLOADER_TAG_SET.has(tag))continue;const typedTag=tag,entry=AUTOLOADER_MANIFEST[typedTag],registry=registryForRoot(element);if(!registry)continue;let alreadyDefined=!1;try{alreadyDefined=typeof registry.get=="function"&&registry.get(typedTag)!==void 0}catch{continue}if(alreadyDefined){const markerClaim=markPending(context,element);definedElements.push({element,depth:elementDepths.get(element)??0,markerClaim});continue}if(!isEligible(entry,context.options))continue;markerClaims.set(element,markPending(context,element));let tags=grouped.get(registry);tags||(tags=new Map,grouped.set(registry,tags));const matches=tags.get(typedTag)??[];matches.push(element),tags.set(typedTag,matches)}const definitions=[],elementsToFinish=[...definedElements];for(const[registry,tags]of grouped)for(const[tag,matches]of tags){const definition={registry,tag};definitions.push(definition),elementsToFinish.push(...matches.map(element=>({element,depth:elementDepths.get(element)??0,markerClaim:markerClaims.get(element),definition})))}return{definitions,elementsToFinish,state}}async function executeDiscoveryBatch(context,prepared){const{definitions,elementsToFinish,state}=prepared;try{let hasDefinitionFailure=!1,firstDefinitionFailure;const failedDefinitions=new Set;if(await runBounded(definitions,context.options.maxConcurrency,async definition=>{try{await withWorkSlot(context,()=>defineTag(context,definition.registry,definition.tag))}catch(error){failedDefinitions.add(definition),hasDefinitionFailure||(hasDefinitionFailure=!0,firstDefinitionFailure=error)}}),!context.active)return;const postUpdateRoots=new Map;if(await runBounded(elementsToFinish,context.options.maxConcurrency,async work=>{try{if(work.definition&&failedDefinitions.has(work.definition))return;const shadowRoot=await withWorkSlot(context,()=>finishDiscoveredElement(context,work.element));shadowRoot&&postUpdateRoots.set(shadowRoot,work.depth+1)}finally{work.markerClaim&&clearPending(work.markerClaim)}}),context.active&&postUpdateRoots.size>0&&await processDiscoveryBatch(context,[...postUpdateRoots].map(([root,depth])=>({root,depth})),state),hasDefinitionFailure)throw firstDefinitionFailure}finally{for(const{markerClaim}of elementsToFinish)markerClaim&&clearPending(markerClaim)}}async function processDiscoveryBatch(context,requestedRoots,state,queuedClaims=[]){const prepared=prepareDiscoveryBatch(context,requestedRoots,state);for(const claim of queuedClaims)clearPending(claim);prepared&&await executeDiscoveryBatch(context,prepared)}async function discoverRootsWithContext(context,roots){if(!context.active)return[];const before=new Set(context.loadedTags);return await processDiscoveryBatch(context,roots.map(root=>({root,depth:0})),newDiscoveryState()),[...context.loadedTags].filter(tag=>!before.has(tag))}function queueObservedDiscovery(context,roots,state){const queuedClaims=[];for(const{root}of roots){if(!isElement(root))continue;const localName=nativeElementLocalName(root);if(!localName||!AUTOLOADER_TAG_SET.has(localName))continue;const tag=localName,registry=registryForRoot(root);if(!registry)continue;let alreadyDefined=!1;try{alreadyDefined=typeof registry.get=="function"&&registry.get(tag)!==void 0}catch{continue}if(!alreadyDefined&&!isEligible(AUTOLOADER_MANIFEST[tag],context.options))continue;const claim=markPending(context,root);claim&&queuedClaims.push(claim)}const queued=context.discoveryTail.then(()=>processDiscoveryBatch(context,roots,state,queuedClaims));return context.discoveryTail=queued.then(()=>{},()=>{}),queued.finally(()=>{for(const claim of queuedClaims)clearPending(claim)})}function createContext(root,options){return{active:!0,root,options:normalizeOptions(options),markerClaims:new Set,definitionLoads:new WeakMap,loadedTags:new Set,observedRoots:new Set,discoveryTail:Promise.resolve()}}async function discover(root=defaultRoot(),options){if(!root||typeof root.querySelectorAll!="function")return[];const context=createContext(root,options);try{return await discoverRootsWithContext(context,[root])}finally{context.active=!1,clearAllPending(context)}}async function start(root=defaultRoot(),options){if(stop(),!root||typeof root.querySelectorAll!="function")return[];const context=createContext(root,options);activeContext=context;const Observer=observerConstructor(root);Observer&&(context.observer=new Observer(records=>{if(!context.active)return;const state=newDiscoveryState(),addedRoots=new Map;try{records.some(record=>record.removedNodes.length>0)&&pruneDetachedObservedRoots(context,state);for(const record of records)if(isReachableFromRoot(context.root,record.target,state,context.options.traversal.maxWork))for(const node of record.addedNodes){const nodeType=nativeNodeType(node);if(nodeType!==1&&nodeType!==11)continue;const depth=renderedDepthFromRoot(context.root,node,state,context.options.traversal.maxWork);depth!==void 0&&addedRoots.set(node,depth)}}catch(error){error instanceof RenderedTreeTraversalError&&emit(context,"lr-autoload-traversal-error",{limit:error.limit,maximum:error.maximum,error});return}addedRoots.size!==0&&queueObservedDiscovery(context,[...addedRoots].map(([discoveredRoot,depth])=>({root:discoveredRoot,depth})),state).catch(error=>{error instanceof RenderedTreeTraversalError&&emit(context,"lr-autoload-traversal-error",{limit:error.limit,maximum:error.maximum,error})})}));try{const initialDiscovery=discoverRootsWithContext(context,[root]);return context.discoveryTail=initialDiscovery.then(()=>{},()=>{}),await initialDiscovery}catch(error){throw activeContext===context&&stop(),error}}function stop(){const context=activeContext;context&&(activeContext=void 0,context.active=!1,context.observer?.disconnect(),context.observedRoots.clear(),clearAllPending(context))}export{AUTOLOADER_PENDING_ATTRIBUTE,discover,start,stop};
@@ -1,6 +1,5 @@
1
1
  import { type TemplateResult, type PropertyValues } from 'lit';
2
2
  import { LyraElement, type LyraEventDetailSnapshot } from '../../../internal/lyra-element.js';
3
- import '../../../internal/form-control-labels.js';
4
3
  import '../../forms/select/select.class.js';
5
4
  import '../../forms/combobox/option.class.js';
6
5
  import { type FormOwnerValue } from '../../../internal/form-associated.js';
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import"../../../internal/form-control-labels.js";import{nextId}from"../../../internal/a11y.js";import{AnchoredValidityController,resolveValidityAnchor,VALIDITY_ANCHOR}from"../../../internal/anchored-validity.js";import{syncValidityStates}from"../../../internal/custom-states.js";import{styles}from"./tool-param-form.styles.js";import"../../forms/select/select.class.js";import"../../forms/combobox/option.class.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{attachInternalsSafely,getFormOwner,installCustomErrorProperty,isBarredFromValidation,setFormOwner}from"../../../internal/form-associated.js";import{installInvalidEventAlias}from"../../../internal/invalid-event-alias.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LYRA_DEFAULT_fieldMustBeBoolean,LYRA_DEFAULT_fieldMustBeInteger,LYRA_DEFAULT_fieldMustBeNumber,LYRA_DEFAULT_fieldMustBeOneOf,LYRA_DEFAULT_fieldMustBeString,LYRA_DEFAULT_fieldMustEqual,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_noData,LYRA_DEFAULT_schemaMustBeObject,LYRA_DEFAULT_schemaPropertiesMustBeFlat,LYRA_DEFAULT_toolParamBooleanFalse,LYRA_DEFAULT_toolParamBooleanTrue,LYRA_DEFAULT_toolParamBooleanUnset,LYRA_DEFAULT_toolParamMissingProperty,LYRA_DEFAULT_toolParamSchemaLimit,LYRA_DEFAULT_unsupportedFieldType,LYRA_DEFAULT_valueMustBeSerializable}from"../../../internal/default-strings.generated.js";const MAX_SCHEMA_FIELDS=100,MAX_ENUM_OPTIONS=500,MAX_VALUE_ENTRIES=1e4,MAX_VALUE_NODES=5e4,MAX_VALUE_DEPTH=16,OMIT_VALUE=Symbol("omit-tool-param-value");function isPlainRecord(value){try{const prototype=Object.getPrototypeOf(value);return prototype===null||Object.getPrototypeOf(prototype)===null}catch{return!1}}function snapshotValueEntry(value,budget,depth){if(value===null||typeof value!="object"&&typeof value!="function"||typeof value=="function")return value;if(depth>MAX_VALUE_DEPTH||budget.remaining<=0)return budget.truncated=!0,OMIT_VALUE;const existing=budget.seen.get(value);if(existing!==void 0)return existing;let isArray=!1;try{isArray=Array.isArray(value)}catch{return budget.invalid=!0,OMIT_VALUE}if(isArray){const output2=[];budget.seen.set(value,output2);let length=0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length");descriptor&&"value"in descriptor&&typeof descriptor.value=="number"&&Number.isSafeInteger(descriptor.value)&&descriptor.value>=0&&(descriptor.value>MAX_VALUE_ENTRIES&&(budget.truncated=!0),length=Math.min(descriptor.value,MAX_VALUE_ENTRIES))}catch{budget.invalid=!0}for(let index=0;index<length&&budget.remaining>0;index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{budget.invalid=!0;continue}if(!descriptor)continue;if(!("value"in descriptor)){budget.invalid=!0;continue}budget.remaining-=1;const entry=snapshotValueEntry(descriptor.value,budget,depth+1);entry!==OMIT_VALUE&&output2.push(entry)}return budget.remaining<=0&&length>output2.length&&(budget.truncated=!0),Object.freeze(output2)}if(!isPlainRecord(value))return value;const output={};budget.seen.set(value,output);let descriptors;try{descriptors=Object.getOwnPropertyDescriptors(value)}catch{return budget.invalid=!0,OMIT_VALUE}let retained=0;for(const key of Reflect.ownKeys(descriptors)){const descriptor=descriptors[key];if(!descriptor?.enumerable)continue;if(retained>=MAX_VALUE_ENTRIES||budget.remaining<=0){budget.truncated=!0;break}if(!("value"in descriptor)){budget.invalid=!0;continue}retained+=1,budget.remaining-=1;const entry=snapshotValueEntry(descriptor.value,budget,depth+1);entry!==OMIT_VALUE&&Object.defineProperty(output,key,{value:entry,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}function snapshotFormValue(value){if(value==null)return{value:Object.freeze({}),invalid:!1,truncated:!1};let isArray=!1;try{isArray=Array.isArray(value)}catch{return{value:Object.freeze({}),invalid:!0,truncated:!1}}if(typeof value!="object"||isArray||!isPlainRecord(value))return{value:Object.freeze({}),invalid:!0,truncated:!1};const budget={remaining:MAX_VALUE_NODES,seen:new WeakMap,invalid:!1,truncated:!1},snapshot=snapshotValueEntry(value,budget,0);return{value:snapshot===OMIT_VALUE?Object.freeze({}):snapshot,invalid:budget.invalid||snapshot===OMIT_VALUE,truncated:budget.truncated}}const EMPTY_SCHEMA=Object.freeze({type:"object",properties:Object.freeze({})});function snapshotSchemaStringArray(value){let isArray=!1;try{isArray=Array.isArray(value)}catch{return{isArray:!1,exceededLimit:!1}}if(!isArray)return{isArray:!1,exceededLimit:!1};let sourceLength=0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length");descriptor&&"value"in descriptor&&typeof descriptor.value=="number"&&Number.isSafeInteger(descriptor.value)&&descriptor.value>=0&&(sourceLength=descriptor.value)}catch{return{isArray:!0,value:Object.freeze([]),exceededLimit:!1}}const output=[];for(let index=0;index<Math.min(sourceLength,MAX_SCHEMA_FIELDS);index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{continue}descriptor&&"value"in descriptor&&typeof descriptor.value=="string"&&output.push(descriptor.value)}return{isArray:!0,value:Object.freeze(output),exceededLimit:sourceLength>MAX_SCHEMA_FIELDS}}function snapshotSchema(value){if(value==null)return{schema:EMPTY_SCHEMA,shapeError:"",exceededLimits:!1};let isArray=!1;try{isArray=Array.isArray(value)}catch{return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1}}if(typeof value!="object"||isArray)return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1};let rootDescriptors;try{rootDescriptors=Object.getOwnPropertyDescriptors(value)}catch{return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1}}const typeDescriptor=rootDescriptors.type;if(!typeDescriptor||!("value"in typeDescriptor)||typeDescriptor.value!=="object")return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1};const propertiesDescriptor=rootDescriptors.properties,propertiesValue=propertiesDescriptor&&"value"in propertiesDescriptor?propertiesDescriptor.value:void 0;if(propertiesValue===null||typeof propertiesValue!="object"||!isPlainRecord(propertiesValue))return{schema:EMPTY_SCHEMA,shapeError:"properties",exceededLimits:!1};const properties=Object.create(null);let shapeError="",exceededLimits=!1,seenFields=0,propertyDescriptors;try{propertyDescriptors=Object.getOwnPropertyDescriptors(propertiesValue)}catch{return{schema:EMPTY_SCHEMA,shapeError:"properties",exceededLimits:!1}}for(const key of Reflect.ownKeys(propertyDescriptors)){const descriptor=propertyDescriptors[key];if(typeof key!="string"||!descriptor?.enumerable)continue;if(seenFields+=1,seenFields>MAX_SCHEMA_FIELDS){exceededLimits=!0;break}if(!("value"in descriptor)||descriptor.value===null||typeof descriptor.value!="object"||!isPlainRecord(descriptor.value)){shapeError="properties";continue}const propertySnapshot=snapshotFormValue(descriptor.value);if(propertySnapshot.invalid||propertySnapshot.truncated){shapeError="properties";continue}const property=propertySnapshot.value;let choices=property.enum;Array.isArray(choices)&&choices.length>MAX_ENUM_OPTIONS&&(exceededLimits=!0,choices=Object.freeze(choices.slice(0,MAX_ENUM_OPTIONS))),properties[key]=Object.freeze({...property,...choices===void 0?{}:{enum:choices}})}const requiredDescriptor=rootDescriptors.required;let required;if(requiredDescriptor&&"value"in requiredDescriptor){const requiredSnapshot=snapshotSchemaStringArray(requiredDescriptor.value);requiredSnapshot.isArray?(required=requiredSnapshot.value,requiredSnapshot.exceededLimit&&(exceededLimits=!0)):requiredDescriptor.enumerable&&(shapeError="properties")}else requiredDescriptor?.enumerable&&(shapeError="properties");return{schema:Object.freeze({type:"object",properties:Object.freeze(properties),...required===void 0?{}:{required}}),shapeError,exceededLimits}}function cloneFormValue(value,_ownerWindow){return snapshotFormValue(value).value}class LyraToolParamForm extends LyraElement{static{this.defaultStrings={...super.defaultStrings,fieldMustBeBoolean:LYRA_DEFAULT_fieldMustBeBoolean,fieldMustBeInteger:LYRA_DEFAULT_fieldMustBeInteger,fieldMustBeNumber:LYRA_DEFAULT_fieldMustBeNumber,fieldMustBeOneOf:LYRA_DEFAULT_fieldMustBeOneOf,fieldMustBeString:LYRA_DEFAULT_fieldMustBeString,fieldMustEqual:LYRA_DEFAULT_fieldMustEqual,fieldRequired:LYRA_DEFAULT_fieldRequired,noData:LYRA_DEFAULT_noData,schemaMustBeObject:LYRA_DEFAULT_schemaMustBeObject,schemaPropertiesMustBeFlat:LYRA_DEFAULT_schemaPropertiesMustBeFlat,toolParamBooleanFalse:LYRA_DEFAULT_toolParamBooleanFalse,toolParamBooleanTrue:LYRA_DEFAULT_toolParamBooleanTrue,toolParamBooleanUnset:LYRA_DEFAULT_toolParamBooleanUnset,toolParamMissingProperty:LYRA_DEFAULT_toolParamMissingProperty,toolParamSchemaLimit:LYRA_DEFAULT_toolParamSchemaLimit,unsupportedFieldType:LYRA_DEFAULT_unsupportedFieldType,valueMustBeSerializable:LYRA_DEFAULT_valueMustBeSerializable}}static{this.formAssociated=!0}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-validity-change","lr-input"])}static{this.properties={customError:{attribute:"custom-error",reflect:!0,noAccessor:!0},name:{reflect:!0,noAccessor:!0},schema:{attribute:!1,noAccessor:!0},value:{attribute:!1,noAccessor:!0},disabled:{type:Boolean,reflect:!0,noAccessor:!0}}}constructor(){super(),this._errors={},this._formError="",this.showFormError=!1,this.touchedFields=new Set,this.baseId=nextId("tool-param-form"),this._fieldsetDisabled=!1,this._name="",this._schema=EMPTY_SCHEMA,this.schemaInputShapeError="",this.schemaInputExceededLimits=!1,this._value=Object.freeze({}),this.valueInputInvalid=!1,this.valueInputTruncated=!1,this.defaultValueSnapshot=Object.freeze({}),this.defaultValueCaptured=!1,this._effectiveValue=Object.freeze({}),this._validityFlags={},this._disabled=!1,this.hasInteracted=!1,this.visibleErrorSnapshot=new Map,this.suppressNextErrorAnnouncement=!0,this.stopNestedControlEvent=e=>{e.stopPropagation()},this.onFieldFocus=()=>{this.emit("focus")},this.onFieldBlur=()=>{this.emit("blur")},this.internals=attachInternalsSafely(this),this.validityController=new AnchoredValidityController(this,this.internals,()=>this[VALIDITY_ANCHOR]()),installCustomErrorProperty(this,()=>this.validityController.customValidityMessage),installInvalidEventAlias(this,init=>this.emit("lr-invalid",null,init)),this.syncFormState()}get form(){return getFormOwner(this.internals)}set form(owner){setFormOwner(this,owner)}getForm(){return getFormOwner(this.internals)}get labels(){return this.internals.labels}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}get willValidate(){return this.internals.willValidate}[VALIDITY_ANCHOR](){const field=this.firstInvalidField();if(field){const input=field.querySelector("input.control");if(input)return input;for(const child of field.children){const anchor=resolveValidityAnchor(child);if(anchor)return anchor}}return this.firstMissingPropertyError()}firstInvalidField(){if(!this.renderRoot)return;const fields=Array.from(this.renderRoot.querySelectorAll('[part="field"]'));for(const key of Object.keys(this._errors)){const field=fields.find(candidate=>candidate.dataset.key===key);if(field)return field}}get missingRequiredKeys(){const properties=this.schemaProperties;return this.requiredKeys.filter(key=>!Object.prototype.hasOwnProperty.call(properties,key)&&!!this._errors[key])}firstMissingPropertyError(){if(!this.renderRoot)return;const errors=Array.from(this.renderRoot.querySelectorAll('[part="error"][data-missing-property]'));for(const key of Object.keys(this._errors)){const error=errors.find(candidate=>candidate.dataset.key===key);if(error)return error}}focusFirstControl(){if(!this.renderRoot)return;const controls=this.renderRoot.querySelectorAll("input.control, lr-select");for(const control of controls)if(!(control.disabled||control.getAttribute("aria-disabled")==="true")){control.focus();return}}click(){this.effectiveDisabled||this.focusFirstControl()}connectedCallback(){this.defaultValueCaptured||(this.defaultValueSnapshot=cloneFormValue(this._value,this.ownerDocument.defaultView),this.defaultValueCaptured=!0),super.connectedCallback(),this.errorAnnouncementSink?.element.ownerDocument!==this.ownerDocument&&(this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this})),this.hasUpdated&&(this.suppressNextErrorAnnouncement=!0,this.requestUpdate()),this.syncFormState()}disconnectedCallback(){super.disconnectedCallback(),this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=void 0,this.suppressNextErrorAnnouncement=!0}get effectiveValue(){return snapshotFormValue(this._effectiveValue).value}get schemaProperties(){return this._schema.properties}get requiredKeys(){return this._schema.required??Object.freeze([])}resolveEffectiveValue(){const props=this.schemaProperties,out={...this.value};for(const[key,prop]of Object.entries(props))!Object.prototype.hasOwnProperty.call(this.value,key)&&prop.default!==void 0&&Object.defineProperty(out,key,{configurable:!0,enumerable:!0,writable:!0,value:prop.default});return snapshotFormValue(out).value}get schema(){return this._schema}set schema(next){const old=this._schema,snapshot=snapshotSchema(next);this._schema=snapshot.schema,this.schemaInputShapeError=snapshot.shapeError,this.schemaInputExceededLimits=snapshot.exceededLimits,this.syncFormState(),this.requestUpdate("schema",old)}get value(){return this._value}set value(next){const old=this._value,snapshot=snapshotFormValue(next);this._value=snapshot.value,this.valueInputInvalid=snapshot.invalid,this.valueInputTruncated=snapshot.truncated,this.syncFormState(),this.requestUpdate("value",old)}get name(){return this._name}set name(next){const old=this._name;this._name=next??"",this._name?this.setAttribute("name",this._name):this.removeAttribute("name"),this.requestUpdate("name",old)}get disabled(){return this._disabled}set disabled(next){const old=this._disabled;this._disabled=!!next,this.toggleAttribute("disabled",this._disabled),this.applyValidity(),this.requestUpdate("disabled",old)}get effectiveDisabled(){return this.disabled||this._fieldsetDisabled}get errors(){return this.publicValidityErrors()}publicValidityErrors(){const errors={...this._errors};return this.willValidate&&(this.validityController.customValidityMessage||this._formError)&&(errors.base=this.validationMessage),Object.freeze(errors)}publishValiditySnapshot(){if(!this.isConnected)return;const valid=!this.willValidate||this.validity.valid,errors=valid?Object.freeze({}):this.publicValidityErrors(),key=JSON.stringify({valid,errors});key!==this.lastValidityKey&&(this.lastValidityKey=key,this.emit("lr-validity-change",Object.freeze({valid,errors})))}get formError(){return this._formError}computeValidation(effective){const props=this.schemaProperties,required=new Set(this.requiredKeys),out={},flags={},addError=(key,message)=>{Object.defineProperty(out,key,{configurable:!0,enumerable:!0,writable:!0,value:message})};for(const[key,prop]of Object.entries(props)){const type=prop?.type;if(type!=="string"&&type!=="number"&&type!=="integer"&&type!=="boolean"){addError(key,this.localize("unsupportedFieldType",void 0,{type:String(type)})),flags.customError=!0;continue}if(!(Object.prototype.hasOwnProperty.call(effective,key)&&effective[key]!==void 0)){required.has(key)&&(addError(key,this.localize("fieldRequired")),flags.valueMissing=!0);continue}const v=effective[key];if(type==="string"&&typeof v!="string"){addError(key,this.localize("fieldMustBeString")),flags.typeMismatch=!0;continue}if(type==="number"&&(typeof v!="number"||!Number.isFinite(v))){addError(key,this.localize("fieldMustBeNumber")),flags.typeMismatch=!0;continue}if(type==="integer"&&(typeof v!="number"||!Number.isFinite(v))){addError(key,this.localize("fieldMustBeInteger")),flags.typeMismatch=!0;continue}if(type==="integer"&&!Number.isInteger(v)){addError(key,this.localize("fieldMustBeInteger")),flags.stepMismatch=!0;continue}if(type==="boolean"&&typeof v!="boolean"){addError(key,this.localize("fieldMustBeBoolean")),flags.typeMismatch=!0;continue}if(type==="string"&&Array.isArray(prop.enum)&&!prop.enum.includes(v)){addError(key,this.localize("fieldMustBeOneOf",void 0,{values:getListFormat(this.effectiveLocale,{style:"long",type:"disjunction"}).format(prop.enum)})),flags.customError=!0;continue}prop.const!==void 0&&v!==prop.const&&(addError(key,this.localize("fieldMustEqual",void 0,{value:JSON.stringify(prop.const)})),flags.customError=!0)}for(const key of required)Object.prototype.hasOwnProperty.call(props,key)||(!Object.prototype.hasOwnProperty.call(effective,key)||effective[key]===void 0)&&(addError(key,this.localize("fieldRequired")),flags.valueMissing=!0);return{errors:out,flags}}checkValidity(){return this.syncFormState(),this.internals.checkValidity()}reportValidity(){this.hasInteracted=!0,this.syncFormState(),Object.keys(this._errors).length>0&&(this.touchedFields=new Set([...this.touchedFields,...Object.keys(this._errors)])),this._formError&&(this.showFormError=!0);const valid=this.internals.reportValidity();return!valid&&!this.firstInvalidField()&&this.missingRequiredKeys.length>0&&this.updateComplete.then(()=>{const error=this.firstMissingPropertyError();this.validityController.refreshAnchor(),error?.focus()}),valid}setCustomValidity(message){this.validityController.setCustomValidity(message??""),this.syncValidityCustomStates(),this.publishValiditySnapshot()}formResetCallback(){this.hasInteracted=!1,this.value=cloneFormValue(this.defaultValueSnapshot,this.ownerDocument.defaultView),this.touchedFields=new Set,this.showFormError=!1}formStateRestoreCallback(state2,_mode){let restored={};if(typeof state2=="string")try{const parsed=JSON.parse(state2);parsed!==null&&typeof parsed=="object"&&!Array.isArray(parsed)&&(restored=parsed)}catch{}this.value=restored}formDisabledCallback(disabled){this._fieldsetDisabled=disabled,this.applyValidity(),this.requestUpdate()}schemaShapeError(){return this.schemaInputShapeError==="object"?this.localize("schemaMustBeObject"):this.schemaInputShapeError==="properties"?this.localize("schemaPropertiesMustBeFlat"):this.schemaInputExceededLimits?this.localize("toolParamSchemaLimit",void 0,{fields:getNumberFormat(this.effectiveLocale).format(MAX_SCHEMA_FIELDS),options:getNumberFormat(this.effectiveLocale).format(MAX_ENUM_OPTIONS)}):""}serializeEffectiveValue(effective){const serialized=JSON.stringify(effective,(_key,value)=>{if(typeof value=="number"&&!Number.isFinite(value))throw new TypeError("Non-finite numbers are not JSON values.");return value});if(typeof serialized!="string")throw new TypeError("Value did not serialize to JSON.");return serialized}get barredFromValidation(){return isBarredFromValidation(this,this.internals)}syncInternals(formValue){this.internals.setFormValue(formValue,formValue),this.applyValidity()}applyValidity(){if(this.validityController){if(this.barredFromValidation||Object.keys(this._validityFlags).length===0)this.validityController.setValidity({});else{const firstMessage=Object.values(this._errors)[0]??this._formError;this.validityController.setValidity(this._validityFlags,firstMessage)}this.syncValidityCustomStates(),this.publishValiditySnapshot()}}syncValidityCustomStates(){syncValidityStates(this.internals,{required:this.requiredKeys.length>0,hasInteracted:this.hasInteracted,barred:this.barredFromValidation})}syncFormState(){let effective=Object.freeze({}),errors={},flags={},formError="",formValue=null;try{if(formError=this.schemaShapeError(),this.valueInputInvalid||this.valueInputTruncated)throw new TypeError("The value could not be retained within the public snapshot boundary.");effective=this.resolveEffectiveValue();const validation=this.computeValidation(effective);errors=validation.errors,flags=validation.flags,formValue=this.serializeEffectiveValue(effective)}catch{formError=this.localize("valueMustBeSerializable"),formValue=null}formError&&(flags.customError=!0,formValue=null),this._effectiveValue=effective,JSON.stringify(this._errors)!==JSON.stringify(errors)&&(this._errors=errors),this._formError=formError,this._validityFlags=flags,this.syncInternals(formValue)}updated(changed){if(super.updated(changed),this.publishValiditySnapshot(),changed.has("value")||changed.has("schema")||changed.has("_errors")||changed.has("_formError")){const nestedUpdates=Array.from(this.firstInvalidField()?.children??[]).filter(element=>typeof element[VALIDITY_ANCHOR]=="function").map(element=>element.updateComplete).filter(update=>update!==void 0);nestedUpdates.length>0&&Promise.all(nestedUpdates).then(()=>this.validityController.refreshAnchor())}const currentErrors=new Map;for(const node of this.renderRoot.querySelectorAll('[part="error"]')){const fieldKey=node.closest('[part~="field"]')?.dataset.key,key=node.dataset.key??fieldKey??"form",text=node.textContent?.trim()??"";text&&currentErrors.set(key,text)}if(!this.suppressNextErrorAnnouncement){const freshMessages=[];for(const[key,text]of currentErrors)this.visibleErrorSnapshot.get(key)!==text&&!freshMessages.includes(text)&&freshMessages.push(text);freshMessages.length>0&&this.errorAnnouncementSink?.announce(freshMessages.join(" "))}this.visibleErrorSnapshot=currentErrors,this.suppressNextErrorAnnouncement=!1}setFieldValue(key,val){this.effectiveDisabled||(this.hasInteracted=!0,this.value={...this.value,[key]:val},this.emit("lr-input",{value:this.effectiveValue}))}markTouched(key){this.hasInteracted=!0,this.syncValidityCustomStates(),!this.touchedFields.has(key)&&(this.touchedFields=new Set(this.touchedFields).add(key))}onTextInput(key,e){this.setFieldValue(key,e.target.value)}onNumberInput(key,e){const n=e.target.valueAsNumber;this.setFieldValue(key,Number.isNaN(n)?void 0:n)}onSelectChange(key,e){e.stopPropagation(),this.setFieldValue(key,e.target.value)}onBooleanSelectChange(key,e){e.stopPropagation();const value=e.target.value;if(value===""){if(this.effectiveDisabled)return;this.hasInteracted=!0;const next={...this.value};Reflect.deleteProperty(next,key),this.value=next,this.emit("lr-input",{value:this.effectiveValue});return}this.setFieldValue(key,value==="true")}renderControl(key,prop,fieldId,label,required,describedBy,errorMessage,effective){if(prop.type==="string"&&prop.enum&&prop.enum.length>0)return html`<lr-select
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{installFormControlLabelSupport}from"../../../internal/form-control-labels.js";installFormControlLabelSupport();import{nextId}from"../../../internal/a11y.js";import{AnchoredValidityController,resolveValidityAnchor,VALIDITY_ANCHOR}from"../../../internal/anchored-validity.js";import{syncValidityStates}from"../../../internal/custom-states.js";import{styles}from"./tool-param-form.styles.js";import"../../forms/select/select.class.js";import"../../forms/combobox/option.class.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{attachInternalsSafely,getFormOwner,installCustomErrorProperty,isBarredFromValidation,setFormOwner}from"../../../internal/form-associated.js";import{installInvalidEventAlias}from"../../../internal/invalid-event-alias.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LYRA_DEFAULT_fieldMustBeBoolean,LYRA_DEFAULT_fieldMustBeInteger,LYRA_DEFAULT_fieldMustBeNumber,LYRA_DEFAULT_fieldMustBeOneOf,LYRA_DEFAULT_fieldMustBeString,LYRA_DEFAULT_fieldMustEqual,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_noData,LYRA_DEFAULT_schemaMustBeObject,LYRA_DEFAULT_schemaPropertiesMustBeFlat,LYRA_DEFAULT_toolParamBooleanFalse,LYRA_DEFAULT_toolParamBooleanTrue,LYRA_DEFAULT_toolParamBooleanUnset,LYRA_DEFAULT_toolParamMissingProperty,LYRA_DEFAULT_toolParamSchemaLimit,LYRA_DEFAULT_unsupportedFieldType,LYRA_DEFAULT_valueMustBeSerializable}from"../../../internal/default-strings.generated.js";const MAX_SCHEMA_FIELDS=100,MAX_ENUM_OPTIONS=500,MAX_VALUE_ENTRIES=1e4,MAX_VALUE_NODES=5e4,MAX_VALUE_DEPTH=16,OMIT_VALUE=Symbol("omit-tool-param-value");function isPlainRecord(value){try{const prototype=Object.getPrototypeOf(value);return prototype===null||Object.getPrototypeOf(prototype)===null}catch{return!1}}function snapshotValueEntry(value,budget,depth){if(value===null||typeof value!="object"&&typeof value!="function"||typeof value=="function")return value;if(depth>MAX_VALUE_DEPTH||budget.remaining<=0)return budget.truncated=!0,OMIT_VALUE;const existing=budget.seen.get(value);if(existing!==void 0)return existing;let isArray=!1;try{isArray=Array.isArray(value)}catch{return budget.invalid=!0,OMIT_VALUE}if(isArray){const output2=[];budget.seen.set(value,output2);let length=0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length");descriptor&&"value"in descriptor&&typeof descriptor.value=="number"&&Number.isSafeInteger(descriptor.value)&&descriptor.value>=0&&(descriptor.value>MAX_VALUE_ENTRIES&&(budget.truncated=!0),length=Math.min(descriptor.value,MAX_VALUE_ENTRIES))}catch{budget.invalid=!0}for(let index=0;index<length&&budget.remaining>0;index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{budget.invalid=!0;continue}if(!descriptor)continue;if(!("value"in descriptor)){budget.invalid=!0;continue}budget.remaining-=1;const entry=snapshotValueEntry(descriptor.value,budget,depth+1);entry!==OMIT_VALUE&&output2.push(entry)}return budget.remaining<=0&&length>output2.length&&(budget.truncated=!0),Object.freeze(output2)}if(!isPlainRecord(value))return value;const output={};budget.seen.set(value,output);let descriptors;try{descriptors=Object.getOwnPropertyDescriptors(value)}catch{return budget.invalid=!0,OMIT_VALUE}let retained=0;for(const key of Reflect.ownKeys(descriptors)){const descriptor=descriptors[key];if(!descriptor?.enumerable)continue;if(retained>=MAX_VALUE_ENTRIES||budget.remaining<=0){budget.truncated=!0;break}if(!("value"in descriptor)){budget.invalid=!0;continue}retained+=1,budget.remaining-=1;const entry=snapshotValueEntry(descriptor.value,budget,depth+1);entry!==OMIT_VALUE&&Object.defineProperty(output,key,{value:entry,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}function snapshotFormValue(value){if(value==null)return{value:Object.freeze({}),invalid:!1,truncated:!1};let isArray=!1;try{isArray=Array.isArray(value)}catch{return{value:Object.freeze({}),invalid:!0,truncated:!1}}if(typeof value!="object"||isArray||!isPlainRecord(value))return{value:Object.freeze({}),invalid:!0,truncated:!1};const budget={remaining:MAX_VALUE_NODES,seen:new WeakMap,invalid:!1,truncated:!1},snapshot=snapshotValueEntry(value,budget,0);return{value:snapshot===OMIT_VALUE?Object.freeze({}):snapshot,invalid:budget.invalid||snapshot===OMIT_VALUE,truncated:budget.truncated}}const EMPTY_SCHEMA=Object.freeze({type:"object",properties:Object.freeze({})});function snapshotSchemaStringArray(value){let isArray=!1;try{isArray=Array.isArray(value)}catch{return{isArray:!1,exceededLimit:!1}}if(!isArray)return{isArray:!1,exceededLimit:!1};let sourceLength=0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length");descriptor&&"value"in descriptor&&typeof descriptor.value=="number"&&Number.isSafeInteger(descriptor.value)&&descriptor.value>=0&&(sourceLength=descriptor.value)}catch{return{isArray:!0,value:Object.freeze([]),exceededLimit:!1}}const output=[];for(let index=0;index<Math.min(sourceLength,MAX_SCHEMA_FIELDS);index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{continue}descriptor&&"value"in descriptor&&typeof descriptor.value=="string"&&output.push(descriptor.value)}return{isArray:!0,value:Object.freeze(output),exceededLimit:sourceLength>MAX_SCHEMA_FIELDS}}function snapshotSchema(value){if(value==null)return{schema:EMPTY_SCHEMA,shapeError:"",exceededLimits:!1};let isArray=!1;try{isArray=Array.isArray(value)}catch{return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1}}if(typeof value!="object"||isArray)return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1};let rootDescriptors;try{rootDescriptors=Object.getOwnPropertyDescriptors(value)}catch{return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1}}const typeDescriptor=rootDescriptors.type;if(!typeDescriptor||!("value"in typeDescriptor)||typeDescriptor.value!=="object")return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1};const propertiesDescriptor=rootDescriptors.properties,propertiesValue=propertiesDescriptor&&"value"in propertiesDescriptor?propertiesDescriptor.value:void 0;if(propertiesValue===null||typeof propertiesValue!="object"||!isPlainRecord(propertiesValue))return{schema:EMPTY_SCHEMA,shapeError:"properties",exceededLimits:!1};const properties=Object.create(null);let shapeError="",exceededLimits=!1,seenFields=0,propertyDescriptors;try{propertyDescriptors=Object.getOwnPropertyDescriptors(propertiesValue)}catch{return{schema:EMPTY_SCHEMA,shapeError:"properties",exceededLimits:!1}}for(const key of Reflect.ownKeys(propertyDescriptors)){const descriptor=propertyDescriptors[key];if(typeof key!="string"||!descriptor?.enumerable)continue;if(seenFields+=1,seenFields>MAX_SCHEMA_FIELDS){exceededLimits=!0;break}if(!("value"in descriptor)||descriptor.value===null||typeof descriptor.value!="object"||!isPlainRecord(descriptor.value)){shapeError="properties";continue}const propertySnapshot=snapshotFormValue(descriptor.value);if(propertySnapshot.invalid||propertySnapshot.truncated){shapeError="properties";continue}const property=propertySnapshot.value;let choices=property.enum;Array.isArray(choices)&&choices.length>MAX_ENUM_OPTIONS&&(exceededLimits=!0,choices=Object.freeze(choices.slice(0,MAX_ENUM_OPTIONS))),properties[key]=Object.freeze({...property,...choices===void 0?{}:{enum:choices}})}const requiredDescriptor=rootDescriptors.required;let required;if(requiredDescriptor&&"value"in requiredDescriptor){const requiredSnapshot=snapshotSchemaStringArray(requiredDescriptor.value);requiredSnapshot.isArray?(required=requiredSnapshot.value,requiredSnapshot.exceededLimit&&(exceededLimits=!0)):requiredDescriptor.enumerable&&(shapeError="properties")}else requiredDescriptor?.enumerable&&(shapeError="properties");return{schema:Object.freeze({type:"object",properties:Object.freeze(properties),...required===void 0?{}:{required}}),shapeError,exceededLimits}}function cloneFormValue(value,_ownerWindow){return snapshotFormValue(value).value}class LyraToolParamForm extends LyraElement{static{this.defaultStrings={...super.defaultStrings,fieldMustBeBoolean:LYRA_DEFAULT_fieldMustBeBoolean,fieldMustBeInteger:LYRA_DEFAULT_fieldMustBeInteger,fieldMustBeNumber:LYRA_DEFAULT_fieldMustBeNumber,fieldMustBeOneOf:LYRA_DEFAULT_fieldMustBeOneOf,fieldMustBeString:LYRA_DEFAULT_fieldMustBeString,fieldMustEqual:LYRA_DEFAULT_fieldMustEqual,fieldRequired:LYRA_DEFAULT_fieldRequired,noData:LYRA_DEFAULT_noData,schemaMustBeObject:LYRA_DEFAULT_schemaMustBeObject,schemaPropertiesMustBeFlat:LYRA_DEFAULT_schemaPropertiesMustBeFlat,toolParamBooleanFalse:LYRA_DEFAULT_toolParamBooleanFalse,toolParamBooleanTrue:LYRA_DEFAULT_toolParamBooleanTrue,toolParamBooleanUnset:LYRA_DEFAULT_toolParamBooleanUnset,toolParamMissingProperty:LYRA_DEFAULT_toolParamMissingProperty,toolParamSchemaLimit:LYRA_DEFAULT_toolParamSchemaLimit,unsupportedFieldType:LYRA_DEFAULT_unsupportedFieldType,valueMustBeSerializable:LYRA_DEFAULT_valueMustBeSerializable}}static{this.formAssociated=!0}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-validity-change","lr-input"])}static{this.properties={customError:{attribute:"custom-error",reflect:!0,noAccessor:!0},name:{reflect:!0,noAccessor:!0},schema:{attribute:!1,noAccessor:!0},value:{attribute:!1,noAccessor:!0},disabled:{type:Boolean,reflect:!0,noAccessor:!0}}}constructor(){super(),this._errors={},this._formError="",this.showFormError=!1,this.touchedFields=new Set,this.baseId=nextId("tool-param-form"),this._fieldsetDisabled=!1,this._name="",this._schema=EMPTY_SCHEMA,this.schemaInputShapeError="",this.schemaInputExceededLimits=!1,this._value=Object.freeze({}),this.valueInputInvalid=!1,this.valueInputTruncated=!1,this.defaultValueSnapshot=Object.freeze({}),this.defaultValueCaptured=!1,this._effectiveValue=Object.freeze({}),this._validityFlags={},this._disabled=!1,this.hasInteracted=!1,this.visibleErrorSnapshot=new Map,this.suppressNextErrorAnnouncement=!0,this.stopNestedControlEvent=e=>{e.stopPropagation()},this.onFieldFocus=()=>{this.emit("focus")},this.onFieldBlur=()=>{this.emit("blur")},this.internals=attachInternalsSafely(this),this.validityController=new AnchoredValidityController(this,this.internals,()=>this[VALIDITY_ANCHOR]()),installCustomErrorProperty(this,()=>this.validityController.customValidityMessage),installInvalidEventAlias(this,init=>this.emit("lr-invalid",null,init)),this.syncFormState()}get form(){return getFormOwner(this.internals)}set form(owner){setFormOwner(this,owner)}getForm(){return getFormOwner(this.internals)}get labels(){return this.internals.labels}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}get willValidate(){return this.internals.willValidate}[VALIDITY_ANCHOR](){const field=this.firstInvalidField();if(field){const input=field.querySelector("input.control");if(input)return input;for(const child of field.children){const anchor=resolveValidityAnchor(child);if(anchor)return anchor}}return this.firstMissingPropertyError()}firstInvalidField(){if(!this.renderRoot)return;const fields=Array.from(this.renderRoot.querySelectorAll('[part="field"]'));for(const key of Object.keys(this._errors)){const field=fields.find(candidate=>candidate.dataset.key===key);if(field)return field}}get missingRequiredKeys(){const properties=this.schemaProperties;return this.requiredKeys.filter(key=>!Object.prototype.hasOwnProperty.call(properties,key)&&!!this._errors[key])}firstMissingPropertyError(){if(!this.renderRoot)return;const errors=Array.from(this.renderRoot.querySelectorAll('[part="error"][data-missing-property]'));for(const key of Object.keys(this._errors)){const error=errors.find(candidate=>candidate.dataset.key===key);if(error)return error}}focusFirstControl(){if(!this.renderRoot)return;const controls=this.renderRoot.querySelectorAll("input.control, lr-select");for(const control of controls)if(!(control.disabled||control.getAttribute("aria-disabled")==="true")){control.focus();return}}click(){this.effectiveDisabled||this.focusFirstControl()}connectedCallback(){this.defaultValueCaptured||(this.defaultValueSnapshot=cloneFormValue(this._value,this.ownerDocument.defaultView),this.defaultValueCaptured=!0),super.connectedCallback(),this.errorAnnouncementSink?.element.ownerDocument!==this.ownerDocument&&(this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this})),this.hasUpdated&&(this.suppressNextErrorAnnouncement=!0,this.requestUpdate()),this.syncFormState()}disconnectedCallback(){super.disconnectedCallback(),this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=void 0,this.suppressNextErrorAnnouncement=!0}get effectiveValue(){return snapshotFormValue(this._effectiveValue).value}get schemaProperties(){return this._schema.properties}get requiredKeys(){return this._schema.required??Object.freeze([])}resolveEffectiveValue(){const props=this.schemaProperties,out={...this.value};for(const[key,prop]of Object.entries(props))!Object.prototype.hasOwnProperty.call(this.value,key)&&prop.default!==void 0&&Object.defineProperty(out,key,{configurable:!0,enumerable:!0,writable:!0,value:prop.default});return snapshotFormValue(out).value}get schema(){return this._schema}set schema(next){const old=this._schema,snapshot=snapshotSchema(next);this._schema=snapshot.schema,this.schemaInputShapeError=snapshot.shapeError,this.schemaInputExceededLimits=snapshot.exceededLimits,this.syncFormState(),this.requestUpdate("schema",old)}get value(){return this._value}set value(next){const old=this._value,snapshot=snapshotFormValue(next);this._value=snapshot.value,this.valueInputInvalid=snapshot.invalid,this.valueInputTruncated=snapshot.truncated,this.syncFormState(),this.requestUpdate("value",old)}get name(){return this._name}set name(next){const old=this._name;this._name=next??"",this._name?this.setAttribute("name",this._name):this.removeAttribute("name"),this.requestUpdate("name",old)}get disabled(){return this._disabled}set disabled(next){const old=this._disabled;this._disabled=!!next,this.toggleAttribute("disabled",this._disabled),this.applyValidity(),this.requestUpdate("disabled",old)}get effectiveDisabled(){return this.disabled||this._fieldsetDisabled}get errors(){return this.publicValidityErrors()}publicValidityErrors(){const errors={...this._errors};return this.willValidate&&(this.validityController.customValidityMessage||this._formError)&&(errors.base=this.validationMessage),Object.freeze(errors)}publishValiditySnapshot(){if(!this.isConnected)return;const valid=!this.willValidate||this.validity.valid,errors=valid?Object.freeze({}):this.publicValidityErrors(),key=JSON.stringify({valid,errors});key!==this.lastValidityKey&&(this.lastValidityKey=key,this.emit("lr-validity-change",Object.freeze({valid,errors})))}get formError(){return this._formError}computeValidation(effective){const props=this.schemaProperties,required=new Set(this.requiredKeys),out={},flags={},addError=(key,message)=>{Object.defineProperty(out,key,{configurable:!0,enumerable:!0,writable:!0,value:message})};for(const[key,prop]of Object.entries(props)){const type=prop?.type;if(type!=="string"&&type!=="number"&&type!=="integer"&&type!=="boolean"){addError(key,this.localize("unsupportedFieldType",void 0,{type:String(type)})),flags.customError=!0;continue}if(!(Object.prototype.hasOwnProperty.call(effective,key)&&effective[key]!==void 0)){required.has(key)&&(addError(key,this.localize("fieldRequired")),flags.valueMissing=!0);continue}const v=effective[key];if(type==="string"&&typeof v!="string"){addError(key,this.localize("fieldMustBeString")),flags.typeMismatch=!0;continue}if(type==="number"&&(typeof v!="number"||!Number.isFinite(v))){addError(key,this.localize("fieldMustBeNumber")),flags.typeMismatch=!0;continue}if(type==="integer"&&(typeof v!="number"||!Number.isFinite(v))){addError(key,this.localize("fieldMustBeInteger")),flags.typeMismatch=!0;continue}if(type==="integer"&&!Number.isInteger(v)){addError(key,this.localize("fieldMustBeInteger")),flags.stepMismatch=!0;continue}if(type==="boolean"&&typeof v!="boolean"){addError(key,this.localize("fieldMustBeBoolean")),flags.typeMismatch=!0;continue}if(type==="string"&&Array.isArray(prop.enum)&&!prop.enum.includes(v)){addError(key,this.localize("fieldMustBeOneOf",void 0,{values:getListFormat(this.effectiveLocale,{style:"long",type:"disjunction"}).format(prop.enum)})),flags.customError=!0;continue}prop.const!==void 0&&v!==prop.const&&(addError(key,this.localize("fieldMustEqual",void 0,{value:JSON.stringify(prop.const)})),flags.customError=!0)}for(const key of required)Object.prototype.hasOwnProperty.call(props,key)||(!Object.prototype.hasOwnProperty.call(effective,key)||effective[key]===void 0)&&(addError(key,this.localize("fieldRequired")),flags.valueMissing=!0);return{errors:out,flags}}checkValidity(){return this.syncFormState(),this.internals.checkValidity()}reportValidity(){this.hasInteracted=!0,this.syncFormState(),Object.keys(this._errors).length>0&&(this.touchedFields=new Set([...this.touchedFields,...Object.keys(this._errors)])),this._formError&&(this.showFormError=!0);const valid=this.internals.reportValidity();return!valid&&!this.firstInvalidField()&&this.missingRequiredKeys.length>0&&this.updateComplete.then(()=>{const error=this.firstMissingPropertyError();this.validityController.refreshAnchor(),error?.focus()}),valid}setCustomValidity(message){this.validityController.setCustomValidity(message??""),this.syncValidityCustomStates(),this.publishValiditySnapshot()}formResetCallback(){this.hasInteracted=!1,this.value=cloneFormValue(this.defaultValueSnapshot,this.ownerDocument.defaultView),this.touchedFields=new Set,this.showFormError=!1}formStateRestoreCallback(state2,_mode){let restored={};if(typeof state2=="string")try{const parsed=JSON.parse(state2);parsed!==null&&typeof parsed=="object"&&!Array.isArray(parsed)&&(restored=parsed)}catch{}this.value=restored}formDisabledCallback(disabled){this._fieldsetDisabled=disabled,this.applyValidity(),this.requestUpdate()}schemaShapeError(){return this.schemaInputShapeError==="object"?this.localize("schemaMustBeObject"):this.schemaInputShapeError==="properties"?this.localize("schemaPropertiesMustBeFlat"):this.schemaInputExceededLimits?this.localize("toolParamSchemaLimit",void 0,{fields:getNumberFormat(this.effectiveLocale).format(MAX_SCHEMA_FIELDS),options:getNumberFormat(this.effectiveLocale).format(MAX_ENUM_OPTIONS)}):""}serializeEffectiveValue(effective){const serialized=JSON.stringify(effective,(_key,value)=>{if(typeof value=="number"&&!Number.isFinite(value))throw new TypeError("Non-finite numbers are not JSON values.");return value});if(typeof serialized!="string")throw new TypeError("Value did not serialize to JSON.");return serialized}get barredFromValidation(){return isBarredFromValidation(this,this.internals)}syncInternals(formValue){this.internals.setFormValue(formValue,formValue),this.applyValidity()}applyValidity(){if(this.validityController){if(this.barredFromValidation||Object.keys(this._validityFlags).length===0)this.validityController.setValidity({});else{const firstMessage=Object.values(this._errors)[0]??this._formError;this.validityController.setValidity(this._validityFlags,firstMessage)}this.syncValidityCustomStates(),this.publishValiditySnapshot()}}syncValidityCustomStates(){syncValidityStates(this.internals,{required:this.requiredKeys.length>0,hasInteracted:this.hasInteracted,barred:this.barredFromValidation})}syncFormState(){let effective=Object.freeze({}),errors={},flags={},formError="",formValue=null;try{if(formError=this.schemaShapeError(),this.valueInputInvalid||this.valueInputTruncated)throw new TypeError("The value could not be retained within the public snapshot boundary.");effective=this.resolveEffectiveValue();const validation=this.computeValidation(effective);errors=validation.errors,flags=validation.flags,formValue=this.serializeEffectiveValue(effective)}catch{formError=this.localize("valueMustBeSerializable"),formValue=null}formError&&(flags.customError=!0,formValue=null),this._effectiveValue=effective,JSON.stringify(this._errors)!==JSON.stringify(errors)&&(this._errors=errors),this._formError=formError,this._validityFlags=flags,this.syncInternals(formValue)}updated(changed){if(super.updated(changed),this.publishValiditySnapshot(),changed.has("value")||changed.has("schema")||changed.has("_errors")||changed.has("_formError")){const nestedUpdates=Array.from(this.firstInvalidField()?.children??[]).filter(element=>typeof element[VALIDITY_ANCHOR]=="function").map(element=>element.updateComplete).filter(update=>update!==void 0);nestedUpdates.length>0&&Promise.all(nestedUpdates).then(()=>this.validityController.refreshAnchor())}const currentErrors=new Map;for(const node of this.renderRoot.querySelectorAll('[part="error"]')){const fieldKey=node.closest('[part~="field"]')?.dataset.key,key=node.dataset.key??fieldKey??"form",text=node.textContent?.trim()??"";text&&currentErrors.set(key,text)}if(!this.suppressNextErrorAnnouncement){const freshMessages=[];for(const[key,text]of currentErrors)this.visibleErrorSnapshot.get(key)!==text&&!freshMessages.includes(text)&&freshMessages.push(text);freshMessages.length>0&&this.errorAnnouncementSink?.announce(freshMessages.join(" "))}this.visibleErrorSnapshot=currentErrors,this.suppressNextErrorAnnouncement=!1}setFieldValue(key,val){this.effectiveDisabled||(this.hasInteracted=!0,this.value={...this.value,[key]:val},this.emit("lr-input",{value:this.effectiveValue}))}markTouched(key){this.hasInteracted=!0,this.syncValidityCustomStates(),!this.touchedFields.has(key)&&(this.touchedFields=new Set(this.touchedFields).add(key))}onTextInput(key,e){this.setFieldValue(key,e.target.value)}onNumberInput(key,e){const n=e.target.valueAsNumber;this.setFieldValue(key,Number.isNaN(n)?void 0:n)}onSelectChange(key,e){e.stopPropagation(),this.setFieldValue(key,e.target.value)}onBooleanSelectChange(key,e){e.stopPropagation();const value=e.target.value;if(value===""){if(this.effectiveDisabled)return;this.hasInteracted=!0;const next={...this.value};Reflect.deleteProperty(next,key),this.value=next,this.emit("lr-input",{value:this.effectiveValue});return}this.setFieldValue(key,value==="true")}renderControl(key,prop,fieldId,label,required,describedBy,errorMessage,effective){if(prop.type==="string"&&prop.enum&&prop.enum.length>0)return html`<lr-select
2
2
  id=${fieldId}
3
3
  .label=${label}
4
4
  .hint=${prop.description??""}
@@ -322,7 +322,19 @@ export declare class LyraChart extends LyraElement<LyraChartEventMap> {
322
322
  * indexes are ignored when state is applied or emitted.
323
323
  */
324
324
  hiddenDatasets?: readonly number[];
325
- /** Accessible chart description. */
325
+ /**
326
+ * Accessible chart description, which REPLACES the generated summary rather than adding to it.
327
+ *
328
+ * Left unset, the component builds an sr-only per-series summary from the actual data. Setting
329
+ * this discards that summary entirely and substitutes your text -- a full override, which is the
330
+ * right tool when you can describe the chart better than a generic walk of the series can.
331
+ *
332
+ * It is the wrong tool for adding a caveat ("excludes returns", "sampled hourly") on top of the
333
+ * data summary: you would trade the whole summary for the caveat, and a consumer reasonably read
334
+ * the old one-line doc as additive and did exactly that. For a caveat, prefer visible text beside
335
+ * the chart -- a note only screen-reader users hear is worse for everyone than one everybody
336
+ * sees -- or fold the data into your own `description` text if you are overriding anyway.
337
+ */
326
338
  description: string | null;
327
339
  /** Controls which cartesian grid axes are drawn. */
328
340
  grid: LyraChartGrid;
@@ -2,7 +2,6 @@ export interface HistogramBucket {
2
2
  label: string;
3
3
  count: number;
4
4
  }
5
- export declare const MAX_HISTOGRAM_BINS = 1000;
6
5
  /** Converts an untyped bucket count to a bounded, non-negative integer. */
7
6
  export declare function normalizeHistogramBinCount(binCount: unknown): number;
8
7
  /** Splits `values` into `binCount` equal-width buckets and counts membership.
@@ -1 +1 @@
1
- import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteInterpolate,finiteRatio}from"../../../internal/numbers.js";const MAX_HISTOGRAM_BINS=1e3,LEFT_TO_RIGHT_ISOLATE="\u2066",POP_DIRECTIONAL_ISOLATE="\u2069";function normalizeHistogramBinCount(binCount){const numeric=typeof binCount=="number"?binCount:Number(binCount);return Number.isFinite(numeric)?Math.min(MAX_HISTOGRAM_BINS,Math.max(0,Math.floor(numeric))):0}function binValues(values,binCount,locale){const finite=values.filter(v=>Number.isFinite(v));if(finite.length===0)return[];const bins=normalizeHistogramBinCount(binCount);if(bins<=0)return[];let lo=finite[0],hi=finite[0];for(const v of finite)v<lo&&(lo=v),v>hi&&(hi=v);const constant=hi===lo,numberFormat=getNumberFormat(locale,{minimumFractionDigits:1,maximumFractionDigits:1});if(constant)return[{label:`${LEFT_TO_RIGHT_ISOLATE}${numberFormat.format(lo)}${POP_DIRECTIONAL_ISOLATE}`,count:finite.length}];const labelHi=hi,formatRange=numberFormat.formatRange?.bind(numberFormat),buckets=Array.from({length:bins},(_,i)=>{const bLo=finiteInterpolate(lo,labelHi,i/bins),bHi=finiteInterpolate(lo,labelHi,(i+1)/bins);return{label:`${LEFT_TO_RIGHT_ISOLATE}${formatRange?formatRange(bLo,bHi):`${numberFormat.format(bLo)}\u2013${numberFormat.format(bHi)}`}${POP_DIRECTIONAL_ISOLATE}`,count:0}});for(const v of finite){const index=Math.floor(finiteRatio(v,lo,hi)*bins);buckets[Math.min(bins-1,Math.max(0,index))].count++}return buckets}export{MAX_HISTOGRAM_BINS,binValues,normalizeHistogramBinCount};
1
+ import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteInterpolate,finiteRatio}from"../../../internal/numbers.js";const MAX_HISTOGRAM_BINS=1e3,LEFT_TO_RIGHT_ISOLATE="\u2066",POP_DIRECTIONAL_ISOLATE="\u2069";function normalizeHistogramBinCount(binCount){const numeric=typeof binCount=="number"?binCount:Number(binCount);return Number.isFinite(numeric)?Math.min(MAX_HISTOGRAM_BINS,Math.max(0,Math.floor(numeric))):0}function binValues(values,binCount,locale){const finite=values.filter(v=>Number.isFinite(v));if(finite.length===0)return[];const bins=normalizeHistogramBinCount(binCount);if(bins<=0)return[];let lo=finite[0],hi=finite[0];for(const v of finite)v<lo&&(lo=v),v>hi&&(hi=v);const constant=hi===lo,numberFormat=getNumberFormat(locale,{minimumFractionDigits:1,maximumFractionDigits:1});if(constant)return[{label:`${LEFT_TO_RIGHT_ISOLATE}${numberFormat.format(lo)}${POP_DIRECTIONAL_ISOLATE}`,count:finite.length}];const labelHi=hi,formatRange=numberFormat.formatRange?.bind(numberFormat),buckets=Array.from({length:bins},(_,i)=>{const bLo=finiteInterpolate(lo,labelHi,i/bins),bHi=finiteInterpolate(lo,labelHi,(i+1)/bins);return{label:`${LEFT_TO_RIGHT_ISOLATE}${formatRange?formatRange(bLo,bHi):`${numberFormat.format(bLo)}\u2013${numberFormat.format(bHi)}`}${POP_DIRECTIONAL_ISOLATE}`,count:0}});for(const v of finite){const index=Math.floor(finiteRatio(v,lo,hi)*bins);buckets[Math.min(bins-1,Math.max(0,index))].count++}return buckets}export{binValues,normalizeHistogramBinCount};
@@ -66,7 +66,8 @@ export interface LyraLiteChartEventMap {
66
66
  * `layout="scroll"` (+ `barWidth`) gives every bar a fixed pixel width and
67
67
  * lets the plot overflow the host horizontally (scrollable) instead of
68
68
  * squeezing; `maxLabels` decimates which x-axis text labels render (bars
69
- * always still render) once there are more categories than that; and
69
+ * always still render) once there are more categories than that, with
70
+ * `maxLabels="auto"` deriving the cap from the allocated plot width; and
70
71
  * `barX` lets a consumer hand in its own per-category x-coordinate function
71
72
  * — e.g. to pixel-align this chart's bars with a sibling `lr-heatmap`'s
72
73
  * calendar columns — overriding the internal slot math for both bars and
@@ -78,7 +79,8 @@ export interface LyraLiteChartEventMap {
78
79
  * template when unset; `roundedBars` draws bars as a rounded-top path
79
80
  * instead of a square-cornered rect; `skipZero` omits a bar entirely (not
80
81
  * just zero-height) for an exactly-`0` value; `valueAxisGutter`/`barGapRatio`
81
- * override the internal `PAD_LEFT`/`BAR_GROUP_GAP` layout constants; `scale`
82
+ * override the internal `PAD_LEFT`/`BAR_GROUP_GAP` layout constants, while
83
+ * `valueAxisGutter="auto"` sizes the gutter from the rendered tick strings; `scale`
82
84
  * (`type="bar"` only) switches the bar-height mapping from the default
83
85
  * linear `niceDomain` fraction to a `Math.sqrt(value / domainMax)`
84
86
  * compression (mirroring `lr-heatmap`'s matrix-mode `sqrt` scale) so a
@@ -231,10 +233,12 @@ export declare class LyraLiteChart extends LyraElement<LyraLiteChartEventMap> {
231
233
  * so an excessive requested width is reduced as needed to keep SVG and CSS geometry finite. */
232
234
  barWidth: number;
233
235
  /** Caps how many x-axis category labels render text once `this.labels.length` exceeds it,
234
- * decimating roughly evenly while always keeping the first and last label. Bars themselves
235
- * always render regardless only the axis text is decimated. Unset (the default) renders every
236
+ * decimating roughly evenly while always keeping the first and last label. `'auto'` derives a
237
+ * deterministic cap from the resolved plot width and widest rendered category label using the
238
+ * same width estimate as label ellipsis. Bars themselves always render regardless — only the
239
+ * axis text is decimated. An explicit number is authoritative. Unset (the default) renders every
236
240
  * label, unchanged from before this property existed. Works in either `layout` mode. */
237
- maxLabels?: number;
241
+ maxLabels?: number | 'auto';
238
242
  /** Overrides the x-origin `renderBars()`/the category labels would otherwise compute internally
239
243
  * for a given category index, for `type="bar"` only (bars and their axis labels stay
240
244
  * consistent with each other either way). Lets a consumer pixel-align this chart's bars with,
@@ -260,9 +264,14 @@ export declare class LyraLiteChart extends LyraElement<LyraLiteChartEventMap> {
260
264
  * is exactly `0` — `null`/non-finite values are always skipped regardless of this flag. Default
261
265
  * `false` preserves today's behavior of a zero-height but focusable/titled bar. */
262
266
  skipZero: boolean;
263
- /** Overrides the internal `PAD_LEFT` (36px) axis-gutter constant. The gutter is on the left in
264
- * LTR and the right in RTL, keeping the y axis at logical start. Unset keeps the 36px default. */
265
- valueAxisGutter?: number;
267
+ /** Overrides the internal `PAD_LEFT` (36px) axis-gutter constant, or accepts `'auto'` to size the
268
+ * gutter from the exact formatted tick strings rendered in the current pass. Automatic sizing
269
+ * never shrinks below 36px. Fit layout bounds it to the smaller of 240px or 40% of the measured
270
+ * SVG width; scroll layout bounds it at 240px without feeding the explicitly-sized SVG's own
271
+ * width back into its gutter. An explicit numeric value is authoritative and retains the
272
+ * established 0..1,000,000px finite guard. The gutter is on the left in LTR and the right in
273
+ * RTL, keeping the y axis at logical start. Unset keeps the 36px default. */
274
+ valueAxisGutter?: number | 'auto';
266
275
  /** Overrides the internal `BAR_GROUP_GAP` (0.2) fraction of a category slot left as a gap between
267
276
  * categories. Unset (the default) keeps today's fixed 0.2. */
268
277
  barGapRatio?: number;
@@ -457,6 +466,7 @@ export declare class LyraLiteChart extends LyraElement<LyraLiteChartEventMap> {
457
466
  private emitPoint;
458
467
  private emitNearestLinePoint;
459
468
  private onPointKeyDown;
469
+ private formatValueAxisTick;
460
470
  private renderGrid;
461
471
  /**
462
472
  * `slot` is the per-category width to lay bars out against — either the
@@ -468,10 +478,13 @@ export declare class LyraLiteChart extends LyraElement<LyraLiteChartEventMap> {
468
478
  private renderBars;
469
479
  private renderLines;
470
480
  render(): TemplateResult;
481
+ private resolvedValueAxisGutter;
482
+ private automaticMaxLabels;
471
483
  /** Indexes retained by `maxLabels`, distributed across the complete domain so the sample
472
484
  * immediately before the forced final endpoint can never bunch against it. The generated mark
473
485
  * sample caps the useful result at 1,000, so this selector must do the same rather than allocate
474
- * an arbitrary consumer-supplied `maxLabels` count. `undefined` means every *sampled* label
486
+ * an arbitrary consumer-supplied `maxLabels` count. In auto mode the resolved plot width and
487
+ * rendered source indexes supply a deterministic cap. `undefined` means every *sampled* label
475
488
  * renders, preserving the default and non-finite-value behavior. */
476
489
  private visibleLabelIndexes;
477
490
  private displayCategoryLabel;