@contraagent/elements 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -2
- package/custom-elements.json +4260 -0
- package/dist/charts/bar-chart.d.ts +32 -0
- package/dist/charts/bar-chart.d.ts.map +1 -0
- package/dist/charts/bar-chart.js +70 -0
- package/dist/charts/bar-chart.js.map +1 -0
- package/dist/charts/base.d.ts +48 -0
- package/dist/charts/base.d.ts.map +1 -0
- package/dist/charts/base.js +203 -0
- package/dist/charts/base.js.map +1 -0
- package/dist/charts/column-chart.d.ts +42 -0
- package/dist/charts/column-chart.d.ts.map +1 -0
- package/dist/charts/column-chart.js +146 -0
- package/dist/charts/column-chart.js.map +1 -0
- package/dist/charts/heatmap.d.ts +42 -0
- package/dist/charts/heatmap.d.ts.map +1 -0
- package/dist/charts/heatmap.js +124 -0
- package/dist/charts/heatmap.js.map +1 -0
- package/dist/charts/index.d.ts +9 -0
- package/dist/charts/index.d.ts.map +1 -0
- package/dist/charts/index.js +11 -0
- package/dist/charts/index.js.map +1 -0
- package/dist/charts/line-chart.d.ts +36 -0
- package/dist/charts/line-chart.d.ts.map +1 -0
- package/dist/charts/line-chart.js +118 -0
- package/dist/charts/line-chart.js.map +1 -0
- package/dist/charts/scale.d.ts +32 -0
- package/dist/charts/scale.d.ts.map +1 -0
- package/dist/charts/scale.js +50 -0
- package/dist/charts/scale.js.map +1 -0
- package/dist/charts/state-grid.d.ts +64 -0
- package/dist/charts/state-grid.d.ts.map +1 -0
- package/dist/charts/state-grid.js +223 -0
- package/dist/charts/state-grid.js.map +1 -0
- package/dist/charts/types.d.ts +34 -0
- package/dist/charts/types.d.ts.map +1 -0
- package/dist/charts/types.js +11 -0
- package/dist/charts/types.js.map +1 -0
- package/dist/checks/check-table.d.ts +32 -0
- package/dist/checks/check-table.d.ts.map +1 -0
- package/dist/checks/check-table.js +94 -0
- package/dist/checks/check-table.js.map +1 -0
- package/dist/checks/index.d.ts +4 -0
- package/dist/checks/index.d.ts.map +1 -0
- package/dist/checks/index.js +6 -0
- package/dist/checks/index.js.map +1 -0
- package/dist/checks/styles.d.ts +5 -0
- package/dist/checks/styles.d.ts.map +1 -0
- package/dist/checks/styles.js +30 -0
- package/dist/checks/styles.js.map +1 -0
- package/dist/checks/types.d.ts +35 -0
- package/dist/checks/types.d.ts.map +1 -0
- package/dist/checks/types.js +12 -0
- package/dist/checks/types.js.map +1 -0
- package/dist/core/clock.d.ts +20 -0
- package/dist/core/clock.d.ts.map +1 -0
- package/dist/core/clock.js +45 -0
- package/dist/core/clock.js.map +1 -0
- package/dist/core/define.d.ts +3 -0
- package/dist/core/define.d.ts.map +1 -0
- package/dist/core/define.js +8 -0
- package/dist/core/define.js.map +1 -0
- package/dist/core/events.d.ts +78 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +8 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/format.d.ts +8 -0
- package/dist/core/format.d.ts.map +1 -0
- package/dist/core/format.js +28 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/frame.d.ts +4 -0
- package/dist/core/frame.d.ts.map +1 -0
- package/dist/core/frame.js +5 -0
- package/dist/core/frame.js.map +1 -0
- package/dist/core/strings.d.ts +3 -0
- package/dist/core/strings.d.ts.map +1 -0
- package/dist/core/strings.js +14 -0
- package/dist/core/strings.js.map +1 -0
- package/dist/core/tone.d.ts +8 -0
- package/dist/core/tone.d.ts.map +1 -0
- package/dist/core/tone.js +9 -0
- package/dist/core/tone.js.map +1 -0
- package/dist/count/count.d.ts +22 -0
- package/dist/count/count.d.ts.map +1 -0
- package/dist/count/count.js +60 -0
- package/dist/count/count.js.map +1 -0
- package/dist/count/elapsed.d.ts +18 -0
- package/dist/count/elapsed.d.ts.map +1 -0
- package/dist/count/elapsed.js +33 -0
- package/dist/count/elapsed.js.map +1 -0
- package/dist/count/index.d.ts +3 -0
- package/dist/count/index.d.ts.map +1 -0
- package/dist/count/index.js +5 -0
- package/dist/count/index.js.map +1 -0
- package/dist/define/all.d.ts +13 -0
- package/dist/define/all.d.ts.map +1 -0
- package/dist/define/all.js +14 -0
- package/dist/define/all.js.map +1 -0
- package/dist/define/charts.d.ts +8 -0
- package/dist/define/charts.d.ts.map +1 -0
- package/dist/define/charts.js +15 -0
- package/dist/define/charts.js.map +1 -0
- package/dist/define/check-table.d.ts +4 -0
- package/dist/define/check-table.d.ts.map +1 -0
- package/dist/define/check-table.js +7 -0
- package/dist/define/check-table.js.map +1 -0
- package/dist/define/count.d.ts +5 -0
- package/dist/define/count.d.ts.map +1 -0
- package/dist/define/count.js +9 -0
- package/dist/define/count.js.map +1 -0
- package/dist/define/data-table.d.ts +4 -0
- package/dist/define/data-table.d.ts.map +1 -0
- package/dist/define/data-table.js +7 -0
- package/dist/define/data-table.js.map +1 -0
- package/dist/define/graph.d.ts +6 -0
- package/dist/define/graph.d.ts.map +1 -0
- package/dist/define/graph.js +9 -0
- package/dist/define/graph.js.map +1 -0
- package/dist/define/json-tree.d.ts +4 -0
- package/dist/define/json-tree.d.ts.map +1 -0
- package/dist/define/json-tree.js +7 -0
- package/dist/define/json-tree.js.map +1 -0
- package/dist/define/lanes.d.ts +4 -0
- package/dist/define/lanes.d.ts.map +1 -0
- package/dist/define/lanes.js +7 -0
- package/dist/define/lanes.js.map +1 -0
- package/dist/define/markdown.d.ts +4 -0
- package/dist/define/markdown.d.ts.map +1 -0
- package/dist/define/markdown.js +7 -0
- package/dist/define/markdown.js.map +1 -0
- package/dist/define/matrix.d.ts +4 -0
- package/dist/define/matrix.d.ts.map +1 -0
- package/dist/define/matrix.js +7 -0
- package/dist/define/matrix.js.map +1 -0
- package/dist/define/segmented.d.ts +4 -0
- package/dist/define/segmented.d.ts.map +1 -0
- package/dist/define/segmented.js +7 -0
- package/dist/define/segmented.js.map +1 -0
- package/dist/define/tiles.d.ts +5 -0
- package/dist/define/tiles.d.ts.map +1 -0
- package/dist/define/tiles.js +9 -0
- package/dist/define/tiles.js.map +1 -0
- package/dist/define/transcript.d.ts +4 -0
- package/dist/define/transcript.d.ts.map +1 -0
- package/dist/define/transcript.js +7 -0
- package/dist/define/transcript.js.map +1 -0
- package/dist/graph/arrange.d.ts +43 -0
- package/dist/graph/arrange.d.ts.map +1 -0
- package/dist/graph/arrange.js +390 -0
- package/dist/graph/arrange.js.map +1 -0
- package/dist/graph/card.d.ts +71 -0
- package/dist/graph/card.d.ts.map +1 -0
- package/dist/graph/card.js +185 -0
- package/dist/graph/card.js.map +1 -0
- package/dist/graph/host.d.ts +82 -0
- package/dist/graph/host.d.ts.map +1 -0
- package/dist/graph/host.js +21 -0
- package/dist/graph/host.js.map +1 -0
- package/dist/graph/icons.d.ts +7 -0
- package/dist/graph/icons.d.ts.map +1 -0
- package/dist/graph/icons.js +18 -0
- package/dist/graph/icons.js.map +1 -0
- package/dist/graph/index.d.ts +15 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +17 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/layered-graph.d.ts +226 -0
- package/dist/graph/layered-graph.d.ts.map +1 -0
- package/dist/graph/layered-graph.js +396 -0
- package/dist/graph/layered-graph.js.map +1 -0
- package/dist/graph/layout.d.ts +80 -0
- package/dist/graph/layout.d.ts.map +1 -0
- package/dist/graph/layout.js +264 -0
- package/dist/graph/layout.js.map +1 -0
- package/dist/graph/marks.d.ts +24 -0
- package/dist/graph/marks.d.ts.map +1 -0
- package/dist/graph/marks.js +38 -0
- package/dist/graph/marks.js.map +1 -0
- package/dist/graph/nav.d.ts +14 -0
- package/dist/graph/nav.d.ts.map +1 -0
- package/dist/graph/nav.js +14 -0
- package/dist/graph/nav.js.map +1 -0
- package/dist/graph/pan-zoom.d.ts +80 -0
- package/dist/graph/pan-zoom.d.ts.map +1 -0
- package/dist/graph/pan-zoom.js +191 -0
- package/dist/graph/pan-zoom.js.map +1 -0
- package/dist/graph/paths.d.ts +9 -0
- package/dist/graph/paths.d.ts.map +1 -0
- package/dist/graph/paths.js +44 -0
- package/dist/graph/paths.js.map +1 -0
- package/dist/graph/place-card.d.ts +36 -0
- package/dist/graph/place-card.d.ts.map +1 -0
- package/dist/graph/place-card.js +68 -0
- package/dist/graph/place-card.js.map +1 -0
- package/dist/graph/strings.d.ts +50 -0
- package/dist/graph/strings.d.ts.map +1 -0
- package/dist/graph/strings.js +37 -0
- package/dist/graph/strings.js.map +1 -0
- package/dist/graph/styles.d.ts +2 -0
- package/dist/graph/styles.d.ts.map +1 -0
- package/dist/graph/styles.js +203 -0
- package/dist/graph/styles.js.map +1 -0
- package/dist/graph/types.d.ts +184 -0
- package/dist/graph/types.d.ts.map +1 -0
- package/dist/graph/types.js +2 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/graph/view.d.ts +17 -0
- package/dist/graph/view.d.ts.map +1 -0
- package/dist/graph/view.js +21 -0
- package/dist/graph/view.js.map +1 -0
- package/dist/graph/views/dag.d.ts +10 -0
- package/dist/graph/views/dag.d.ts.map +1 -0
- package/dist/graph/views/dag.js +292 -0
- package/dist/graph/views/dag.js.map +1 -0
- package/dist/graph/views/foot.d.ts +8 -0
- package/dist/graph/views/foot.d.ts.map +1 -0
- package/dist/graph/views/foot.js +103 -0
- package/dist/graph/views/foot.js.map +1 -0
- package/dist/graph/views/node-table.d.ts +17 -0
- package/dist/graph/views/node-table.d.ts.map +1 -0
- package/dist/graph/views/node-table.js +80 -0
- package/dist/graph/views/node-table.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/json/index.d.ts +2 -0
- package/dist/json/index.d.ts.map +1 -0
- package/dist/json/index.js +3 -0
- package/dist/json/index.js.map +1 -0
- package/dist/json/json-tree.d.ts +21 -0
- package/dist/json/json-tree.d.ts.map +1 -0
- package/dist/json/json-tree.js +51 -0
- package/dist/json/json-tree.js.map +1 -0
- package/dist/lanes/index.d.ts +5 -0
- package/dist/lanes/index.d.ts.map +1 -0
- package/dist/lanes/index.js +7 -0
- package/dist/lanes/index.js.map +1 -0
- package/dist/lanes/lanes.d.ts +56 -0
- package/dist/lanes/lanes.d.ts.map +1 -0
- package/dist/lanes/lanes.js +160 -0
- package/dist/lanes/lanes.js.map +1 -0
- package/dist/lanes/stack.d.ts +26 -0
- package/dist/lanes/stack.d.ts.map +1 -0
- package/dist/lanes/stack.js +43 -0
- package/dist/lanes/stack.js.map +1 -0
- package/dist/lanes/styles.d.ts +2 -0
- package/dist/lanes/styles.d.ts.map +1 -0
- package/dist/lanes/styles.js +30 -0
- package/dist/lanes/styles.js.map +1 -0
- package/dist/lanes/types.d.ts +41 -0
- package/dist/lanes/types.d.ts.map +1 -0
- package/dist/lanes/types.js +6 -0
- package/dist/lanes/types.js.map +1 -0
- package/dist/markdown/cae-markdown.d.ts +37 -0
- package/dist/markdown/cae-markdown.d.ts.map +1 -0
- package/dist/markdown/cae-markdown.js +68 -0
- package/dist/markdown/cae-markdown.js.map +1 -0
- package/dist/markdown/highlight.d.ts +5 -0
- package/dist/markdown/highlight.d.ts.map +1 -0
- package/dist/markdown/highlight.js +86 -0
- package/dist/markdown/highlight.js.map +1 -0
- package/dist/markdown/index.d.ts +4 -0
- package/dist/markdown/index.d.ts.map +1 -0
- package/dist/markdown/index.js +6 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/markdown.d.ts +4 -0
- package/dist/markdown/markdown.d.ts.map +1 -0
- package/dist/markdown/markdown.js +105 -0
- package/dist/markdown/markdown.js.map +1 -0
- package/dist/matrix/grid-step.d.ts +8 -0
- package/dist/matrix/grid-step.d.ts.map +1 -0
- package/dist/matrix/grid-step.js +69 -0
- package/dist/matrix/grid-step.js.map +1 -0
- package/dist/matrix/index.d.ts +5 -0
- package/dist/matrix/index.d.ts.map +1 -0
- package/dist/matrix/index.js +7 -0
- package/dist/matrix/index.js.map +1 -0
- package/dist/matrix/mark-matrix.d.ts +97 -0
- package/dist/matrix/mark-matrix.d.ts.map +1 -0
- package/dist/matrix/mark-matrix.js +272 -0
- package/dist/matrix/mark-matrix.js.map +1 -0
- package/dist/matrix/styles.d.ts +4 -0
- package/dist/matrix/styles.d.ts.map +1 -0
- package/dist/matrix/styles.js +47 -0
- package/dist/matrix/styles.js.map +1 -0
- package/dist/matrix/types.d.ts +79 -0
- package/dist/matrix/types.d.ts.map +1 -0
- package/dist/matrix/types.js +5 -0
- package/dist/matrix/types.js.map +1 -0
- package/dist/primitives/fact-line.d.ts +14 -0
- package/dist/primitives/fact-line.d.ts.map +1 -0
- package/dist/primitives/fact-line.js +18 -0
- package/dist/primitives/fact-line.js.map +1 -0
- package/dist/primitives/icon.d.ts +14 -0
- package/dist/primitives/icon.d.ts.map +1 -0
- package/dist/primitives/icon.js +19 -0
- package/dist/primitives/icon.js.map +1 -0
- package/dist/primitives/index.d.ts +10 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +13 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/legend.d.ts +28 -0
- package/dist/primitives/legend.d.ts.map +1 -0
- package/dist/primitives/legend.js +28 -0
- package/dist/primitives/legend.js.map +1 -0
- package/dist/primitives/pill.d.ts +23 -0
- package/dist/primitives/pill.d.ts.map +1 -0
- package/dist/primitives/pill.js +40 -0
- package/dist/primitives/pill.js.map +1 -0
- package/dist/primitives/roving-focus.d.ts +47 -0
- package/dist/primitives/roving-focus.d.ts.map +1 -0
- package/dist/primitives/roving-focus.js +111 -0
- package/dist/primitives/roving-focus.js.map +1 -0
- package/dist/primitives/segmented.d.ts +41 -0
- package/dist/primitives/segmented.d.ts.map +1 -0
- package/dist/primitives/segmented.js +88 -0
- package/dist/primitives/segmented.js.map +1 -0
- package/dist/primitives/share-bar.d.ts +37 -0
- package/dist/primitives/share-bar.d.ts.map +1 -0
- package/dist/primitives/share-bar.js +69 -0
- package/dist/primitives/share-bar.js.map +1 -0
- package/dist/primitives/states.d.ts +19 -0
- package/dist/primitives/states.d.ts.map +1 -0
- package/dist/primitives/states.js +11 -0
- package/dist/primitives/states.js.map +1 -0
- package/dist/primitives/window.d.ts +24 -0
- package/dist/primitives/window.d.ts.map +1 -0
- package/dist/primitives/window.js +56 -0
- package/dist/primitives/window.js.map +1 -0
- package/dist/styles/chips.d.ts +2 -0
- package/dist/styles/chips.d.ts.map +1 -0
- package/dist/styles/chips.js +18 -0
- package/dist/styles/chips.js.map +1 -0
- package/dist/styles/facts.d.ts +2 -0
- package/dist/styles/facts.d.ts.map +1 -0
- package/dist/styles/facts.js +7 -0
- package/dist/styles/facts.js.map +1 -0
- package/dist/styles/index.d.ts +16 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/index.js +15 -0
- package/dist/styles/index.js.map +1 -0
- package/dist/styles/layout.d.ts +2 -0
- package/dist/styles/layout.d.ts.map +1 -0
- package/dist/styles/layout.js +33 -0
- package/dist/styles/layout.js.map +1 -0
- package/dist/styles/marks.d.ts +2 -0
- package/dist/styles/marks.d.ts.map +1 -0
- package/dist/styles/marks.js +30 -0
- package/dist/styles/marks.js.map +1 -0
- package/dist/styles/meter.d.ts +3 -0
- package/dist/styles/meter.d.ts.map +1 -0
- package/dist/styles/meter.js +9 -0
- package/dist/styles/meter.js.map +1 -0
- package/dist/styles/motion.d.ts +2 -0
- package/dist/styles/motion.d.ts.map +1 -0
- package/dist/styles/motion.js +27 -0
- package/dist/styles/motion.js.map +1 -0
- package/dist/styles/prose.d.ts +3 -0
- package/dist/styles/prose.d.ts.map +1 -0
- package/dist/styles/prose.js +59 -0
- package/dist/styles/prose.js.map +1 -0
- package/dist/styles/reset.d.ts +2 -0
- package/dist/styles/reset.d.ts.map +1 -0
- package/dist/styles/reset.js +13 -0
- package/dist/styles/reset.js.map +1 -0
- package/dist/styles/status.d.ts +2 -0
- package/dist/styles/status.d.ts.map +1 -0
- package/dist/styles/status.js +52 -0
- package/dist/styles/status.js.map +1 -0
- package/dist/styles/text.d.ts +2 -0
- package/dist/styles/text.d.ts.map +1 -0
- package/dist/styles/text.js +21 -0
- package/dist/styles/text.js.map +1 -0
- package/dist/styles/tokens.d.ts +8 -0
- package/dist/styles/tokens.d.ts.map +1 -0
- package/dist/styles/tokens.js +32 -0
- package/dist/styles/tokens.js.map +1 -0
- package/dist/table/data-table.d.ts +106 -0
- package/dist/table/data-table.d.ts.map +1 -0
- package/dist/table/data-table.js +408 -0
- package/dist/table/data-table.js.map +1 -0
- package/dist/table/index.d.ts +4 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/table/index.js +6 -0
- package/dist/table/index.js.map +1 -0
- package/dist/table/styles.d.ts +2 -0
- package/dist/table/styles.d.ts.map +1 -0
- package/dist/table/styles.js +32 -0
- package/dist/table/styles.js.map +1 -0
- package/dist/table/types.d.ts +48 -0
- package/dist/table/types.d.ts.map +1 -0
- package/dist/table/types.js +30 -0
- package/dist/table/types.js.map +1 -0
- package/dist/themes/boot.d.ts +7 -0
- package/dist/themes/boot.d.ts.map +1 -0
- package/dist/themes/boot.js +14 -0
- package/dist/themes/boot.js.map +1 -0
- package/dist/themes/choice.d.ts +16 -0
- package/dist/themes/choice.d.ts.map +1 -0
- package/dist/themes/choice.js +45 -0
- package/dist/themes/choice.js.map +1 -0
- package/dist/themes/data.d.ts +43 -0
- package/dist/themes/data.d.ts.map +1 -0
- package/dist/themes/data.js +408 -0
- package/dist/themes/data.js.map +1 -0
- package/dist/themes/index.d.ts +7 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +11 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/sheet.d.ts +16 -0
- package/dist/themes/sheet.d.ts.map +1 -0
- package/dist/themes/sheet.js +28 -0
- package/dist/themes/sheet.js.map +1 -0
- package/dist/themes/token-meanings.d.ts +3 -0
- package/dist/themes/token-meanings.d.ts.map +1 -0
- package/dist/themes/token-meanings.js +67 -0
- package/dist/themes/token-meanings.js.map +1 -0
- package/dist/themes/tokens-list.d.ts +14 -0
- package/dist/themes/tokens-list.d.ts.map +1 -0
- package/dist/themes/tokens-list.js +69 -0
- package/dist/themes/tokens-list.js.map +1 -0
- package/dist/tiles/index.d.ts +4 -0
- package/dist/tiles/index.d.ts.map +1 -0
- package/dist/tiles/index.js +6 -0
- package/dist/tiles/index.js.map +1 -0
- package/dist/tiles/stat-tiles.d.ts +40 -0
- package/dist/tiles/stat-tiles.d.ts.map +1 -0
- package/dist/tiles/stat-tiles.js +99 -0
- package/dist/tiles/stat-tiles.js.map +1 -0
- package/dist/tiles/styles.d.ts +2 -0
- package/dist/tiles/styles.d.ts.map +1 -0
- package/dist/tiles/styles.js +23 -0
- package/dist/tiles/styles.js.map +1 -0
- package/dist/tiles/types.d.ts +22 -0
- package/dist/tiles/types.d.ts.map +1 -0
- package/dist/tiles/types.js +2 -0
- package/dist/tiles/types.js.map +1 -0
- package/dist/transcript/follow-scroll.d.ts +21 -0
- package/dist/transcript/follow-scroll.d.ts.map +1 -0
- package/dist/transcript/follow-scroll.js +76 -0
- package/dist/transcript/follow-scroll.js.map +1 -0
- package/dist/transcript/index.d.ts +5 -0
- package/dist/transcript/index.d.ts.map +1 -0
- package/dist/transcript/index.js +7 -0
- package/dist/transcript/index.js.map +1 -0
- package/dist/transcript/styles.d.ts +2 -0
- package/dist/transcript/styles.d.ts.map +1 -0
- package/dist/transcript/styles.js +114 -0
- package/dist/transcript/styles.js.map +1 -0
- package/dist/transcript/tags.d.ts +6 -0
- package/dist/transcript/tags.d.ts.map +1 -0
- package/dist/transcript/tags.js +13 -0
- package/dist/transcript/tags.js.map +1 -0
- package/dist/transcript/tool-card.d.ts +16 -0
- package/dist/transcript/tool-card.d.ts.map +1 -0
- package/dist/transcript/tool-card.js +87 -0
- package/dist/transcript/tool-card.js.map +1 -0
- package/dist/transcript/transcript.d.ts +103 -0
- package/dist/transcript/transcript.d.ts.map +1 -0
- package/dist/transcript/transcript.js +397 -0
- package/dist/transcript/transcript.js.map +1 -0
- package/dist/transcript/types.d.ts +161 -0
- package/dist/transcript/types.d.ts.map +1 -0
- package/dist/transcript/types.js +25 -0
- package/dist/transcript/types.js.map +1 -0
- package/docs/charts.md +58 -0
- package/docs/check-table.md +40 -0
- package/docs/data-table.md +57 -0
- package/docs/examples/charts.ts +61 -0
- package/docs/examples/check-table.ts +19 -0
- package/docs/examples/ci-pipeline.ts +271 -0
- package/docs/examples/data-table.ts +39 -0
- package/docs/examples/graph.ts +57 -0
- package/docs/examples/lanes.ts +40 -0
- package/docs/examples/matrix.ts +56 -0
- package/docs/examples/page.css +34 -0
- package/docs/examples/segmented.ts +18 -0
- package/docs/examples/status.ts +30 -0
- package/docs/examples/theme.css +54 -0
- package/docs/examples/tiles.ts +27 -0
- package/docs/examples/transcript.ts +59 -0
- package/docs/graph.md +112 -0
- package/docs/lanes.md +48 -0
- package/docs/matrix.md +34 -0
- package/docs/page.md +87 -0
- package/docs/primitives.md +57 -0
- package/docs/strings.md +16 -0
- package/docs/theming.md +147 -0
- package/docs/tiles.md +40 -0
- package/docs/transcript.md +73 -0
- package/docs/tsconfig.json +20 -0
- package/package.json +161 -4
- package/src/charts/bar-chart.ts +74 -0
- package/src/charts/base.ts +188 -0
- package/src/charts/column-chart.ts +153 -0
- package/src/charts/heatmap.ts +129 -0
- package/src/charts/index.ts +10 -0
- package/src/charts/line-chart.ts +128 -0
- package/src/charts/scale.ts +61 -0
- package/src/charts/state-grid.ts +245 -0
- package/src/charts/types.ts +48 -0
- package/src/checks/check-table.ts +85 -0
- package/src/checks/index.ts +5 -0
- package/src/checks/styles.ts +31 -0
- package/src/checks/types.ts +48 -0
- package/src/core/clock.ts +46 -0
- package/src/core/define.ts +7 -0
- package/src/core/events.ts +89 -0
- package/src/core/format.ts +25 -0
- package/src/core/frame.ts +5 -0
- package/src/core/strings.ts +11 -0
- package/src/core/tone.ts +14 -0
- package/src/count/count.ts +54 -0
- package/src/count/elapsed.ts +33 -0
- package/src/count/index.ts +4 -0
- package/src/define/all.ts +13 -0
- package/src/define/charts.ts +17 -0
- package/src/define/check-table.ts +9 -0
- package/src/define/count.ts +11 -0
- package/src/define/data-table.ts +9 -0
- package/src/define/graph.ts +11 -0
- package/src/define/json-tree.ts +9 -0
- package/src/define/lanes.ts +9 -0
- package/src/define/markdown.ts +9 -0
- package/src/define/matrix.ts +9 -0
- package/src/define/segmented.ts +9 -0
- package/src/define/tiles.ts +11 -0
- package/src/define/transcript.ts +9 -0
- package/src/graph/arrange.ts +399 -0
- package/src/graph/card.ts +209 -0
- package/src/graph/host.ts +100 -0
- package/src/graph/icons.ts +23 -0
- package/src/graph/index.ts +16 -0
- package/src/graph/layered-graph.ts +417 -0
- package/src/graph/layout.ts +331 -0
- package/src/graph/marks.ts +42 -0
- package/src/graph/nav.ts +19 -0
- package/src/graph/pan-zoom.ts +219 -0
- package/src/graph/paths.ts +41 -0
- package/src/graph/place-card.ts +93 -0
- package/src/graph/strings.ts +86 -0
- package/src/graph/styles.ts +204 -0
- package/src/graph/types.ts +202 -0
- package/src/graph/view.ts +28 -0
- package/src/graph/views/dag.ts +294 -0
- package/src/graph/views/foot.ts +109 -0
- package/src/graph/views/node-table.ts +90 -0
- package/src/index.ts +25 -0
- package/src/json/index.ts +2 -0
- package/src/json/json-tree.ts +49 -0
- package/src/lanes/index.ts +6 -0
- package/src/lanes/lanes.ts +143 -0
- package/src/lanes/stack.ts +51 -0
- package/src/lanes/styles.ts +30 -0
- package/src/lanes/types.ts +51 -0
- package/src/markdown/cae-markdown.ts +64 -0
- package/src/markdown/highlight.ts +94 -0
- package/src/markdown/index.ts +5 -0
- package/src/markdown/markdown.ts +110 -0
- package/src/matrix/grid-step.ts +58 -0
- package/src/matrix/index.ts +6 -0
- package/src/matrix/mark-matrix.ts +285 -0
- package/src/matrix/styles.ts +48 -0
- package/src/matrix/types.ts +83 -0
- package/src/primitives/fact-line.ts +26 -0
- package/src/primitives/icon.ts +26 -0
- package/src/primitives/index.ts +12 -0
- package/src/primitives/legend.ts +56 -0
- package/src/primitives/pill.ts +58 -0
- package/src/primitives/roving-focus.ts +138 -0
- package/src/primitives/segmented.ts +92 -0
- package/src/primitives/share-bar.ts +94 -0
- package/src/primitives/states.ts +28 -0
- package/src/primitives/window.ts +65 -0
- package/src/styles/chips.ts +18 -0
- package/src/styles/facts.ts +7 -0
- package/src/styles/index.ts +19 -0
- package/src/styles/layout.ts +33 -0
- package/src/styles/marks.ts +30 -0
- package/src/styles/meter.ts +9 -0
- package/src/styles/motion.ts +27 -0
- package/src/styles/prose.ts +59 -0
- package/src/styles/reset.ts +13 -0
- package/src/styles/status.ts +52 -0
- package/src/styles/text.ts +21 -0
- package/src/styles/tokens.ts +35 -0
- package/src/table/data-table.ts +367 -0
- package/src/table/index.ts +5 -0
- package/src/table/styles.ts +32 -0
- package/src/table/types.ts +73 -0
- package/src/themes/boot.ts +14 -0
- package/src/themes/choice.ts +47 -0
- package/src/themes/data.ts +433 -0
- package/src/themes/index.ts +10 -0
- package/src/themes/sheet.ts +29 -0
- package/src/themes/token-meanings.ts +67 -0
- package/src/themes/tokens-list.ts +82 -0
- package/src/tiles/index.ts +5 -0
- package/src/tiles/stat-tiles.ts +92 -0
- package/src/tiles/styles.ts +23 -0
- package/src/tiles/types.ts +20 -0
- package/src/transcript/follow-scroll.ts +72 -0
- package/src/transcript/index.ts +6 -0
- package/src/transcript/styles.ts +114 -0
- package/src/transcript/tags.ts +18 -0
- package/src/transcript/tool-card.ts +103 -0
- package/src/transcript/transcript.ts +358 -0
- package/src/transcript/types.ts +167 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type TemplateResult } from 'lit';
|
|
2
|
+
import type { LegendItem } from '../primitives/legend.js';
|
|
3
|
+
import { ChartElement } from './base.js';
|
|
4
|
+
import type { ChartBar } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Horizontal bars, one per label, in the order given (a funnel's stages, a ranking):
|
|
7
|
+
* each its label, a bar as long as its value against the longest, and the value in
|
|
8
|
+
* words. A bar with a `tone` takes that status colour, the others one colour. Every
|
|
9
|
+
* value is written beside its bar, so no tooltip is needed; the switch shows them as
|
|
10
|
+
* a table.
|
|
11
|
+
*
|
|
12
|
+
* @tagname cae-bar-chart
|
|
13
|
+
* @csspart plot - the bars
|
|
14
|
+
* @csspart table - the table of its values
|
|
15
|
+
* @csspart switch - the button between the two
|
|
16
|
+
* @csspart empty - what it shows with no values
|
|
17
|
+
*/
|
|
18
|
+
export declare class CaeBarChart extends ChartElement {
|
|
19
|
+
static styles: (import("lit").CSSResult | import("lit").CSSResult[])[];
|
|
20
|
+
bars: readonly ChartBar[];
|
|
21
|
+
protected hasValues(): boolean;
|
|
22
|
+
protected legendItems(): LegendItem[];
|
|
23
|
+
protected itemCount(): number;
|
|
24
|
+
protected plot(): TemplateResult;
|
|
25
|
+
protected table(): TemplateResult;
|
|
26
|
+
}
|
|
27
|
+
declare global {
|
|
28
|
+
interface HTMLElementTagNameMap {
|
|
29
|
+
'cae-bar-chart': CaeBarChart;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=bar-chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bar-chart.d.ts","sourceRoot":"","sources":["../../src/charts/bar-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAgB,MAAM,0DAYpB;IAE8B,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAM;IAE/D,SAAS,CAAC,SAAS,IAAI,OAAO;IAI9B,SAAS,CAAC,WAAW,IAAI,UAAU,EAAE;IAIrC,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,SAAS,CAAC,IAAI,IAAI,cAAc;IAahC,SAAS,CAAC,KAAK,IAAI,cAAc;CAKlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,WAAW,CAAC;KAC9B;CACF"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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 { css, html, nothing } from 'lit';
|
|
8
|
+
import { property } from 'lit/decorators.js';
|
|
9
|
+
import { toneAttr } from '../core/tone.js';
|
|
10
|
+
import { ChartElement } from './base.js';
|
|
11
|
+
/**
|
|
12
|
+
* Horizontal bars, one per label, in the order given (a funnel's stages, a ranking):
|
|
13
|
+
* each its label, a bar as long as its value against the longest, and the value in
|
|
14
|
+
* words. A bar with a `tone` takes that status colour, the others one colour. Every
|
|
15
|
+
* value is written beside its bar, so no tooltip is needed; the switch shows them as
|
|
16
|
+
* a table.
|
|
17
|
+
*
|
|
18
|
+
* @tagname cae-bar-chart
|
|
19
|
+
* @csspart plot - the bars
|
|
20
|
+
* @csspart table - the table of its values
|
|
21
|
+
* @csspart switch - the button between the two
|
|
22
|
+
* @csspart empty - what it shows with no values
|
|
23
|
+
*/
|
|
24
|
+
export class CaeBarChart extends ChartElement {
|
|
25
|
+
constructor() {
|
|
26
|
+
super(...arguments);
|
|
27
|
+
this.bars = [];
|
|
28
|
+
}
|
|
29
|
+
static { this.styles = [
|
|
30
|
+
...ChartElement.styles,
|
|
31
|
+
css `
|
|
32
|
+
.bars { display: grid; grid-template-columns: minmax(80px, max-content) minmax(0, 1fr) max-content; gap: 6px 12px; align-items: center;
|
|
33
|
+
font-size: var(--font-size-sm); }
|
|
34
|
+
.bars .r { display: contents; }
|
|
35
|
+
.bars .l { color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 34ch; }
|
|
36
|
+
.bars .track { display: block; height: 12px; }
|
|
37
|
+
.bars .bar { display: block; height: 100%; min-width: 2px; border-radius: 1px 4px 4px 1px; background: var(--series-1); }
|
|
38
|
+
.bars .bar[data-tone] { background: var(--tone); }
|
|
39
|
+
.bars .v { color: var(--text-2); font-variant-numeric: tabular-nums; text-align: right; }
|
|
40
|
+
`,
|
|
41
|
+
]; }
|
|
42
|
+
hasValues() {
|
|
43
|
+
return this.bars.length > 0;
|
|
44
|
+
}
|
|
45
|
+
legendItems() {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
itemCount() {
|
|
49
|
+
return 0;
|
|
50
|
+
}
|
|
51
|
+
plot() {
|
|
52
|
+
const top = Math.max(0, ...this.bars.map((b) => b.value));
|
|
53
|
+
return html `<div class="bars" role="list" aria-label=${this.label || nothing}>
|
|
54
|
+
${this.bars.map((b) => html `<div class="r" role="listitem" aria-label="${b.label} | ${this.format(b.value)}">
|
|
55
|
+
<span class="l" aria-hidden="true" title=${b.label}>${b.label}</span>
|
|
56
|
+
<span class="track" aria-hidden="true"><span class="bar" data-tone=${toneAttr(b.tone)}
|
|
57
|
+
style="width: ${top > 0 ? (100 * Math.max(0, b.value)) / top : 0}%"></span></span>
|
|
58
|
+
<span class="v" aria-hidden="true">${this.format(b.value)}</span></div>`)}
|
|
59
|
+
</div>`;
|
|
60
|
+
}
|
|
61
|
+
table() {
|
|
62
|
+
return html `<table aria-label=${this.label || nothing}>
|
|
63
|
+
<tbody>${this.bars.map((b) => html `<tr><th scope="row">${b.label}</th><td>${this.format(b.value)}</td></tr>`)}</tbody>
|
|
64
|
+
</table>`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
__decorate([
|
|
68
|
+
property({ attribute: false })
|
|
69
|
+
], CaeBarChart.prototype, "bars", void 0);
|
|
70
|
+
//# sourceMappingURL=bar-chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bar-chart.js","sourceRoot":"","sources":["../../src/charts/bar-chart.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,WAAY,SAAQ,YAAY;IAA7C;;QAekC,SAAI,GAAwB,EAAE,CAAC;IAgCjE,CAAC;aA9CiB,WAAM,GAAG;QACvB,GAAG,YAAY,CAAC,MAAM;QACtB,GAAG,CAAA;;;;;;;;;KASF;KACF,AAZqB,CAYpB;IAIQ,SAAS;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;IAES,WAAW;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,SAAS;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IAES,IAAI;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAA,4CAA4C,IAAI,CAAC,KAAK,IAAI,OAAO;QACxE,IAAI,CAAC,IAAI,CAAC,GAAG,CACb,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAA,8CAA8C,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;qDAC7C,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK;+EACQ,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;4BACnE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;+CAC7B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAC3E;WACI,CAAC;IACV,CAAC;IAES,KAAK;QACb,OAAO,IAAI,CAAA,qBAAqB,IAAI,CAAC,KAAK,IAAI,OAAO;eAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAA,uBAAuB,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;aACtG,CAAC;IACZ,CAAC;;AA/B+B;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;yCAAgC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { LitElement, type TemplateResult } from 'lit';
|
|
2
|
+
import { type LegendItem } from '../primitives/legend.js';
|
|
3
|
+
import { type ChartStrings, type ValueText } from './types.js';
|
|
4
|
+
export declare abstract class ChartElement extends LitElement {
|
|
5
|
+
static styles: (import("lit").CSSResult | import("lit").CSSResult[])[];
|
|
6
|
+
/** The chart's accessible name (its title, or what it shows). */
|
|
7
|
+
label: string;
|
|
8
|
+
/** A value in words: the host's format for the chart's unit. */
|
|
9
|
+
format: ValueText;
|
|
10
|
+
strings: Partial<ChartStrings>;
|
|
11
|
+
/** The plot's height in px (the axis included). */
|
|
12
|
+
height: number;
|
|
13
|
+
/** The width the chart has, in px. */
|
|
14
|
+
protected width: number;
|
|
15
|
+
/** The values shown as a table instead of the chart. */
|
|
16
|
+
protected asTable: boolean;
|
|
17
|
+
/** The item the reader points at or moved to with the keys; null: none. */
|
|
18
|
+
protected active: number | null;
|
|
19
|
+
private resized;
|
|
20
|
+
protected get words(): ChartStrings;
|
|
21
|
+
connectedCallback(): void;
|
|
22
|
+
disconnectedCallback(): void;
|
|
23
|
+
/** A font that loads late changes the labels' widths: they are measured again. */
|
|
24
|
+
private readonly fontsLoaded;
|
|
25
|
+
/** An axis label's width in px, as the chart draws it, with room beside it: measured in the chart's font. */
|
|
26
|
+
protected labelWidth(text: string): number;
|
|
27
|
+
protected firstUpdated(): void;
|
|
28
|
+
/** The plot area's width: the element's, never less than a narrow screen's. */
|
|
29
|
+
protected get plotWidth(): number;
|
|
30
|
+
/** Whether there is anything to draw. */
|
|
31
|
+
protected abstract hasValues(): boolean;
|
|
32
|
+
/** The legend's entries: none for a single series, whose title names it. */
|
|
33
|
+
protected abstract legendItems(): LegendItem[];
|
|
34
|
+
/** How many items the keys move between. */
|
|
35
|
+
protected abstract itemCount(): number;
|
|
36
|
+
/** How many items the up and down keys move by: a row of a grid; 1 for a row of items. */
|
|
37
|
+
protected rowLength(): number;
|
|
38
|
+
protected abstract plot(): TemplateResult;
|
|
39
|
+
protected abstract table(): TemplateResult;
|
|
40
|
+
render(): TemplateResult<1>;
|
|
41
|
+
/** The arrow keys move between the items (up and down by a row of a grid), Home and End to the first and the last; Escape hides the tooltip. */
|
|
42
|
+
private readonly onKey;
|
|
43
|
+
/** A tooltip at `left` px (its middle) and `top` px of the plot, kept inside it. */
|
|
44
|
+
protected tip(left: number, top: number, body: TemplateResult): TemplateResult;
|
|
45
|
+
/** One line of a tooltip: a swatch, a name and its value. */
|
|
46
|
+
protected tipRow(colour: string | null, name: string, value: string): TemplateResult;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/charts/base.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1E,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGhF,OAAO,EAAyB,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAwBtF,8BAAsB,YAAa,SAAQ,UAAU;IACnD,OAAgB,MAAM,0DAoCpB;IAEF,iEAAiE;IACrD,KAAK,SAAM;IACvB,gEAAgE;IAChC,MAAM,EAAE,SAAS,CAAe;IAChC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAM;IACpE,mDAAmD;IACvB,MAAM,SAAO;IAEzC,sCAAsC;IAC7B,SAAS,CAAC,KAAK,SAAK;IAC7B,wDAAwD;IAC/C,SAAS,CAAC,OAAO,UAAS;IACnC,2EAA2E;IAClE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEhD,OAAO,CAAC,OAAO,CAA+B;IAE9C,SAAS,KAAK,KAAK,IAAI,YAAY,CAElC;IAEQ,iBAAiB,IAAI,IAAI;IAWzB,oBAAoB,IAAI,IAAI;IAMrC,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAG1B;IAEF,6GAA6G;IAC7G,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;cAKvB,YAAY,IAAI,IAAI;IAIvC,+EAA+E;IAC/E,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;IAED,yCAAyC;IACzC,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO;IACvC,4EAA4E;IAC5E,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,UAAU,EAAE;IAC9C,4CAA4C;IAC5C,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM;IACtC,0FAA0F;IAC1F,SAAS,CAAC,SAAS,IAAI,MAAM;IAG7B,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,cAAc;IAEjC,MAAM;IAef,gJAAgJ;IAChJ,OAAO,CAAC,QAAQ,CAAC,KAAK,CAcpB;IAEF,oFAAoF;IACpF,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,cAAc;IAO9E,6DAA6D;IAC7D,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc;CAGrF"}
|
|
@@ -0,0 +1,203 @@
|
|
|
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
|
+
// What every chart shares: its width, its words, a legend, the switch to a table of
|
|
8
|
+
// its values, and the tooltip of the item the reader points at or moves to.
|
|
9
|
+
import { LitElement, css, html, nothing } from 'lit';
|
|
10
|
+
import { property, state } from 'lit/decorators.js';
|
|
11
|
+
import { withDefaults } from '../core/strings.js';
|
|
12
|
+
import { legend, legendStyles } from '../primitives/legend.js';
|
|
13
|
+
import { base } from '../styles/index.js';
|
|
14
|
+
import { plainNumber } from './scale.js';
|
|
15
|
+
import { DEFAULT_CHART_STRINGS } from './types.js';
|
|
16
|
+
/** The size of the axis labels, in px. */
|
|
17
|
+
const AXIS_PX = 10.5;
|
|
18
|
+
/** The room beside a label, in px, so that labels side by side do not touch. */
|
|
19
|
+
const LABEL_ROOM = 6;
|
|
20
|
+
let measurer;
|
|
21
|
+
const measured = new Map();
|
|
22
|
+
/** `text`'s width in px in the CSS font `font`; where there is no canvas to measure it, an estimate. */
|
|
23
|
+
function measureText(text, font) {
|
|
24
|
+
measurer ??= typeof document === 'undefined' ? null : document.createElement('canvas').getContext('2d');
|
|
25
|
+
if (!measurer)
|
|
26
|
+
return text.length * AXIS_PX * 0.62;
|
|
27
|
+
const key = `${font}\n${text}`;
|
|
28
|
+
let w = measured.get(key);
|
|
29
|
+
if (w === undefined) {
|
|
30
|
+
measurer.font = font;
|
|
31
|
+
w = measurer.measureText(text).width;
|
|
32
|
+
measured.set(key, w);
|
|
33
|
+
}
|
|
34
|
+
return w;
|
|
35
|
+
}
|
|
36
|
+
export class ChartElement extends LitElement {
|
|
37
|
+
constructor() {
|
|
38
|
+
super(...arguments);
|
|
39
|
+
/** The chart's accessible name (its title, or what it shows). */
|
|
40
|
+
this.label = '';
|
|
41
|
+
/** A value in words: the host's format for the chart's unit. */
|
|
42
|
+
this.format = plainNumber;
|
|
43
|
+
this.strings = {};
|
|
44
|
+
/** The plot's height in px (the axis included). */
|
|
45
|
+
this.height = 200;
|
|
46
|
+
/** The width the chart has, in px. */
|
|
47
|
+
this.width = 0;
|
|
48
|
+
/** The values shown as a table instead of the chart. */
|
|
49
|
+
this.asTable = false;
|
|
50
|
+
/** The item the reader points at or moved to with the keys; null: none. */
|
|
51
|
+
this.active = null;
|
|
52
|
+
this.resized = null;
|
|
53
|
+
/** A font that loads late changes the labels' widths: they are measured again. */
|
|
54
|
+
this.fontsLoaded = () => {
|
|
55
|
+
measured.clear();
|
|
56
|
+
this.requestUpdate();
|
|
57
|
+
};
|
|
58
|
+
/** The arrow keys move between the items (up and down by a row of a grid), Home and End to the first and the last; Escape hides the tooltip. */
|
|
59
|
+
this.onKey = (e) => {
|
|
60
|
+
const n = this.itemCount();
|
|
61
|
+
if (!n)
|
|
62
|
+
return;
|
|
63
|
+
const at = this.active;
|
|
64
|
+
let next = at;
|
|
65
|
+
const row = this.rowLength();
|
|
66
|
+
const by = e.key === 'ArrowRight' ? 1 : e.key === 'ArrowLeft' ? -1 : e.key === 'ArrowDown' ? row : e.key === 'ArrowUp' ? -row : 0;
|
|
67
|
+
if (by)
|
|
68
|
+
next = at === null ? (by > 0 ? 0 : n - 1) : Math.min(n - 1, Math.max(0, at + by));
|
|
69
|
+
else if (e.key === 'Home')
|
|
70
|
+
next = 0;
|
|
71
|
+
else if (e.key === 'End')
|
|
72
|
+
next = n - 1;
|
|
73
|
+
else if (e.key === 'Escape')
|
|
74
|
+
next = null;
|
|
75
|
+
else
|
|
76
|
+
return;
|
|
77
|
+
e.preventDefault();
|
|
78
|
+
this.active = next;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
static { this.styles = [
|
|
82
|
+
base,
|
|
83
|
+
legendStyles,
|
|
84
|
+
css `
|
|
85
|
+
:host { display: block; min-width: 0; }
|
|
86
|
+
.head { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 8px; min-height: 22px; }
|
|
87
|
+
.head .legend { flex: 1; min-width: 0; }
|
|
88
|
+
.head .legend span { color: var(--text-2); }
|
|
89
|
+
.switch { margin-left: auto; flex: none; background: none; border: 1px solid var(--line); border-radius: 999px; padding: 2px 10px;
|
|
90
|
+
font: inherit; font-size: var(--font-size-sm); color: var(--text-muted); cursor: pointer; }
|
|
91
|
+
.switch:hover, .switch:focus-visible { color: var(--text); border-color: var(--line2); }
|
|
92
|
+
.plot { position: relative; outline-offset: 2px; }
|
|
93
|
+
.plot:focus-visible { outline: 2px solid var(--accent); border-radius: var(--radius-sm); }
|
|
94
|
+
svg { display: block; overflow: visible; }
|
|
95
|
+
.axis { font-size: ${AXIS_PX}px; fill: var(--text-muted); font-variant-numeric: tabular-nums; }
|
|
96
|
+
.grid { stroke: var(--line); stroke-width: 1; shape-rendering: crispEdges; }
|
|
97
|
+
.base { stroke: var(--line2); stroke-width: 1; shape-rendering: crispEdges; }
|
|
98
|
+
.hit { fill: transparent; }
|
|
99
|
+
.band { fill: var(--text); opacity: 0.05; }
|
|
100
|
+
.tip { position: absolute; z-index: 2; pointer-events: none; padding: 6px 9px; border-radius: var(--radius-sm); background: var(--raise);
|
|
101
|
+
border: 1px solid var(--line2); box-shadow: 0 4px 14px var(--shadow); color: var(--text); font-size: var(--font-size-sm);
|
|
102
|
+
white-space: nowrap; line-height: 1.45; }
|
|
103
|
+
.tip b { font-weight: 600; }
|
|
104
|
+
.tip .row { display: flex; align-items: center; gap: 6px; }
|
|
105
|
+
.tip .row i { width: 9px; height: 9px; border-radius: 2px; flex: none; }
|
|
106
|
+
.tip .row .v { margin-left: auto; padding-left: 12px; font-variant-numeric: tabular-nums; }
|
|
107
|
+
.scale { display: inline-flex; gap: 1px; margin-right: 6px; vertical-align: -1px; }
|
|
108
|
+
.legend .scale i { width: 12px; height: 10px; margin: 0; border-radius: 2px; }
|
|
109
|
+
.empty { padding: 18px 0; color: var(--text-muted); font-size: var(--font-size-sm); }
|
|
110
|
+
table { border-collapse: collapse; font-size: var(--font-size-sm); font-variant-numeric: tabular-nums; }
|
|
111
|
+
.tbl { overflow-x: auto; max-width: 100%; }
|
|
112
|
+
th, td { padding: 4px 12px 4px 0; text-align: right; white-space: nowrap; border-bottom: 1px solid var(--line); }
|
|
113
|
+
th { color: var(--text-muted); font-weight: 500; }
|
|
114
|
+
th:first-child, td:first-child { text-align: left; }
|
|
115
|
+
td { color: var(--text-2); }
|
|
116
|
+
`,
|
|
117
|
+
]; }
|
|
118
|
+
get words() {
|
|
119
|
+
return withDefaults(DEFAULT_CHART_STRINGS, this.strings);
|
|
120
|
+
}
|
|
121
|
+
connectedCallback() {
|
|
122
|
+
super.connectedCallback();
|
|
123
|
+
if (typeof ResizeObserver === 'undefined')
|
|
124
|
+
return;
|
|
125
|
+
this.resized ??= new ResizeObserver((entries) => {
|
|
126
|
+
const w = Math.floor(entries[0]?.contentRect.width ?? 0);
|
|
127
|
+
if (w && Math.abs(w - this.width) >= 1)
|
|
128
|
+
this.width = w;
|
|
129
|
+
});
|
|
130
|
+
this.resized.observe(this);
|
|
131
|
+
document.fonts?.addEventListener('loadingdone', this.fontsLoaded);
|
|
132
|
+
}
|
|
133
|
+
disconnectedCallback() {
|
|
134
|
+
super.disconnectedCallback();
|
|
135
|
+
this.resized?.disconnect();
|
|
136
|
+
document.fonts?.removeEventListener('loadingdone', this.fontsLoaded);
|
|
137
|
+
}
|
|
138
|
+
/** An axis label's width in px, as the chart draws it, with room beside it: measured in the chart's font. */
|
|
139
|
+
labelWidth(text) {
|
|
140
|
+
const cs = getComputedStyle(this);
|
|
141
|
+
return Math.ceil(measureText(text, `${cs.fontStyle} ${cs.fontWeight} ${AXIS_PX}px ${cs.fontFamily}`)) + LABEL_ROOM;
|
|
142
|
+
}
|
|
143
|
+
firstUpdated() {
|
|
144
|
+
if (!this.width)
|
|
145
|
+
this.width = Math.floor(this.getBoundingClientRect().width) || 600;
|
|
146
|
+
}
|
|
147
|
+
/** The plot area's width: the element's, never less than a narrow screen's. */
|
|
148
|
+
get plotWidth() {
|
|
149
|
+
return Math.max(240, this.width || 600);
|
|
150
|
+
}
|
|
151
|
+
/** How many items the up and down keys move by: a row of a grid; 1 for a row of items. */
|
|
152
|
+
rowLength() {
|
|
153
|
+
return 1;
|
|
154
|
+
}
|
|
155
|
+
render() {
|
|
156
|
+
const s = this.words;
|
|
157
|
+
if (!this.hasValues())
|
|
158
|
+
return html `<div class="empty" part="empty">${s.empty}</div>`;
|
|
159
|
+
const items = this.legendItems();
|
|
160
|
+
return html `<div class="head">
|
|
161
|
+
${items.length ? legend(items, { label: this.label }) : html `<span class="legend"></span>`}
|
|
162
|
+
<button type="button" class="switch" part="switch" aria-pressed=${this.asTable}
|
|
163
|
+
@click=${() => ((this.asTable = !this.asTable), (this.active = null))}>${this.asTable ? s.showChart : s.showTable}</button>
|
|
164
|
+
</div>
|
|
165
|
+
${this.asTable
|
|
166
|
+
? html `<div class="tbl" part="table">${this.table()}</div>`
|
|
167
|
+
: html `<div class="plot" part="plot" tabindex=${this.itemCount() ? 0 : nothing} role="group" aria-label=${this.label || nothing}
|
|
168
|
+
@keydown=${this.onKey} @blur=${() => (this.active = null)} @mouseleave=${() => (this.active = null)}>${this.plot()}</div>`}`;
|
|
169
|
+
}
|
|
170
|
+
/** A tooltip at `left` px (its middle) and `top` px of the plot, kept inside it. */
|
|
171
|
+
tip(left, top, body) {
|
|
172
|
+
const w = this.plotWidth;
|
|
173
|
+
const side = left > w * 0.6 ? 'right' : 'left';
|
|
174
|
+
const x = side === 'left' ? Math.max(0, left + 12) : Math.max(0, w - left + 12);
|
|
175
|
+
return html `<div class="tip" role="status" style="${side}: ${x}px; top: ${Math.max(0, top)}px">${body}</div>`;
|
|
176
|
+
}
|
|
177
|
+
/** One line of a tooltip: a swatch, a name and its value. */
|
|
178
|
+
tipRow(colour, name, value) {
|
|
179
|
+
return html `<div class="row">${colour ? html `<i style="background: ${colour}"></i>` : nothing}<span>${name}</span><span class="v">${value}</span></div>`;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
__decorate([
|
|
183
|
+
property()
|
|
184
|
+
], ChartElement.prototype, "label", void 0);
|
|
185
|
+
__decorate([
|
|
186
|
+
property({ attribute: false })
|
|
187
|
+
], ChartElement.prototype, "format", void 0);
|
|
188
|
+
__decorate([
|
|
189
|
+
property({ attribute: false })
|
|
190
|
+
], ChartElement.prototype, "strings", void 0);
|
|
191
|
+
__decorate([
|
|
192
|
+
property({ type: Number })
|
|
193
|
+
], ChartElement.prototype, "height", void 0);
|
|
194
|
+
__decorate([
|
|
195
|
+
state()
|
|
196
|
+
], ChartElement.prototype, "width", void 0);
|
|
197
|
+
__decorate([
|
|
198
|
+
state()
|
|
199
|
+
], ChartElement.prototype, "asTable", void 0);
|
|
200
|
+
__decorate([
|
|
201
|
+
state()
|
|
202
|
+
], ChartElement.prototype, "active", void 0);
|
|
203
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/charts/base.ts"],"names":[],"mappings":";;;;;;AAAA,oFAAoF;AACpF,4EAA4E;AAC5E,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAmB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAqC,MAAM,YAAY,CAAC;AAEtF,0CAA0C;AAC1C,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,gFAAgF;AAChF,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,IAAI,QAAqD,CAAC;AAC1D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE3C,wGAAwG;AACxG,SAAS,WAAW,CAAC,IAAY,EAAE,IAAY;IAC7C,QAAQ,KAAK,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxG,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACnD,MAAM,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QACrC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,OAAgB,YAAa,SAAQ,UAAU;IAArD;;QAuCE,iEAAiE;QACrD,UAAK,GAAG,EAAE,CAAC;QACvB,gEAAgE;QAChC,WAAM,GAAc,WAAW,CAAC;QAChC,YAAO,GAA0B,EAAE,CAAC;QACpE,mDAAmD;QACvB,WAAM,GAAG,GAAG,CAAC;QAEzC,sCAAsC;QACnB,UAAK,GAAG,CAAC,CAAC;QAC7B,wDAAwD;QACrC,YAAO,GAAG,KAAK,CAAC;QACnC,2EAA2E;QACxD,WAAM,GAAkB,IAAI,CAAC;QAExC,YAAO,GAA0B,IAAI,CAAC;QAuB9C,kFAAkF;QACjE,gBAAW,GAAG,GAAS,EAAE;YACxC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC;QA6CF,gJAAgJ;QAC/H,UAAK,GAAG,CAAC,CAAgB,EAAQ,EAAE;YAClD,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC;gBAAE,OAAO;YACf,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;YACvB,IAAI,IAAI,GAAkB,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClI,IAAI,EAAE;gBAAE,IAAI,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;iBACrF,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM;gBAAE,IAAI,GAAG,CAAC,CAAC;iBAC/B,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK;gBAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;iBAClC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,IAAI,GAAG,IAAI,CAAC;;gBACpC,OAAO;YACZ,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC;IAcJ,CAAC;aA1JiB,WAAM,GAAG;QACvB,IAAI;QACJ,YAAY;QACZ,GAAG,CAAA;;;;;;;;;;;2BAWoB,OAAO;;;;;;;;;;;;;;;;;;;;;KAqB7B;KACF,AApCqB,CAoCpB;IAmBF,IAAc,KAAK;QACjB,OAAO,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,OAAO,cAAc,KAAK,WAAW;YAAE,OAAO;QAClD,IAAI,CAAC,OAAO,KAAK,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpE,CAAC;IAEQ,oBAAoB;QAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;QAC3B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACvE,CAAC;IAQD,6GAA6G;IACnG,UAAU,CAAC,IAAY;QAC/B,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,UAAU,IAAI,OAAO,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;IACrH,CAAC;IAEkB,YAAY;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;IACtF,CAAC;IAED,+EAA+E;IAC/E,IAAc,SAAS;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;IAC1C,CAAC;IAQD,0FAA0F;IAChF,SAAS;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IAIQ,MAAM;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO,IAAI,CAAA,mCAAmC,CAAC,CAAC,KAAK,QAAQ,CAAC;QACrF,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,IAAI,CAAA;UACL,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA,8BAA8B;0EACxB,IAAI,CAAC,OAAO;mBACnE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;;QAEnH,IAAI,CAAC,OAAO;YACZ,CAAC,CAAC,IAAI,CAAA,iCAAiC,IAAI,CAAC,KAAK,EAAE,QAAQ;YAC3D,CAAC,CAAC,IAAI,CAAA,0CAA0C,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,4BAA4B,IAAI,CAAC,KAAK,IAAI,OAAO;uBAChH,IAAI,CAAC,KAAK,UAAU,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;IACvI,CAAC;IAmBD,oFAAoF;IAC1E,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,IAAoB;QAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/C,MAAM,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;QAChF,OAAO,IAAI,CAAA,yCAAyC,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC;IAChH,CAAC;IAED,6DAA6D;IACnD,MAAM,CAAC,MAAqB,EAAE,IAAY,EAAE,KAAa;QACjE,OAAO,IAAI,CAAA,oBAAoB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA,yBAAyB,MAAM,QAAQ,CAAC,CAAC,CAAC,OAAO,SAAS,IAAI,0BAA0B,KAAK,eAAe,CAAC;IAC3J,CAAC;;AAlHW;IAAX,QAAQ,EAAE;2CAAY;AAES;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;4CAAiC;AAChC;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;6CAAqC;AAExC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CAAc;AAGtB;IAAlB,KAAK,EAAE;2CAAqB;AAEV;IAAlB,KAAK,EAAE;6CAA2B;AAEhB;IAAlB,KAAK,EAAE;4CAAwC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type TemplateResult } from 'lit';
|
|
2
|
+
import type { LegendItem } from '../primitives/legend.js';
|
|
3
|
+
import { ChartElement } from './base.js';
|
|
4
|
+
import type { ChartSeries } from './types.js';
|
|
5
|
+
/** A bar from the axis up, its top corners rounded when `round`. */
|
|
6
|
+
export declare function barPath(x: number, y: number, w: number, h: number, round: boolean): string;
|
|
7
|
+
/**
|
|
8
|
+
* Vertical bars, one group per label of `x`: a bar per series side by side, or with
|
|
9
|
+
* `stacked`, the series of a label on one bar. Six series take the series colours in
|
|
10
|
+
* their order; past six, the sixth and later are one bar part, "other". A legend
|
|
11
|
+
* names the series when there are two or more. Pointing at a label, or moving to it
|
|
12
|
+
* with the arrow keys, shows its values; the switch shows them all as a table.
|
|
13
|
+
*
|
|
14
|
+
* @tagname cae-column-chart
|
|
15
|
+
* @csspart plot - the chart
|
|
16
|
+
* @csspart table - the table of its values
|
|
17
|
+
* @csspart switch - the button between the two
|
|
18
|
+
* @csspart empty - what it shows with no values
|
|
19
|
+
* @csspart legend - the legend
|
|
20
|
+
*/
|
|
21
|
+
export declare class CaeColumnChart extends ChartElement {
|
|
22
|
+
/** A label per group of bars, in order. */
|
|
23
|
+
x: readonly string[];
|
|
24
|
+
series: readonly ChartSeries[];
|
|
25
|
+
/** The series of a label on one bar, instead of side by side. */
|
|
26
|
+
stacked: boolean;
|
|
27
|
+
private get drawn();
|
|
28
|
+
protected hasValues(): boolean;
|
|
29
|
+
protected legendItems(): LegendItem[];
|
|
30
|
+
protected itemCount(): number;
|
|
31
|
+
/** The total of label `j` (the stacked bar's height). */
|
|
32
|
+
private total;
|
|
33
|
+
protected plot(): TemplateResult;
|
|
34
|
+
private tipBody;
|
|
35
|
+
protected table(): TemplateResult;
|
|
36
|
+
}
|
|
37
|
+
declare global {
|
|
38
|
+
interface HTMLElementTagNameMap {
|
|
39
|
+
'cae-column-chart': CaeColumnChart;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=column-chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-chart.d.ts","sourceRoot":"","sources":["../../src/charts/column-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAS9C,oEAAoE;AACpE,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAI1F;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,2CAA2C;IACX,CAAC,EAAE,SAAS,MAAM,EAAE,CAAM;IAC1B,MAAM,EAAE,SAAS,WAAW,EAAE,CAAM;IACpE,iEAAiE;IACpC,OAAO,UAAS;IAE7C,OAAO,KAAK,KAAK,GAEhB;IAED,SAAS,CAAC,SAAS,IAAI,OAAO;IAI9B,SAAS,CAAC,WAAW,IAAI,UAAU,EAAE;IAKrC,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,yDAAyD;IACzD,OAAO,CAAC,KAAK;IAIb,SAAS,CAAC,IAAI,IAAI,cAAc;IA6DhC,OAAO,CAAC,OAAO;IAQf,SAAS,CAAC,KAAK,IAAI,cAAc;CAalC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html, nothing, svg } from 'lit';
|
|
8
|
+
import { property } from 'lit/decorators.js';
|
|
9
|
+
import { ChartElement } from './base.js';
|
|
10
|
+
import { foldSeries, LABEL_GAP, labelStride, niceAxis } from './scale.js';
|
|
11
|
+
/** The plot's margins: the value axis on the left, the labels under it. */
|
|
12
|
+
const M = { top: 8, right: 4, bottom: 22 };
|
|
13
|
+
/** A bar's top: rounded, the end anchored to the axis square. */
|
|
14
|
+
const RADIUS = 4;
|
|
15
|
+
/** The gap between the stacked parts of a bar, and between the bars of a group. */
|
|
16
|
+
const GAP = 2;
|
|
17
|
+
/** A bar from the axis up, its top corners rounded when `round`. */
|
|
18
|
+
export function barPath(x, y, w, h, round) {
|
|
19
|
+
if (h <= 0 || w <= 0)
|
|
20
|
+
return '';
|
|
21
|
+
const r = round ? Math.min(RADIUS, w / 2, h) : 0;
|
|
22
|
+
return `M${x},${y + h}V${y + r}${r ? `Q${x},${y} ${x + r},${y}` : ''}H${x + w - r}${r ? `Q${x + w},${y} ${x + w},${y + r}` : ''}V${y + h}Z`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Vertical bars, one group per label of `x`: a bar per series side by side, or with
|
|
26
|
+
* `stacked`, the series of a label on one bar. Six series take the series colours in
|
|
27
|
+
* their order; past six, the sixth and later are one bar part, "other". A legend
|
|
28
|
+
* names the series when there are two or more. Pointing at a label, or moving to it
|
|
29
|
+
* with the arrow keys, shows its values; the switch shows them all as a table.
|
|
30
|
+
*
|
|
31
|
+
* @tagname cae-column-chart
|
|
32
|
+
* @csspart plot - the chart
|
|
33
|
+
* @csspart table - the table of its values
|
|
34
|
+
* @csspart switch - the button between the two
|
|
35
|
+
* @csspart empty - what it shows with no values
|
|
36
|
+
* @csspart legend - the legend
|
|
37
|
+
*/
|
|
38
|
+
export class CaeColumnChart extends ChartElement {
|
|
39
|
+
constructor() {
|
|
40
|
+
super(...arguments);
|
|
41
|
+
/** A label per group of bars, in order. */
|
|
42
|
+
this.x = [];
|
|
43
|
+
this.series = [];
|
|
44
|
+
/** The series of a label on one bar, instead of side by side. */
|
|
45
|
+
this.stacked = false;
|
|
46
|
+
}
|
|
47
|
+
get drawn() {
|
|
48
|
+
return foldSeries(this.series, this.words.other);
|
|
49
|
+
}
|
|
50
|
+
hasValues() {
|
|
51
|
+
return this.x.length > 0 && this.series.some((s) => s.values.some((v) => v !== null && v !== undefined));
|
|
52
|
+
}
|
|
53
|
+
legendItems() {
|
|
54
|
+
const d = this.drawn;
|
|
55
|
+
return d.length > 1 ? d.map((s) => ({ label: s.name, swatch: s.colour })) : [];
|
|
56
|
+
}
|
|
57
|
+
itemCount() {
|
|
58
|
+
return this.x.length;
|
|
59
|
+
}
|
|
60
|
+
/** The total of label `j` (the stacked bar's height). */
|
|
61
|
+
total(j) {
|
|
62
|
+
return this.drawn.reduce((a, s) => a + Math.max(0, s.values[j] ?? 0), 0);
|
|
63
|
+
}
|
|
64
|
+
plot() {
|
|
65
|
+
const d = this.drawn;
|
|
66
|
+
const n = this.x.length;
|
|
67
|
+
const values = d.flatMap((s) => s.values.filter((v) => v !== null && v !== undefined));
|
|
68
|
+
const high = this.stacked ? Math.max(0, ...this.x.map((_, j) => this.total(j))) : Math.max(0, ...values);
|
|
69
|
+
const axis = niceAxis(Math.min(0, ...values), high);
|
|
70
|
+
const left = Math.max(...axis.ticks.map((t) => this.labelWidth(this.format(t)))) + 4;
|
|
71
|
+
const w = this.plotWidth;
|
|
72
|
+
const h = this.height;
|
|
73
|
+
const pw = w - left - M.right;
|
|
74
|
+
const ph = h - M.top - M.bottom;
|
|
75
|
+
const y = (v) => M.top + ph - ((v - axis.min) / (axis.max - axis.min)) * ph;
|
|
76
|
+
const band = pw / n;
|
|
77
|
+
const barW = Math.max(2, Math.min(40, band * (this.stacked || d.length === 1 ? 0.62 : 0.8)));
|
|
78
|
+
const stride = labelStride(n, pw, Math.max(...this.x.map((s) => this.labelWidth(s))) + LABEL_GAP);
|
|
79
|
+
const bars = [];
|
|
80
|
+
for (let j = 0; j < n; j++) {
|
|
81
|
+
const x0 = left + j * band + (band - barW) / 2;
|
|
82
|
+
if (this.stacked) {
|
|
83
|
+
let at = 0;
|
|
84
|
+
const parts = d.map((s) => ({ s, v: Math.max(0, s.values[j] ?? 0) })).filter((p) => p.v > 0);
|
|
85
|
+
parts.forEach((p, k) => {
|
|
86
|
+
const top = y(at + p.v);
|
|
87
|
+
const bottom = y(at);
|
|
88
|
+
// Each part is 2px shorter than its share, so the surface shows between the parts.
|
|
89
|
+
const hgt = bottom - top - (k > 0 ? GAP : 0);
|
|
90
|
+
bars.push(svg `<path d=${barPath(x0, top, barW, Math.max(0, hgt), k === parts.length - 1)} fill=${p.s.colour}></path>`);
|
|
91
|
+
at += p.v;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const each = (barW - GAP * (d.length - 1)) / d.length;
|
|
96
|
+
d.forEach((s, k) => {
|
|
97
|
+
const v = s.values[j];
|
|
98
|
+
if (v === null || v === undefined || v === 0)
|
|
99
|
+
return;
|
|
100
|
+
const top = y(Math.max(0, v));
|
|
101
|
+
const bottom = y(Math.min(0, v));
|
|
102
|
+
bars.push(svg `<path d=${barPath(x0 + k * (each + GAP), top, Math.max(1, each), bottom - top, v > 0)} fill=${s.colour}></path>`);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const a = this.active;
|
|
107
|
+
return html `<svg width=${w} height=${h} role="img" aria-label=${this.label || nothing}>
|
|
108
|
+
${axis.ticks.map((t) => svg `<line class=${t === 0 ? 'base' : 'grid'} x1=${left} x2=${w - M.right} y1=${y(t)} y2=${y(t)}></line>
|
|
109
|
+
<text class="axis" x=${left - 6} y=${y(t)} dy="0.32em" text-anchor="end">${this.format(t)}</text>`)}
|
|
110
|
+
${a !== null ? svg `<rect class="band" x=${left + a * band} y=${M.top} width=${band} height=${ph}></rect>` : nothing}
|
|
111
|
+
${bars}
|
|
112
|
+
${this.x.map((label, j) => j % stride === 0
|
|
113
|
+
? svg `<text class="axis" x=${left + j * band + band / 2} y=${h - 6} text-anchor="middle">${label}</text>`
|
|
114
|
+
: nothing)}
|
|
115
|
+
${this.x.map((_, j) => svg `<rect class="hit" x=${left + j * band} y=${M.top} width=${band} height=${ph + M.bottom}
|
|
116
|
+
@mouseenter=${() => (this.active = j)}></rect>`)}
|
|
117
|
+
</svg>
|
|
118
|
+
${a !== null && a < n ? this.tip(left + a * band + band / 2, M.top, this.tipBody(a)) : nothing}`;
|
|
119
|
+
}
|
|
120
|
+
tipBody(j) {
|
|
121
|
+
const d = this.drawn;
|
|
122
|
+
const none = this.words.none;
|
|
123
|
+
return html `<b>${this.x[j]}</b>
|
|
124
|
+
${[...d].reverse().map((s) => this.tipRow(s.colour, s.name, s.values[j] === null || s.values[j] === undefined ? none : this.format(s.values[j])))}
|
|
125
|
+
${this.stacked && d.length > 1 ? this.tipRow(null, this.words.total, this.format(this.total(j))) : nothing}`;
|
|
126
|
+
}
|
|
127
|
+
table() {
|
|
128
|
+
const d = this.drawn;
|
|
129
|
+
const none = this.words.none;
|
|
130
|
+
const sum = this.stacked && d.length > 1;
|
|
131
|
+
return html `<table aria-label=${this.label || nothing}>
|
|
132
|
+
<thead><tr><th scope="col">${this.words.label}</th>${d.map((s) => html `<th scope="col">${s.name}</th>`)}${sum ? html `<th scope="col">${this.words.total}</th>` : nothing}</tr></thead>
|
|
133
|
+
<tbody>${this.x.map((label, j) => html `<tr><th scope="row">${label}</th>${d.map((s) => html `<td>${s.values[j] === null || s.values[j] === undefined ? none : this.format(s.values[j])}</td>`)}${sum ? html `<td>${this.format(this.total(j))}</td>` : nothing}</tr>`)}</tbody>
|
|
134
|
+
</table>`;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
__decorate([
|
|
138
|
+
property({ attribute: false })
|
|
139
|
+
], CaeColumnChart.prototype, "x", void 0);
|
|
140
|
+
__decorate([
|
|
141
|
+
property({ attribute: false })
|
|
142
|
+
], CaeColumnChart.prototype, "series", void 0);
|
|
143
|
+
__decorate([
|
|
144
|
+
property({ type: Boolean })
|
|
145
|
+
], CaeColumnChart.prototype, "stacked", void 0);
|
|
146
|
+
//# sourceMappingURL=column-chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-chart.js","sourceRoot":"","sources":["../../src/charts/column-chart.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type TemplateResult } from 'lit';
|
|
2
|
+
import type { LegendItem } from '../primitives/legend.js';
|
|
3
|
+
import { ChartElement } from './base.js';
|
|
4
|
+
/** One hue, light to dark: a value's share of the colour, by its step of five. */
|
|
5
|
+
export declare const HEAT_STEPS: readonly [16, 34, 52, 72, 92];
|
|
6
|
+
/** A colour of the scale: `pct` percent of its hue over the card. */
|
|
7
|
+
export declare const heatColour: (pct: number) => string;
|
|
8
|
+
/** The step (0..4) of `v` between `low` and `high`. */
|
|
9
|
+
export declare function heatStep(v: number, low: number, high: number): number;
|
|
10
|
+
/**
|
|
11
|
+
* A value per row (`y`) and column (`x`), each a cell coloured on one scale, light to
|
|
12
|
+
* dark (`values[row][column]`; a null cell is left empty, a 0 is the lightest step).
|
|
13
|
+
* The legend gives the scale's lowest and highest value. Pointing at a cell, or moving
|
|
14
|
+
* to it with the arrow keys (up and down by a row), shows its row, column and value;
|
|
15
|
+
* the switch shows them all as a table.
|
|
16
|
+
*
|
|
17
|
+
* @tagname cae-heatmap
|
|
18
|
+
* @csspart plot - the chart
|
|
19
|
+
* @csspart table - the table of its values
|
|
20
|
+
* @csspart switch - the button between the two
|
|
21
|
+
* @csspart empty - what it shows with no values
|
|
22
|
+
* @csspart legend - the legend
|
|
23
|
+
*/
|
|
24
|
+
export declare class CaeHeatmap extends ChartElement {
|
|
25
|
+
x: readonly string[];
|
|
26
|
+
y: readonly string[];
|
|
27
|
+
values: readonly (readonly (number | null)[])[];
|
|
28
|
+
private get range();
|
|
29
|
+
protected hasValues(): boolean;
|
|
30
|
+
protected legendItems(): LegendItem[];
|
|
31
|
+
protected itemCount(): number;
|
|
32
|
+
protected rowLength(): number;
|
|
33
|
+
protected plot(): TemplateResult;
|
|
34
|
+
private tipBody;
|
|
35
|
+
protected table(): TemplateResult;
|
|
36
|
+
}
|
|
37
|
+
declare global {
|
|
38
|
+
interface HTMLElementTagNameMap {
|
|
39
|
+
'cae-heatmap': CaeHeatmap;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=heatmap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heatmap.d.ts","sourceRoot":"","sources":["../../src/charts/heatmap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,kFAAkF;AAClF,eAAO,MAAM,UAAU,+BAAgC,CAAC;AAOxD,qEAAqE;AACrE,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,MAA2D,CAAC;AAErG,uDAAuD;AACvD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrE;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,UAAW,SAAQ,YAAY;IACV,CAAC,EAAE,SAAS,MAAM,EAAE,CAAM;IAC1B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAM;IAC1B,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAM;IAErF,OAAO,KAAK,KAAK,GAGhB;IAED,SAAS,CAAC,SAAS,IAAI,OAAO;IAI9B,SAAS,CAAC,WAAW,IAAI,UAAU,EAAE;IAMrC,SAAS,CAAC,SAAS,IAAI,MAAM;cAIV,SAAS,IAAI,MAAM;IAItC,SAAS,CAAC,IAAI,IAAI,cAAc;IAsChC,OAAO,CAAC,OAAO;IAMf,SAAS,CAAC,KAAK,IAAI,cAAc;CAYlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
|