@aceshooting/lyra-ui 2.1.0 → 2.2.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.
- package/README.md +32 -17
- package/custom-elements.json +37419 -20401
- package/dist/components/app-rail/app-rail-item.class.d.ts +36 -0
- package/dist/components/app-rail/app-rail-item.class.d.ts.map +1 -0
- package/dist/components/app-rail/app-rail-item.class.js +77 -0
- package/dist/components/app-rail/app-rail-item.class.js.map +1 -0
- package/dist/components/app-rail/app-rail-item.d.ts +2 -30
- package/dist/components/app-rail/app-rail-item.d.ts.map +1 -0
- package/dist/components/app-rail/app-rail-item.js +3 -66
- package/dist/components/app-rail/app-rail-item.js.map +1 -0
- package/dist/components/app-rail/app-rail-item.styles.d.ts +1 -0
- package/dist/components/app-rail/app-rail-item.styles.d.ts.map +1 -0
- package/dist/components/app-rail/app-rail-item.styles.js +9 -3
- package/dist/components/app-rail/app-rail-item.styles.js.map +1 -0
- package/dist/components/app-rail/app-rail.class.d.ts +213 -0
- package/dist/components/app-rail/app-rail.class.d.ts.map +1 -0
- package/dist/components/app-rail/app-rail.class.js +545 -0
- package/dist/components/app-rail/app-rail.class.js.map +1 -0
- package/dist/components/app-rail/app-rail.d.ts +3 -168
- package/dist/components/app-rail/app-rail.d.ts.map +1 -0
- package/dist/components/app-rail/app-rail.js +4 -417
- package/dist/components/app-rail/app-rail.js.map +1 -0
- package/dist/components/app-rail/app-rail.styles.d.ts +1 -0
- package/dist/components/app-rail/app-rail.styles.d.ts.map +1 -0
- package/dist/components/app-rail/app-rail.styles.js +39 -10
- package/dist/components/app-rail/app-rail.styles.js.map +1 -0
- package/dist/components/attachment-chip/attachment-chip.class.d.ts +151 -0
- package/dist/components/attachment-chip/attachment-chip.class.d.ts.map +1 -0
- package/dist/components/attachment-chip/attachment-chip.class.js +370 -0
- package/dist/components/attachment-chip/attachment-chip.class.js.map +1 -0
- package/dist/components/attachment-chip/attachment-chip.d.ts +2 -141
- package/dist/components/attachment-chip/attachment-chip.d.ts.map +1 -0
- package/dist/components/attachment-chip/attachment-chip.js +3 -354
- package/dist/components/attachment-chip/attachment-chip.js.map +1 -0
- package/dist/components/attachment-chip/attachment-chip.styles.d.ts +1 -0
- package/dist/components/attachment-chip/attachment-chip.styles.d.ts.map +1 -0
- package/dist/components/attachment-chip/attachment-chip.styles.js +29 -13
- package/dist/components/attachment-chip/attachment-chip.styles.js.map +1 -0
- package/dist/components/attachment-trigger/attachment-trigger.class.d.ts +106 -0
- package/dist/components/attachment-trigger/attachment-trigger.class.d.ts.map +1 -0
- package/dist/components/attachment-trigger/attachment-trigger.class.js +227 -0
- package/dist/components/attachment-trigger/attachment-trigger.class.js.map +1 -0
- package/dist/components/attachment-trigger/attachment-trigger.d.ts +4 -96
- package/dist/components/attachment-trigger/attachment-trigger.d.ts.map +1 -0
- package/dist/components/attachment-trigger/attachment-trigger.js +5 -268
- package/dist/components/attachment-trigger/attachment-trigger.js.map +1 -0
- package/dist/components/attachment-trigger/attachment-trigger.styles.d.ts +1 -0
- package/dist/components/attachment-trigger/attachment-trigger.styles.d.ts.map +1 -0
- package/dist/components/attachment-trigger/attachment-trigger.styles.js +11 -6
- package/dist/components/attachment-trigger/attachment-trigger.styles.js.map +1 -0
- package/dist/components/chart/bar-chart.class.d.ts +15 -0
- package/dist/components/chart/bar-chart.class.d.ts.map +1 -0
- package/dist/components/chart/bar-chart.class.js +10 -0
- package/dist/components/chart/bar-chart.class.js.map +1 -0
- package/dist/components/chart/bar-chart.d.ts +3 -14
- package/dist/components/chart/bar-chart.d.ts.map +1 -0
- package/dist/components/chart/bar-chart.js +4 -9
- package/dist/components/chart/bar-chart.js.map +1 -0
- package/dist/components/chart/box-plot.class.d.ts +78 -0
- package/dist/components/chart/box-plot.class.d.ts.map +1 -0
- package/dist/components/chart/box-plot.class.js +320 -0
- package/dist/components/chart/box-plot.class.js.map +1 -0
- package/dist/components/chart/box-plot.d.ts +3 -77
- package/dist/components/chart/box-plot.d.ts.map +1 -0
- package/dist/components/chart/box-plot.js +4 -319
- package/dist/components/chart/box-plot.js.map +1 -0
- package/dist/components/chart/box-plot.styles.d.ts +1 -0
- package/dist/components/chart/box-plot.styles.d.ts.map +1 -0
- package/dist/components/chart/box-plot.styles.js +2 -1
- package/dist/components/chart/box-plot.styles.js.map +1 -0
- package/dist/components/chart/bubble-chart.class.d.ts +19 -0
- package/dist/components/chart/bubble-chart.class.d.ts.map +1 -0
- package/dist/components/chart/bubble-chart.class.js +14 -0
- package/dist/components/chart/bubble-chart.class.js.map +1 -0
- package/dist/components/chart/bubble-chart.d.ts +3 -18
- package/dist/components/chart/bubble-chart.d.ts.map +1 -0
- package/dist/components/chart/bubble-chart.js +4 -13
- package/dist/components/chart/bubble-chart.js.map +1 -0
- package/dist/components/chart/chart-loader.d.ts +12 -9
- package/dist/components/chart/chart-loader.d.ts.map +1 -0
- package/dist/components/chart/chart-loader.js +1 -0
- package/dist/components/chart/chart-loader.js.map +1 -0
- package/dist/components/chart/chart.class.d.ts +209 -0
- package/dist/components/chart/chart.class.d.ts.map +1 -0
- package/dist/components/chart/chart.class.js +651 -0
- package/dist/components/chart/chart.class.js.map +1 -0
- package/dist/components/chart/chart.d.ts +3 -196
- package/dist/components/chart/chart.d.ts.map +1 -0
- package/dist/components/chart/chart.js +4 -682
- package/dist/components/chart/chart.js.map +1 -0
- package/dist/components/chart/chart.styles.d.ts +1 -0
- package/dist/components/chart/chart.styles.d.ts.map +1 -0
- package/dist/components/chart/chart.styles.js +5 -4
- package/dist/components/chart/chart.styles.js.map +1 -0
- package/dist/components/chart/doughnut-chart.class.d.ts +15 -0
- package/dist/components/chart/doughnut-chart.class.d.ts.map +1 -0
- package/dist/components/chart/doughnut-chart.class.js +10 -0
- package/dist/components/chart/doughnut-chart.class.js.map +1 -0
- package/dist/components/chart/doughnut-chart.d.ts +3 -14
- package/dist/components/chart/doughnut-chart.d.ts.map +1 -0
- package/dist/components/chart/doughnut-chart.js +4 -9
- package/dist/components/chart/doughnut-chart.js.map +1 -0
- package/dist/components/chart/histogram-bin.d.ts +1 -0
- package/dist/components/chart/histogram-bin.d.ts.map +1 -0
- package/dist/components/chart/histogram-bin.js +1 -0
- package/dist/components/chart/histogram-bin.js.map +1 -0
- package/dist/components/chart/histogram.class.d.ts +23 -0
- package/dist/components/chart/histogram.class.d.ts.map +1 -0
- package/dist/components/chart/histogram.class.js +91 -0
- package/dist/components/chart/histogram.class.js.map +1 -0
- package/dist/components/chart/histogram.d.ts +3 -22
- package/dist/components/chart/histogram.d.ts.map +1 -0
- package/dist/components/chart/histogram.js +4 -90
- package/dist/components/chart/histogram.js.map +1 -0
- package/dist/components/chart/histogram.styles.d.ts +1 -0
- package/dist/components/chart/histogram.styles.d.ts.map +1 -0
- package/dist/components/chart/histogram.styles.js +1 -0
- package/dist/components/chart/histogram.styles.js.map +1 -0
- package/dist/components/chart/line-chart.class.d.ts +15 -0
- package/dist/components/chart/line-chart.class.d.ts.map +1 -0
- package/dist/components/chart/line-chart.class.js +10 -0
- package/dist/components/chart/line-chart.class.js.map +1 -0
- package/dist/components/chart/line-chart.d.ts +3 -14
- package/dist/components/chart/line-chart.d.ts.map +1 -0
- package/dist/components/chart/line-chart.js +4 -9
- package/dist/components/chart/line-chart.js.map +1 -0
- package/dist/components/chart/lite-chart.class.d.ts +237 -0
- package/dist/components/chart/lite-chart.class.d.ts.map +1 -0
- package/dist/components/chart/lite-chart.class.js +757 -0
- package/dist/components/chart/lite-chart.class.js.map +1 -0
- package/dist/components/chart/lite-chart.d.ts +2 -214
- package/dist/components/chart/lite-chart.d.ts.map +1 -0
- package/dist/components/chart/lite-chart.js +3 -737
- package/dist/components/chart/lite-chart.js.map +1 -0
- package/dist/components/chart/lite-chart.styles.d.ts +1 -0
- package/dist/components/chart/lite-chart.styles.d.ts.map +1 -0
- package/dist/components/chart/lite-chart.styles.js +19 -10
- package/dist/components/chart/lite-chart.styles.js.map +1 -0
- package/dist/components/chart/pie-chart.class.d.ts +16 -0
- package/dist/components/chart/pie-chart.class.d.ts.map +1 -0
- package/dist/components/chart/pie-chart.class.js +11 -0
- package/dist/components/chart/pie-chart.class.js.map +1 -0
- package/dist/components/chart/pie-chart.d.ts +3 -15
- package/dist/components/chart/pie-chart.d.ts.map +1 -0
- package/dist/components/chart/pie-chart.js +4 -10
- package/dist/components/chart/pie-chart.js.map +1 -0
- package/dist/components/chart/polar-area-chart.class.d.ts +15 -0
- package/dist/components/chart/polar-area-chart.class.d.ts.map +1 -0
- package/dist/components/chart/polar-area-chart.class.js +10 -0
- package/dist/components/chart/polar-area-chart.class.js.map +1 -0
- package/dist/components/chart/polar-area-chart.d.ts +3 -14
- package/dist/components/chart/polar-area-chart.d.ts.map +1 -0
- package/dist/components/chart/polar-area-chart.js +4 -9
- package/dist/components/chart/polar-area-chart.js.map +1 -0
- package/dist/components/chart/radar-chart.class.d.ts +15 -0
- package/dist/components/chart/radar-chart.class.d.ts.map +1 -0
- package/dist/components/chart/radar-chart.class.js +10 -0
- package/dist/components/chart/radar-chart.class.js.map +1 -0
- package/dist/components/chart/radar-chart.d.ts +3 -14
- package/dist/components/chart/radar-chart.d.ts.map +1 -0
- package/dist/components/chart/radar-chart.js +4 -9
- package/dist/components/chart/radar-chart.js.map +1 -0
- package/dist/components/chart/scatter-chart.class.d.ts +16 -0
- package/dist/components/chart/scatter-chart.class.d.ts.map +1 -0
- package/dist/components/chart/scatter-chart.class.js +11 -0
- package/dist/components/chart/scatter-chart.class.js.map +1 -0
- package/dist/components/chart/scatter-chart.d.ts +3 -15
- package/dist/components/chart/scatter-chart.d.ts.map +1 -0
- package/dist/components/chart/scatter-chart.js +4 -10
- package/dist/components/chart/scatter-chart.js.map +1 -0
- package/dist/components/chat-composer/chat-composer.class.d.ts +145 -0
- package/dist/components/chat-composer/chat-composer.class.d.ts.map +1 -0
- package/dist/components/chat-composer/chat-composer.class.js +314 -0
- package/dist/components/chat-composer/chat-composer.class.js.map +1 -0
- package/dist/components/chat-composer/chat-composer.d.ts +2 -133
- package/dist/components/chat-composer/chat-composer.d.ts.map +1 -0
- package/dist/components/chat-composer/chat-composer.js +3 -364
- package/dist/components/chat-composer/chat-composer.js.map +1 -0
- package/dist/components/chat-composer/chat-composer.styles.d.ts +1 -0
- package/dist/components/chat-composer/chat-composer.styles.d.ts.map +1 -0
- package/dist/components/chat-composer/chat-composer.styles.js +5 -4
- package/dist/components/chat-composer/chat-composer.styles.js.map +1 -0
- package/dist/components/chat-message/chat-message.class.d.ts +145 -0
- package/dist/components/chat-message/chat-message.class.d.ts.map +1 -0
- package/dist/components/chat-message/chat-message.class.js +270 -0
- package/dist/components/chat-message/chat-message.class.js.map +1 -0
- package/dist/components/chat-message/chat-message.d.ts +3 -141
- package/dist/components/chat-message/chat-message.d.ts.map +1 -0
- package/dist/components/chat-message/chat-message.js +4 -329
- package/dist/components/chat-message/chat-message.js.map +1 -0
- package/dist/components/chat-message/chat-message.styles.d.ts +1 -0
- package/dist/components/chat-message/chat-message.styles.d.ts.map +1 -0
- package/dist/components/chat-message/chat-message.styles.js +13 -12
- package/dist/components/chat-message/chat-message.styles.js.map +1 -0
- package/dist/components/checkbox/checkbox.class.d.ts +123 -0
- package/dist/components/checkbox/checkbox.class.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox.class.js +328 -0
- package/dist/components/checkbox/checkbox.class.js.map +1 -0
- package/dist/components/checkbox/checkbox.d.ts +2 -117
- package/dist/components/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox.js +3 -351
- package/dist/components/checkbox/checkbox.js.map +1 -0
- package/dist/components/checkbox/checkbox.styles.d.ts +1 -0
- package/dist/components/checkbox/checkbox.styles.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox.styles.js +5 -4
- package/dist/components/checkbox/checkbox.styles.js.map +1 -0
- package/dist/components/chip/chip-group.class.d.ts +57 -0
- package/dist/components/chip/chip-group.class.d.ts.map +1 -0
- package/dist/components/chip/chip-group.class.js +129 -0
- package/dist/components/chip/chip-group.class.js.map +1 -0
- package/dist/components/chip/chip-group.d.ts +2 -56
- package/dist/components/chip/chip-group.d.ts.map +1 -0
- package/dist/components/chip/chip-group.js +3 -128
- package/dist/components/chip/chip-group.js.map +1 -0
- package/dist/components/chip/chip-group.styles.d.ts +1 -0
- package/dist/components/chip/chip-group.styles.d.ts.map +1 -0
- package/dist/components/chip/chip-group.styles.js +7 -6
- package/dist/components/chip/chip-group.styles.js.map +1 -0
- package/dist/components/chip/chip.class.d.ts +65 -0
- package/dist/components/chip/chip.class.d.ts.map +1 -0
- package/dist/components/chip/chip.class.js +121 -0
- package/dist/components/chip/chip.class.js.map +1 -0
- package/dist/components/chip/chip.d.ts +2 -64
- package/dist/components/chip/chip.d.ts.map +1 -0
- package/dist/components/chip/chip.js +3 -120
- package/dist/components/chip/chip.js.map +1 -0
- package/dist/components/chip/chip.styles.d.ts +1 -0
- package/dist/components/chip/chip.styles.d.ts.map +1 -0
- package/dist/components/chip/chip.styles.js +12 -11
- package/dist/components/chip/chip.styles.js.map +1 -0
- package/dist/components/citation-badge/citation-badge.class.d.ts +114 -0
- package/dist/components/citation-badge/citation-badge.class.d.ts.map +1 -0
- package/dist/components/citation-badge/citation-badge.class.js +317 -0
- package/dist/components/citation-badge/citation-badge.class.js.map +1 -0
- package/dist/components/citation-badge/citation-badge.d.ts +2 -113
- package/dist/components/citation-badge/citation-badge.d.ts.map +1 -0
- package/dist/components/citation-badge/citation-badge.js +3 -316
- package/dist/components/citation-badge/citation-badge.js.map +1 -0
- package/dist/components/citation-badge/citation-badge.styles.d.ts +1 -0
- package/dist/components/citation-badge/citation-badge.styles.d.ts.map +1 -0
- package/dist/components/citation-badge/citation-badge.styles.js +12 -11
- package/dist/components/citation-badge/citation-badge.styles.js.map +1 -0
- package/dist/components/code-block/code-block.class.d.ts +141 -0
- package/dist/components/code-block/code-block.class.d.ts.map +1 -0
- package/dist/components/code-block/code-block.class.js +333 -0
- package/dist/components/code-block/code-block.class.js.map +1 -0
- package/dist/components/code-block/code-block.d.ts +3 -127
- package/dist/components/code-block/code-block.d.ts.map +1 -0
- package/dist/components/code-block/code-block.js +4 -380
- package/dist/components/code-block/code-block.js.map +1 -0
- package/dist/components/code-block/code-block.styles.d.ts +1 -0
- package/dist/components/code-block/code-block.styles.d.ts.map +1 -0
- package/dist/components/code-block/code-block.styles.js +25 -21
- package/dist/components/code-block/code-block.styles.js.map +1 -0
- package/dist/components/code-block/code-loader.d.ts +8 -7
- package/dist/components/code-block/code-loader.d.ts.map +1 -0
- package/dist/components/code-block/code-loader.js +1 -0
- package/dist/components/code-block/code-loader.js.map +1 -0
- package/dist/components/combobox/combobox.class.d.ts +205 -0
- package/dist/components/combobox/combobox.class.d.ts.map +1 -0
- package/dist/components/combobox/combobox.class.js +854 -0
- package/dist/components/combobox/combobox.class.js.map +1 -0
- package/dist/components/combobox/combobox.d.ts +3 -199
- package/dist/components/combobox/combobox.d.ts.map +1 -0
- package/dist/components/combobox/combobox.js +4 -891
- package/dist/components/combobox/combobox.js.map +1 -0
- package/dist/components/combobox/combobox.styles.d.ts +1 -0
- package/dist/components/combobox/combobox.styles.d.ts.map +1 -0
- package/dist/components/combobox/combobox.styles.js +34 -33
- package/dist/components/combobox/combobox.styles.js.map +1 -0
- package/dist/components/combobox/option.class.d.ts +44 -0
- package/dist/components/combobox/option.class.d.ts.map +1 -0
- package/dist/components/combobox/option.class.js +101 -0
- package/dist/components/combobox/option.class.js.map +1 -0
- package/dist/components/combobox/option.d.ts +2 -40
- package/dist/components/combobox/option.d.ts.map +1 -0
- package/dist/components/combobox/option.js +3 -109
- package/dist/components/combobox/option.js.map +1 -0
- package/dist/components/context-meter/context-meter.class.d.ts +54 -0
- package/dist/components/context-meter/context-meter.class.d.ts.map +1 -0
- package/dist/components/context-meter/context-meter.class.js +158 -0
- package/dist/components/context-meter/context-meter.class.js.map +1 -0
- package/dist/components/context-meter/context-meter.d.ts +2 -53
- package/dist/components/context-meter/context-meter.d.ts.map +1 -0
- package/dist/components/context-meter/context-meter.js +3 -157
- package/dist/components/context-meter/context-meter.js.map +1 -0
- package/dist/components/context-meter/context-meter.styles.d.ts +1 -0
- package/dist/components/context-meter/context-meter.styles.d.ts.map +1 -0
- package/dist/components/context-meter/context-meter.styles.js +7 -6
- package/dist/components/context-meter/context-meter.styles.js.map +1 -0
- package/dist/components/conversation-item/conversation-item.class.d.ts +127 -0
- package/dist/components/conversation-item/conversation-item.class.d.ts.map +1 -0
- package/dist/components/conversation-item/conversation-item.class.js +259 -0
- package/dist/components/conversation-item/conversation-item.class.js.map +1 -0
- package/dist/components/conversation-item/conversation-item.d.ts +2 -125
- package/dist/components/conversation-item/conversation-item.d.ts.map +1 -0
- package/dist/components/conversation-item/conversation-item.js +3 -329
- package/dist/components/conversation-item/conversation-item.js.map +1 -0
- package/dist/components/conversation-item/conversation-item.styles.d.ts +1 -0
- package/dist/components/conversation-item/conversation-item.styles.d.ts.map +1 -0
- package/dist/components/conversation-item/conversation-item.styles.js +12 -11
- package/dist/components/conversation-item/conversation-item.styles.js.map +1 -0
- package/dist/components/copy-button/copy-button.class.d.ts +37 -0
- package/dist/components/copy-button/copy-button.class.d.ts.map +1 -0
- package/dist/components/copy-button/copy-button.class.js +103 -0
- package/dist/components/copy-button/copy-button.class.js.map +1 -0
- package/dist/components/copy-button/copy-button.d.ts +2 -0
- package/dist/components/copy-button/copy-button.d.ts.map +1 -0
- package/dist/components/copy-button/copy-button.js +5 -0
- package/dist/components/copy-button/copy-button.js.map +1 -0
- package/dist/components/copy-button/copy-button.styles.d.ts +2 -0
- package/dist/components/copy-button/copy-button.styles.d.ts.map +1 -0
- package/dist/components/copy-button/copy-button.styles.js +40 -0
- package/dist/components/copy-button/copy-button.styles.js.map +1 -0
- package/dist/components/date-picker/calendar-core.d.ts +1 -0
- package/dist/components/date-picker/calendar-core.d.ts.map +1 -0
- package/dist/components/date-picker/calendar-core.js +1 -0
- package/dist/components/date-picker/calendar-core.js.map +1 -0
- package/dist/components/date-picker/date-input.class.d.ts +185 -0
- package/dist/components/date-picker/date-input.class.d.ts.map +1 -0
- package/dist/components/date-picker/date-input.class.js +676 -0
- package/dist/components/date-picker/date-input.class.js.map +1 -0
- package/dist/components/date-picker/date-input.d.ts +3 -168
- package/dist/components/date-picker/date-input.d.ts.map +1 -0
- package/dist/components/date-picker/date-input.js +4 -675
- package/dist/components/date-picker/date-input.js.map +1 -0
- package/dist/components/date-picker/date-input.styles.d.ts +1 -0
- package/dist/components/date-picker/date-input.styles.d.ts.map +1 -0
- package/dist/components/date-picker/date-input.styles.js +11 -10
- package/dist/components/date-picker/date-input.styles.js.map +1 -0
- package/dist/components/date-picker/date-picker.class.d.ts +121 -0
- package/dist/components/date-picker/date-picker.class.d.ts.map +1 -0
- package/dist/components/date-picker/date-picker.class.js +513 -0
- package/dist/components/date-picker/date-picker.class.js.map +1 -0
- package/dist/components/date-picker/date-picker.d.ts +2 -103
- package/dist/components/date-picker/date-picker.d.ts.map +1 -0
- package/dist/components/date-picker/date-picker.js +3 -490
- package/dist/components/date-picker/date-picker.js.map +1 -0
- package/dist/components/date-picker/date-picker.styles.d.ts +1 -0
- package/dist/components/date-picker/date-picker.styles.d.ts.map +1 -0
- package/dist/components/date-picker/date-picker.styles.js +10 -9
- package/dist/components/date-picker/date-picker.styles.js.map +1 -0
- package/dist/components/dialog/confirm.d.ts +1 -0
- package/dist/components/dialog/confirm.d.ts.map +1 -0
- package/dist/components/dialog/confirm.js +1 -0
- package/dist/components/dialog/confirm.js.map +1 -0
- package/dist/components/dialog/dialog.class.d.ts +137 -0
- package/dist/components/dialog/dialog.class.d.ts.map +1 -0
- package/dist/components/dialog/dialog.class.js +301 -0
- package/dist/components/dialog/dialog.class.js.map +1 -0
- package/dist/components/dialog/dialog.d.ts +2 -129
- package/dist/components/dialog/dialog.d.ts.map +1 -0
- package/dist/components/dialog/dialog.js +3 -286
- package/dist/components/dialog/dialog.js.map +1 -0
- package/dist/components/dialog/dialog.styles.d.ts +1 -0
- package/dist/components/dialog/dialog.styles.d.ts.map +1 -0
- package/dist/components/dialog/dialog.styles.js +12 -8
- package/dist/components/dialog/dialog.styles.js.map +1 -0
- package/dist/components/dock-panel/dock-panel.class.d.ts +143 -0
- package/dist/components/dock-panel/dock-panel.class.d.ts.map +1 -0
- package/dist/components/dock-panel/dock-panel.class.js +358 -0
- package/dist/components/dock-panel/dock-panel.class.js.map +1 -0
- package/dist/components/dock-panel/dock-panel.d.ts +2 -142
- package/dist/components/dock-panel/dock-panel.d.ts.map +1 -0
- package/dist/components/dock-panel/dock-panel.js +3 -357
- package/dist/components/dock-panel/dock-panel.js.map +1 -0
- package/dist/components/dock-panel/dock-panel.styles.d.ts +1 -0
- package/dist/components/dock-panel/dock-panel.styles.d.ts.map +1 -0
- package/dist/components/dock-panel/dock-panel.styles.js +19 -12
- package/dist/components/dock-panel/dock-panel.styles.js.map +1 -0
- package/dist/components/document-preview/document-preview.class.d.ts +153 -0
- package/dist/components/document-preview/document-preview.class.d.ts.map +1 -0
- package/dist/components/document-preview/document-preview.class.js +304 -0
- package/dist/components/document-preview/document-preview.class.js.map +1 -0
- package/dist/components/document-preview/document-preview.d.ts +2 -143
- package/dist/components/document-preview/document-preview.d.ts.map +1 -0
- package/dist/components/document-preview/document-preview.js +3 -386
- package/dist/components/document-preview/document-preview.js.map +1 -0
- package/dist/components/document-preview/document-preview.styles.d.ts +1 -0
- package/dist/components/document-preview/document-preview.styles.d.ts.map +1 -0
- package/dist/components/document-preview/document-preview.styles.js +22 -21
- package/dist/components/document-preview/document-preview.styles.js.map +1 -0
- package/dist/components/empty/empty.class.d.ts +43 -0
- package/dist/components/empty/empty.class.d.ts.map +1 -0
- package/dist/components/empty/empty.class.js +112 -0
- package/dist/components/empty/empty.class.js.map +1 -0
- package/dist/components/empty/empty.d.ts +2 -42
- package/dist/components/empty/empty.d.ts.map +1 -0
- package/dist/components/empty/empty.js +3 -111
- package/dist/components/empty/empty.js.map +1 -0
- package/dist/components/empty/empty.styles.d.ts +1 -0
- package/dist/components/empty/empty.styles.d.ts.map +1 -0
- package/dist/components/empty/empty.styles.js +6 -5
- package/dist/components/empty/empty.styles.js.map +1 -0
- package/dist/components/export-button/csv.d.ts +1 -0
- package/dist/components/export-button/csv.d.ts.map +1 -0
- package/dist/components/export-button/csv.js +1 -0
- package/dist/components/export-button/csv.js.map +1 -0
- package/dist/components/export-button/export-button.class.d.ts +76 -0
- package/dist/components/export-button/export-button.class.d.ts.map +1 -0
- package/dist/components/export-button/export-button.class.js +249 -0
- package/dist/components/export-button/export-button.class.js.map +1 -0
- package/dist/components/export-button/export-button.d.ts +2 -67
- package/dist/components/export-button/export-button.d.ts.map +1 -0
- package/dist/components/export-button/export-button.js +3 -261
- package/dist/components/export-button/export-button.js.map +1 -0
- package/dist/components/export-button/export-button.styles.d.ts +1 -0
- package/dist/components/export-button/export-button.styles.d.ts.map +1 -0
- package/dist/components/export-button/export-button.styles.js +6 -5
- package/dist/components/export-button/export-button.styles.js.map +1 -0
- package/dist/components/file-input/accept.d.ts +1 -0
- package/dist/components/file-input/accept.d.ts.map +1 -0
- package/dist/components/file-input/accept.js +1 -0
- package/dist/components/file-input/accept.js.map +1 -0
- package/dist/components/file-input/file-input.class.d.ts +66 -0
- package/dist/components/file-input/file-input.class.d.ts.map +1 -0
- package/dist/components/file-input/file-input.class.js +213 -0
- package/dist/components/file-input/file-input.class.js.map +1 -0
- package/dist/components/file-input/file-input.d.ts +2 -59
- package/dist/components/file-input/file-input.d.ts.map +1 -0
- package/dist/components/file-input/file-input.js +3 -226
- package/dist/components/file-input/file-input.js.map +1 -0
- package/dist/components/file-input/file-input.styles.d.ts +1 -0
- package/dist/components/file-input/file-input.styles.d.ts.map +1 -0
- package/dist/components/file-input/file-input.styles.js +5 -4
- package/dist/components/file-input/file-input.styles.js.map +1 -0
- package/dist/components/flag/flag-peer.d.ts +8 -0
- package/dist/components/flag/flag-peer.d.ts.map +1 -0
- package/dist/components/flag/flag-peer.js +13 -0
- package/dist/components/flag/flag-peer.js.map +1 -0
- package/dist/components/flag/flag.class.d.ts +124 -0
- package/dist/components/flag/flag.class.d.ts.map +1 -0
- package/dist/components/flag/flag.class.js +251 -0
- package/dist/components/flag/flag.class.js.map +1 -0
- package/dist/components/flag/flag.d.ts +3 -121
- package/dist/components/flag/flag.d.ts.map +1 -0
- package/dist/components/flag/flag.js +4 -239
- package/dist/components/flag/flag.js.map +1 -0
- package/dist/components/flag/flag.styles.d.ts +1 -0
- package/dist/components/flag/flag.styles.d.ts.map +1 -0
- package/dist/components/flag/flag.styles.js +5 -4
- package/dist/components/flag/flag.styles.js.map +1 -0
- package/dist/components/flag/language-map.d.ts +1 -0
- package/dist/components/flag/language-map.d.ts.map +1 -0
- package/dist/components/flag/language-map.js +1 -0
- package/dist/components/flag/language-map.js.map +1 -0
- package/dist/components/gauge/gauge.class.d.ts +41 -0
- package/dist/components/gauge/gauge.class.d.ts.map +1 -0
- package/dist/components/gauge/gauge.class.js +178 -0
- package/dist/components/gauge/gauge.class.js.map +1 -0
- package/dist/components/gauge/gauge.d.ts +2 -40
- package/dist/components/gauge/gauge.d.ts.map +1 -0
- package/dist/components/gauge/gauge.js +3 -177
- package/dist/components/gauge/gauge.js.map +1 -0
- package/dist/components/gauge/gauge.styles.d.ts +1 -0
- package/dist/components/gauge/gauge.styles.d.ts.map +1 -0
- package/dist/components/gauge/gauge.styles.js +9 -8
- package/dist/components/gauge/gauge.styles.js.map +1 -0
- package/dist/components/generation-status/generation-status.class.d.ts +121 -0
- package/dist/components/generation-status/generation-status.class.d.ts.map +1 -0
- package/dist/components/generation-status/generation-status.class.js +260 -0
- package/dist/components/generation-status/generation-status.class.js.map +1 -0
- package/dist/components/generation-status/generation-status.d.ts +2 -117
- package/dist/components/generation-status/generation-status.d.ts.map +1 -0
- package/dist/components/generation-status/generation-status.js +3 -325
- package/dist/components/generation-status/generation-status.js.map +1 -0
- package/dist/components/generation-status/generation-status.styles.d.ts +1 -0
- package/dist/components/generation-status/generation-status.styles.d.ts.map +1 -0
- package/dist/components/generation-status/generation-status.styles.js +7 -6
- package/dist/components/generation-status/generation-status.styles.js.map +1 -0
- package/dist/components/graph/graph-loader.d.ts +13 -13
- package/dist/components/graph/graph-loader.d.ts.map +1 -0
- package/dist/components/graph/graph-loader.js +1 -0
- package/dist/components/graph/graph-loader.js.map +1 -0
- package/dist/components/graph/graph.class.d.ts +167 -0
- package/dist/components/graph/graph.class.d.ts.map +1 -0
- package/dist/components/graph/graph.class.js +552 -0
- package/dist/components/graph/graph.class.js.map +1 -0
- package/dist/components/graph/graph.d.ts +3 -157
- package/dist/components/graph/graph.d.ts.map +1 -0
- package/dist/components/graph/graph.js +4 -577
- package/dist/components/graph/graph.js.map +1 -0
- package/dist/components/graph/graph.styles.d.ts +1 -0
- package/dist/components/graph/graph.styles.d.ts.map +1 -0
- package/dist/components/graph/graph.styles.js +2 -1
- package/dist/components/graph/graph.styles.js.map +1 -0
- package/dist/components/heatmap/calendar-grid.d.ts +1 -0
- package/dist/components/heatmap/calendar-grid.d.ts.map +1 -0
- package/dist/components/heatmap/calendar-grid.js +1 -0
- package/dist/components/heatmap/calendar-grid.js.map +1 -0
- package/dist/components/heatmap/heatmap-scale.d.ts +9 -0
- package/dist/components/heatmap/heatmap-scale.d.ts.map +1 -0
- package/dist/components/heatmap/heatmap-scale.js +13 -0
- package/dist/components/heatmap/heatmap-scale.js.map +1 -0
- package/dist/components/heatmap/heatmap.class.d.ts +478 -0
- package/dist/components/heatmap/heatmap.class.d.ts.map +1 -0
- package/dist/components/heatmap/heatmap.class.js +1211 -0
- package/dist/components/heatmap/heatmap.class.js.map +1 -0
- package/dist/components/heatmap/heatmap.d.ts +2 -437
- package/dist/components/heatmap/heatmap.d.ts.map +1 -0
- package/dist/components/heatmap/heatmap.js +3 -1175
- package/dist/components/heatmap/heatmap.js.map +1 -0
- package/dist/components/heatmap/heatmap.styles.d.ts +1 -0
- package/dist/components/heatmap/heatmap.styles.d.ts.map +1 -0
- package/dist/components/heatmap/heatmap.styles.js +20 -20
- package/dist/components/heatmap/heatmap.styles.js.map +1 -0
- package/dist/components/json-viewer/json-viewer.class.d.ts +77 -0
- package/dist/components/json-viewer/json-viewer.class.d.ts.map +1 -0
- package/dist/components/json-viewer/json-viewer.class.js +340 -0
- package/dist/components/json-viewer/json-viewer.class.js.map +1 -0
- package/dist/components/json-viewer/json-viewer.d.ts +2 -70
- package/dist/components/json-viewer/json-viewer.d.ts.map +1 -0
- package/dist/components/json-viewer/json-viewer.js +3 -359
- package/dist/components/json-viewer/json-viewer.js.map +1 -0
- package/dist/components/json-viewer/json-viewer.styles.d.ts +1 -0
- package/dist/components/json-viewer/json-viewer.styles.d.ts.map +1 -0
- package/dist/components/json-viewer/json-viewer.styles.js +23 -20
- package/dist/components/json-viewer/json-viewer.styles.js.map +1 -0
- package/dist/components/kbd/kbd.class.d.ts +78 -0
- package/dist/components/kbd/kbd.class.d.ts.map +1 -0
- package/dist/components/kbd/kbd.class.js +230 -0
- package/dist/components/kbd/kbd.class.js.map +1 -0
- package/dist/components/kbd/kbd.d.ts +2 -77
- package/dist/components/kbd/kbd.d.ts.map +1 -0
- package/dist/components/kbd/kbd.js +3 -229
- package/dist/components/kbd/kbd.js.map +1 -0
- package/dist/components/kbd/kbd.styles.d.ts +1 -0
- package/dist/components/kbd/kbd.styles.d.ts.map +1 -0
- package/dist/components/kbd/kbd.styles.js +10 -9
- package/dist/components/kbd/kbd.styles.js.map +1 -0
- package/dist/components/live-region/live-region.class.d.ts +91 -0
- package/dist/components/live-region/live-region.class.d.ts.map +1 -0
- package/dist/components/live-region/live-region.class.js +188 -0
- package/dist/components/live-region/live-region.class.js.map +1 -0
- package/dist/components/live-region/live-region.d.ts +2 -90
- package/dist/components/live-region/live-region.d.ts.map +1 -0
- package/dist/components/live-region/live-region.js +3 -187
- package/dist/components/live-region/live-region.js.map +1 -0
- package/dist/components/live-region/live-region.styles.d.ts +1 -0
- package/dist/components/live-region/live-region.styles.d.ts.map +1 -0
- package/dist/components/live-region/live-region.styles.js +1 -0
- package/dist/components/live-region/live-region.styles.js.map +1 -0
- package/dist/components/map/map-loader.d.ts +5 -2
- package/dist/components/map/map-loader.d.ts.map +1 -0
- package/dist/components/map/map-loader.js +1 -0
- package/dist/components/map/map-loader.js.map +1 -0
- package/dist/components/map/map.class.d.ts +121 -0
- package/dist/components/map/map.class.d.ts.map +1 -0
- package/dist/components/map/map.class.js +450 -0
- package/dist/components/map/map.class.js.map +1 -0
- package/dist/components/map/map.d.ts +3 -111
- package/dist/components/map/map.d.ts.map +1 -0
- package/dist/components/map/map.js +4 -477
- package/dist/components/map/map.js.map +1 -0
- package/dist/components/map/map.styles.d.ts +1 -0
- package/dist/components/map/map.styles.d.ts.map +1 -0
- package/dist/components/map/map.styles.js +8 -7
- package/dist/components/map/map.styles.js.map +1 -0
- package/dist/components/markdown/markdown-loader.d.ts +6 -6
- package/dist/components/markdown/markdown-loader.d.ts.map +1 -0
- package/dist/components/markdown/markdown-loader.js +1 -0
- package/dist/components/markdown/markdown-loader.js.map +1 -0
- package/dist/components/markdown/markdown.class.d.ts +129 -0
- package/dist/components/markdown/markdown.class.d.ts.map +1 -0
- package/dist/components/markdown/markdown.class.js +354 -0
- package/dist/components/markdown/markdown.class.js.map +1 -0
- package/dist/components/markdown/markdown.d.ts +2 -119
- package/dist/components/markdown/markdown.d.ts.map +1 -0
- package/dist/components/markdown/markdown.js +3 -387
- package/dist/components/markdown/markdown.js.map +1 -0
- package/dist/components/markdown/markdown.styles.d.ts +1 -0
- package/dist/components/markdown/markdown.styles.d.ts.map +1 -0
- package/dist/components/markdown/markdown.styles.js +12 -11
- package/dist/components/markdown/markdown.styles.js.map +1 -0
- package/dist/components/media-card/media-card.class.d.ts +131 -0
- package/dist/components/media-card/media-card.class.d.ts.map +1 -0
- package/dist/components/media-card/media-card.class.js +272 -0
- package/dist/components/media-card/media-card.class.js.map +1 -0
- package/dist/components/media-card/media-card.d.ts +2 -130
- package/dist/components/media-card/media-card.d.ts.map +1 -0
- package/dist/components/media-card/media-card.js +3 -271
- package/dist/components/media-card/media-card.js.map +1 -0
- package/dist/components/media-card/media-card.styles.d.ts +1 -0
- package/dist/components/media-card/media-card.styles.d.ts.map +1 -0
- package/dist/components/media-card/media-card.styles.js +8 -7
- package/dist/components/media-card/media-card.styles.js.map +1 -0
- package/dist/components/mention-popover/mention-popover.class.d.ts +207 -0
- package/dist/components/mention-popover/mention-popover.class.d.ts.map +1 -0
- package/dist/components/mention-popover/mention-popover.class.js +379 -0
- package/dist/components/mention-popover/mention-popover.class.js.map +1 -0
- package/dist/components/mention-popover/mention-popover.d.ts +2 -203
- package/dist/components/mention-popover/mention-popover.d.ts.map +1 -0
- package/dist/components/mention-popover/mention-popover.js +3 -491
- package/dist/components/mention-popover/mention-popover.js.map +1 -0
- package/dist/components/mention-popover/mention-popover.styles.d.ts +1 -0
- package/dist/components/mention-popover/mention-popover.styles.d.ts.map +1 -0
- package/dist/components/mention-popover/mention-popover.styles.js +11 -10
- package/dist/components/mention-popover/mention-popover.styles.js.map +1 -0
- package/dist/components/menu/menu-item.class.d.ts +99 -0
- package/dist/components/menu/menu-item.class.d.ts.map +1 -0
- package/dist/components/menu/menu-item.class.js +150 -0
- package/dist/components/menu/menu-item.class.js.map +1 -0
- package/dist/components/menu/menu-item.d.ts +2 -91
- package/dist/components/menu/menu-item.d.ts.map +1 -0
- package/dist/components/menu/menu-item.js +3 -204
- package/dist/components/menu/menu-item.js.map +1 -0
- package/dist/components/menu/menu-item.styles.d.ts +1 -0
- package/dist/components/menu/menu-item.styles.d.ts.map +1 -0
- package/dist/components/menu/menu-item.styles.js +3 -2
- package/dist/components/menu/menu-item.styles.js.map +1 -0
- package/dist/components/menu/menu.class.d.ts +173 -0
- package/dist/components/menu/menu.class.d.ts.map +1 -0
- package/dist/components/menu/menu.class.js +378 -0
- package/dist/components/menu/menu.class.js.map +1 -0
- package/dist/components/menu/menu.d.ts +3 -167
- package/dist/components/menu/menu.d.ts.map +1 -0
- package/dist/components/menu/menu.js +4 -459
- package/dist/components/menu/menu.js.map +1 -0
- package/dist/components/menu/menu.styles.d.ts +1 -0
- package/dist/components/menu/menu.styles.d.ts.map +1 -0
- package/dist/components/menu/menu.styles.js +9 -8
- package/dist/components/menu/menu.styles.js.map +1 -0
- package/dist/components/model-select/model-select.class.d.ts +177 -0
- package/dist/components/model-select/model-select.class.d.ts.map +1 -0
- package/dist/components/model-select/model-select.class.js +555 -0
- package/dist/components/model-select/model-select.class.js.map +1 -0
- package/dist/components/model-select/model-select.d.ts +2 -170
- package/dist/components/model-select/model-select.d.ts.map +1 -0
- package/dist/components/model-select/model-select.js +3 -586
- package/dist/components/model-select/model-select.js.map +1 -0
- package/dist/components/model-select/model-select.styles.d.ts +1 -0
- package/dist/components/model-select/model-select.styles.d.ts.map +1 -0
- package/dist/components/model-select/model-select.styles.js +24 -23
- package/dist/components/model-select/model-select.styles.js.map +1 -0
- package/dist/components/model-settings-panel/model-settings-panel.class.d.ts +94 -0
- package/dist/components/model-settings-panel/model-settings-panel.class.d.ts.map +1 -0
- package/dist/components/model-settings-panel/model-settings-panel.class.js +208 -0
- package/dist/components/model-settings-panel/model-settings-panel.class.js.map +1 -0
- package/dist/components/model-settings-panel/model-settings-panel.d.ts +4 -93
- package/dist/components/model-settings-panel/model-settings-panel.d.ts.map +1 -0
- package/dist/components/model-settings-panel/model-settings-panel.js +5 -207
- package/dist/components/model-settings-panel/model-settings-panel.js.map +1 -0
- package/dist/components/model-settings-panel/model-settings-panel.styles.d.ts +1 -0
- package/dist/components/model-settings-panel/model-settings-panel.styles.d.ts.map +1 -0
- package/dist/components/model-settings-panel/model-settings-panel.styles.js +12 -11
- package/dist/components/model-settings-panel/model-settings-panel.styles.js.map +1 -0
- package/dist/components/playback/playback.class.d.ts +79 -0
- package/dist/components/playback/playback.class.d.ts.map +1 -0
- package/dist/components/playback/playback.class.js +238 -0
- package/dist/components/playback/playback.class.js.map +1 -0
- package/dist/components/playback/playback.d.ts +2 -71
- package/dist/components/playback/playback.d.ts.map +1 -0
- package/dist/components/playback/playback.js +3 -250
- package/dist/components/playback/playback.js.map +1 -0
- package/dist/components/playback/playback.styles.d.ts +1 -0
- package/dist/components/playback/playback.styles.d.ts.map +1 -0
- package/dist/components/playback/playback.styles.js +2 -1
- package/dist/components/playback/playback.styles.js.map +1 -0
- package/dist/components/responsive-panel/responsive-panel.class.d.ts +164 -0
- package/dist/components/responsive-panel/responsive-panel.class.d.ts.map +1 -0
- package/dist/components/responsive-panel/responsive-panel.class.js +362 -0
- package/dist/components/responsive-panel/responsive-panel.class.js.map +1 -0
- package/dist/components/responsive-panel/responsive-panel.d.ts +2 -163
- package/dist/components/responsive-panel/responsive-panel.d.ts.map +1 -0
- package/dist/components/responsive-panel/responsive-panel.js +3 -361
- package/dist/components/responsive-panel/responsive-panel.js.map +1 -0
- package/dist/components/responsive-panel/responsive-panel.styles.d.ts +1 -0
- package/dist/components/responsive-panel/responsive-panel.styles.d.ts.map +1 -0
- package/dist/components/responsive-panel/responsive-panel.styles.js +8 -5
- package/dist/components/responsive-panel/responsive-panel.styles.js.map +1 -0
- package/dist/components/result-card/result-card.class.d.ts +51 -0
- package/dist/components/result-card/result-card.class.d.ts.map +1 -0
- package/dist/components/result-card/result-card.class.js +88 -0
- package/dist/components/result-card/result-card.class.js.map +1 -0
- package/dist/components/result-card/result-card.d.ts +2 -50
- package/dist/components/result-card/result-card.d.ts.map +1 -0
- package/dist/components/result-card/result-card.js +3 -87
- package/dist/components/result-card/result-card.js.map +1 -0
- package/dist/components/result-card/result-card.styles.d.ts +1 -0
- package/dist/components/result-card/result-card.styles.d.ts.map +1 -0
- package/dist/components/result-card/result-card.styles.js +5 -4
- package/dist/components/result-card/result-card.styles.js.map +1 -0
- package/dist/components/result-card/result-field.class.d.ts +37 -0
- package/dist/components/result-card/result-field.class.d.ts.map +1 -0
- package/dist/components/result-card/result-field.class.js +86 -0
- package/dist/components/result-card/result-field.class.js.map +1 -0
- package/dist/components/result-card/result-field.d.ts +2 -36
- package/dist/components/result-card/result-field.d.ts.map +1 -0
- package/dist/components/result-card/result-field.js +3 -85
- package/dist/components/result-card/result-field.js.map +1 -0
- package/dist/components/result-card/result-field.styles.d.ts +1 -0
- package/dist/components/result-card/result-field.styles.d.ts.map +1 -0
- package/dist/components/result-card/result-field.styles.js +3 -2
- package/dist/components/result-card/result-field.styles.js.map +1 -0
- package/dist/components/select/select.class.d.ts +212 -0
- package/dist/components/select/select.class.d.ts.map +1 -0
- package/dist/components/select/select.class.js +637 -0
- package/dist/components/select/select.class.js.map +1 -0
- package/dist/components/select/select.d.ts +3 -205
- package/dist/components/select/select.d.ts.map +1 -0
- package/dist/components/select/select.js +4 -693
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/select/select.styles.d.ts +1 -0
- package/dist/components/select/select.styles.d.ts.map +1 -0
- package/dist/components/select/select.styles.js +35 -34
- package/dist/components/select/select.styles.js.map +1 -0
- package/dist/components/skeleton/skeleton.class.d.ts +30 -0
- package/dist/components/skeleton/skeleton.class.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton.class.js +67 -0
- package/dist/components/skeleton/skeleton.class.js.map +1 -0
- package/dist/components/skeleton/skeleton.d.ts +2 -29
- package/dist/components/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton.js +3 -66
- package/dist/components/skeleton/skeleton.js.map +1 -0
- package/dist/components/skeleton/skeleton.styles.d.ts +1 -0
- package/dist/components/skeleton/skeleton.styles.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton.styles.js +2 -1
- package/dist/components/skeleton/skeleton.styles.js.map +1 -0
- package/dist/components/slider/slider.class.d.ts +152 -0
- package/dist/components/slider/slider.class.d.ts.map +1 -0
- package/dist/components/slider/slider.class.js +433 -0
- package/dist/components/slider/slider.class.js.map +1 -0
- package/dist/components/slider/slider.d.ts +2 -141
- package/dist/components/slider/slider.d.ts.map +1 -0
- package/dist/components/slider/slider.js +3 -465
- package/dist/components/slider/slider.js.map +1 -0
- package/dist/components/slider/slider.styles.d.ts +1 -0
- package/dist/components/slider/slider.styles.d.ts.map +1 -0
- package/dist/components/slider/slider.styles.js +15 -14
- package/dist/components/slider/slider.styles.js.map +1 -0
- package/dist/components/source-card/source-card.class.d.ts +105 -0
- package/dist/components/source-card/source-card.class.d.ts.map +1 -0
- package/dist/components/source-card/source-card.class.js +194 -0
- package/dist/components/source-card/source-card.class.js.map +1 -0
- package/dist/components/source-card/source-card.d.ts +2 -104
- package/dist/components/source-card/source-card.d.ts.map +1 -0
- package/dist/components/source-card/source-card.js +3 -193
- package/dist/components/source-card/source-card.js.map +1 -0
- package/dist/components/source-card/source-card.styles.d.ts +1 -0
- package/dist/components/source-card/source-card.styles.d.ts.map +1 -0
- package/dist/components/source-card/source-card.styles.js +11 -10
- package/dist/components/source-card/source-card.styles.js.map +1 -0
- package/dist/components/source-list/source-list.class.d.ts +64 -0
- package/dist/components/source-list/source-list.class.d.ts.map +1 -0
- package/dist/components/source-list/source-list.class.js +129 -0
- package/dist/components/source-list/source-list.class.js.map +1 -0
- package/dist/components/source-list/source-list.d.ts +2 -63
- package/dist/components/source-list/source-list.d.ts.map +1 -0
- package/dist/components/source-list/source-list.js +3 -128
- package/dist/components/source-list/source-list.js.map +1 -0
- package/dist/components/source-list/source-list.styles.d.ts +1 -0
- package/dist/components/source-list/source-list.styles.d.ts.map +1 -0
- package/dist/components/source-list/source-list.styles.js +5 -4
- package/dist/components/source-list/source-list.styles.js.map +1 -0
- package/dist/components/sparkline/sparkline.class.d.ts +31 -0
- package/dist/components/sparkline/sparkline.class.d.ts.map +1 -0
- package/dist/components/sparkline/sparkline.class.js +140 -0
- package/dist/components/sparkline/sparkline.class.js.map +1 -0
- package/dist/components/sparkline/sparkline.d.ts +2 -30
- package/dist/components/sparkline/sparkline.d.ts.map +1 -0
- package/dist/components/sparkline/sparkline.js +3 -137
- package/dist/components/sparkline/sparkline.js.map +1 -0
- package/dist/components/sparkline/sparkline.styles.d.ts +1 -0
- package/dist/components/sparkline/sparkline.styles.d.ts.map +1 -0
- package/dist/components/sparkline/sparkline.styles.js +3 -2
- package/dist/components/sparkline/sparkline.styles.js.map +1 -0
- package/dist/components/split/split.class.d.ts +293 -0
- package/dist/components/split/split.class.d.ts.map +1 -0
- package/dist/components/split/split.class.js +831 -0
- package/dist/components/split/split.class.js.map +1 -0
- package/dist/components/split/split.d.ts +2 -282
- package/dist/components/split/split.d.ts.map +1 -0
- package/dist/components/split/split.js +3 -888
- package/dist/components/split/split.js.map +1 -0
- package/dist/components/split/split.styles.d.ts +1 -0
- package/dist/components/split/split.styles.d.ts.map +1 -0
- package/dist/components/split/split.styles.js +8 -7
- package/dist/components/split/split.styles.js.map +1 -0
- package/dist/components/stat/stat.class.d.ts +90 -0
- package/dist/components/stat/stat.class.d.ts.map +1 -0
- package/dist/components/stat/stat.class.js +249 -0
- package/dist/components/stat/stat.class.js.map +1 -0
- package/dist/components/stat/stat.d.ts +2 -89
- package/dist/components/stat/stat.d.ts.map +1 -0
- package/dist/components/stat/stat.js +3 -248
- package/dist/components/stat/stat.js.map +1 -0
- package/dist/components/stat/stat.styles.d.ts +1 -0
- package/dist/components/stat/stat.styles.d.ts.map +1 -0
- package/dist/components/stat/stat.styles.js +23 -22
- package/dist/components/stat/stat.styles.js.map +1 -0
- package/dist/components/stream-status/stream-status.class.d.ts +131 -0
- package/dist/components/stream-status/stream-status.class.d.ts.map +1 -0
- package/dist/components/stream-status/stream-status.class.js +212 -0
- package/dist/components/stream-status/stream-status.class.js.map +1 -0
- package/dist/components/stream-status/stream-status.d.ts +3 -126
- package/dist/components/stream-status/stream-status.d.ts.map +1 -0
- package/dist/components/stream-status/stream-status.js +4 -290
- package/dist/components/stream-status/stream-status.js.map +1 -0
- package/dist/components/stream-status/stream-status.styles.d.ts +1 -0
- package/dist/components/stream-status/stream-status.styles.d.ts.map +1 -0
- package/dist/components/stream-status/stream-status.styles.js +7 -6
- package/dist/components/stream-status/stream-status.styles.js.map +1 -0
- package/dist/components/streaming-text/streaming-text.class.d.ts +105 -0
- package/dist/components/streaming-text/streaming-text.class.d.ts.map +1 -0
- package/dist/components/streaming-text/streaming-text.class.js +223 -0
- package/dist/components/streaming-text/streaming-text.class.js.map +1 -0
- package/dist/components/streaming-text/streaming-text.d.ts +3 -104
- package/dist/components/streaming-text/streaming-text.d.ts.map +1 -0
- package/dist/components/streaming-text/streaming-text.js +4 -222
- package/dist/components/streaming-text/streaming-text.js.map +1 -0
- package/dist/components/streaming-text/streaming-text.styles.d.ts +1 -0
- package/dist/components/streaming-text/streaming-text.styles.d.ts.map +1 -0
- package/dist/components/streaming-text/streaming-text.styles.js +4 -3
- package/dist/components/streaming-text/streaming-text.styles.js.map +1 -0
- package/dist/components/switch/switch.class.d.ts +109 -0
- package/dist/components/switch/switch.class.d.ts.map +1 -0
- package/dist/components/switch/switch.class.js +225 -0
- package/dist/components/switch/switch.class.js.map +1 -0
- package/dist/components/switch/switch.d.ts +2 -103
- package/dist/components/switch/switch.d.ts.map +1 -0
- package/dist/components/switch/switch.js +3 -248
- package/dist/components/switch/switch.js.map +1 -0
- package/dist/components/switch/switch.styles.d.ts +1 -0
- package/dist/components/switch/switch.styles.d.ts.map +1 -0
- package/dist/components/switch/switch.styles.js +18 -14
- package/dist/components/switch/switch.styles.js.map +1 -0
- package/dist/components/table/table.class.d.ts +212 -0
- package/dist/components/table/table.class.d.ts.map +1 -0
- package/dist/components/table/table.class.js +562 -0
- package/dist/components/table/table.class.js.map +1 -0
- package/dist/components/table/table.d.ts +3 -199
- package/dist/components/table/table.d.ts.map +1 -0
- package/dist/components/table/table.js +4 -611
- package/dist/components/table/table.js.map +1 -0
- package/dist/components/table/table.styles.d.ts +1 -0
- package/dist/components/table/table.styles.d.ts.map +1 -0
- package/dist/components/table/table.styles.js +9 -8
- package/dist/components/table/table.styles.js.map +1 -0
- package/dist/components/tabs/tabs.class.d.ts +80 -0
- package/dist/components/tabs/tabs.class.d.ts.map +1 -0
- package/dist/components/tabs/tabs.class.js +215 -0
- package/dist/components/tabs/tabs.class.js.map +1 -0
- package/dist/components/tabs/tabs.d.ts +2 -74
- package/dist/components/tabs/tabs.d.ts.map +1 -0
- package/dist/components/tabs/tabs.js +3 -252
- package/dist/components/tabs/tabs.js.map +1 -0
- package/dist/components/tabs/tabs.styles.d.ts +1 -0
- package/dist/components/tabs/tabs.styles.d.ts.map +1 -0
- package/dist/components/tabs/tabs.styles.js +10 -4
- package/dist/components/tabs/tabs.styles.js.map +1 -0
- package/dist/components/thinking-panel/thinking-panel.class.d.ts +124 -0
- package/dist/components/thinking-panel/thinking-panel.class.d.ts.map +1 -0
- package/dist/components/thinking-panel/thinking-panel.class.js +259 -0
- package/dist/components/thinking-panel/thinking-panel.class.js.map +1 -0
- package/dist/components/thinking-panel/thinking-panel.d.ts +2 -123
- package/dist/components/thinking-panel/thinking-panel.d.ts.map +1 -0
- package/dist/components/thinking-panel/thinking-panel.js +3 -258
- package/dist/components/thinking-panel/thinking-panel.js.map +1 -0
- package/dist/components/thinking-panel/thinking-panel.styles.d.ts +1 -0
- package/dist/components/thinking-panel/thinking-panel.styles.d.ts.map +1 -0
- package/dist/components/thinking-panel/thinking-panel.styles.js +13 -12
- package/dist/components/thinking-panel/thinking-panel.styles.js.map +1 -0
- package/dist/components/time-range/time-range.class.d.ts +137 -0
- package/dist/components/time-range/time-range.class.d.ts.map +1 -0
- package/dist/components/time-range/time-range.class.js +467 -0
- package/dist/components/time-range/time-range.class.js.map +1 -0
- package/dist/components/time-range/time-range.d.ts +2 -126
- package/dist/components/time-range/time-range.d.ts.map +1 -0
- package/dist/components/time-range/time-range.js +3 -494
- package/dist/components/time-range/time-range.js.map +1 -0
- package/dist/components/time-range/time-range.styles.d.ts +1 -0
- package/dist/components/time-range/time-range.styles.d.ts.map +1 -0
- package/dist/components/time-range/time-range.styles.js +21 -13
- package/dist/components/time-range/time-range.styles.js.map +1 -0
- package/dist/components/toast/toast-item.class.d.ts +79 -0
- package/dist/components/toast/toast-item.class.d.ts.map +1 -0
- package/dist/components/toast/toast-item.class.js +307 -0
- package/dist/components/toast/toast-item.class.js.map +1 -0
- package/dist/components/toast/toast-item.d.ts +2 -72
- package/dist/components/toast/toast-item.d.ts.map +1 -0
- package/dist/components/toast/toast-item.js +3 -323
- package/dist/components/toast/toast-item.js.map +1 -0
- package/dist/components/toast/toast-item.styles.d.ts +1 -0
- package/dist/components/toast/toast-item.styles.d.ts.map +1 -0
- package/dist/components/toast/toast-item.styles.js +13 -12
- package/dist/components/toast/toast-item.styles.js.map +1 -0
- package/dist/components/toast/toast.class.d.ts +33 -0
- package/dist/components/toast/toast.class.d.ts.map +1 -0
- package/dist/components/toast/toast.class.js +59 -0
- package/dist/components/toast/toast.class.js.map +1 -0
- package/dist/components/toast/toast.d.ts +3 -32
- package/dist/components/toast/toast.d.ts.map +1 -0
- package/dist/components/toast/toast.js +4 -58
- package/dist/components/toast/toast.js.map +1 -0
- package/dist/components/toast/toast.styles.d.ts +1 -0
- package/dist/components/toast/toast.styles.d.ts.map +1 -0
- package/dist/components/toast/toast.styles.js +20 -16
- package/dist/components/toast/toast.styles.js.map +1 -0
- package/dist/components/toast/toaster.d.ts +1 -0
- package/dist/components/toast/toaster.d.ts.map +1 -0
- package/dist/components/toast/toaster.js +1 -0
- package/dist/components/toast/toaster.js.map +1 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.class.d.ts +135 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.class.d.ts.map +1 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.class.js +257 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.class.js.map +1 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.d.ts +3 -131
- package/dist/components/tool-approval-dialog/tool-approval-dialog.d.ts.map +1 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.js +4 -327
- package/dist/components/tool-approval-dialog/tool-approval-dialog.js.map +1 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.styles.d.ts +1 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.styles.d.ts.map +1 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.styles.js +22 -18
- package/dist/components/tool-approval-dialog/tool-approval-dialog.styles.js.map +1 -0
- package/dist/components/tool-call-chip/tool-call-chip.class.d.ts +106 -0
- package/dist/components/tool-call-chip/tool-call-chip.class.d.ts.map +1 -0
- package/dist/components/tool-call-chip/tool-call-chip.class.js +348 -0
- package/dist/components/tool-call-chip/tool-call-chip.class.js.map +1 -0
- package/dist/components/tool-call-chip/tool-call-chip.d.ts +2 -105
- package/dist/components/tool-call-chip/tool-call-chip.d.ts.map +1 -0
- package/dist/components/tool-call-chip/tool-call-chip.js +3 -347
- package/dist/components/tool-call-chip/tool-call-chip.js.map +1 -0
- package/dist/components/tool-call-chip/tool-call-chip.styles.d.ts +1 -0
- package/dist/components/tool-call-chip/tool-call-chip.styles.d.ts.map +1 -0
- package/dist/components/tool-call-chip/tool-call-chip.styles.js +22 -21
- package/dist/components/tool-call-chip/tool-call-chip.styles.js.map +1 -0
- package/dist/components/tool-param-form/tool-param-form.class.d.ts +216 -0
- package/dist/components/tool-param-form/tool-param-form.class.d.ts.map +1 -0
- package/dist/components/tool-param-form/tool-param-form.class.js +548 -0
- package/dist/components/tool-param-form/tool-param-form.class.js.map +1 -0
- package/dist/components/tool-param-form/tool-param-form.d.ts +5 -206
- package/dist/components/tool-param-form/tool-param-form.d.ts.map +1 -0
- package/dist/components/tool-param-form/tool-param-form.js +6 -608
- package/dist/components/tool-param-form/tool-param-form.js.map +1 -0
- package/dist/components/tool-param-form/tool-param-form.styles.d.ts +1 -0
- package/dist/components/tool-param-form/tool-param-form.styles.d.ts.map +1 -0
- package/dist/components/tool-param-form/tool-param-form.styles.js +9 -8
- package/dist/components/tool-param-form/tool-param-form.styles.js.map +1 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.class.d.ts +123 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.class.d.ts.map +1 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.class.js +357 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.class.js.map +1 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.d.ts +2 -122
- package/dist/components/tool-result-dialog/tool-result-dialog.d.ts.map +1 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.js +3 -356
- package/dist/components/tool-result-dialog/tool-result-dialog.js.map +1 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.styles.d.ts +1 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.styles.d.ts.map +1 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.styles.js +24 -16
- package/dist/components/tool-result-dialog/tool-result-dialog.styles.js.map +1 -0
- package/dist/components/tool-result-view/registry.d.ts +1 -0
- package/dist/components/tool-result-view/registry.d.ts.map +1 -0
- package/dist/components/tool-result-view/registry.js +1 -0
- package/dist/components/tool-result-view/registry.js.map +1 -0
- package/dist/components/tool-result-view/tool-result-view.class.d.ts +65 -0
- package/dist/components/tool-result-view/tool-result-view.class.d.ts.map +1 -0
- package/dist/components/tool-result-view/tool-result-view.class.js +124 -0
- package/dist/components/tool-result-view/tool-result-view.class.js.map +1 -0
- package/dist/components/tool-result-view/tool-result-view.d.ts +4 -58
- package/dist/components/tool-result-view/tool-result-view.d.ts.map +1 -0
- package/dist/components/tool-result-view/tool-result-view.js +5 -150
- package/dist/components/tool-result-view/tool-result-view.js.map +1 -0
- package/dist/components/tool-result-view/tool-result-view.styles.d.ts +1 -0
- package/dist/components/tool-result-view/tool-result-view.styles.d.ts.map +1 -0
- package/dist/components/tool-result-view/tool-result-view.styles.js +1 -0
- package/dist/components/tool-result-view/tool-result-view.styles.js.map +1 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.class.d.ts +152 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.class.d.ts.map +1 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.class.js +349 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.class.js.map +1 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.d.ts +4 -151
- package/dist/components/tool-select-dialog/tool-select-dialog.d.ts.map +1 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.js +5 -348
- package/dist/components/tool-select-dialog/tool-select-dialog.js.map +1 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.styles.d.ts +1 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.styles.d.ts.map +1 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.styles.js +29 -25
- package/dist/components/tool-select-dialog/tool-select-dialog.styles.js.map +1 -0
- package/dist/components/tree/tree-node.class.d.ts +78 -0
- package/dist/components/tree/tree-node.class.d.ts.map +1 -0
- package/dist/components/tree/tree-node.class.js +204 -0
- package/dist/components/tree/tree-node.class.js.map +1 -0
- package/dist/components/tree/tree-node.d.ts +2 -68
- package/dist/components/tree/tree-node.d.ts.map +1 -0
- package/dist/components/tree/tree-node.js +4 -222
- package/dist/components/tree/tree-node.js.map +1 -0
- package/dist/components/tree/tree.class.d.ts +130 -0
- package/dist/components/tree/tree.class.d.ts.map +1 -0
- package/dist/components/tree/tree.class.js +326 -0
- package/dist/components/tree/tree.class.js.map +1 -0
- package/dist/components/tree/tree.d.ts +3 -129
- package/dist/components/tree/tree.d.ts.map +1 -0
- package/dist/components/tree/tree.js +5 -325
- package/dist/components/tree/tree.js.map +1 -0
- package/dist/components/tree/tree.styles.d.ts +1 -0
- package/dist/components/tree/tree.styles.d.ts.map +1 -0
- package/dist/components/tree/tree.styles.js +1 -0
- package/dist/components/tree/tree.styles.js.map +1 -0
- package/dist/components/tree/update-cascade.d.ts +1 -0
- package/dist/components/tree/update-cascade.d.ts.map +1 -0
- package/dist/components/tree/update-cascade.js +1 -0
- package/dist/components/tree/update-cascade.js.map +1 -0
- package/dist/components/typing-indicator/typing-indicator.class.d.ts +71 -0
- package/dist/components/typing-indicator/typing-indicator.class.d.ts.map +1 -0
- package/dist/components/typing-indicator/typing-indicator.class.js +107 -0
- package/dist/components/typing-indicator/typing-indicator.class.js.map +1 -0
- package/dist/components/typing-indicator/typing-indicator.d.ts +2 -70
- package/dist/components/typing-indicator/typing-indicator.d.ts.map +1 -0
- package/dist/components/typing-indicator/typing-indicator.js +3 -106
- package/dist/components/typing-indicator/typing-indicator.js.map +1 -0
- package/dist/components/typing-indicator/typing-indicator.styles.d.ts +1 -0
- package/dist/components/typing-indicator/typing-indicator.styles.d.ts.map +1 -0
- package/dist/components/typing-indicator/typing-indicator.styles.js +7 -6
- package/dist/components/typing-indicator/typing-indicator.styles.js.map +1 -0
- package/dist/components/virtual-list/virtual-list.class.d.ts +215 -0
- package/dist/components/virtual-list/virtual-list.class.d.ts.map +1 -0
- package/dist/components/virtual-list/virtual-list.class.js +520 -0
- package/dist/components/virtual-list/virtual-list.class.js.map +1 -0
- package/dist/components/virtual-list/virtual-list.d.ts +2 -210
- package/dist/components/virtual-list/virtual-list.d.ts.map +1 -0
- package/dist/components/virtual-list/virtual-list.js +3 -605
- package/dist/components/virtual-list/virtual-list.js.map +1 -0
- package/dist/components/virtual-list/virtual-list.styles.d.ts +1 -0
- package/dist/components/virtual-list/virtual-list.styles.d.ts.map +1 -0
- package/dist/components/virtual-list/virtual-list.styles.js +5 -4
- package/dist/components/virtual-list/virtual-list.styles.js.map +1 -0
- package/dist/components/widget/widget.class.d.ts +70 -0
- package/dist/components/widget/widget.class.d.ts.map +1 -0
- package/dist/components/widget/widget.class.js +224 -0
- package/dist/components/widget/widget.class.js.map +1 -0
- package/dist/components/widget/widget.d.ts +2 -65
- package/dist/components/widget/widget.d.ts.map +1 -0
- package/dist/components/widget/widget.js +3 -249
- package/dist/components/widget/widget.js.map +1 -0
- package/dist/components/widget/widget.styles.d.ts +1 -0
- package/dist/components/widget/widget.styles.d.ts.map +1 -0
- package/dist/components/widget/widget.styles.js +13 -8
- package/dist/components/widget/widget.styles.js.map +1 -0
- package/dist/components/word-cloud/word-cloud-layout.d.ts +1 -0
- package/dist/components/word-cloud/word-cloud-layout.d.ts.map +1 -0
- package/dist/components/word-cloud/word-cloud-layout.js +1 -0
- package/dist/components/word-cloud/word-cloud-layout.js.map +1 -0
- package/dist/components/word-cloud/word-cloud.class.d.ts +99 -0
- package/dist/components/word-cloud/word-cloud.class.d.ts.map +1 -0
- package/dist/components/word-cloud/word-cloud.class.js +279 -0
- package/dist/components/word-cloud/word-cloud.class.js.map +1 -0
- package/dist/components/word-cloud/word-cloud.d.ts +2 -91
- package/dist/components/word-cloud/word-cloud.d.ts.map +1 -0
- package/dist/components/word-cloud/word-cloud.js +3 -303
- package/dist/components/word-cloud/word-cloud.js.map +1 -0
- package/dist/components/word-cloud/word-cloud.styles.d.ts +1 -0
- package/dist/components/word-cloud/word-cloud.styles.d.ts.map +1 -0
- package/dist/components/word-cloud/word-cloud.styles.js +32 -18
- package/dist/components/word-cloud/word-cloud.styles.js.map +1 -0
- package/dist/internal/a11y.d.ts +1 -0
- package/dist/internal/a11y.d.ts.map +1 -0
- package/dist/internal/a11y.js +1 -0
- package/dist/internal/a11y.js.map +1 -0
- package/dist/internal/anchored-validity.d.ts +1 -0
- package/dist/internal/anchored-validity.d.ts.map +1 -0
- package/dist/internal/anchored-validity.js +1 -0
- package/dist/internal/anchored-validity.js.map +1 -0
- package/dist/internal/announcer.d.ts +1 -0
- package/dist/internal/announcer.d.ts.map +1 -0
- package/dist/internal/announcer.js +1 -0
- package/dist/internal/announcer.js.map +1 -0
- package/dist/internal/form-associated.d.ts +1 -0
- package/dist/internal/form-associated.d.ts.map +1 -0
- package/dist/internal/form-associated.js +1 -0
- package/dist/internal/form-associated.js.map +1 -0
- package/dist/internal/group-by-recency.d.ts +1 -0
- package/dist/internal/group-by-recency.d.ts.map +1 -0
- package/dist/internal/group-by-recency.js +1 -0
- package/dist/internal/group-by-recency.js.map +1 -0
- package/dist/internal/icons.d.ts +1 -0
- package/dist/internal/icons.d.ts.map +1 -0
- package/dist/internal/icons.js +1 -0
- package/dist/internal/icons.js.map +1 -0
- package/dist/internal/localization.d.ts +27 -0
- package/dist/internal/localization.d.ts.map +1 -0
- package/dist/internal/localization.js +141 -0
- package/dist/internal/localization.js.map +1 -0
- package/dist/internal/lyra-element.d.ts +27 -3
- package/dist/internal/lyra-element.d.ts.map +1 -0
- package/dist/internal/lyra-element.js +52 -3
- package/dist/internal/lyra-element.js.map +1 -0
- package/dist/internal/numbers.d.ts +1 -0
- package/dist/internal/numbers.d.ts.map +1 -0
- package/dist/internal/numbers.js +1 -0
- package/dist/internal/numbers.js.map +1 -0
- package/dist/internal/optional-peer-types.d.ts +8 -0
- package/dist/internal/optional-peer-types.d.ts.map +1 -0
- package/dist/internal/optional-peer-types.js +2 -0
- package/dist/internal/optional-peer-types.js.map +1 -0
- package/dist/internal/overlay-manager.d.ts +1 -0
- package/dist/internal/overlay-manager.d.ts.map +1 -0
- package/dist/internal/overlay-manager.js +1 -0
- package/dist/internal/overlay-manager.js.map +1 -0
- package/dist/internal/positioner.d.ts +1 -0
- package/dist/internal/positioner.d.ts.map +1 -0
- package/dist/internal/positioner.js +1 -0
- package/dist/internal/positioner.js.map +1 -0
- package/dist/internal/prefix.d.ts +1 -0
- package/dist/internal/prefix.d.ts.map +1 -0
- package/dist/internal/prefix.js +9 -2
- package/dist/internal/prefix.js.map +1 -0
- package/dist/internal/root-registration-allowlist.d.ts +8 -0
- package/dist/internal/root-registration-allowlist.d.ts.map +1 -0
- package/dist/internal/root-registration-allowlist.js +95 -0
- package/dist/internal/root-registration-allowlist.js.map +1 -0
- package/dist/internal/rtl.d.ts +1 -0
- package/dist/internal/rtl.d.ts.map +1 -0
- package/dist/internal/rtl.js +1 -0
- package/dist/internal/rtl.js.map +1 -0
- package/dist/internal/safe-url.d.ts +1 -0
- package/dist/internal/safe-url.d.ts.map +1 -0
- package/dist/internal/safe-url.js +1 -0
- package/dist/internal/safe-url.js.map +1 -0
- package/dist/internal/scroll-lock.d.ts +1 -0
- package/dist/internal/scroll-lock.d.ts.map +1 -0
- package/dist/internal/scroll-lock.js +1 -0
- package/dist/internal/scroll-lock.js.map +1 -0
- package/dist/internal/tokens.styles.d.ts +1 -0
- package/dist/internal/tokens.styles.d.ts.map +1 -0
- package/dist/internal/tokens.styles.js +207 -0
- package/dist/internal/tokens.styles.js.map +1 -0
- package/dist/lyra.d.ts +52 -4
- package/dist/lyra.d.ts.map +1 -0
- package/dist/lyra.js +4 -1
- package/dist/lyra.js.map +1 -0
- package/llms-full.txt +113 -50
- package/llms.txt +6 -6
- package/package.json +183 -5
|
@@ -0,0 +1,1211 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html } from 'lit';
|
|
8
|
+
import { property, query, state } from 'lit/decorators.js';
|
|
9
|
+
import { styleMap } from 'lit/directives/style-map.js';
|
|
10
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
11
|
+
import { srOnly } from '../../internal/a11y.js';
|
|
12
|
+
import { linearAlpha, linearBucket, minMax, sqrtStep } from './heatmap-scale.js';
|
|
13
|
+
import { styles } from './heatmap.styles.js';
|
|
14
|
+
import { buildCalendarGrid, parseIsoDate, quartileBucket } from './calendar-grid.js';
|
|
15
|
+
const PAD_LEFT = 60;
|
|
16
|
+
const PAD_TOP = 20;
|
|
17
|
+
const FALLBACK_NO_DATA_FILL = 'rgba(128,128,128,0.25)';
|
|
18
|
+
const RAMP_STEPS = 7;
|
|
19
|
+
const FALLBACK_SCALE_LO = '#cde2fb';
|
|
20
|
+
const FALLBACK_SCALE_HI = '#0969da';
|
|
21
|
+
const FALLBACK_LABEL_FONT = '10px sans-serif';
|
|
22
|
+
const CAL_PAD_LEFT = 28;
|
|
23
|
+
const CAL_LABEL_H = 16;
|
|
24
|
+
/** Calendar mode's original fixed cell size — now also the effective fallback
|
|
25
|
+
* the `cellSize` accessor uses in calendar mode when left unset (see its
|
|
26
|
+
* doc comment), so a consumer who never touches `cellSize` sees no change. */
|
|
27
|
+
const CAL_CELL = 11;
|
|
28
|
+
const CAL_GAP = 2;
|
|
29
|
+
/** Matrix mode's original fixed cell size — the effective fallback the
|
|
30
|
+
* `cellSize` accessor uses in matrix mode when left unset. */
|
|
31
|
+
const DEFAULT_MATRIX_CELL_SIZE = 22;
|
|
32
|
+
const DEFAULT_BUCKET_COUNT = 5;
|
|
33
|
+
/**
|
|
34
|
+
* A linear RGB ramp cannot contain more than 256 visually distinct integer
|
|
35
|
+
* steps on any channel. Keeping the bucket count within that bound avoids an
|
|
36
|
+
* untrusted attribute/property value turning the ramp into an unbounded
|
|
37
|
+
* allocation without discarding any useful color resolution.
|
|
38
|
+
*/
|
|
39
|
+
export const MAX_BUCKET_COUNT = 256;
|
|
40
|
+
/** Ring stroke width for both the annotation overlay and the keyboard focus ring. */
|
|
41
|
+
const RING_LINE_WIDTH = 2;
|
|
42
|
+
const FALLBACK_FOCUS_RING_COLOR = '#0969da';
|
|
43
|
+
const FALLBACK_ANNOTATION_COLOR = '#cf222e';
|
|
44
|
+
const ARROW_KEYS = new Set(['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight']);
|
|
45
|
+
const MS_PER_DAY = 86_400_000;
|
|
46
|
+
const HEX_RE = /^([0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
47
|
+
const RGB_RE = /^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/i;
|
|
48
|
+
/**
|
|
49
|
+
* Parses a strict `#rgb` or `#rrggbb` hex string into an `[r, g, b]` triple,
|
|
50
|
+
* or `null` if `hex` isn't one (rather than silently coercing an unparsable
|
|
51
|
+
* string to `0` via `Number.parseInt(..., 16)` returning `NaN`).
|
|
52
|
+
*/
|
|
53
|
+
export function hexToRgb(hex) {
|
|
54
|
+
const clean = hex.trim().replace('#', '');
|
|
55
|
+
if (!HEX_RE.test(clean))
|
|
56
|
+
return null;
|
|
57
|
+
const full = clean.length === 3 ? clean.split('').map((c) => c + c).join('') : clean;
|
|
58
|
+
const num = Number.parseInt(full, 16);
|
|
59
|
+
return [(num >> 16) & 255, (num >> 8) & 255, num & 255];
|
|
60
|
+
}
|
|
61
|
+
function parseRgbString(value) {
|
|
62
|
+
const match = RGB_RE.exec(value);
|
|
63
|
+
return match ? [Number(match[1]), Number(match[2]), Number(match[3])] : null;
|
|
64
|
+
}
|
|
65
|
+
let scratchCtx;
|
|
66
|
+
/** A detached 1x1 canvas used solely to normalize CSS color strings. */
|
|
67
|
+
function getScratchCtx() {
|
|
68
|
+
if (scratchCtx === undefined) {
|
|
69
|
+
scratchCtx = document.createElement('canvas').getContext('2d');
|
|
70
|
+
}
|
|
71
|
+
return scratchCtx;
|
|
72
|
+
}
|
|
73
|
+
const warnedInvalidColors = new Set();
|
|
74
|
+
function warnInvalidColor(color) {
|
|
75
|
+
if (warnedInvalidColors.has(color))
|
|
76
|
+
return;
|
|
77
|
+
warnedInvalidColors.add(color);
|
|
78
|
+
console.warn(`<lyra-heatmap> could not parse "${color}" (set via --lyra-heatmap-scale-lo/-hi) as a CSS ` +
|
|
79
|
+
'color; falling back to the default ramp endpoint.');
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Normalizes a bucket count to the safe, renderable range. Non-finite values
|
|
83
|
+
* restore the public default; finite values are floored and clamped to
|
|
84
|
+
* `[2, MAX_BUCKET_COUNT]`. Flooring keeps the ramp array's length in exact
|
|
85
|
+
* agreement with the count used by `quartileBucket()`.
|
|
86
|
+
*/
|
|
87
|
+
export function normalizeBucketCount(bucketCount) {
|
|
88
|
+
if (!Number.isFinite(bucketCount)) {
|
|
89
|
+
return DEFAULT_BUCKET_COUNT;
|
|
90
|
+
}
|
|
91
|
+
return Math.min(MAX_BUCKET_COUNT, Math.max(2, Math.floor(bucketCount)));
|
|
92
|
+
}
|
|
93
|
+
const bucketCountConverter = {
|
|
94
|
+
fromAttribute(value) {
|
|
95
|
+
return value === null ? DEFAULT_BUCKET_COUNT : normalizeBucketCount(Number(value));
|
|
96
|
+
},
|
|
97
|
+
toAttribute(value) {
|
|
98
|
+
return String(normalizeBucketCount(value));
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Resolves any syntactically valid CSS `<color>` — hex, `rgb()`, `hsl()`,
|
|
103
|
+
* `oklch()`, a named color, etc. — to an `[r, g, b]` triple.
|
|
104
|
+
*
|
|
105
|
+
* Hand-rolling a parser for every CSS color syntax is unnecessary and
|
|
106
|
+
* error-prone (a naive hex-only parser silently turns an unrecognized format
|
|
107
|
+
* into `NaN` -> `0`, i.e. solid black). The canvas 2D context already
|
|
108
|
+
* implements the full CSS color grammar via its `fillStyle` setter, so this
|
|
109
|
+
* normalizes through that instead. Assigning an unparsable string to
|
|
110
|
+
* `fillStyle` is a spec'd no-op (the previous value is kept, it never
|
|
111
|
+
* throws), so a sentinel round-trip is used to detect that case and fall
|
|
112
|
+
* back to `fallbackHex` (with a one-time `console.warn`) instead of
|
|
113
|
+
* silently drawing the wrong color.
|
|
114
|
+
*/
|
|
115
|
+
export function resolveRgb(color, fallbackHex) {
|
|
116
|
+
const fallback = hexToRgb(fallbackHex) ?? [0, 0, 0];
|
|
117
|
+
const direct = hexToRgb(color);
|
|
118
|
+
if (direct)
|
|
119
|
+
return direct;
|
|
120
|
+
const ctx = getScratchCtx();
|
|
121
|
+
if (!ctx)
|
|
122
|
+
return fallback;
|
|
123
|
+
const sentinel = 'rgb(1, 2, 3)';
|
|
124
|
+
ctx.fillStyle = sentinel;
|
|
125
|
+
const sentinelNormalized = ctx.fillStyle;
|
|
126
|
+
ctx.fillStyle = color;
|
|
127
|
+
if (ctx.fillStyle === sentinelNormalized && color.trim() !== sentinel) {
|
|
128
|
+
warnInvalidColor(color);
|
|
129
|
+
return fallback;
|
|
130
|
+
}
|
|
131
|
+
const normalized = ctx.fillStyle;
|
|
132
|
+
return hexToRgb(normalized) ?? parseRgbString(normalized) ?? fallback;
|
|
133
|
+
}
|
|
134
|
+
/** Linearly interpolates between two already-resolved `[r, g, b]` triples at `t` in `[0, 1]`. */
|
|
135
|
+
function mixRgb(from, to, t) {
|
|
136
|
+
const clamped = Math.min(1, Math.max(0, t));
|
|
137
|
+
const r = Math.round(from[0] + (to[0] - from[0]) * clamped);
|
|
138
|
+
const g = Math.round(from[1] + (to[1] - from[1]) * clamped);
|
|
139
|
+
const b = Math.round(from[2] + (to[2] - from[2]) * clamped);
|
|
140
|
+
return `rgb(${r}, ${g}, ${b})`;
|
|
141
|
+
}
|
|
142
|
+
/** Linearly interpolates between two CSS colors (any valid syntax) at `t` in `[0, 1]`. */
|
|
143
|
+
export function mixColor(fromColor, toColor, t) {
|
|
144
|
+
return mixRgb(resolveRgb(fromColor, FALLBACK_SCALE_LO), resolveRgb(toColor, FALLBACK_SCALE_HI), t);
|
|
145
|
+
}
|
|
146
|
+
export class LyraHeatmap extends LyraElement {
|
|
147
|
+
constructor() {
|
|
148
|
+
super(...arguments);
|
|
149
|
+
this.rowLabels = [];
|
|
150
|
+
this.colLabels = [];
|
|
151
|
+
this.values = [];
|
|
152
|
+
this.valueLabel = 'value';
|
|
153
|
+
/**
|
|
154
|
+
* `"linear"` (default) maps values linearly to the color ramp in matrix
|
|
155
|
+
* mode, and buckets calendar-mode values via `quartileBucket()` — both
|
|
156
|
+
* unchanged from before this property governed calendar mode too.
|
|
157
|
+
* `"sqrt"` compresses via `sqrtStep()`'s square-root magnitude compression
|
|
158
|
+
* instead, in *both* modes, so one heavy cell/day doesn't wash out the
|
|
159
|
+
* rest of a skewed dataset.
|
|
160
|
+
*/
|
|
161
|
+
this.scale = 'linear';
|
|
162
|
+
/**
|
|
163
|
+
* When set, `cellSize` is derived from the host's measured `clientWidth`
|
|
164
|
+
* on every draw (including ResizeObserver-triggered redraws) instead of
|
|
165
|
+
* the fixed `cell-size` attribute, so the grid actually fills the
|
|
166
|
+
* available width. Without this, canvas dimensions are computed purely
|
|
167
|
+
* from `PAD_LEFT + cols * cellSize` (matrix mode) or
|
|
168
|
+
* `CAL_PAD_LEFT + weekCount * cellSize` (calendar mode), so a
|
|
169
|
+
* resize-triggered redraw is a geometric no-op. Originally matrix-mode
|
|
170
|
+
* only; now applies to calendar mode too.
|
|
171
|
+
*/
|
|
172
|
+
this.fitToWidth = false;
|
|
173
|
+
this.mode = 'matrix';
|
|
174
|
+
this.days = [];
|
|
175
|
+
/**
|
|
176
|
+
* Calendar mode only (no-op in matrix mode): anchors the calendar grid at
|
|
177
|
+
* a different weekday instead of always Sunday — `0`-`6`, same numbering
|
|
178
|
+
* as `CalendarCellPos.weekday` (`0` Sunday .. `6` Saturday, matching
|
|
179
|
+
* `CalendarCell.weekday`'s existing convention). Threaded into
|
|
180
|
+
* `buildCalendarGrid()`. Defaults to `0` (Sunday), unchanged from before
|
|
181
|
+
* this property existed.
|
|
182
|
+
*/
|
|
183
|
+
this.firstDayOfWeek = 0;
|
|
184
|
+
this._bucketCount = DEFAULT_BUCKET_COUNT;
|
|
185
|
+
/** Cells to ring-highlight — `row`/`col` in matrix mode, `date` in calendar mode. See `HeatmapAnnotation`. */
|
|
186
|
+
this.annotations = [];
|
|
187
|
+
this.themeRefreshQueued = false;
|
|
188
|
+
/** The current value range, refreshed once per update cycle by `willUpdate()`. See `computeValueRange()`. */
|
|
189
|
+
this.cachedValueRange = null;
|
|
190
|
+
/**
|
|
191
|
+
* The calendar-mode grid layout, refreshed by `willUpdate()` only when
|
|
192
|
+
* `days` actually changes (see `computeValueRange()`'s twin comment above)
|
|
193
|
+
* — `buildCalendarGrid()` parses every date, filters invalid ones, and does
|
|
194
|
+
* a full `.slice().sort()` for month labels, so recomputing it from
|
|
195
|
+
* `drawCalendar()`, `hitTestCalendar()`, `calendarCellAt()`, and
|
|
196
|
+
* `onCalendarKeyDown()` independently would redo that work 2-4x for a
|
|
197
|
+
* single hover/click/keydown.
|
|
198
|
+
*/
|
|
199
|
+
this.cachedCalendarGrid = buildCalendarGrid(this.days);
|
|
200
|
+
this.cachedCalendarSortedValues = [];
|
|
201
|
+
this.cachedCalendarCellsByPos = new Map();
|
|
202
|
+
this.cachedRamp = null;
|
|
203
|
+
/** The cell currently under the pointer (`null` when not hovering one) — drives `[part="tooltip"]`. */
|
|
204
|
+
this.hoverCell = null;
|
|
205
|
+
/** The roving keyboard-focus cell cursor, moved by arrow keys — drives the
|
|
206
|
+
* canvas-drawn focus ring and the `[part="live-region"]` announcement. */
|
|
207
|
+
this.focusedCell = null;
|
|
208
|
+
/** Text of the visually-hidden `aria-live="polite"` status announcement, refreshed on every focus move. */
|
|
209
|
+
this.liveText = '';
|
|
210
|
+
/**
|
|
211
|
+
* Whether `role`/`aria-label` were present on the host *before* this
|
|
212
|
+
* element's own code ever wrote to them — snapshotted once, in the very
|
|
213
|
+
* first `willUpdate()` (guarded by `hasUpdated`, which Lit only flips to
|
|
214
|
+
* `true` after that first update commits). Re-checking `hasAttribute()` on
|
|
215
|
+
* every update instead would self-poison: once this element writes its own
|
|
216
|
+
* default `aria-label` on the first render, `hasAttribute('aria-label')`
|
|
217
|
+
* is permanently `true` afterwards, which would wrongly look like an
|
|
218
|
+
* author-supplied value and freeze the label instead of refreshing it as
|
|
219
|
+
* `values`/`days` change on later updates.
|
|
220
|
+
*/
|
|
221
|
+
this.authorSuppliedRole = false;
|
|
222
|
+
this.authorSuppliedAriaLabel = false;
|
|
223
|
+
this.onDprChange = () => {
|
|
224
|
+
this.watchDpr();
|
|
225
|
+
this.draw();
|
|
226
|
+
};
|
|
227
|
+
this.onColorSchemeChange = () => {
|
|
228
|
+
this.refreshTheme();
|
|
229
|
+
};
|
|
230
|
+
this.queueThemeRefresh = () => {
|
|
231
|
+
if (this.themeRefreshQueued)
|
|
232
|
+
return;
|
|
233
|
+
this.themeRefreshQueued = true;
|
|
234
|
+
queueMicrotask(() => {
|
|
235
|
+
this.themeRefreshQueued = false;
|
|
236
|
+
if (this.isConnected)
|
|
237
|
+
this.refreshTheme();
|
|
238
|
+
});
|
|
239
|
+
};
|
|
240
|
+
this.scheduleDraw = () => {
|
|
241
|
+
if (this.drawRafId !== undefined)
|
|
242
|
+
return;
|
|
243
|
+
this.drawRafId = requestAnimationFrame(() => {
|
|
244
|
+
this.drawRafId = undefined;
|
|
245
|
+
if (this.isConnected)
|
|
246
|
+
this.draw();
|
|
247
|
+
});
|
|
248
|
+
};
|
|
249
|
+
this.onPointerMove = (e) => {
|
|
250
|
+
const next = this.hitTest(e.offsetX, e.offsetY);
|
|
251
|
+
if (!this.samePos(this.hoverCell, next))
|
|
252
|
+
this.hoverCell = next;
|
|
253
|
+
};
|
|
254
|
+
this.onPointerLeave = () => {
|
|
255
|
+
this.hoverCell = null;
|
|
256
|
+
};
|
|
257
|
+
this.onCanvasClick = (e) => {
|
|
258
|
+
// Only the click's own hit-tested position counts — a click that lands
|
|
259
|
+
// outside the grid (e.g. on the canvas's own padding) is a genuine
|
|
260
|
+
// out-of-grid click and should do nothing, not fall back to whatever
|
|
261
|
+
// cell happens to still be keyboard-focused from an earlier interaction.
|
|
262
|
+
const pos = this.hitTest(e.offsetX, e.offsetY);
|
|
263
|
+
if (!pos)
|
|
264
|
+
return;
|
|
265
|
+
this.focusedCell = pos;
|
|
266
|
+
this.announce(pos);
|
|
267
|
+
this.emitCellClick(pos);
|
|
268
|
+
};
|
|
269
|
+
this.onKeyDown = (e) => {
|
|
270
|
+
if (this.mode === 'calendar')
|
|
271
|
+
this.onCalendarKeyDown(e);
|
|
272
|
+
else
|
|
273
|
+
this.onMatrixKeyDown(e);
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
static { this.styles = [LyraElement.styles, styles, srOnly]; }
|
|
277
|
+
/**
|
|
278
|
+
* Effective per-cell size (CSS px). Originally matrix-mode only; now also
|
|
279
|
+
* governs calendar mode's cell size (replacing the previously hardcoded
|
|
280
|
+
* 11px constant there) once explicitly set. Left unset, each mode keeps
|
|
281
|
+
* its own original default — `DEFAULT_MATRIX_CELL_SIZE` (22) in matrix
|
|
282
|
+
* mode, `CAL_CELL` (11) in calendar mode — so an existing consumer who
|
|
283
|
+
* never touches `cellSize` sees no change in either mode. Set explicitly
|
|
284
|
+
* (attribute or property), the same value governs both modes alike.
|
|
285
|
+
*/
|
|
286
|
+
get cellSize() {
|
|
287
|
+
return this._cellSize ?? (this.mode === 'calendar' ? CAL_CELL : DEFAULT_MATRIX_CELL_SIZE);
|
|
288
|
+
}
|
|
289
|
+
set cellSize(value) {
|
|
290
|
+
const oldValue = this._cellSize;
|
|
291
|
+
this._cellSize = value;
|
|
292
|
+
this.requestUpdate('cellSize', oldValue);
|
|
293
|
+
}
|
|
294
|
+
get bucketCount() {
|
|
295
|
+
return this._bucketCount;
|
|
296
|
+
}
|
|
297
|
+
set bucketCount(value) {
|
|
298
|
+
const oldValue = this._bucketCount;
|
|
299
|
+
this._bucketCount = normalizeBucketCount(value);
|
|
300
|
+
this.requestUpdate('bucketCount', oldValue);
|
|
301
|
+
}
|
|
302
|
+
connectedCallback() {
|
|
303
|
+
super.connectedCallback();
|
|
304
|
+
this.resizeObserver = new ResizeObserver(this.scheduleDraw);
|
|
305
|
+
this.resizeObserver.observe(this);
|
|
306
|
+
this.watchDpr();
|
|
307
|
+
this.watchTheme();
|
|
308
|
+
}
|
|
309
|
+
disconnectedCallback() {
|
|
310
|
+
super.disconnectedCallback();
|
|
311
|
+
this.resizeObserver?.disconnect();
|
|
312
|
+
this.dprQuery?.removeEventListener('change', this.onDprChange);
|
|
313
|
+
this.colorSchemeQuery?.removeEventListener('change', this.onColorSchemeChange);
|
|
314
|
+
this.themeObserver?.disconnect();
|
|
315
|
+
this.themeObserver = undefined;
|
|
316
|
+
if (this.drawRafId !== undefined) {
|
|
317
|
+
cancelAnimationFrame(this.drawRafId);
|
|
318
|
+
this.drawRafId = undefined;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
watchDpr() {
|
|
322
|
+
// A MediaQueryList's `matches` is fixed at creation time, so crossing the
|
|
323
|
+
// DPR threshold it was built for means building a fresh one for the new
|
|
324
|
+
// ratio — remove the previous instance's listener first, or it leaks
|
|
325
|
+
// (disconnectedCallback only ever cleans up whichever is current).
|
|
326
|
+
this.dprQuery?.removeEventListener('change', this.onDprChange);
|
|
327
|
+
this.dprQuery = matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);
|
|
328
|
+
this.dprQuery.addEventListener('change', this.onDprChange);
|
|
329
|
+
}
|
|
330
|
+
watchTheme() {
|
|
331
|
+
const view = this.ownerDocument.defaultView;
|
|
332
|
+
if (!view)
|
|
333
|
+
return;
|
|
334
|
+
this.colorSchemeQuery = view.matchMedia?.('(prefers-color-scheme: dark)');
|
|
335
|
+
this.colorSchemeQuery?.addEventListener('change', this.onColorSchemeChange);
|
|
336
|
+
if (typeof MutationObserver === 'undefined')
|
|
337
|
+
return;
|
|
338
|
+
const targets = [this];
|
|
339
|
+
let parent = this.parentElement;
|
|
340
|
+
while (parent) {
|
|
341
|
+
targets.push(parent);
|
|
342
|
+
parent = parent.parentElement;
|
|
343
|
+
}
|
|
344
|
+
this.themeObserver = new MutationObserver(this.queueThemeRefresh);
|
|
345
|
+
for (const target of targets) {
|
|
346
|
+
this.themeObserver.observe(target, {
|
|
347
|
+
attributes: true,
|
|
348
|
+
attributeFilter: ['class', 'style', 'data-theme', 'data-color-scheme'],
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
willUpdate(changed) {
|
|
353
|
+
if (changed.has('mode') ||
|
|
354
|
+
changed.has('rowLabels') ||
|
|
355
|
+
changed.has('colLabels') ||
|
|
356
|
+
changed.has('days') ||
|
|
357
|
+
changed.has('firstDayOfWeek') ||
|
|
358
|
+
changed.has('cellInteractive')) {
|
|
359
|
+
// The previous focus/hover cursor may no longer address a real cell
|
|
360
|
+
// once the grid's shape (or mode) changes out from under it —
|
|
361
|
+
// stroking a focus ring at a stale (row, col)/(week, weekday), or
|
|
362
|
+
// leaving the live region announcing a stale value, would be actively
|
|
363
|
+
// misleading, so drop both instead. Reactive-property writes belong in
|
|
364
|
+
// willUpdate() (not updated()), which folds them into this same
|
|
365
|
+
// render rather than scheduling a whole extra update pass. A
|
|
366
|
+
// `firstDayOfWeek` change reshuffles every cell's week/weekday the same
|
|
367
|
+
// way a `days` change does, so it resets the cursor too.
|
|
368
|
+
this.focusedCell = null;
|
|
369
|
+
this.hoverCell = null;
|
|
370
|
+
this.liveText = '';
|
|
371
|
+
}
|
|
372
|
+
// Calendar-mode grid layout depends only on `days`/`firstDayOfWeek` (not
|
|
373
|
+
// `mode`) — rebuilt here, once per cycle, instead of independently by
|
|
374
|
+
// every call site (see `cachedCalendarGrid`'s doc comment).
|
|
375
|
+
if (changed.has('days') || changed.has('firstDayOfWeek') || !this.hasUpdated) {
|
|
376
|
+
this.cachedCalendarGrid = buildCalendarGrid(this.days, this.firstDayOfWeek);
|
|
377
|
+
this.cachedCalendarSortedValues = this.cachedCalendarGrid.cells
|
|
378
|
+
.map((cell) => cell.value)
|
|
379
|
+
.filter((value) => Number.isFinite(value) && value >= 0)
|
|
380
|
+
.sort((a, b) => a - b);
|
|
381
|
+
this.cachedCalendarCellsByPos = new Map(this.cachedCalendarGrid.cells.map((cell) => [`${cell.week}:${cell.weekday}`, cell]));
|
|
382
|
+
}
|
|
383
|
+
if (!this.hasUpdated) {
|
|
384
|
+
this.authorSuppliedRole = this.hasAttribute('role');
|
|
385
|
+
this.authorSuppliedAriaLabel = this.hasAttribute('aria-label');
|
|
386
|
+
}
|
|
387
|
+
if (changed.has('colorSteps') || !this.hasUpdated) {
|
|
388
|
+
if (this.colorSteps && this.colorSteps.length >= 2) {
|
|
389
|
+
this.style.setProperty('--lyra-heatmap-color-steps-gradient', `linear-gradient(to right, ${this.colorSteps.join(', ')})`);
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
this.style.removeProperty('--lyra-heatmap-color-steps-gradient');
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
// A hover/keyboard-focus @state() change (hoverCell/focusedCell/liveText)
|
|
396
|
+
// triggers this same willUpdate() but never touches values/days/mode, so
|
|
397
|
+
// gating the O(rows*cols) rescan the same way the focus/hover reset above
|
|
398
|
+
// is gated avoids redoing it on every pointer move.
|
|
399
|
+
if (changed.has('values') || changed.has('days') || changed.has('mode') || !this.hasUpdated) {
|
|
400
|
+
this.cachedValueRange = this.computeValueRange();
|
|
401
|
+
}
|
|
402
|
+
const bounds = this.cachedValueRange;
|
|
403
|
+
const range = bounds ? `${bounds[0]}–${bounds[1]}` : 'no data';
|
|
404
|
+
// Only default role/aria-label when the author hasn't already supplied
|
|
405
|
+
// one — the canvas is a genuinely focusable/interactive control
|
|
406
|
+
// (tabindex="0", click/keydown handlers) plus a live role="status"
|
|
407
|
+
// region, so unconditionally forcing a role here would tell assistive
|
|
408
|
+
// tech to flatten the whole subtree, hiding both from the accessibility
|
|
409
|
+
// tree; it would also silently overwrite any author-supplied
|
|
410
|
+
// role/aria-label on every update.
|
|
411
|
+
if (!this.authorSuppliedRole)
|
|
412
|
+
this.setAttribute('role', 'group');
|
|
413
|
+
if (!this.authorSuppliedAriaLabel) {
|
|
414
|
+
if (this.mode === 'calendar') {
|
|
415
|
+
this.setAttribute('aria-label', `Calendar heatmap of ${this.days.length} days, ${this.valueLabel} range ${range}`);
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
const rows = this.rowLabels.length;
|
|
419
|
+
const cols = this.colLabels.length;
|
|
420
|
+
this.setAttribute('aria-label', `Heatmap of ${rows} × ${cols} cells, ${this.valueLabel} range ${range}`);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* The real (non-no-data) value range across `values` (or `days` in
|
|
426
|
+
* calendar mode), or `null` if there is none. Only called from
|
|
427
|
+
* `willUpdate()`, which caches the result in `cachedValueRange` for
|
|
428
|
+
* `render()` and `drawMatrix()` to reuse — `willUpdate()`, `render()`, and
|
|
429
|
+
* `updated()` (which triggers `draw()`) all run within the same Lit update
|
|
430
|
+
* cycle against the same `values`/`days`, so a single scan per cycle
|
|
431
|
+
* suffices instead of one per consumer.
|
|
432
|
+
*/
|
|
433
|
+
computeValueRange() {
|
|
434
|
+
const source = this.mode === 'calendar' ? this.days.map((d) => d.value) : this.values.flat();
|
|
435
|
+
return minMax(source.filter((v) => Number.isFinite(v) && v >= 0));
|
|
436
|
+
}
|
|
437
|
+
updated(changed) {
|
|
438
|
+
if ([
|
|
439
|
+
'values',
|
|
440
|
+
'rowLabels',
|
|
441
|
+
'colLabels',
|
|
442
|
+
'cellSize',
|
|
443
|
+
'valueLabel',
|
|
444
|
+
'scale',
|
|
445
|
+
'fitToWidth',
|
|
446
|
+
'mode',
|
|
447
|
+
'days',
|
|
448
|
+
'bucketCount',
|
|
449
|
+
'annotations',
|
|
450
|
+
'columnX',
|
|
451
|
+
'rowY',
|
|
452
|
+
'firstDayOfWeek',
|
|
453
|
+
'focusedCell',
|
|
454
|
+
'colorSteps',
|
|
455
|
+
].some((name) => changed.has(name))) {
|
|
456
|
+
this.draw();
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
/** Redraws canvas content after an upstream token or theme change. */
|
|
460
|
+
refreshTheme() {
|
|
461
|
+
this.draw();
|
|
462
|
+
}
|
|
463
|
+
/** Reads the customizable ramp endpoints off the host's computed style. */
|
|
464
|
+
scaleEndpoints() {
|
|
465
|
+
const cs = getComputedStyle(this);
|
|
466
|
+
const lo = cs.getPropertyValue('--lyra-heatmap-scale-lo').trim() || FALLBACK_SCALE_LO;
|
|
467
|
+
const hi = cs.getPropertyValue('--lyra-heatmap-scale-hi').trim() || FALLBACK_SCALE_HI;
|
|
468
|
+
return [lo, hi];
|
|
469
|
+
}
|
|
470
|
+
/** Resolves the `--lyra-color-text-quiet` chrome token for axis labels. */
|
|
471
|
+
labelColor() {
|
|
472
|
+
return getComputedStyle(this).getPropertyValue('--lyra-color-text-quiet').trim() || '#6b7280';
|
|
473
|
+
}
|
|
474
|
+
/** Reads the customizable canvas axis/label font off the host's computed style. */
|
|
475
|
+
labelFont() {
|
|
476
|
+
return getComputedStyle(this).getPropertyValue('--lyra-heatmap-label-font').trim() || FALLBACK_LABEL_FONT;
|
|
477
|
+
}
|
|
478
|
+
/** Reads the customizable no-data cell fill off the host's computed style. */
|
|
479
|
+
noDataFill() {
|
|
480
|
+
return getComputedStyle(this).getPropertyValue('--lyra-heatmap-no-data-fill').trim() || FALLBACK_NO_DATA_FILL;
|
|
481
|
+
}
|
|
482
|
+
/** Reads the customizable canvas-drawn keyboard-focus-ring stroke color off the host's computed style. */
|
|
483
|
+
focusRingColor() {
|
|
484
|
+
return (getComputedStyle(this).getPropertyValue('--lyra-heatmap-focus-ring-color').trim() || FALLBACK_FOCUS_RING_COLOR);
|
|
485
|
+
}
|
|
486
|
+
/** Reads the customizable canvas-drawn annotation-ring stroke color off the host's computed style. */
|
|
487
|
+
annotationColor() {
|
|
488
|
+
return (getComputedStyle(this).getPropertyValue('--lyra-heatmap-annotation-color').trim() || FALLBACK_ANNOTATION_COLOR);
|
|
489
|
+
}
|
|
490
|
+
draw() {
|
|
491
|
+
if (this.mode === 'calendar')
|
|
492
|
+
this.drawCalendar();
|
|
493
|
+
else
|
|
494
|
+
this.drawMatrix();
|
|
495
|
+
}
|
|
496
|
+
colorRamp(bucketCount) {
|
|
497
|
+
const steps = this.colorSteps;
|
|
498
|
+
if (steps && steps.length >= 2) {
|
|
499
|
+
const key = `steps ${steps.join(' ')}`;
|
|
500
|
+
if (this.cachedRamp?.key === key)
|
|
501
|
+
return this.cachedRamp;
|
|
502
|
+
const colors = steps.map((c) => {
|
|
503
|
+
const [r, g, b] = resolveRgb(c, FALLBACK_SCALE_LO);
|
|
504
|
+
return `rgb(${r}, ${g}, ${b})`;
|
|
505
|
+
});
|
|
506
|
+
const loRgb = resolveRgb(steps[0], FALLBACK_SCALE_LO);
|
|
507
|
+
const hiRgb = resolveRgb(steps[steps.length - 1], FALLBACK_SCALE_HI);
|
|
508
|
+
this.cachedRamp = { key, colors, loRgb, hiRgb };
|
|
509
|
+
return this.cachedRamp;
|
|
510
|
+
}
|
|
511
|
+
const [scaleLo, scaleHi] = this.scaleEndpoints();
|
|
512
|
+
const normalizedBucketCount = normalizeBucketCount(bucketCount);
|
|
513
|
+
const key = `${scaleLo}\u0000${scaleHi}\u0000${normalizedBucketCount}`;
|
|
514
|
+
if (this.cachedRamp?.key === key)
|
|
515
|
+
return this.cachedRamp;
|
|
516
|
+
const loRgb = resolveRgb(scaleLo, FALLBACK_SCALE_LO);
|
|
517
|
+
const hiRgb = resolveRgb(scaleHi, FALLBACK_SCALE_HI);
|
|
518
|
+
const colors = Array.from({ length: normalizedBucketCount }, (_, i) => mixRgb(loRgb, hiRgb, i / (normalizedBucketCount - 1)));
|
|
519
|
+
this.cachedRamp = { key, colors, loRgb, hiRgb };
|
|
520
|
+
return this.cachedRamp;
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Effective per-cell size in calendar mode — mirrors `matrixCellSize()`
|
|
524
|
+
* exactly: `fitToWidth` derives it from the host's measured width,
|
|
525
|
+
* otherwise it's the (possibly explicitly-set) `cellSize` property, which
|
|
526
|
+
* itself falls back to today's original 11px calendar default when left
|
|
527
|
+
* unset (see `cellSize`'s accessor doc comment). Shared by `columnXFor()`,
|
|
528
|
+
* `rowYFor()`, `drawCalendar()`, and the hit-testing below (`weekAtX()`,
|
|
529
|
+
* `weekdayAtY()`, `cellRect()`) so they always agree on exactly the same
|
|
530
|
+
* geometry as what's actually painted.
|
|
531
|
+
*/
|
|
532
|
+
calendarCellSize() {
|
|
533
|
+
const { weekCount } = this.cachedCalendarGrid;
|
|
534
|
+
if (this.fitToWidth && weekCount > 0) {
|
|
535
|
+
// Unlike matrix mode's contiguous cells, calendar columns are spaced
|
|
536
|
+
// `cellSize + CAL_GAP` apart (see `columnXFor()`), so the gap has to be
|
|
537
|
+
// subtracted back out here — otherwise the painted width would overshoot
|
|
538
|
+
// `hostWidth` by `weekCount * CAL_GAP` (every column's gap, once each).
|
|
539
|
+
const hostWidth = this.clientWidth || CAL_PAD_LEFT + weekCount * (this.cellSize + CAL_GAP);
|
|
540
|
+
return Math.max(4, (hostWidth - CAL_PAD_LEFT) / weekCount - CAL_GAP);
|
|
541
|
+
}
|
|
542
|
+
return this.cellSize;
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Calendar-mode week-column x-origin (canvas-local CSS px) — `columnX(week)`
|
|
546
|
+
* when set, otherwise the original evenly-spaced formula (now derived from
|
|
547
|
+
* `calendarCellSize()` rather than the fixed `CAL_CELL` constant). Shared
|
|
548
|
+
* by every calendar-mode drawing and hit-testing call site (`drawCalendar()`,
|
|
549
|
+
* `hitTestCalendar()`/`weekAtX()`, `cellRect()`) so painted geometry and
|
|
550
|
+
* interactive hit-testing never disagree — mirrors the existing
|
|
551
|
+
* `matrixCellSize()` invariant for matrix mode's
|
|
552
|
+
* `drawMatrix()`/`hitTestMatrix()`/`cellRect()`.
|
|
553
|
+
*/
|
|
554
|
+
columnXFor(week) {
|
|
555
|
+
return this.columnX ? this.columnX(week) : CAL_PAD_LEFT + week * (this.calendarCellSize() + CAL_GAP);
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Calendar-mode weekday-row y-origin (canvas-local CSS px) — `rowY(weekday)`
|
|
559
|
+
* when set, otherwise the original evenly-spaced formula (now derived from
|
|
560
|
+
* `calendarCellSize()` rather than the fixed `CAL_CELL` constant). The
|
|
561
|
+
* vertical analogue of `columnXFor()`, mirroring its exact
|
|
562
|
+
* dispatch-with-computed-fallback shape and shared by the same
|
|
563
|
+
* drawing/hit-testing/focus-ring call sites.
|
|
564
|
+
*/
|
|
565
|
+
rowYFor(weekday) {
|
|
566
|
+
return this.rowY ? this.rowY(weekday) : CAL_LABEL_H + weekday * (this.calendarCellSize() + CAL_GAP);
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* Inverse of `columnXFor()`: resolves an x position (canvas-local CSS px)
|
|
570
|
+
* to the week column it falls in, or `null` if it's outside every column
|
|
571
|
+
* (`weekCount` is 0, or `x` doesn't land inside `[0, weekCount)`'s span).
|
|
572
|
+
* The default spacing has a closed-form inverse (division); an arbitrary
|
|
573
|
+
* `columnX` override doesn't, so that case instead scans each column's
|
|
574
|
+
* `[columnXFor(week), columnXFor(week + 1))` span — algebraically the same
|
|
575
|
+
* span the default formula's division derives — so hit-testing always
|
|
576
|
+
* agrees with wherever `columnXFor()` actually painted that column.
|
|
577
|
+
*/
|
|
578
|
+
weekAtX(x, weekCount) {
|
|
579
|
+
if (!this.columnX) {
|
|
580
|
+
const cellSize = this.calendarCellSize();
|
|
581
|
+
const week = Math.floor((x - CAL_PAD_LEFT) / (cellSize + CAL_GAP));
|
|
582
|
+
return week >= 0 && week < weekCount ? week : null;
|
|
583
|
+
}
|
|
584
|
+
for (let week = 0; week < weekCount; week++) {
|
|
585
|
+
const start = this.columnXFor(week);
|
|
586
|
+
const end = week + 1 < weekCount ? this.columnXFor(week + 1) : start + (this.calendarCellSize() + CAL_GAP);
|
|
587
|
+
if (x >= start && x < end)
|
|
588
|
+
return week;
|
|
589
|
+
}
|
|
590
|
+
return null;
|
|
591
|
+
}
|
|
592
|
+
/**
|
|
593
|
+
* Inverse of `rowYFor()`: resolves a y position (canvas-local CSS px) to
|
|
594
|
+
* the weekday row it falls in (0-6), or `null` if it's outside every row.
|
|
595
|
+
* Mirrors `weekAtX()`'s closed-form-vs-scan split for the same reason: the
|
|
596
|
+
* default spacing has a closed-form inverse; an arbitrary `rowY` override
|
|
597
|
+
* doesn't.
|
|
598
|
+
*/
|
|
599
|
+
weekdayAtY(y) {
|
|
600
|
+
if (!this.rowY) {
|
|
601
|
+
const cellSize = this.calendarCellSize();
|
|
602
|
+
const weekday = Math.floor((y - CAL_LABEL_H) / (cellSize + CAL_GAP));
|
|
603
|
+
return weekday >= 0 && weekday < 7 ? weekday : null;
|
|
604
|
+
}
|
|
605
|
+
for (let weekday = 0; weekday < 7; weekday++) {
|
|
606
|
+
const start = this.rowYFor(weekday);
|
|
607
|
+
const end = weekday + 1 < 7 ? this.rowYFor(weekday + 1) : start + (this.calendarCellSize() + CAL_GAP);
|
|
608
|
+
if (y >= start && y < end)
|
|
609
|
+
return weekday;
|
|
610
|
+
}
|
|
611
|
+
return null;
|
|
612
|
+
}
|
|
613
|
+
/**
|
|
614
|
+
* Locale-derived weekday-axis labels for the 7 rows drawn down the left of
|
|
615
|
+
* the calendar grid. Only indices 1, 3, and 5 (relative to `firstWeekStart`)
|
|
616
|
+
* are filled in — matching today's sparse every-other-day label density —
|
|
617
|
+
* the rest stay blank. `firstWeekStart` is always the UTC
|
|
618
|
+
* `firstDayOfWeek`-weekday by construction (see `buildCalendarGrid()`), so
|
|
619
|
+
* weekday index 0..6 is a fixed positional mapping relative to it (with the
|
|
620
|
+
* default `firstDayOfWeek` of 0, that's the original Sun..Sat mapping,
|
|
621
|
+
* unchanged); only the label *text* for indices 1/3/5 is derived here, via
|
|
622
|
+
* `Intl.DateTimeFormat` on a real UTC date that actually falls on that
|
|
623
|
+
* weekday, so it follows the runtime locale instead of a hardcoded English
|
|
624
|
+
* array (see `calendarCellText()`'s tooltip text for the same pattern).
|
|
625
|
+
*/
|
|
626
|
+
weekdayLabels(firstWeekStart) {
|
|
627
|
+
const formatter = new Intl.DateTimeFormat(undefined, { weekday: 'short', timeZone: 'UTC' });
|
|
628
|
+
const labels = ['', '', '', '', '', '', ''];
|
|
629
|
+
for (const weekday of [1, 3, 5]) {
|
|
630
|
+
labels[weekday] = formatter.format(new Date(firstWeekStart.getTime() + weekday * MS_PER_DAY));
|
|
631
|
+
}
|
|
632
|
+
return labels;
|
|
633
|
+
}
|
|
634
|
+
drawCalendar() {
|
|
635
|
+
if (!this.canvas)
|
|
636
|
+
return;
|
|
637
|
+
const { cells, weekCount, firstWeekStart, monthLabels } = this.cachedCalendarGrid;
|
|
638
|
+
const cellSize = this.calendarCellSize();
|
|
639
|
+
const w = this.columnXFor(Math.max(1, weekCount));
|
|
640
|
+
// Derived from `rowYFor(7)` (one past the last of the 7 weekday rows), the
|
|
641
|
+
// vertical mirror of `w`'s `columnXFor(weekCount)` — so a custom `rowY`
|
|
642
|
+
// that spaces rows out further than the default formula still gets a
|
|
643
|
+
// canvas tall enough to paint every row, instead of clipping them.
|
|
644
|
+
const h = this.rowYFor(7);
|
|
645
|
+
const dpr = window.devicePixelRatio || 1;
|
|
646
|
+
this.canvas.width = w * dpr;
|
|
647
|
+
this.canvas.height = h * dpr;
|
|
648
|
+
this.canvas.style.width = `${w}px`;
|
|
649
|
+
this.canvas.style.height = `${h}px`;
|
|
650
|
+
const ctx = this.canvas.getContext('2d');
|
|
651
|
+
if (!ctx)
|
|
652
|
+
return;
|
|
653
|
+
ctx.scale(dpr, dpr);
|
|
654
|
+
ctx.clearRect(0, 0, w, h);
|
|
655
|
+
// Normalize at the allocation boundary as a final guard even though the
|
|
656
|
+
// public accessor and attribute converter already normalize their inputs.
|
|
657
|
+
const buckets = normalizeBucketCount(this.bucketCount);
|
|
658
|
+
const ramp = this.colorRamp(buckets).colors;
|
|
659
|
+
const noDataFill = this.noDataFill();
|
|
660
|
+
// Only consulted when `scale === 'sqrt'` — mirrors `drawMatrix()`'s own
|
|
661
|
+
// `hi` bound, reusing the already-cached value range instead of
|
|
662
|
+
// rescanning `sortedValues` for its max.
|
|
663
|
+
const bounds = this.cachedValueRange;
|
|
664
|
+
const lo = bounds ? bounds[0] : 0;
|
|
665
|
+
const hi = bounds ? bounds[1] : 1;
|
|
666
|
+
// Indexed once per draw so every (week, weekday) grid position can be
|
|
667
|
+
// painted below, not just positions with a matching entry in `cells` — a
|
|
668
|
+
// day missing from `days` entirely (a gap in a sparse calendar) still
|
|
669
|
+
// gets a real grid cell (see `calendarCellAt()`'s doc comment for the
|
|
670
|
+
// same `-1` no-data sentinel used here) instead of being left
|
|
671
|
+
// transparent.
|
|
672
|
+
for (let week = 0; week < weekCount; week++) {
|
|
673
|
+
for (let weekday = 0; weekday < 7; weekday++) {
|
|
674
|
+
const value = this.cachedCalendarCellsByPos.get(`${week}:${weekday}`)?.value ?? -1;
|
|
675
|
+
const x = this.columnXFor(week);
|
|
676
|
+
const y = this.rowYFor(weekday);
|
|
677
|
+
if (value < 0 || !Number.isFinite(value)) {
|
|
678
|
+
ctx.fillStyle = noDataFill;
|
|
679
|
+
}
|
|
680
|
+
else if (this.scale === 'sqrt') {
|
|
681
|
+
const step = sqrtStep(value, hi, ramp.length);
|
|
682
|
+
ctx.fillStyle = step < 0 ? noDataFill : ramp[step];
|
|
683
|
+
}
|
|
684
|
+
else if (this.colorSteps && this.colorSteps.length >= 2) {
|
|
685
|
+
const step = linearBucket(value, lo, hi, ramp.length);
|
|
686
|
+
ctx.fillStyle = ramp[step];
|
|
687
|
+
}
|
|
688
|
+
else {
|
|
689
|
+
ctx.fillStyle = ramp[quartileBucket(value, this.cachedCalendarSortedValues, buckets)];
|
|
690
|
+
}
|
|
691
|
+
ctx.fillRect(x, y, cellSize, cellSize);
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
// Annotation ring overlay, stroked after the fill pass so it reads
|
|
695
|
+
// clearly over the data-driven cell color — see drawMatrix()'s twin of
|
|
696
|
+
// this block for the matrix-mode equivalent.
|
|
697
|
+
if (this.annotations.length) {
|
|
698
|
+
ctx.lineWidth = RING_LINE_WIDTH;
|
|
699
|
+
ctx.strokeStyle = this.annotationColor();
|
|
700
|
+
for (const ann of this.annotations) {
|
|
701
|
+
if (ann.date == null)
|
|
702
|
+
continue;
|
|
703
|
+
const match = cells.find((c) => c.date === ann.date);
|
|
704
|
+
if (!match)
|
|
705
|
+
continue;
|
|
706
|
+
const x = this.columnXFor(match.week);
|
|
707
|
+
const y = this.rowYFor(match.weekday);
|
|
708
|
+
ctx.strokeRect(x + 0.5, y + 0.5, cellSize - 1, cellSize - 1);
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
// Keyboard focus ring, redrawn on top of the fill pass (and any
|
|
712
|
+
// annotation rings) on every draw.
|
|
713
|
+
if (this.focusedCell && 'week' in this.focusedCell) {
|
|
714
|
+
const { week, weekday } = this.focusedCell;
|
|
715
|
+
if (week < weekCount && weekday < 7) {
|
|
716
|
+
ctx.lineWidth = RING_LINE_WIDTH;
|
|
717
|
+
ctx.strokeStyle = this.focusRingColor();
|
|
718
|
+
const x = this.columnXFor(week);
|
|
719
|
+
const y = this.rowYFor(weekday);
|
|
720
|
+
ctx.strokeRect(x + 0.5, y + 0.5, cellSize - 1, cellSize - 1);
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
ctx.fillStyle = this.labelColor();
|
|
724
|
+
ctx.font = this.labelFont();
|
|
725
|
+
for (const m of monthLabels) {
|
|
726
|
+
ctx.fillText(m.label, this.columnXFor(m.week), CAL_LABEL_H - 4);
|
|
727
|
+
}
|
|
728
|
+
const WEEKDAY_LABELS = this.weekdayLabels(firstWeekStart);
|
|
729
|
+
WEEKDAY_LABELS.forEach((label, weekday) => {
|
|
730
|
+
if (label)
|
|
731
|
+
ctx.fillText(label, 2, this.rowYFor(weekday) + cellSize - 1);
|
|
732
|
+
});
|
|
733
|
+
}
|
|
734
|
+
/**
|
|
735
|
+
* Effective per-cell size in matrix mode — `fitToWidth` derives it from
|
|
736
|
+
* the host's measured width, otherwise it's the fixed `cellSize`
|
|
737
|
+
* property. Shared by `drawMatrix()` and the pointer/keyboard hit-testing
|
|
738
|
+
* below (`hitTestMatrix()`, `cellRect()`) so they always agree on exactly
|
|
739
|
+
* the same geometry as what's actually painted.
|
|
740
|
+
*/
|
|
741
|
+
matrixCellSize(cols) {
|
|
742
|
+
if (this.fitToWidth && cols > 0) {
|
|
743
|
+
const hostWidth = this.clientWidth || PAD_LEFT + cols * this.cellSize;
|
|
744
|
+
return Math.max(4, (hostWidth - PAD_LEFT) / cols);
|
|
745
|
+
}
|
|
746
|
+
return this.cellSize;
|
|
747
|
+
}
|
|
748
|
+
drawMatrix() {
|
|
749
|
+
if (!this.canvas)
|
|
750
|
+
return;
|
|
751
|
+
const rows = this.rowLabels.length;
|
|
752
|
+
const cols = this.colLabels.length;
|
|
753
|
+
const cellSize = this.matrixCellSize(cols);
|
|
754
|
+
const w = PAD_LEFT + cols * cellSize;
|
|
755
|
+
const h = PAD_TOP + rows * cellSize;
|
|
756
|
+
const dpr = window.devicePixelRatio || 1;
|
|
757
|
+
this.canvas.width = w * dpr;
|
|
758
|
+
this.canvas.height = h * dpr;
|
|
759
|
+
this.canvas.style.width = `${w}px`;
|
|
760
|
+
this.canvas.style.height = `${h}px`;
|
|
761
|
+
const ctx = this.canvas.getContext('2d');
|
|
762
|
+
if (!ctx)
|
|
763
|
+
return;
|
|
764
|
+
ctx.scale(dpr, dpr);
|
|
765
|
+
ctx.clearRect(0, 0, w, h);
|
|
766
|
+
const bounds = this.cachedValueRange;
|
|
767
|
+
const lo = bounds ? bounds[0] : 0;
|
|
768
|
+
const hi = bounds ? bounds[1] : 1;
|
|
769
|
+
const rampData = this.colorRamp(RAMP_STEPS);
|
|
770
|
+
const ramp = rampData.colors;
|
|
771
|
+
const { loRgb, hiRgb } = rampData;
|
|
772
|
+
const noDataFill = this.noDataFill();
|
|
773
|
+
for (let r = 0; r < rows; r++) {
|
|
774
|
+
for (let c = 0; c < cols; c++) {
|
|
775
|
+
const v = this.values[r]?.[c] ?? -1;
|
|
776
|
+
const x = PAD_LEFT + c * cellSize;
|
|
777
|
+
const y = PAD_TOP + r * cellSize;
|
|
778
|
+
if (v < 0 || !Number.isFinite(v)) {
|
|
779
|
+
// `v < 0` alone is false for NaN, which would otherwise fall through to
|
|
780
|
+
// the ramp branches below, compute an unparsable rgb(NaN, NaN, NaN)
|
|
781
|
+
// fillStyle, and silently paint with whatever color the previous cell
|
|
782
|
+
// left in `ctx.fillStyle` (canvas ignores unparsable assignments).
|
|
783
|
+
ctx.fillStyle = noDataFill;
|
|
784
|
+
}
|
|
785
|
+
else if (this.scale === 'sqrt') {
|
|
786
|
+
// ramp.length (not the RAMP_STEPS constant) so a colorSteps-driven ramp's
|
|
787
|
+
// actual length governs bucketing -- equal to RAMP_STEPS when colorSteps is unset.
|
|
788
|
+
const step = sqrtStep(v, hi, ramp.length);
|
|
789
|
+
ctx.fillStyle = step < 0 ? noDataFill : ramp[step];
|
|
790
|
+
}
|
|
791
|
+
else if (this.colorSteps && this.colorSteps.length >= 2) {
|
|
792
|
+
const step = linearBucket(v, lo, hi, ramp.length);
|
|
793
|
+
ctx.fillStyle = ramp[step];
|
|
794
|
+
}
|
|
795
|
+
else {
|
|
796
|
+
// linearAlpha() returns a 0.1-1.0 ramp position; reused here as a
|
|
797
|
+
// mix ratio between the two ramp-endpoint colors (rather than as a
|
|
798
|
+
// literal canvas alpha channel) so the 'linear' scale also respects
|
|
799
|
+
// --lyra-heatmap-scale-lo/-hi.
|
|
800
|
+
const t = linearAlpha(v, lo, hi);
|
|
801
|
+
ctx.fillStyle = mixRgb(loRgb, hiRgb, t);
|
|
802
|
+
}
|
|
803
|
+
ctx.fillRect(x, y, cellSize - 1, cellSize - 1);
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
// Annotation ring overlay, stroked after the fill pass so it reads
|
|
807
|
+
// clearly over the data-driven cell color. Uses a dedicated
|
|
808
|
+
// --lyra-heatmap-annotation-color token (defaults to --lyra-color-danger)
|
|
809
|
+
// rather than any of the sequential ramp colors, since it needs to stay
|
|
810
|
+
// visible regardless of which point on that ramp it's drawn over.
|
|
811
|
+
if (this.annotations.length) {
|
|
812
|
+
ctx.lineWidth = RING_LINE_WIDTH;
|
|
813
|
+
ctx.strokeStyle = this.annotationColor();
|
|
814
|
+
for (const ann of this.annotations) {
|
|
815
|
+
if (ann.row == null || ann.col == null)
|
|
816
|
+
continue;
|
|
817
|
+
if (ann.row < 0 || ann.row >= rows || ann.col < 0 || ann.col >= cols)
|
|
818
|
+
continue;
|
|
819
|
+
const x = PAD_LEFT + ann.col * cellSize;
|
|
820
|
+
const y = PAD_TOP + ann.row * cellSize;
|
|
821
|
+
ctx.strokeRect(x + 1, y + 1, cellSize - 3, cellSize - 3);
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
// Keyboard focus ring, redrawn on top of the fill pass (and any
|
|
825
|
+
// annotation rings) on every draw — canvas has no persistent DOM focus
|
|
826
|
+
// affordance of its own for an individual cell, only a `:focus-visible`
|
|
827
|
+
// outline around the whole element (see heatmap.styles.ts).
|
|
828
|
+
if (this.focusedCell && 'row' in this.focusedCell) {
|
|
829
|
+
const { row, col } = this.focusedCell;
|
|
830
|
+
if (row < rows && col < cols) {
|
|
831
|
+
ctx.lineWidth = RING_LINE_WIDTH;
|
|
832
|
+
ctx.strokeStyle = this.focusRingColor();
|
|
833
|
+
const x = PAD_LEFT + col * cellSize;
|
|
834
|
+
const y = PAD_TOP + row * cellSize;
|
|
835
|
+
ctx.strokeRect(x + 1, y + 1, cellSize - 3, cellSize - 3);
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
ctx.fillStyle = this.labelColor();
|
|
839
|
+
ctx.font = this.labelFont();
|
|
840
|
+
this.rowLabels.forEach((label, r) => {
|
|
841
|
+
ctx.fillText(label, 4, PAD_TOP + r * cellSize + cellSize / 2 + 3);
|
|
842
|
+
});
|
|
843
|
+
this.colLabels.forEach((label, c) => {
|
|
844
|
+
ctx.fillText(label, PAD_LEFT + c * cellSize + 2, PAD_TOP - 6);
|
|
845
|
+
});
|
|
846
|
+
}
|
|
847
|
+
/**
|
|
848
|
+
* Maps a pointer position, in canvas-local CSS px (e.g.
|
|
849
|
+
* `PointerEvent.offsetX/offsetY`), to the cell underneath it — or `null`
|
|
850
|
+
* if the pointer is outside the grid. Dispatches on `mode` so callers
|
|
851
|
+
* don't have to.
|
|
852
|
+
*/
|
|
853
|
+
hitTest(x, y) {
|
|
854
|
+
return this.mode === 'calendar' ? this.hitTestCalendar(x, y) : this.hitTestMatrix(x, y);
|
|
855
|
+
}
|
|
856
|
+
hitTestMatrix(x, y) {
|
|
857
|
+
const rows = this.rowLabels.length;
|
|
858
|
+
const cols = this.colLabels.length;
|
|
859
|
+
if (rows === 0 || cols === 0)
|
|
860
|
+
return null;
|
|
861
|
+
const cellSize = this.matrixCellSize(cols);
|
|
862
|
+
const col = Math.floor((x - PAD_LEFT) / cellSize);
|
|
863
|
+
const row = Math.floor((y - PAD_TOP) / cellSize);
|
|
864
|
+
if (row < 0 || row >= rows || col < 0 || col >= cols)
|
|
865
|
+
return null;
|
|
866
|
+
const pos = { row, col };
|
|
867
|
+
return this.isCellInteractive(pos) ? pos : null;
|
|
868
|
+
}
|
|
869
|
+
/** The first interactive matrix cell in row-major order, or `null` if every cell is excluded —
|
|
870
|
+
* used by `onMatrixKeyDown()`'s first-arrow-press case. */
|
|
871
|
+
firstInteractiveMatrixCell(rows, cols) {
|
|
872
|
+
for (let r = 0; r < rows; r++) {
|
|
873
|
+
for (let c = 0; c < cols; c++) {
|
|
874
|
+
if (this.isCellInteractive({ row: r, col: c }))
|
|
875
|
+
return { row: r, col: c };
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
return null;
|
|
879
|
+
}
|
|
880
|
+
/** Steps from `(row, col)` by `(dRow, dCol)` repeatedly, skipping non-interactive cells, until
|
|
881
|
+
* an interactive cell is found or the grid edge is reached (in which case the original
|
|
882
|
+
* position is returned unchanged, matching today's clamp-at-edge behavior). Bounded: each
|
|
883
|
+
* iteration strictly approaches the edge, so this always terminates. */
|
|
884
|
+
nextInteractiveMatrixCell(row, col, dRow, dCol, rows, cols) {
|
|
885
|
+
let r = row;
|
|
886
|
+
let c = col;
|
|
887
|
+
for (;;) {
|
|
888
|
+
const nr = Math.min(rows - 1, Math.max(0, r + dRow));
|
|
889
|
+
const nc = Math.min(cols - 1, Math.max(0, c + dCol));
|
|
890
|
+
if (nr === r && nc === c)
|
|
891
|
+
return { row, col };
|
|
892
|
+
r = nr;
|
|
893
|
+
c = nc;
|
|
894
|
+
if (this.isCellInteractive({ row: r, col: c }))
|
|
895
|
+
return { row: r, col: c };
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
/** Calendar-mode analogue of `firstInteractiveMatrixCell()`. */
|
|
899
|
+
firstInteractiveCalendarCell(weekCount) {
|
|
900
|
+
for (let week = 0; week < weekCount; week++) {
|
|
901
|
+
for (let weekday = 0; weekday < 7; weekday++) {
|
|
902
|
+
if (this.isCellInteractive({ week, weekday }))
|
|
903
|
+
return { week, weekday };
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
return null;
|
|
907
|
+
}
|
|
908
|
+
/** Calendar-mode analogue of `nextInteractiveMatrixCell()`. */
|
|
909
|
+
nextInteractiveCalendarCell(week, weekday, dWeek, dWeekday, weekCount) {
|
|
910
|
+
let w = week;
|
|
911
|
+
let d = weekday;
|
|
912
|
+
for (;;) {
|
|
913
|
+
const nw = Math.min(weekCount - 1, Math.max(0, w + dWeek));
|
|
914
|
+
const nd = Math.min(6, Math.max(0, d + dWeekday));
|
|
915
|
+
if (nw === w && nd === d)
|
|
916
|
+
return { week, weekday };
|
|
917
|
+
w = nw;
|
|
918
|
+
d = nd;
|
|
919
|
+
if (this.isCellInteractive({ week: w, weekday: d }))
|
|
920
|
+
return { week: w, weekday: d };
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
hitTestCalendar(x, y) {
|
|
924
|
+
const { weekCount } = this.cachedCalendarGrid;
|
|
925
|
+
if (weekCount === 0)
|
|
926
|
+
return null;
|
|
927
|
+
const week = this.weekAtX(x, weekCount);
|
|
928
|
+
const weekday = this.weekdayAtY(y);
|
|
929
|
+
if (week === null || weekday === null)
|
|
930
|
+
return null;
|
|
931
|
+
const pos = { week, weekday };
|
|
932
|
+
return this.isCellInteractive(pos) ? pos : null;
|
|
933
|
+
}
|
|
934
|
+
/**
|
|
935
|
+
* Resolves a (week, weekday) grid position to its real calendar date and
|
|
936
|
+
* value. Computed from grid geometry (`firstWeekStart` + offset), not
|
|
937
|
+
* just looked up in `cells` — so a position with no matching entry in
|
|
938
|
+
* `days` (a gap in a sparse calendar) still resolves to a real ISO date,
|
|
939
|
+
* with a `-1` "no data" sentinel value (the same convention `values`' `-1`
|
|
940
|
+
* sentinel uses in matrix mode), instead of being unresolvable.
|
|
941
|
+
*/
|
|
942
|
+
calendarCellAt(pos) {
|
|
943
|
+
const { cells, firstWeekStart } = this.cachedCalendarGrid;
|
|
944
|
+
const match = cells.find((c) => c.week === pos.week && c.weekday === pos.weekday);
|
|
945
|
+
if (match)
|
|
946
|
+
return { date: match.date, value: match.value };
|
|
947
|
+
const date = new Date(firstWeekStart.getTime() + (pos.week * 7 + pos.weekday) * MS_PER_DAY);
|
|
948
|
+
return { date: date.toISOString().slice(0, 10), value: -1 };
|
|
949
|
+
}
|
|
950
|
+
/**
|
|
951
|
+
* Pixel rect (canvas-local CSS px) of a cell — shared by `tooltipStyle()`
|
|
952
|
+
* so the tooltip's position always agrees with the same geometry
|
|
953
|
+
* `drawMatrix()`/`drawCalendar()`/`hitTest*()` use.
|
|
954
|
+
*/
|
|
955
|
+
cellRect(pos) {
|
|
956
|
+
if ('week' in pos) {
|
|
957
|
+
const cellSize = this.calendarCellSize();
|
|
958
|
+
return {
|
|
959
|
+
x: this.columnXFor(pos.week),
|
|
960
|
+
y: this.rowYFor(pos.weekday),
|
|
961
|
+
w: cellSize,
|
|
962
|
+
h: cellSize,
|
|
963
|
+
};
|
|
964
|
+
}
|
|
965
|
+
const cellSize = this.matrixCellSize(this.colLabels.length);
|
|
966
|
+
return { x: PAD_LEFT + pos.col * cellSize, y: PAD_TOP + pos.row * cellSize, w: cellSize - 1, h: cellSize - 1 };
|
|
967
|
+
}
|
|
968
|
+
/**
|
|
969
|
+
* Human-readable "<label>: <value>" text for a cell — shared by the hover
|
|
970
|
+
* tooltip and the keyboard-focus live-region announcement, so both always
|
|
971
|
+
* describe a cell the same way. This is the built-in English fallback used
|
|
972
|
+
* when `cellText` isn't set — see `resolveCellText()`.
|
|
973
|
+
*/
|
|
974
|
+
defaultCellText(pos) {
|
|
975
|
+
return 'week' in pos ? this.calendarCellText(pos) : this.matrixCellText(pos);
|
|
976
|
+
}
|
|
977
|
+
matrixCellText(pos) {
|
|
978
|
+
const rowLabel = this.rowLabels[pos.row] ?? `row ${pos.row + 1}`;
|
|
979
|
+
const colLabel = this.colLabels[pos.col] ?? `col ${pos.col + 1}`;
|
|
980
|
+
const v = this.values[pos.row]?.[pos.col];
|
|
981
|
+
const valueText = v == null || v < 0 || !Number.isFinite(v) ? 'no data' : String(v);
|
|
982
|
+
return `Row ${rowLabel}, Col ${colLabel}: ${valueText}`;
|
|
983
|
+
}
|
|
984
|
+
calendarCellText(pos) {
|
|
985
|
+
const { date, value } = this.calendarCellAt(pos);
|
|
986
|
+
const label = parseIsoDate(date).toLocaleString(undefined, { month: 'short', day: 'numeric', timeZone: 'UTC' });
|
|
987
|
+
const valueText = value < 0 || !Number.isFinite(value) ? 'no data' : String(value);
|
|
988
|
+
return `${label}: ${valueText}`;
|
|
989
|
+
}
|
|
990
|
+
/** The raw numeric value at a cell position, in either mode — shared by `resolveCellText()`
|
|
991
|
+
* so a custom `cellText` formatter receives the same value the built-in template would use. */
|
|
992
|
+
valueAt(pos) {
|
|
993
|
+
if ('week' in pos)
|
|
994
|
+
return this.calendarCellAt(pos).value;
|
|
995
|
+
return this.values[pos.row]?.[pos.col] ?? -1;
|
|
996
|
+
}
|
|
997
|
+
/** Dispatches to the host-provided `cellText` formatter when set, otherwise the built-in template. */
|
|
998
|
+
resolveCellText(pos) {
|
|
999
|
+
return this.cellText ? this.cellText(pos, this.valueAt(pos)) : this.defaultCellText(pos);
|
|
1000
|
+
}
|
|
1001
|
+
/** Dispatches to the host-provided `cellInteractive` predicate when set, otherwise `true`
|
|
1002
|
+
* (every cell interactive, today's unchanged default). */
|
|
1003
|
+
isCellInteractive(pos) {
|
|
1004
|
+
return this.cellInteractive?.(pos, this.valueAt(pos)) ?? true;
|
|
1005
|
+
}
|
|
1006
|
+
/** Refreshes the visually-hidden live-region text for a newly-focused cell. */
|
|
1007
|
+
announce(pos) {
|
|
1008
|
+
this.liveText = this.resolveCellText(pos);
|
|
1009
|
+
}
|
|
1010
|
+
emitCellClick(pos) {
|
|
1011
|
+
if ('week' in pos) {
|
|
1012
|
+
const { date, value } = this.calendarCellAt(pos);
|
|
1013
|
+
this.emit('lyra-cell-click', { date, value });
|
|
1014
|
+
}
|
|
1015
|
+
else {
|
|
1016
|
+
const value = this.values[pos.row]?.[pos.col] ?? -1;
|
|
1017
|
+
this.emit('lyra-cell-click', { row: pos.row, col: pos.col, value });
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
/** Inline `style` for `[part="tooltip"]`, centered above the given cell. */
|
|
1021
|
+
tooltipStyle(pos) {
|
|
1022
|
+
const rect = this.cellRect(pos);
|
|
1023
|
+
return { left: `${rect.x + rect.w / 2}px`, top: `${rect.y}px` };
|
|
1024
|
+
}
|
|
1025
|
+
/**
|
|
1026
|
+
* Value-equality check for a `CellPos`, since `hoverCell` is assigned a
|
|
1027
|
+
* fresh object literal on every `pointermove` — Lit's `@state()`
|
|
1028
|
+
* change-detection only no-ops an identical *reference*, so without this,
|
|
1029
|
+
* `{row,col} !== {row,col}` by reference triggers a full canvas clear +
|
|
1030
|
+
* redraw on every pixel of pointer movement, even within the same cell.
|
|
1031
|
+
*/
|
|
1032
|
+
samePos(a, b) {
|
|
1033
|
+
if (a === b)
|
|
1034
|
+
return true;
|
|
1035
|
+
if (!a || !b)
|
|
1036
|
+
return false;
|
|
1037
|
+
if ('week' in a && 'week' in b)
|
|
1038
|
+
return a.week === b.week && a.weekday === b.weekday;
|
|
1039
|
+
if ('row' in a && 'row' in b)
|
|
1040
|
+
return a.row === b.row && a.col === b.col;
|
|
1041
|
+
return false;
|
|
1042
|
+
}
|
|
1043
|
+
onMatrixKeyDown(e) {
|
|
1044
|
+
const rows = this.rowLabels.length;
|
|
1045
|
+
const cols = this.colLabels.length;
|
|
1046
|
+
if (rows === 0 || cols === 0)
|
|
1047
|
+
return;
|
|
1048
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
1049
|
+
e.preventDefault();
|
|
1050
|
+
if (this.focusedCell)
|
|
1051
|
+
this.emitCellClick(this.focusedCell);
|
|
1052
|
+
return;
|
|
1053
|
+
}
|
|
1054
|
+
if (!ARROW_KEYS.has(e.key))
|
|
1055
|
+
return;
|
|
1056
|
+
e.preventDefault();
|
|
1057
|
+
if (!this.focusedCell || !('row' in this.focusedCell)) {
|
|
1058
|
+
const next = this.firstInteractiveMatrixCell(rows, cols);
|
|
1059
|
+
if (!next)
|
|
1060
|
+
return;
|
|
1061
|
+
this.focusedCell = next;
|
|
1062
|
+
this.announce(next);
|
|
1063
|
+
return;
|
|
1064
|
+
}
|
|
1065
|
+
const { row, col } = this.focusedCell;
|
|
1066
|
+
let dRow = 0;
|
|
1067
|
+
let dCol = 0;
|
|
1068
|
+
if (e.key === 'ArrowUp')
|
|
1069
|
+
dRow = -1;
|
|
1070
|
+
else if (e.key === 'ArrowDown')
|
|
1071
|
+
dRow = 1;
|
|
1072
|
+
else if (e.key === 'ArrowLeft')
|
|
1073
|
+
dCol = -1;
|
|
1074
|
+
else if (e.key === 'ArrowRight')
|
|
1075
|
+
dCol = 1;
|
|
1076
|
+
const next = this.nextInteractiveMatrixCell(row, col, dRow, dCol, rows, cols);
|
|
1077
|
+
this.focusedCell = next;
|
|
1078
|
+
this.announce(next);
|
|
1079
|
+
}
|
|
1080
|
+
onCalendarKeyDown(e) {
|
|
1081
|
+
const { weekCount } = this.cachedCalendarGrid;
|
|
1082
|
+
if (weekCount === 0)
|
|
1083
|
+
return;
|
|
1084
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
1085
|
+
e.preventDefault();
|
|
1086
|
+
if (this.focusedCell)
|
|
1087
|
+
this.emitCellClick(this.focusedCell);
|
|
1088
|
+
return;
|
|
1089
|
+
}
|
|
1090
|
+
if (!ARROW_KEYS.has(e.key))
|
|
1091
|
+
return;
|
|
1092
|
+
e.preventDefault();
|
|
1093
|
+
if (!this.focusedCell || !('week' in this.focusedCell)) {
|
|
1094
|
+
const next = this.firstInteractiveCalendarCell(weekCount);
|
|
1095
|
+
if (!next)
|
|
1096
|
+
return;
|
|
1097
|
+
this.focusedCell = next;
|
|
1098
|
+
this.announce(next);
|
|
1099
|
+
return;
|
|
1100
|
+
}
|
|
1101
|
+
const { week, weekday } = this.focusedCell;
|
|
1102
|
+
let dWeek = 0;
|
|
1103
|
+
let dWeekday = 0;
|
|
1104
|
+
if (e.key === 'ArrowUp')
|
|
1105
|
+
dWeekday = -1;
|
|
1106
|
+
else if (e.key === 'ArrowDown')
|
|
1107
|
+
dWeekday = 1;
|
|
1108
|
+
else if (e.key === 'ArrowLeft')
|
|
1109
|
+
dWeek = -1;
|
|
1110
|
+
else if (e.key === 'ArrowRight')
|
|
1111
|
+
dWeek = 1;
|
|
1112
|
+
const next = this.nextInteractiveCalendarCell(week, weekday, dWeek, dWeekday, weekCount);
|
|
1113
|
+
this.focusedCell = next;
|
|
1114
|
+
this.announce(next);
|
|
1115
|
+
}
|
|
1116
|
+
render() {
|
|
1117
|
+
const range = this.cachedValueRange;
|
|
1118
|
+
const labeledAnnotations = this.annotations.filter((a) => a.label);
|
|
1119
|
+
return html `
|
|
1120
|
+
<div part="base">
|
|
1121
|
+
<canvas
|
|
1122
|
+
part="canvas"
|
|
1123
|
+
tabindex="0"
|
|
1124
|
+
@pointermove=${this.onPointerMove}
|
|
1125
|
+
@pointerleave=${this.onPointerLeave}
|
|
1126
|
+
@click=${this.onCanvasClick}
|
|
1127
|
+
@keydown=${this.onKeyDown}
|
|
1128
|
+
></canvas>
|
|
1129
|
+
<div
|
|
1130
|
+
part="tooltip"
|
|
1131
|
+
?hidden=${!this.hoverCell}
|
|
1132
|
+
style=${styleMap(this.hoverCell ? this.tooltipStyle(this.hoverCell) : {})}
|
|
1133
|
+
>
|
|
1134
|
+
${this.hoverCell ? this.resolveCellText(this.hoverCell) : ''}
|
|
1135
|
+
</div>
|
|
1136
|
+
<div part="live-region" class="sr-only" role="status" aria-live="polite">${this.liveText}</div>
|
|
1137
|
+
<div part="legend">
|
|
1138
|
+
<span part="legend-lo">${range ? range[0] : ''}</span>
|
|
1139
|
+
<span class="bar"></span>
|
|
1140
|
+
<span part="legend-hi">${range ? range[1] : ''}</span>
|
|
1141
|
+
<span>${this.valueLabel}</span>
|
|
1142
|
+
${labeledAnnotations.map((a) => html `<span part="legend-annotation"><span class="ring-swatch"></span>${a.label}</span>`)}
|
|
1143
|
+
</div>
|
|
1144
|
+
</div>
|
|
1145
|
+
`;
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
__decorate([
|
|
1149
|
+
property({ attribute: false })
|
|
1150
|
+
], LyraHeatmap.prototype, "rowLabels", void 0);
|
|
1151
|
+
__decorate([
|
|
1152
|
+
property({ attribute: false })
|
|
1153
|
+
], LyraHeatmap.prototype, "colLabels", void 0);
|
|
1154
|
+
__decorate([
|
|
1155
|
+
property({ attribute: false })
|
|
1156
|
+
], LyraHeatmap.prototype, "values", void 0);
|
|
1157
|
+
__decorate([
|
|
1158
|
+
property({ type: Number, attribute: 'cell-size' })
|
|
1159
|
+
], LyraHeatmap.prototype, "cellSize", null);
|
|
1160
|
+
__decorate([
|
|
1161
|
+
property({ attribute: 'value-label' })
|
|
1162
|
+
], LyraHeatmap.prototype, "valueLabel", void 0);
|
|
1163
|
+
__decorate([
|
|
1164
|
+
property()
|
|
1165
|
+
], LyraHeatmap.prototype, "scale", void 0);
|
|
1166
|
+
__decorate([
|
|
1167
|
+
property({ type: Boolean, attribute: 'fit-to-width' })
|
|
1168
|
+
], LyraHeatmap.prototype, "fitToWidth", void 0);
|
|
1169
|
+
__decorate([
|
|
1170
|
+
property()
|
|
1171
|
+
], LyraHeatmap.prototype, "mode", void 0);
|
|
1172
|
+
__decorate([
|
|
1173
|
+
property({ attribute: false })
|
|
1174
|
+
], LyraHeatmap.prototype, "days", void 0);
|
|
1175
|
+
__decorate([
|
|
1176
|
+
property({ type: Number, attribute: 'first-day-of-week' })
|
|
1177
|
+
], LyraHeatmap.prototype, "firstDayOfWeek", void 0);
|
|
1178
|
+
__decorate([
|
|
1179
|
+
property({ attribute: 'bucket-count', converter: bucketCountConverter })
|
|
1180
|
+
], LyraHeatmap.prototype, "bucketCount", null);
|
|
1181
|
+
__decorate([
|
|
1182
|
+
property({ attribute: false })
|
|
1183
|
+
], LyraHeatmap.prototype, "annotations", void 0);
|
|
1184
|
+
__decorate([
|
|
1185
|
+
property({ attribute: false })
|
|
1186
|
+
], LyraHeatmap.prototype, "cellText", void 0);
|
|
1187
|
+
__decorate([
|
|
1188
|
+
property({ attribute: false })
|
|
1189
|
+
], LyraHeatmap.prototype, "cellInteractive", void 0);
|
|
1190
|
+
__decorate([
|
|
1191
|
+
property({ attribute: false })
|
|
1192
|
+
], LyraHeatmap.prototype, "colorSteps", void 0);
|
|
1193
|
+
__decorate([
|
|
1194
|
+
property({ attribute: false })
|
|
1195
|
+
], LyraHeatmap.prototype, "columnX", void 0);
|
|
1196
|
+
__decorate([
|
|
1197
|
+
property({ attribute: false })
|
|
1198
|
+
], LyraHeatmap.prototype, "rowY", void 0);
|
|
1199
|
+
__decorate([
|
|
1200
|
+
query('canvas')
|
|
1201
|
+
], LyraHeatmap.prototype, "canvas", void 0);
|
|
1202
|
+
__decorate([
|
|
1203
|
+
state()
|
|
1204
|
+
], LyraHeatmap.prototype, "hoverCell", void 0);
|
|
1205
|
+
__decorate([
|
|
1206
|
+
state()
|
|
1207
|
+
], LyraHeatmap.prototype, "focusedCell", void 0);
|
|
1208
|
+
__decorate([
|
|
1209
|
+
state()
|
|
1210
|
+
], LyraHeatmap.prototype, "liveText", void 0);
|
|
1211
|
+
//# sourceMappingURL=heatmap.class.js.map
|