@contraagent/elements 0.0.0-stage → 0.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 +83 -2
- package/custom-elements.json +5022 -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/code/code.d.ts +83 -0
- package/dist/code/code.d.ts.map +1 -0
- package/dist/code/code.js +206 -0
- package/dist/code/code.js.map +1 -0
- package/dist/code/highlight.d.ts +25 -0
- package/dist/code/highlight.d.ts.map +1 -0
- package/dist/code/highlight.js +312 -0
- package/dist/code/highlight.js.map +1 -0
- package/dist/code/index.d.ts +3 -0
- package/dist/code/index.d.ts.map +1 -0
- package/dist/code/index.js +5 -0
- package/dist/code/index.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 +15 -0
- package/dist/define/all.d.ts.map +1 -0
- package/dist/define/all.js +16 -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/code.d.ts +4 -0
- package/dist/define/code.d.ts.map +1 -0
- package/dist/define/code.js +7 -0
- package/dist/define/code.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/define/tree.d.ts +4 -0
- package/dist/define/tree.d.ts.map +1 -0
- package/dist/define/tree.js +7 -0
- package/dist/define/tree.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 +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -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 +2 -0
- package/dist/markdown/highlight.d.ts.map +1 -0
- package/dist/markdown/highlight.js +3 -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 +64 -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/dist/tree/index.d.ts +2 -0
- package/dist/tree/index.d.ts.map +1 -0
- package/dist/tree/index.js +4 -0
- package/dist/tree/index.js.map +1 -0
- package/dist/tree/tree.d.ts +83 -0
- package/dist/tree/tree.d.ts.map +1 -0
- package/dist/tree/tree.js +251 -0
- package/dist/tree/tree.js.map +1 -0
- package/docs/charts.md +58 -0
- package/docs/check-table.md +40 -0
- package/docs/code.md +55 -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/code.ts +28 -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/examples/tree.ts +44 -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/tree.md +44 -0
- package/docs/tsconfig.json +20 -0
- package/package.json +177 -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/code/code.ts +199 -0
- package/src/code/highlight.ts +378 -0
- package/src/code/index.ts +4 -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 +15 -0
- package/src/define/charts.ts +17 -0
- package/src/define/check-table.ts +9 -0
- package/src/define/code.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/define/tree.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 +27 -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 +2 -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 +64 -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
- package/src/tree/index.ts +3 -0
- package/src/tree/tree.ts +263 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { LitElement, type PropertyValues, type TemplateResult } from 'lit';
|
|
2
|
+
import type { Tone } from '../core/tone.js';
|
|
3
|
+
/** One item of a tree: its name, the items under it, and how it looks. */
|
|
4
|
+
export interface TreeItem {
|
|
5
|
+
/** Its id, unique in the tree. */
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
/** Its icon: a directory for an item with children, a file for one without, unless given. */
|
|
9
|
+
icon?: 'file' | 'directory' | null;
|
|
10
|
+
/** A word beside the name, coloured by `tone` (with its mark: ✓ done, ✕ failed, ◌ attention). */
|
|
11
|
+
badge?: string | null;
|
|
12
|
+
tone?: Tone | null;
|
|
13
|
+
/** Its children are shown at first (default: true). */
|
|
14
|
+
open?: boolean | null;
|
|
15
|
+
children?: readonly TreeItem[] | null;
|
|
16
|
+
/** A click or Enter selects it (`cae-select`); default: an item with no children. An item with children that is not selectable opens and closes instead. */
|
|
17
|
+
selectable?: boolean | null;
|
|
18
|
+
}
|
|
19
|
+
export interface TreeStrings {
|
|
20
|
+
/** What a tree with no items shows. */
|
|
21
|
+
empty: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const DEFAULT_TREE_STRINGS: Readonly<TreeStrings>;
|
|
24
|
+
/** An item where the tree shows it: its depth (1 at the top), its parent, and its place among its siblings. */
|
|
25
|
+
export interface TreeRow {
|
|
26
|
+
item: TreeItem;
|
|
27
|
+
level: number;
|
|
28
|
+
parent: string | null;
|
|
29
|
+
index: number;
|
|
30
|
+
siblings: number;
|
|
31
|
+
}
|
|
32
|
+
/** The items shown, top to bottom: every item whose ancestors are all open (`isOpen`). */
|
|
33
|
+
export declare function visibleRows(items: readonly TreeItem[], isOpen: (t: TreeItem) => boolean): TreeRow[];
|
|
34
|
+
/** The ids of the ancestors of item `id`, outermost first; null when no item has that id. */
|
|
35
|
+
export declare function ancestorsOf(items: readonly TreeItem[], id: string): string[] | null;
|
|
36
|
+
/** The first item, depth first, that `match` accepts. */
|
|
37
|
+
export declare function findItem(items: readonly TreeItem[], match: (t: TreeItem) => boolean): TreeItem | null;
|
|
38
|
+
/**
|
|
39
|
+
* Items in a tree, the children of each under it, folded and opened by the reader: files
|
|
40
|
+
* and directories, say. It is one tab stop: Up and Down move between the items shown,
|
|
41
|
+
* Right opens an item (then moves to its first child), Left closes it (or moves to its
|
|
42
|
+
* parent), Home and End go to the first and the last, a letter to the next item of
|
|
43
|
+
* that initial; Enter, Space or a click selects a selectable item (`cae-select`) and
|
|
44
|
+
* opens or closes any other. The toggle before an item with children opens and closes
|
|
45
|
+
* it (`cae-toggle`). The ancestors of `selected` are always open.
|
|
46
|
+
*
|
|
47
|
+
* @tagname cae-tree
|
|
48
|
+
* @fires cae-select - `{id}`: an item was chosen with a click, Enter or Space
|
|
49
|
+
* @fires cae-toggle - `{id, open}`: the reader opened or closed an item
|
|
50
|
+
* @csspart tree - the list of items
|
|
51
|
+
* @csspart item - an item's row
|
|
52
|
+
* @csspart empty - what it shows with no items
|
|
53
|
+
*/
|
|
54
|
+
export declare class CaeTree extends LitElement {
|
|
55
|
+
static styles: (import("lit").CSSResult | import("lit").CSSResult[])[];
|
|
56
|
+
items: readonly TreeItem[];
|
|
57
|
+
/** The selected item's id, or null. */
|
|
58
|
+
selected: string | null;
|
|
59
|
+
/** What the tree is named to a screen reader. */
|
|
60
|
+
label: string;
|
|
61
|
+
/** The visible words; English by default. */
|
|
62
|
+
strings: Partial<TreeStrings>;
|
|
63
|
+
/** The reader's choice of open and closed items, by id, over each item's `open`. */
|
|
64
|
+
private opened;
|
|
65
|
+
/** The item that holds the tab stop. */
|
|
66
|
+
private focusId;
|
|
67
|
+
private readonly isOpen;
|
|
68
|
+
willUpdate(changed: PropertyValues<this>): void;
|
|
69
|
+
updated(changed: PropertyValues<this>): void;
|
|
70
|
+
private rowOf;
|
|
71
|
+
private setOpen;
|
|
72
|
+
private choose;
|
|
73
|
+
private moveTo;
|
|
74
|
+
private onKey;
|
|
75
|
+
render(): TemplateResult<1>;
|
|
76
|
+
private row;
|
|
77
|
+
}
|
|
78
|
+
declare global {
|
|
79
|
+
interface HTMLElementTagNameMap {
|
|
80
|
+
'cae-tree': CaeTree;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/tree/tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA2B,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAIpG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAI5C,0EAA0E;AAC1E,MAAM,WAAW,QAAQ;IACvB,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IACnC,iGAAiG;IACjG,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,uDAAuD;IACvD,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI,CAAC;IACtC,4JAA4J;IAC5J,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAAyB,CAAC;AAEjF,+GAA+G;AAC/G,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO,EAAE,CASnG;AAED,6FAA6F;AAC7F,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAOnF;AAED,yDAAyD;AACzD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,OAAO,GAAG,QAAQ,GAAG,IAAI,CAOrG;AAKD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,OAAQ,SAAQ,UAAU;IACrC,OAAgB,MAAM,0DAsBpB;IAE8B,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAM;IAChE,uCAAuC;IACP,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/D,iDAAiD;IACrC,KAAK,SAAM;IACvB,6CAA6C;IACb,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAM;IAEnE,oFAAoF;IAC3E,OAAO,CAAC,MAAM,CAA8B;IACrD,wCAAwC;IAC/B,OAAO,CAAC,OAAO,CAAuB;IAE/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqE;IAEnF,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAW/C,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAMrD,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,MAAM;YAMA,MAAM;IAMpB,OAAO,CAAC,KAAK;IAyCJ,MAAM;IASf,OAAO,CAAC,GAAG;CAgCZ;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
|
|
@@ -0,0 +1,251 @@
|
|
|
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 { LitElement, css, html, nothing, svg } from 'lit';
|
|
8
|
+
import { property, state } from 'lit/decorators.js';
|
|
9
|
+
import { emit } from '../core/events.js';
|
|
10
|
+
import { withDefaults } from '../core/strings.js';
|
|
11
|
+
import { statusChip } from '../primitives/pill.js';
|
|
12
|
+
import { base } from '../styles/index.js';
|
|
13
|
+
export const DEFAULT_TREE_STRINGS = { empty: 'No items' };
|
|
14
|
+
const hasChildren = (t) => !!t.children?.length;
|
|
15
|
+
const selectable = (t) => t.selectable ?? !hasChildren(t);
|
|
16
|
+
/** The items shown, top to bottom: every item whose ancestors are all open (`isOpen`). */
|
|
17
|
+
export function visibleRows(items, isOpen) {
|
|
18
|
+
const out = [];
|
|
19
|
+
const walk = (list, level, parent) => list.forEach((item, index) => {
|
|
20
|
+
out.push({ item, level, parent, index, siblings: list.length });
|
|
21
|
+
if (hasChildren(item) && isOpen(item))
|
|
22
|
+
walk(item.children, level + 1, item.id);
|
|
23
|
+
});
|
|
24
|
+
walk(items, 1, null);
|
|
25
|
+
return out;
|
|
26
|
+
}
|
|
27
|
+
/** The ids of the ancestors of item `id`, outermost first; null when no item has that id. */
|
|
28
|
+
export function ancestorsOf(items, id) {
|
|
29
|
+
for (const t of items) {
|
|
30
|
+
if (t.id === id)
|
|
31
|
+
return [];
|
|
32
|
+
const below = t.children ? ancestorsOf(t.children, id) : null;
|
|
33
|
+
if (below)
|
|
34
|
+
return [t.id, ...below];
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
/** The first item, depth first, that `match` accepts. */
|
|
39
|
+
export function findItem(items, match) {
|
|
40
|
+
for (const t of items) {
|
|
41
|
+
if (match(t))
|
|
42
|
+
return t;
|
|
43
|
+
const below = t.children ? findItem(t.children, match) : null;
|
|
44
|
+
if (below)
|
|
45
|
+
return below;
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const FOLDER = svg `<path d="M1.5 3.5h4l1.5 1.5h7.5v8h-13z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"></path>`;
|
|
50
|
+
const FILE = svg `<path d="M3.5 1.5h6l3 3v10h-9z M9.5 1.5v3h3" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"></path>`;
|
|
51
|
+
/**
|
|
52
|
+
* Items in a tree, the children of each under it, folded and opened by the reader: files
|
|
53
|
+
* and directories, say. It is one tab stop: Up and Down move between the items shown,
|
|
54
|
+
* Right opens an item (then moves to its first child), Left closes it (or moves to its
|
|
55
|
+
* parent), Home and End go to the first and the last, a letter to the next item of
|
|
56
|
+
* that initial; Enter, Space or a click selects a selectable item (`cae-select`) and
|
|
57
|
+
* opens or closes any other. The toggle before an item with children opens and closes
|
|
58
|
+
* it (`cae-toggle`). The ancestors of `selected` are always open.
|
|
59
|
+
*
|
|
60
|
+
* @tagname cae-tree
|
|
61
|
+
* @fires cae-select - `{id}`: an item was chosen with a click, Enter or Space
|
|
62
|
+
* @fires cae-toggle - `{id, open}`: the reader opened or closed an item
|
|
63
|
+
* @csspart tree - the list of items
|
|
64
|
+
* @csspart item - an item's row
|
|
65
|
+
* @csspart empty - what it shows with no items
|
|
66
|
+
*/
|
|
67
|
+
export class CaeTree extends LitElement {
|
|
68
|
+
constructor() {
|
|
69
|
+
super(...arguments);
|
|
70
|
+
this.items = [];
|
|
71
|
+
/** The selected item's id, or null. */
|
|
72
|
+
this.selected = null;
|
|
73
|
+
/** What the tree is named to a screen reader. */
|
|
74
|
+
this.label = '';
|
|
75
|
+
/** The visible words; English by default. */
|
|
76
|
+
this.strings = {};
|
|
77
|
+
/** The reader's choice of open and closed items, by id, over each item's `open`. */
|
|
78
|
+
this.opened = new Map();
|
|
79
|
+
/** The item that holds the tab stop. */
|
|
80
|
+
this.focusId = null;
|
|
81
|
+
this.isOpen = (t) => this.opened.get(t.id) ?? t.open ?? true;
|
|
82
|
+
}
|
|
83
|
+
static { this.styles = [
|
|
84
|
+
base,
|
|
85
|
+
css `
|
|
86
|
+
:host { display: block; font-size: var(--font-size-md); }
|
|
87
|
+
.tree { margin: 0; padding: 2px 0; }
|
|
88
|
+
.row { display: flex; align-items: center; gap: 4px; min-height: 24px; padding: 0 8px 0 calc((var(--level) - 1) * 14px + 4px);
|
|
89
|
+
border-radius: var(--radius-sm); cursor: pointer; white-space: nowrap; color: var(--text-2); }
|
|
90
|
+
.row:hover { background: var(--raise); }
|
|
91
|
+
.row[aria-selected='true'] { background: color-mix(in srgb, var(--accent) 16%, transparent); color: var(--text); box-shadow: inset 2px 0 0 var(--accent); }
|
|
92
|
+
.row:focus-visible { outline-offset: -2px; }
|
|
93
|
+
.twist { flex: none; display: inline-grid; place-items: center; width: 16px; height: 16px; color: var(--text-muted); border-radius: var(--radius-sm); }
|
|
94
|
+
.twist svg { transition: transform 0.12s ease; }
|
|
95
|
+
[aria-expanded='true'] > .twist svg { transform: rotate(90deg); }
|
|
96
|
+
.twist:hover { color: var(--text); }
|
|
97
|
+
.icon { flex: none; width: 16px; height: 16px; color: var(--text-muted); }
|
|
98
|
+
.name { overflow: hidden; text-overflow: ellipsis; min-width: 0; }
|
|
99
|
+
.badge { flex: none; margin-left: 6px; font-size: 11px; padding: 0 6px; border-radius: var(--radius-pill); background: var(--raise); color: var(--text-2); }
|
|
100
|
+
.badge[data-tone] { background: var(--tone-bg); color: var(--tone); }
|
|
101
|
+
.badge[data-tone='done'] { background: none; color: var(--text-2); }
|
|
102
|
+
.empty { color: var(--text-muted); font-size: var(--font-size-sm); padding: 4px 8px; }
|
|
103
|
+
@media (prefers-reduced-motion: reduce) { .twist svg { transition: none; } }
|
|
104
|
+
`,
|
|
105
|
+
]; }
|
|
106
|
+
willUpdate(changed) {
|
|
107
|
+
if (changed.has('selected') && this.selected) {
|
|
108
|
+
const up = ancestorsOf(this.items, this.selected);
|
|
109
|
+
if (up?.some((id) => this.opened.get(id) !== true)) {
|
|
110
|
+
const next = new Map(this.opened);
|
|
111
|
+
for (const id of up)
|
|
112
|
+
next.set(id, true);
|
|
113
|
+
this.opened = next;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
updated(changed) {
|
|
118
|
+
if (changed.has('selected') && this.selected && !this.matches(':focus-within')) {
|
|
119
|
+
this.rowOf(this.selected)?.scrollIntoView?.({ block: 'nearest' });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
rowOf(id) {
|
|
123
|
+
return this.renderRoot.querySelector(`[data-id="${CSS.escape(id)}"]`);
|
|
124
|
+
}
|
|
125
|
+
setOpen(t, open) {
|
|
126
|
+
if (!hasChildren(t) || this.isOpen(t) === open)
|
|
127
|
+
return;
|
|
128
|
+
this.opened = new Map(this.opened).set(t.id, open);
|
|
129
|
+
emit(this, 'cae-toggle', { id: t.id, open });
|
|
130
|
+
}
|
|
131
|
+
choose(t) {
|
|
132
|
+
this.focusId = t.id;
|
|
133
|
+
if (selectable(t))
|
|
134
|
+
emit(this, 'cae-select', { id: t.id });
|
|
135
|
+
else
|
|
136
|
+
this.setOpen(t, !this.isOpen(t));
|
|
137
|
+
}
|
|
138
|
+
async moveTo(id) {
|
|
139
|
+
this.focusId = id;
|
|
140
|
+
await this.updateComplete;
|
|
141
|
+
this.rowOf(id)?.focus();
|
|
142
|
+
}
|
|
143
|
+
onKey(e, rows, i) {
|
|
144
|
+
const row = rows[i];
|
|
145
|
+
const t = row.item;
|
|
146
|
+
let to;
|
|
147
|
+
switch (e.key) {
|
|
148
|
+
case 'ArrowDown':
|
|
149
|
+
to = rows[i + 1];
|
|
150
|
+
break;
|
|
151
|
+
case 'ArrowUp':
|
|
152
|
+
to = rows[i - 1];
|
|
153
|
+
break;
|
|
154
|
+
case 'Home':
|
|
155
|
+
to = rows[0];
|
|
156
|
+
break;
|
|
157
|
+
case 'End':
|
|
158
|
+
to = rows[rows.length - 1];
|
|
159
|
+
break;
|
|
160
|
+
case 'ArrowRight':
|
|
161
|
+
if (hasChildren(t) && !this.isOpen(t))
|
|
162
|
+
this.setOpen(t, true);
|
|
163
|
+
else if (hasChildren(t))
|
|
164
|
+
to = rows[i + 1];
|
|
165
|
+
break;
|
|
166
|
+
case 'ArrowLeft':
|
|
167
|
+
if (hasChildren(t) && this.isOpen(t))
|
|
168
|
+
this.setOpen(t, false);
|
|
169
|
+
else if (row.parent)
|
|
170
|
+
to = rows.find((r) => r.item.id === row.parent);
|
|
171
|
+
break;
|
|
172
|
+
case 'Enter':
|
|
173
|
+
case ' ':
|
|
174
|
+
this.choose(t);
|
|
175
|
+
break;
|
|
176
|
+
default: {
|
|
177
|
+
if (e.key.length !== 1 || e.ctrlKey || e.metaKey || e.altKey || !/\S/.test(e.key))
|
|
178
|
+
return;
|
|
179
|
+
const k = e.key.toLowerCase();
|
|
180
|
+
const order = [...rows.slice(i + 1), ...rows.slice(0, i)];
|
|
181
|
+
to = order.find((r) => r.item.name.toLowerCase().startsWith(k));
|
|
182
|
+
if (!to)
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
e.preventDefault();
|
|
187
|
+
if (to)
|
|
188
|
+
void this.moveTo(to.item.id);
|
|
189
|
+
}
|
|
190
|
+
render() {
|
|
191
|
+
if (!this.items.length)
|
|
192
|
+
return html `<div class="empty" part="empty">${withDefaults(DEFAULT_TREE_STRINGS, this.strings).empty}</div>`;
|
|
193
|
+
const rows = visibleRows(this.items, this.isOpen);
|
|
194
|
+
const stop = rows.find((r) => r.item.id === this.focusId) ?? rows.find((r) => r.item.id === this.selected) ?? rows[0];
|
|
195
|
+
return html `<div class="tree" role="tree" part="tree" aria-label=${this.label || nothing}>
|
|
196
|
+
${rows.map((r, i) => this.row(r, i, rows, r === stop))}
|
|
197
|
+
</div>`;
|
|
198
|
+
}
|
|
199
|
+
row(r, i, rows, stop) {
|
|
200
|
+
const t = r.item;
|
|
201
|
+
const parent = hasChildren(t);
|
|
202
|
+
const open = parent && this.isOpen(t);
|
|
203
|
+
const directory = (t.icon ?? (parent ? 'directory' : 'file')) === 'directory';
|
|
204
|
+
return html `<div
|
|
205
|
+
class="row"
|
|
206
|
+
part="item"
|
|
207
|
+
role="treeitem"
|
|
208
|
+
data-id=${t.id}
|
|
209
|
+
tabindex=${stop ? 0 : -1}
|
|
210
|
+
style="--level: ${r.level}"
|
|
211
|
+
aria-level=${r.level}
|
|
212
|
+
aria-setsize=${r.siblings}
|
|
213
|
+
aria-posinset=${r.index + 1}
|
|
214
|
+
aria-expanded=${parent ? String(open) : nothing}
|
|
215
|
+
aria-selected=${selectable(t) ? String(t.id === this.selected) : nothing}
|
|
216
|
+
@click=${() => this.choose(t)}
|
|
217
|
+
@focus=${() => (this.focusId = t.id)}
|
|
218
|
+
@keydown=${(e) => this.onKey(e, rows, i)}
|
|
219
|
+
>
|
|
220
|
+
<span class="twist" aria-hidden="true" @click=${(e) => {
|
|
221
|
+
if (!parent)
|
|
222
|
+
return;
|
|
223
|
+
e.stopPropagation();
|
|
224
|
+
this.focusId = t.id;
|
|
225
|
+
this.setOpen(t, !open);
|
|
226
|
+
}}>${parent ? html `<svg width="10" height="10" viewBox="0 0 10 10"><path d="M3 1.5 7 5 3 8.5" fill="none" stroke="currentColor" stroke-width="1.5"></path></svg>` : nothing}</span>
|
|
227
|
+
<svg class="icon" viewBox="0 0 16 16" aria-hidden="true">${directory ? FOLDER : FILE}</svg>
|
|
228
|
+
<span class="name">${t.name}</span>
|
|
229
|
+
${t.badge ? statusChip('badge', { text: t.badge, tone: t.tone ?? 'neutral' }) : nothing}
|
|
230
|
+
</div>`;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
__decorate([
|
|
234
|
+
property({ attribute: false })
|
|
235
|
+
], CaeTree.prototype, "items", void 0);
|
|
236
|
+
__decorate([
|
|
237
|
+
property({ attribute: false })
|
|
238
|
+
], CaeTree.prototype, "selected", void 0);
|
|
239
|
+
__decorate([
|
|
240
|
+
property()
|
|
241
|
+
], CaeTree.prototype, "label", void 0);
|
|
242
|
+
__decorate([
|
|
243
|
+
property({ attribute: false })
|
|
244
|
+
], CaeTree.prototype, "strings", void 0);
|
|
245
|
+
__decorate([
|
|
246
|
+
state()
|
|
247
|
+
], CaeTree.prototype, "opened", void 0);
|
|
248
|
+
__decorate([
|
|
249
|
+
state()
|
|
250
|
+
], CaeTree.prototype, "focusId", void 0);
|
|
251
|
+
//# sourceMappingURL=tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/tree/tree.ts"],"names":[],"mappings":"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"}
|
package/docs/charts.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Charts
|
|
2
|
+
|
|
3
|
+
Five charts of plain series: `<cae-column-chart>` (vertical bars, stacked or
|
|
4
|
+
side by side), `<cae-line-chart>`, `<cae-heatmap>`, `<cae-state-grid>` (a state
|
|
5
|
+
per row and column) and `<cae-bar-chart>` (horizontal bars). Register them with
|
|
6
|
+
`@contraagent/elements/charts/define`; the types and the arithmetic they share
|
|
7
|
+
are in `@contraagent/elements/charts`.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
::code{file="examples/charts.ts"}
|
|
12
|
+
|
|
13
|
+
## Series and values
|
|
14
|
+
|
|
15
|
+
A chart takes labels (`x`) and series, each a name and a value per label; a
|
|
16
|
+
null value is a value the series has not: no bar, a break in a line, an empty
|
|
17
|
+
cell. A heatmap takes its rows (`y`), its columns (`x`) and `values[row][column]`;
|
|
18
|
+
a state grid the same rows and columns and `cells[row][column]`, each a state's
|
|
19
|
+
`label`, its `tone` and an optional `tip` (null: no cell); a bar chart takes
|
|
20
|
+
`bars`, each a label, a value and an optional `tone`.
|
|
21
|
+
|
|
22
|
+
::code{file="../src/charts/types.ts" from="/** One series" to="/** The words of a chart"}
|
|
23
|
+
|
|
24
|
+
`format` writes a value in words (`$1.20`, `42%`, `2m 05s`): on the axis, in the
|
|
25
|
+
tooltip and in the table. It is the host's, since the chart does not know the
|
|
26
|
+
unit.
|
|
27
|
+
|
|
28
|
+
## Colour
|
|
29
|
+
|
|
30
|
+
The series take the series colours (`--ca-series-1` to `--ca-series-6`) in
|
|
31
|
+
their order, so a series keeps its colour whatever its values and its rank. A
|
|
32
|
+
chart never makes up a seventh colour: past six series, a column chart sums the
|
|
33
|
+
sixth and later into one series, `strings.other`, in the neutral `--ca-meter`;
|
|
34
|
+
a line chart draws them in that colour and names each in the legend and the
|
|
35
|
+
tooltip. A heatmap uses one hue, light to dark in five steps between its lowest
|
|
36
|
+
and highest value. A state grid colours a cell by its tone, so a failure and
|
|
37
|
+
what needs attention stand out and a cell that ended well stays quiet; the
|
|
38
|
+
colour is never alone: a cell wide enough holds its tone's mark (✓ done,
|
|
39
|
+
✕ failed, ◌ attention; a done cell's mark is quieter), the legend names each
|
|
40
|
+
state once, failures and what needs attention first, and the tooltip and the
|
|
41
|
+
table say the state in words. A bar
|
|
42
|
+
with a `tone` takes that status colour; a status colour is never a series.
|
|
43
|
+
|
|
44
|
+
## Reading it
|
|
45
|
+
|
|
46
|
+
Two or more series have a legend; one series has none, since the chart's title
|
|
47
|
+
names it. Pointing at a label, or moving to it with the arrow keys once the
|
|
48
|
+
chart has the focus (up and down by a row in a heatmap and a state grid, Home and End to the
|
|
49
|
+
ends, Escape to close), shows its values in a tooltip. Every chart has a switch
|
|
50
|
+
to a table of the same values (`strings.showTable`, `strings.showChart`), which
|
|
51
|
+
is also how a screen reader reads it. A bar chart writes each value beside its
|
|
52
|
+
bar.
|
|
53
|
+
|
|
54
|
+
## Look
|
|
55
|
+
|
|
56
|
+
`height` sets a column or line chart's height in px (200 by default; the rows of
|
|
57
|
+
a heatmap and of a state grid are 22px each). The parts are `plot`, `table`, `switch`, `legend` and
|
|
58
|
+
`empty`.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Check table
|
|
2
|
+
|
|
3
|
+
`<cae-check-table>` shows named values checked one by one: a row per name,
|
|
4
|
+
with what it must be, what it is and the verdict. Register it with
|
|
5
|
+
`@contraagent/elements/check-table/define`; the types, `verdict` and
|
|
6
|
+
`verdictStyles` are in `@contraagent/elements/check-table`.
|
|
7
|
+
|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
<!-- not on the site -->
|
|
11
|
+
Live on this topic's page of the documentation site (`pnpm run docs` in `web/`).
|
|
12
|
+
|
|
13
|
+
::code{file="examples/check-table.ts"}
|
|
14
|
+
|
|
15
|
+
## Rows
|
|
16
|
+
|
|
17
|
+
A row is a `CheckRow`. The host judges each value; the table shows the
|
|
18
|
+
verdict: `pass` (✓ and its word), `fail` (✕ and its word, in the failed
|
|
19
|
+
tone), `warn` (its word, in the attention tone) or `none` (its word, muted, or
|
|
20
|
+
an empty cell without one). The marks are hidden from screen readers, which
|
|
21
|
+
read the word.
|
|
22
|
+
|
|
23
|
+
::code{file="../src/checks/types.ts" from="export interface CheckRow" to="export interface CheckTableStrings"}
|
|
24
|
+
|
|
25
|
+
A value is shown in one line: a string quoted and cut, a list's length and its
|
|
26
|
+
first items, an object's first keys. A row with `extra` names a value that is
|
|
27
|
+
not expected: its `expected` is a phrase, not code. Without `showValues`, the
|
|
28
|
+
table shows only the names and what each must be.
|
|
29
|
+
|
|
30
|
+
## Verdicts elsewhere
|
|
31
|
+
|
|
32
|
+
`verdict(v, label, tip)` draws a verdict as the table does, for a host that
|
|
33
|
+
shows one outside a table; add `verdictStyles` to the host's styles.
|
|
34
|
+
|
|
35
|
+
## Look
|
|
36
|
+
|
|
37
|
+
The table is as wide as its content, so each verdict sits next to the value it
|
|
38
|
+
judges; a long value wraps. The parts are `table`, `row` and `verdict`. The
|
|
39
|
+
words are `strings` ([Strings](strings.md)): the headers, `optional`, and the
|
|
40
|
+
summaries of a list (`items`) and an object.
|
package/docs/code.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Code
|
|
2
|
+
|
|
3
|
+
`<cae-code>` shows a text as code: highlighted by its language, each line
|
|
4
|
+
numbered, some lines marked, with a switch between long lines wrapped and
|
|
5
|
+
scrolled sideways and a button that copies the whole text. Register it with
|
|
6
|
+
`@contraagent/elements/code/define`; the element, the tokenizer it is drawn with
|
|
7
|
+
and the languages it reads are in `@contraagent/elements/code`.
|
|
8
|
+
|
|
9
|
+
<!-- not on the site -->
|
|
10
|
+
Live on this topic's page of the documentation site (`pnpm run docs` in `web/`).
|
|
11
|
+
|
|
12
|
+
::code{file="examples/code.ts"}
|
|
13
|
+
|
|
14
|
+
## The text
|
|
15
|
+
|
|
16
|
+
`code` is the text and `language` its language: a name of `LANGUAGES`, another
|
|
17
|
+
name of one (`py`, `ts`, `sh`, `yml`) or a file name (`src/main.rs`); any other
|
|
18
|
+
is shown as plain text. `start` is the number of the first line (1), and
|
|
19
|
+
`highlight` marks lines in those numbers: a number for one line, a pair for the
|
|
20
|
+
lines from the first to the last. A marked line has a bar beside its number and
|
|
21
|
+
a tint. `path` names the file in the header; `label` names the lines to a screen
|
|
22
|
+
reader (default: the path).
|
|
23
|
+
|
|
24
|
+
A long text costs time to draw, so the element shows at most `maxLines` lines
|
|
25
|
+
(5,000) and `maxCharacters` characters (500,000), cut at the end of a line, and
|
|
26
|
+
says under them how many lines the text has (`strings.cut`). The copy button
|
|
27
|
+
copies the whole text all the same.
|
|
28
|
+
|
|
29
|
+
## Highlighting
|
|
30
|
+
|
|
31
|
+
The highlighter is a small tokenizer of the package: each language is a few
|
|
32
|
+
regular expressions and its words, so it needs no library and no request. It
|
|
33
|
+
reads Python, JSON, JavaScript, TypeScript, C, C++, Java, Go, Rust, shell, TOML
|
|
34
|
+
(and INI), YAML, SQL, XML (and HTML and SVG) and diffs. It marks comments,
|
|
35
|
+
strings, numbers, keywords, constants, built-in names, the names a function or a
|
|
36
|
+
type is given where it is defined, and a language's own parts (keys, tags,
|
|
37
|
+
attributes, added and removed lines); it does not parse, so a rare construct may
|
|
38
|
+
take the colour of a simpler one. `tokenize(code, language)` returns the tokens,
|
|
39
|
+
`highlight(code, language)` escaped HTML; markdown's code blocks use the same
|
|
40
|
+
(`@contraagent/elements/markdown`). The colours are the theme's `--ca-code-*`
|
|
41
|
+
tokens ([Theming](theming.md)).
|
|
42
|
+
|
|
43
|
+
::code{file="../src/code/highlight.ts" from="/** What a token is" to="/** The languages highlighted"}
|
|
44
|
+
|
|
45
|
+
## Reading it
|
|
46
|
+
|
|
47
|
+
The lines are one tab stop that scrolls with the arrow keys. The numbers are
|
|
48
|
+
drawn beside the lines and are not part of a selection, so selected lines copy
|
|
49
|
+
without them. `wrap` wraps long lines at first; the reader's switch
|
|
50
|
+
(`strings.wrap`) changes it.
|
|
51
|
+
|
|
52
|
+
## Look
|
|
53
|
+
|
|
54
|
+
`--cae-code-max-height` sets the most the lines grow to before they scroll (70vh).
|
|
55
|
+
The parts are `header`, `code` and `cut`.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Data table
|
|
2
|
+
|
|
3
|
+
`<cae-data-table>` shows rows of data in a real `<table>`: a header cell per
|
|
4
|
+
column, and the first `rowHeader` column as the header of its row, so a screen
|
|
5
|
+
reader names each cell by its column and its row. Register it with
|
|
6
|
+
`@contraagent/elements/data-table/define`; the types and `sortRows` are in
|
|
7
|
+
`@contraagent/elements/data-table`.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
<!-- not on the site -->
|
|
12
|
+
Live on this topic's page of the documentation site (`pnpm run docs` in `web/`).
|
|
13
|
+
|
|
14
|
+
::code{file="examples/data-table.ts"}
|
|
15
|
+
|
|
16
|
+
## Columns
|
|
17
|
+
|
|
18
|
+
A column is a `DataColumn`: its header, a CSS grid track as its width, and a
|
|
19
|
+
function that draws its cell for a row (a template, a string or a number).
|
|
20
|
+
Every row is a grid of the columns' tracks, so the rows line up with the header.
|
|
21
|
+
|
|
22
|
+
::code{file="../src/table/types.ts" from="/** A column:" to="/** The column the rows are ordered by. */"}
|
|
23
|
+
|
|
24
|
+
## Keyboard and events
|
|
25
|
+
|
|
26
|
+
The rows are one tab stop. The arrow keys move between rows, and Home and End
|
|
27
|
+
move to the first and the last row. Enter or a click on a row sends
|
|
28
|
+
`cae-activate` with the row's id (`rowKey`). With `activatable` off, they choose
|
|
29
|
+
the row as the selection and send `cae-select`; the selected row has the part
|
|
30
|
+
`row-selected`. A click on a button or a link inside a cell is that control's.
|
|
31
|
+
|
|
32
|
+
A column with `compare` (or `sortable`) has a header button that sends
|
|
33
|
+
`cae-sort` with the column and the direction. The table does not reorder the
|
|
34
|
+
rows: the host sets `sort` and the rows, ordered by `sortRows` or its own way.
|
|
35
|
+
`sortRows` orders by the column's `compare`, else its `text`, else its cell when
|
|
36
|
+
the cell is a string or a number: a column of plain values needs only `sortable`.
|
|
37
|
+
|
|
38
|
+
## Long lists
|
|
39
|
+
|
|
40
|
+
Above `windowAt` rows (200), the table draws only the rows on screen and a
|
|
41
|
+
spacer for the rows above and below them, so the scroll height stays that of
|
|
42
|
+
the whole list. The rows' height is measured; `rowHeight` is the first
|
|
43
|
+
estimate. The table finds the element that scrolls it, across shadow roots, or
|
|
44
|
+
the window.
|
|
45
|
+
|
|
46
|
+
## Look
|
|
47
|
+
|
|
48
|
+
`--cae-data-table-gap` sets the space between the columns and
|
|
49
|
+
`--cae-data-table-row-padding` a row's padding. The parts are `table`,
|
|
50
|
+
`caption`, `head`, `header-cell`, `row`, `row-selected`, `cell` and `empty`;
|
|
51
|
+
`rowTone` gives a row a tone (`data-tone`) and `rowAttrs` more attributes. What
|
|
52
|
+
the cells draw lives in the table's shadow root: `cellStyles` adds styles there,
|
|
53
|
+
after the table's own (the rows are `tr`, the cells `th` and `td`, each with
|
|
54
|
+
`data-col` set to its column's id).
|
|
55
|
+
|
|
56
|
+
The words are `strings` ([Strings](strings.md)): `empty` with no rows (or the
|
|
57
|
+
`empty` slot), and the sort buttons' tooltips.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Charts: a CI pipeline's minutes by day and stage (stacked columns), its queue
|
|
2
|
+
// time (lines), its builds by weekday and hour (a heatmap), how its nightly builds
|
|
3
|
+
// ended (a state grid) and its test funnel (horizontal bars). The host gives each
|
|
4
|
+
// chart its unit's format.
|
|
5
|
+
import '@contraagent/elements/charts/define';
|
|
6
|
+
import type { ChartSeries } from '@contraagent/elements/charts';
|
|
7
|
+
|
|
8
|
+
const days = ['10-08', '10-09', '10-10', '10-11', '10-12', '10-13', '10-14'];
|
|
9
|
+
const minutes: ChartSeries[] = [
|
|
10
|
+
{ name: 'build', values: [42, 38, 51, 12, 9, 47, 44] },
|
|
11
|
+
{ name: 'test', values: [65, 70, 58, 20, null, 61, 66] },
|
|
12
|
+
{ name: 'deploy', values: [8, 8, 9, 2, 2, 10, 8] },
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
export function mount(host: HTMLElement): void {
|
|
16
|
+
const columns = document.createElement('cae-column-chart');
|
|
17
|
+
columns.label = 'Minutes by day';
|
|
18
|
+
columns.x = days;
|
|
19
|
+
columns.series = minutes;
|
|
20
|
+
columns.stacked = true;
|
|
21
|
+
columns.format = (v) => `${v} min`;
|
|
22
|
+
|
|
23
|
+
const lines = document.createElement('cae-line-chart');
|
|
24
|
+
lines.label = 'Queue time';
|
|
25
|
+
lines.x = days;
|
|
26
|
+
lines.series = [
|
|
27
|
+
{ name: 'median', values: [1.2, 1.4, 0.9, 0.3, 0.2, 1.8, 1.1] },
|
|
28
|
+
{ name: 'slowest', values: [6, 9, 4, 1, 1, 12, 7] },
|
|
29
|
+
];
|
|
30
|
+
lines.format = (v) => `${v} min`;
|
|
31
|
+
|
|
32
|
+
const heat = document.createElement('cae-heatmap');
|
|
33
|
+
heat.label = 'Builds by weekday and hour';
|
|
34
|
+
heat.x = ['9', '10', '11', '12', '13', '14', '15', '16', '17'];
|
|
35
|
+
heat.y = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'];
|
|
36
|
+
// A count per weekday and hour; Wednesday at 13 has no record (null: an empty cell).
|
|
37
|
+
heat.values = heat.y.map((_, r) => heat.x.map((_, c) => (r === 2 && c === 4 ? null : (r * 7 + c * 3) % 9)));
|
|
38
|
+
heat.strings = { scale: (low, high) => `${low} to ${high} builds` };
|
|
39
|
+
|
|
40
|
+
const bars = document.createElement('cae-bar-chart');
|
|
41
|
+
bars.label = 'Tests this week';
|
|
42
|
+
bars.bars = [
|
|
43
|
+
{ label: 'written', value: 1240 },
|
|
44
|
+
{ label: 'run', value: 1180 },
|
|
45
|
+
{ label: 'passed', value: 1162 },
|
|
46
|
+
{ label: 'flaky', value: 18, tone: 'attention' },
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
const nightly = document.createElement('cae-state-grid');
|
|
50
|
+
nightly.label = 'Nightly builds by weekday and hour';
|
|
51
|
+
nightly.x = ['0', '1', '2', '3'];
|
|
52
|
+
nightly.y = ['Mon', 'Tue'];
|
|
53
|
+
const passed = { label: 'passed', tone: 'done' as const };
|
|
54
|
+
// A state per weekday and hour: its word, its tone, and a fact for the tooltip; null: no build.
|
|
55
|
+
nightly.cells = [
|
|
56
|
+
[passed, { label: 'failed', tone: 'failed', tip: 'build 4127' }, passed, null],
|
|
57
|
+
[passed, passed, { label: 'skipped', tone: 'muted' }, passed],
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
host.replaceChildren(columns, lines, heat, nightly, bars);
|
|
61
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// A check table: hand-written fields of a settings file, each checked against
|
|
2
|
+
// what it must be. The host judges the values; the table shows the verdicts.
|
|
3
|
+
import '@contraagent/elements/check-table/define';
|
|
4
|
+
import type { CheckRow } from '@contraagent/elements/check-table';
|
|
5
|
+
|
|
6
|
+
const rows: CheckRow[] = [
|
|
7
|
+
{ name: 'name', expected: 'string', hasValue: true, value: 'release-build', verdict: 'pass', verdictLabel: 'passed' },
|
|
8
|
+
{ name: 'retries', expected: 'integer', hasValue: true, value: '3', verdict: 'fail', verdictLabel: 'wrong type', tip: 'Expected integer' },
|
|
9
|
+
{ name: 'targets', expected: 'list[str]', hasValue: true, value: ['linux', 'macos', 'windows', 'wasm'], verdict: 'pass', verdictLabel: 'passed' },
|
|
10
|
+
{ name: 'cache', expected: 'object', optional: true, hasValue: false, verdict: 'none', verdictLabel: 'absent (optional)' },
|
|
11
|
+
{ name: 'colour', expected: 'not in the schema', extra: true, hasValue: true, value: 'blue', verdict: 'warn', verdictLabel: 'extra field' },
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
export function mount(host: HTMLElement): void {
|
|
15
|
+
const table = document.createElement('cae-check-table');
|
|
16
|
+
table.rows = rows;
|
|
17
|
+
table.strings = { name: 'Field', actual: 'In the file' };
|
|
18
|
+
host.replaceChildren(table);
|
|
19
|
+
}
|