@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,73 @@
|
|
|
1
|
+
# Transcript
|
|
2
|
+
|
|
3
|
+
`<cae-transcript>` shows a conversation with an agent: chat bubbles for the
|
|
4
|
+
prompts, the answers and the model's reasoning, lines of the agent's own log,
|
|
5
|
+
and a card per tool call that opens on its command and output. A web search
|
|
6
|
+
lists the pages it returned as links; a page read shows its URL. Register it
|
|
7
|
+
with `@contraagent/elements/transcript/define`; the types are in
|
|
8
|
+
`@contraagent/elements/transcript`.
|
|
9
|
+
|
|
10
|
+

|
|
11
|
+
|
|
12
|
+
<!-- not on the site -->
|
|
13
|
+
Live on this topic's page of the documentation site (`pnpm run docs` in `web/`).
|
|
14
|
+
|
|
15
|
+
::code{file="examples/transcript.ts"}
|
|
16
|
+
|
|
17
|
+
## Sections and items
|
|
18
|
+
|
|
19
|
+
The conversation comes in sections, one per session with the agent. Above two
|
|
20
|
+
sections, a picker shows one at a time; each section names itself (`title`),
|
|
21
|
+
can add short facts after its name (a model) and a mark of how it ended
|
|
22
|
+
(`verdict`: ✓ with the tone `done`, ✕ otherwise). A section's head shows its
|
|
23
|
+
`tags` (who ran it) and its `details`: folded texts, code (a command line) or
|
|
24
|
+
prose (a prompt). A `footer` after the items says how the section ended, with
|
|
25
|
+
a list (errors) or a note.
|
|
26
|
+
|
|
27
|
+
::code{file="../src/transcript/types.ts" from="export interface TranscriptSection {" to="/** Where the reader was in a transcript. */"}
|
|
28
|
+
|
|
29
|
+
An item is a prompt, a message or reasoning (markdown), an event (a glyph, a
|
|
30
|
+
title and a detail), a notice, or a tool card:
|
|
31
|
+
|
|
32
|
+
::code{file="../src/transcript/types.ts" from="/** One tool call:" to="/** A labelled value in a section's head (who ran it). */"}
|
|
33
|
+
|
|
34
|
+
## Following and reading
|
|
35
|
+
|
|
36
|
+
`shown` picks a section (0-based); null follows the latest. While the reader
|
|
37
|
+
is at the bottom, new content scrolls into view. Once they scroll up, it stays
|
|
38
|
+
where they are, and a button counts what arrived below: `count` is how much
|
|
39
|
+
the transcript holds (by default its sections and items), so a host that
|
|
40
|
+
counts events sets it. A section that starts while the reader is scrolled up
|
|
41
|
+
in the latest one keeps the one they read on screen. `live` shows the agent
|
|
42
|
+
working, and a tool call with no result as running; without it, such a call
|
|
43
|
+
was interrupted.
|
|
44
|
+
|
|
45
|
+
A host that loads a transcript in pages sets `loading` until the first page
|
|
46
|
+
has arrived, and `earlier` to the number of lines before it that are not
|
|
47
|
+
loaded: a button then asks for them with `cae-load-earlier`, and the next
|
|
48
|
+
`sections` it gets is the content from further back, which keeps the reader's
|
|
49
|
+
place. For another transcript, give it a new element.
|
|
50
|
+
|
|
51
|
+
`memory` keeps what the reader opened and where they were: `isOpen` and
|
|
52
|
+
`setOpen` for the tool cards, `scroll` and `setScroll` for the position, which
|
|
53
|
+
is restored once the content has arrived. Without it, both last as long as the
|
|
54
|
+
element. `reveal(id)` opens a tool card and scrolls it into view once its
|
|
55
|
+
section is shown; it returns that section's index for the host to show.
|
|
56
|
+
|
|
57
|
+
## Events
|
|
58
|
+
|
|
59
|
+
- `cae-section-change` with `{index}`: the reader picked a section (null: the
|
|
60
|
+
latest). The host sets `shown`.
|
|
61
|
+
- `cae-section-shown` with `{index}`: the section on screen changed (-1: none),
|
|
62
|
+
also when a new section keeps the one being read.
|
|
63
|
+
- `cae-load-earlier`: the reader asked for the content before `earlier`.
|
|
64
|
+
|
|
65
|
+
## Look and words
|
|
66
|
+
|
|
67
|
+
Markdown is turned into HTML by `markdown` (`md` of
|
|
68
|
+
`@contraagent/elements/markdown` escapes the text); without it, answers and
|
|
69
|
+
reasoning show as plain text. `renderDetail` draws an open prose detail. The
|
|
70
|
+
parts are `picker`, `section`, `tag`, `bubble`, `notice`, `tool`, `tool-body`
|
|
71
|
+
and `verdict`; `tagChips` and `tagStyles` draw tags elsewhere in the same
|
|
72
|
+
look. The words are `strings` ([Strings](strings.md)): the picker's name and
|
|
73
|
+
tooltip, the bubbles' heads, the tool cards' statuses, the counts.
|
package/docs/tree.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Tree
|
|
2
|
+
|
|
3
|
+
`<cae-tree>` shows items in a tree, the children of each under it, folded and
|
|
4
|
+
opened by the reader: files and directories, say. Register it with
|
|
5
|
+
`@contraagent/elements/tree/define`; the types are in
|
|
6
|
+
`@contraagent/elements/tree`.
|
|
7
|
+
|
|
8
|
+
<!-- not on the site -->
|
|
9
|
+
Live on this topic's page of the documentation site (`pnpm run docs` in `web/`).
|
|
10
|
+
|
|
11
|
+
::code{file="examples/tree.ts"}
|
|
12
|
+
|
|
13
|
+
## Items
|
|
14
|
+
|
|
15
|
+
An item is a `TreeItem`: an `id` unique in the tree, a `name` and its
|
|
16
|
+
`children`. Its icon is a directory for an item with children and a file for one
|
|
17
|
+
without, unless `icon` names one. A `badge` is a word beside the name in the
|
|
18
|
+
colour of its `tone`, with the tone's mark (✓ done, ✕ failed, ◌ attention).
|
|
19
|
+
`open: false` folds an item at first.
|
|
20
|
+
|
|
21
|
+
::code{file="../src/tree/tree.ts" from="/** One item of a tree" to="export interface TreeStrings"}
|
|
22
|
+
|
|
23
|
+
## Selection
|
|
24
|
+
|
|
25
|
+
`selected` is the selected item's id; the element shows it and opens its
|
|
26
|
+
ancestors, and the host sets it. A click, Enter or Space on a selectable item
|
|
27
|
+
sends `cae-select` with its id: by default an item with no children is
|
|
28
|
+
selectable, and an item with children opens and closes instead. The toggle
|
|
29
|
+
before an item with children, Right and Left open and close it and send
|
|
30
|
+
`cae-toggle`. A host pairs a tree with `<cae-code>` by showing the selected
|
|
31
|
+
file's text beside it ([Code](code.md)).
|
|
32
|
+
|
|
33
|
+
## Keyboard
|
|
34
|
+
|
|
35
|
+
The tree is one tab stop, on the selected item or else the first. Up and Down
|
|
36
|
+
move between the items shown, Right opens an item and then moves to its first
|
|
37
|
+
child, Left closes it or moves to its parent, Home and End go to the first and
|
|
38
|
+
the last item, and a letter moves to the next item whose name starts with it. A
|
|
39
|
+
screen reader hears each item's level, its place among its siblings, and whether
|
|
40
|
+
it is open and selected.
|
|
41
|
+
|
|
42
|
+
## Look
|
|
43
|
+
|
|
44
|
+
The parts are `tree`, `item` (with `data-id`) and `empty`.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
// The examples are documentation: they compile against the package as it is.
|
|
3
|
+
"extends": "../../../tsconfig.base.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"noEmit": true,
|
|
6
|
+
"paths": {
|
|
7
|
+
"@contraagent/elements": ["../src/index.ts"],
|
|
8
|
+
"@contraagent/elements/segmented/define": ["../src/define/segmented.ts"],
|
|
9
|
+
"@contraagent/elements/data-table": ["../src/table/index.ts"],
|
|
10
|
+
"@contraagent/elements/data-table/define": ["../src/define/data-table.ts"],
|
|
11
|
+
"@contraagent/elements/tiles": ["../src/tiles/index.ts"],
|
|
12
|
+
"@contraagent/elements/tiles/define": ["../src/define/tiles.ts"],
|
|
13
|
+
"@contraagent/elements/lanes": ["../src/lanes/index.ts"],
|
|
14
|
+
"@contraagent/elements/lanes/define": ["../src/define/lanes.ts"],
|
|
15
|
+
"@contraagent/elements/check-table": ["../src/checks/index.ts"],
|
|
16
|
+
"@contraagent/elements/check-table/define": ["../src/define/check-table.ts"]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"include": ["examples/**/*.ts"]
|
|
20
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,179 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contraagent/elements",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Generic web components (Lit) and their parts: design tokens, themes, status pills, legends, a segmented control, a data table, a layered graph, a mark matrix, stat tiles, time lanes, charts (columns, lines, a heatmap, horizontal bars), a check table, a transcript, a JSON tree, markdown, highlighted code, a tree of items and counters. No contraagent data, no localization library",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"web-components",
|
|
8
|
+
"lit",
|
|
9
|
+
"custom-elements",
|
|
10
|
+
"charts",
|
|
11
|
+
"data-table",
|
|
12
|
+
"design-tokens"
|
|
13
|
+
],
|
|
14
|
+
"homepage": "https://t-tani.github.io/contraagent/",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/t-tani/contraagent.git",
|
|
18
|
+
"directory": "web/packages/elements"
|
|
19
|
+
},
|
|
20
|
+
"bugs": {
|
|
21
|
+
"url": "https://github.com/t-tani/contraagent/issues"
|
|
22
|
+
},
|
|
23
|
+
"type": "module",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"default": "./dist/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./primitives": {
|
|
30
|
+
"types": "./dist/primitives/index.d.ts",
|
|
31
|
+
"default": "./dist/primitives/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./styles": {
|
|
34
|
+
"types": "./dist/styles/index.d.ts",
|
|
35
|
+
"default": "./dist/styles/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./themes": {
|
|
38
|
+
"types": "./dist/themes/index.d.ts",
|
|
39
|
+
"default": "./dist/themes/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./json-tree": {
|
|
42
|
+
"types": "./dist/json/index.d.ts",
|
|
43
|
+
"default": "./dist/json/index.js"
|
|
44
|
+
},
|
|
45
|
+
"./markdown": {
|
|
46
|
+
"types": "./dist/markdown/index.d.ts",
|
|
47
|
+
"default": "./dist/markdown/index.js"
|
|
48
|
+
},
|
|
49
|
+
"./code": {
|
|
50
|
+
"types": "./dist/code/index.d.ts",
|
|
51
|
+
"default": "./dist/code/index.js"
|
|
52
|
+
},
|
|
53
|
+
"./tree": {
|
|
54
|
+
"types": "./dist/tree/index.d.ts",
|
|
55
|
+
"default": "./dist/tree/index.js"
|
|
56
|
+
},
|
|
57
|
+
"./count": {
|
|
58
|
+
"types": "./dist/count/index.d.ts",
|
|
59
|
+
"default": "./dist/count/index.js"
|
|
60
|
+
},
|
|
61
|
+
"./data-table": {
|
|
62
|
+
"types": "./dist/table/index.d.ts",
|
|
63
|
+
"default": "./dist/table/index.js"
|
|
64
|
+
},
|
|
65
|
+
"./graph": {
|
|
66
|
+
"types": "./dist/graph/index.d.ts",
|
|
67
|
+
"default": "./dist/graph/index.js"
|
|
68
|
+
},
|
|
69
|
+
"./matrix": {
|
|
70
|
+
"types": "./dist/matrix/index.d.ts",
|
|
71
|
+
"default": "./dist/matrix/index.js"
|
|
72
|
+
},
|
|
73
|
+
"./tiles": {
|
|
74
|
+
"types": "./dist/tiles/index.d.ts",
|
|
75
|
+
"default": "./dist/tiles/index.js"
|
|
76
|
+
},
|
|
77
|
+
"./lanes": {
|
|
78
|
+
"types": "./dist/lanes/index.d.ts",
|
|
79
|
+
"default": "./dist/lanes/index.js"
|
|
80
|
+
},
|
|
81
|
+
"./charts": {
|
|
82
|
+
"types": "./dist/charts/index.d.ts",
|
|
83
|
+
"default": "./dist/charts/index.js"
|
|
84
|
+
},
|
|
85
|
+
"./check-table": {
|
|
86
|
+
"types": "./dist/checks/index.d.ts",
|
|
87
|
+
"default": "./dist/checks/index.js"
|
|
88
|
+
},
|
|
89
|
+
"./transcript": {
|
|
90
|
+
"types": "./dist/transcript/index.d.ts",
|
|
91
|
+
"default": "./dist/transcript/index.js"
|
|
92
|
+
},
|
|
93
|
+
"./define": {
|
|
94
|
+
"types": "./dist/define/all.d.ts",
|
|
95
|
+
"default": "./dist/define/all.js"
|
|
96
|
+
},
|
|
97
|
+
"./json-tree/define": {
|
|
98
|
+
"types": "./dist/define/json-tree.d.ts",
|
|
99
|
+
"default": "./dist/define/json-tree.js"
|
|
100
|
+
},
|
|
101
|
+
"./markdown/define": {
|
|
102
|
+
"types": "./dist/define/markdown.d.ts",
|
|
103
|
+
"default": "./dist/define/markdown.js"
|
|
104
|
+
},
|
|
105
|
+
"./code/define": {
|
|
106
|
+
"types": "./dist/define/code.d.ts",
|
|
107
|
+
"default": "./dist/define/code.js"
|
|
108
|
+
},
|
|
109
|
+
"./tree/define": {
|
|
110
|
+
"types": "./dist/define/tree.d.ts",
|
|
111
|
+
"default": "./dist/define/tree.js"
|
|
112
|
+
},
|
|
113
|
+
"./count/define": {
|
|
114
|
+
"types": "./dist/define/count.d.ts",
|
|
115
|
+
"default": "./dist/define/count.js"
|
|
116
|
+
},
|
|
117
|
+
"./segmented/define": {
|
|
118
|
+
"types": "./dist/define/segmented.d.ts",
|
|
119
|
+
"default": "./dist/define/segmented.js"
|
|
120
|
+
},
|
|
121
|
+
"./data-table/define": {
|
|
122
|
+
"types": "./dist/define/data-table.d.ts",
|
|
123
|
+
"default": "./dist/define/data-table.js"
|
|
124
|
+
},
|
|
125
|
+
"./graph/define": {
|
|
126
|
+
"types": "./dist/define/graph.d.ts",
|
|
127
|
+
"default": "./dist/define/graph.js"
|
|
128
|
+
},
|
|
129
|
+
"./matrix/define": {
|
|
130
|
+
"types": "./dist/define/matrix.d.ts",
|
|
131
|
+
"default": "./dist/define/matrix.js"
|
|
132
|
+
},
|
|
133
|
+
"./tiles/define": {
|
|
134
|
+
"types": "./dist/define/tiles.d.ts",
|
|
135
|
+
"default": "./dist/define/tiles.js"
|
|
136
|
+
},
|
|
137
|
+
"./lanes/define": {
|
|
138
|
+
"types": "./dist/define/lanes.d.ts",
|
|
139
|
+
"default": "./dist/define/lanes.js"
|
|
140
|
+
},
|
|
141
|
+
"./charts/define": {
|
|
142
|
+
"types": "./dist/define/charts.d.ts",
|
|
143
|
+
"default": "./dist/define/charts.js"
|
|
144
|
+
},
|
|
145
|
+
"./check-table/define": {
|
|
146
|
+
"types": "./dist/define/check-table.d.ts",
|
|
147
|
+
"default": "./dist/define/check-table.js"
|
|
148
|
+
},
|
|
149
|
+
"./transcript/define": {
|
|
150
|
+
"types": "./dist/define/transcript.d.ts",
|
|
151
|
+
"default": "./dist/define/transcript.js"
|
|
152
|
+
},
|
|
153
|
+
"./custom-elements.json": "./custom-elements.json"
|
|
154
|
+
},
|
|
155
|
+
"customElements": "custom-elements.json",
|
|
156
|
+
"files": [
|
|
157
|
+
"dist",
|
|
158
|
+
"src",
|
|
159
|
+
"!src/**/*.test.ts",
|
|
160
|
+
"!src/**/__snapshots__",
|
|
161
|
+
"docs",
|
|
162
|
+
"!docs/images",
|
|
163
|
+
"custom-elements.json"
|
|
164
|
+
],
|
|
165
|
+
"sideEffects": [
|
|
166
|
+
"./dist/define/*.js"
|
|
167
|
+
],
|
|
168
|
+
"peerDependencies": {
|
|
169
|
+
"lit": "^3.3.3"
|
|
170
|
+
},
|
|
171
|
+
"devDependencies": {
|
|
172
|
+
"@custom-elements-manifest/analyzer": "^0.11.0",
|
|
173
|
+
"lit": "^3.3.3"
|
|
174
|
+
},
|
|
175
|
+
"scripts": {
|
|
176
|
+
"build": "tsc -p tsconfig.build.json && cem analyze --litelement --globs 'src/*/{segmented,data-table,layered-graph,mark-matrix,stat-tiles,lanes,column-chart,line-chart,heatmap,bar-chart,check-table,transcript,json-tree,cae-markdown,code,tree,count,elapsed}.ts'",
|
|
177
|
+
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p docs"
|
|
178
|
+
}
|
|
179
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { css, html, nothing, type TemplateResult } from 'lit';
|
|
2
|
+
import { property } from 'lit/decorators.js';
|
|
3
|
+
import { toneAttr } from '../core/tone.js';
|
|
4
|
+
import type { LegendItem } from '../primitives/legend.js';
|
|
5
|
+
import { ChartElement } from './base.js';
|
|
6
|
+
import type { ChartBar } from './types.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Horizontal bars, one per label, in the order given (a funnel's stages, a ranking):
|
|
10
|
+
* each its label, a bar as long as its value against the longest, and the value in
|
|
11
|
+
* words. A bar with a `tone` takes that status colour, the others one colour. Every
|
|
12
|
+
* value is written beside its bar, so no tooltip is needed; the switch shows them as
|
|
13
|
+
* a table.
|
|
14
|
+
*
|
|
15
|
+
* @tagname cae-bar-chart
|
|
16
|
+
* @csspart plot - the bars
|
|
17
|
+
* @csspart table - the table of its values
|
|
18
|
+
* @csspart switch - the button between the two
|
|
19
|
+
* @csspart empty - what it shows with no values
|
|
20
|
+
*/
|
|
21
|
+
export class CaeBarChart extends ChartElement {
|
|
22
|
+
static override styles = [
|
|
23
|
+
...ChartElement.styles,
|
|
24
|
+
css`
|
|
25
|
+
.bars { display: grid; grid-template-columns: minmax(80px, max-content) minmax(0, 1fr) max-content; gap: 6px 12px; align-items: center;
|
|
26
|
+
font-size: var(--font-size-sm); }
|
|
27
|
+
.bars .r { display: contents; }
|
|
28
|
+
.bars .l { color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 34ch; }
|
|
29
|
+
.bars .track { display: block; height: 12px; }
|
|
30
|
+
.bars .bar { display: block; height: 100%; min-width: 2px; border-radius: 1px 4px 4px 1px; background: var(--series-1); }
|
|
31
|
+
.bars .bar[data-tone] { background: var(--tone); }
|
|
32
|
+
.bars .v { color: var(--text-2); font-variant-numeric: tabular-nums; text-align: right; }
|
|
33
|
+
`,
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
@property({ attribute: false }) bars: readonly ChartBar[] = [];
|
|
37
|
+
|
|
38
|
+
protected hasValues(): boolean {
|
|
39
|
+
return this.bars.length > 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
protected legendItems(): LegendItem[] {
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
protected itemCount(): number {
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
protected plot(): TemplateResult {
|
|
51
|
+
const top = Math.max(0, ...this.bars.map((b) => b.value));
|
|
52
|
+
return html`<div class="bars" role="list" aria-label=${this.label || nothing}>
|
|
53
|
+
${this.bars.map(
|
|
54
|
+
(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
|
+
)}
|
|
60
|
+
</div>`;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
protected table(): TemplateResult {
|
|
64
|
+
return html`<table aria-label=${this.label || nothing}>
|
|
65
|
+
<tbody>${this.bars.map((b) => html`<tr><th scope="row">${b.label}</th><td>${this.format(b.value)}</td></tr>`)}</tbody>
|
|
66
|
+
</table>`;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
declare global {
|
|
71
|
+
interface HTMLElementTagNameMap {
|
|
72
|
+
'cae-bar-chart': CaeBarChart;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
// What every chart shares: its width, its words, a legend, the switch to a table of
|
|
2
|
+
// its values, and the tooltip of the item the reader points at or moves to.
|
|
3
|
+
import { LitElement, css, html, nothing, type TemplateResult } from 'lit';
|
|
4
|
+
import { property, state } from 'lit/decorators.js';
|
|
5
|
+
import { withDefaults } from '../core/strings.js';
|
|
6
|
+
import { legend, legendStyles, type LegendItem } from '../primitives/legend.js';
|
|
7
|
+
import { base } from '../styles/index.js';
|
|
8
|
+
import { plainNumber } from './scale.js';
|
|
9
|
+
import { DEFAULT_CHART_STRINGS, type ChartStrings, type ValueText } from './types.js';
|
|
10
|
+
|
|
11
|
+
/** The size of the axis labels, in px. */
|
|
12
|
+
const AXIS_PX = 10.5;
|
|
13
|
+
/** The room beside a label, in px, so that labels side by side do not touch. */
|
|
14
|
+
const LABEL_ROOM = 6;
|
|
15
|
+
|
|
16
|
+
let measurer: CanvasRenderingContext2D | null | undefined;
|
|
17
|
+
const measured = new Map<string, number>();
|
|
18
|
+
|
|
19
|
+
/** `text`'s width in px in the CSS font `font`; where there is no canvas to measure it, an estimate. */
|
|
20
|
+
function measureText(text: string, font: string): number {
|
|
21
|
+
measurer ??= typeof document === 'undefined' ? null : document.createElement('canvas').getContext('2d');
|
|
22
|
+
if (!measurer) return text.length * AXIS_PX * 0.62;
|
|
23
|
+
const key = `${font}\n${text}`;
|
|
24
|
+
let w = measured.get(key);
|
|
25
|
+
if (w === undefined) {
|
|
26
|
+
measurer.font = font;
|
|
27
|
+
w = measurer.measureText(text).width;
|
|
28
|
+
measured.set(key, w);
|
|
29
|
+
}
|
|
30
|
+
return w;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export abstract class ChartElement extends LitElement {
|
|
34
|
+
static override styles = [
|
|
35
|
+
base,
|
|
36
|
+
legendStyles,
|
|
37
|
+
css`
|
|
38
|
+
:host { display: block; min-width: 0; }
|
|
39
|
+
.head { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 8px; min-height: 22px; }
|
|
40
|
+
.head .legend { flex: 1; min-width: 0; }
|
|
41
|
+
.head .legend span { color: var(--text-2); }
|
|
42
|
+
.switch { margin-left: auto; flex: none; background: none; border: 1px solid var(--line); border-radius: 999px; padding: 2px 10px;
|
|
43
|
+
font: inherit; font-size: var(--font-size-sm); color: var(--text-muted); cursor: pointer; }
|
|
44
|
+
.switch:hover, .switch:focus-visible { color: var(--text); border-color: var(--line2); }
|
|
45
|
+
.plot { position: relative; outline-offset: 2px; }
|
|
46
|
+
.plot:focus-visible { outline: 2px solid var(--accent); border-radius: var(--radius-sm); }
|
|
47
|
+
svg { display: block; overflow: visible; }
|
|
48
|
+
.axis { font-size: ${AXIS_PX}px; fill: var(--text-muted); font-variant-numeric: tabular-nums; }
|
|
49
|
+
.grid { stroke: var(--line); stroke-width: 1; shape-rendering: crispEdges; }
|
|
50
|
+
.base { stroke: var(--line2); stroke-width: 1; shape-rendering: crispEdges; }
|
|
51
|
+
.hit { fill: transparent; }
|
|
52
|
+
.band { fill: var(--text); opacity: 0.05; }
|
|
53
|
+
.tip { position: absolute; z-index: 2; pointer-events: none; padding: 6px 9px; border-radius: var(--radius-sm); background: var(--raise);
|
|
54
|
+
border: 1px solid var(--line2); box-shadow: 0 4px 14px var(--shadow); color: var(--text); font-size: var(--font-size-sm);
|
|
55
|
+
white-space: nowrap; line-height: 1.45; }
|
|
56
|
+
.tip b { font-weight: 600; }
|
|
57
|
+
.tip .row { display: flex; align-items: center; gap: 6px; }
|
|
58
|
+
.tip .row i { width: 9px; height: 9px; border-radius: 2px; flex: none; }
|
|
59
|
+
.tip .row .v { margin-left: auto; padding-left: 12px; font-variant-numeric: tabular-nums; }
|
|
60
|
+
.scale { display: inline-flex; gap: 1px; margin-right: 6px; vertical-align: -1px; }
|
|
61
|
+
.legend .scale i { width: 12px; height: 10px; margin: 0; border-radius: 2px; }
|
|
62
|
+
.empty { padding: 18px 0; color: var(--text-muted); font-size: var(--font-size-sm); }
|
|
63
|
+
table { border-collapse: collapse; font-size: var(--font-size-sm); font-variant-numeric: tabular-nums; }
|
|
64
|
+
.tbl { overflow-x: auto; max-width: 100%; }
|
|
65
|
+
th, td { padding: 4px 12px 4px 0; text-align: right; white-space: nowrap; border-bottom: 1px solid var(--line); }
|
|
66
|
+
th { color: var(--text-muted); font-weight: 500; }
|
|
67
|
+
th:first-child, td:first-child { text-align: left; }
|
|
68
|
+
td { color: var(--text-2); }
|
|
69
|
+
`,
|
|
70
|
+
];
|
|
71
|
+
|
|
72
|
+
/** The chart's accessible name (its title, or what it shows). */
|
|
73
|
+
@property() label = '';
|
|
74
|
+
/** A value in words: the host's format for the chart's unit. */
|
|
75
|
+
@property({ attribute: false }) format: ValueText = plainNumber;
|
|
76
|
+
@property({ attribute: false }) strings: Partial<ChartStrings> = {};
|
|
77
|
+
/** The plot's height in px (the axis included). */
|
|
78
|
+
@property({ type: Number }) height = 200;
|
|
79
|
+
|
|
80
|
+
/** The width the chart has, in px. */
|
|
81
|
+
@state() protected width = 0;
|
|
82
|
+
/** The values shown as a table instead of the chart. */
|
|
83
|
+
@state() protected asTable = false;
|
|
84
|
+
/** The item the reader points at or moved to with the keys; null: none. */
|
|
85
|
+
@state() protected active: number | null = null;
|
|
86
|
+
|
|
87
|
+
private resized: ResizeObserver | null = null;
|
|
88
|
+
|
|
89
|
+
protected get words(): ChartStrings {
|
|
90
|
+
return withDefaults(DEFAULT_CHART_STRINGS, this.strings);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
override connectedCallback(): void {
|
|
94
|
+
super.connectedCallback();
|
|
95
|
+
if (typeof ResizeObserver === 'undefined') return;
|
|
96
|
+
this.resized ??= new ResizeObserver((entries) => {
|
|
97
|
+
const w = Math.floor(entries[0]?.contentRect.width ?? 0);
|
|
98
|
+
if (w && Math.abs(w - this.width) >= 1) this.width = w;
|
|
99
|
+
});
|
|
100
|
+
this.resized.observe(this);
|
|
101
|
+
document.fonts?.addEventListener('loadingdone', this.fontsLoaded);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
override disconnectedCallback(): void {
|
|
105
|
+
super.disconnectedCallback();
|
|
106
|
+
this.resized?.disconnect();
|
|
107
|
+
document.fonts?.removeEventListener('loadingdone', this.fontsLoaded);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** A font that loads late changes the labels' widths: they are measured again. */
|
|
111
|
+
private readonly fontsLoaded = (): void => {
|
|
112
|
+
measured.clear();
|
|
113
|
+
this.requestUpdate();
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
/** An axis label's width in px, as the chart draws it, with room beside it: measured in the chart's font. */
|
|
117
|
+
protected labelWidth(text: string): number {
|
|
118
|
+
const cs = getComputedStyle(this);
|
|
119
|
+
return Math.ceil(measureText(text, `${cs.fontStyle} ${cs.fontWeight} ${AXIS_PX}px ${cs.fontFamily}`)) + LABEL_ROOM;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
protected override firstUpdated(): void {
|
|
123
|
+
if (!this.width) this.width = Math.floor(this.getBoundingClientRect().width) || 600;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** The plot area's width: the element's, never less than a narrow screen's. */
|
|
127
|
+
protected get plotWidth(): number {
|
|
128
|
+
return Math.max(240, this.width || 600);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** Whether there is anything to draw. */
|
|
132
|
+
protected abstract hasValues(): boolean;
|
|
133
|
+
/** The legend's entries: none for a single series, whose title names it. */
|
|
134
|
+
protected abstract legendItems(): LegendItem[];
|
|
135
|
+
/** How many items the keys move between. */
|
|
136
|
+
protected abstract itemCount(): number;
|
|
137
|
+
/** How many items the up and down keys move by: a row of a grid; 1 for a row of items. */
|
|
138
|
+
protected rowLength(): number {
|
|
139
|
+
return 1;
|
|
140
|
+
}
|
|
141
|
+
protected abstract plot(): TemplateResult;
|
|
142
|
+
protected abstract table(): TemplateResult;
|
|
143
|
+
|
|
144
|
+
override render() {
|
|
145
|
+
const s = this.words;
|
|
146
|
+
if (!this.hasValues()) return html`<div class="empty" part="empty">${s.empty}</div>`;
|
|
147
|
+
const items = this.legendItems();
|
|
148
|
+
return html`<div class="head">
|
|
149
|
+
${items.length ? legend(items, { label: this.label }) : html`<span class="legend"></span>`}
|
|
150
|
+
<button type="button" class="switch" part="switch" aria-pressed=${this.asTable}
|
|
151
|
+
@click=${() => ((this.asTable = !this.asTable), (this.active = null))}>${this.asTable ? s.showChart : s.showTable}</button>
|
|
152
|
+
</div>
|
|
153
|
+
${this.asTable
|
|
154
|
+
? html`<div class="tbl" part="table">${this.table()}</div>`
|
|
155
|
+
: html`<div class="plot" part="plot" tabindex=${this.itemCount() ? 0 : nothing} role="group" aria-label=${this.label || nothing}
|
|
156
|
+
@keydown=${this.onKey} @blur=${() => (this.active = null)} @mouseleave=${() => (this.active = null)}>${this.plot()}</div>`}`;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/** 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. */
|
|
160
|
+
private readonly onKey = (e: KeyboardEvent): void => {
|
|
161
|
+
const n = this.itemCount();
|
|
162
|
+
if (!n) return;
|
|
163
|
+
const at = this.active;
|
|
164
|
+
let next: number | null = at;
|
|
165
|
+
const row = this.rowLength();
|
|
166
|
+
const by = e.key === 'ArrowRight' ? 1 : e.key === 'ArrowLeft' ? -1 : e.key === 'ArrowDown' ? row : e.key === 'ArrowUp' ? -row : 0;
|
|
167
|
+
if (by) next = at === null ? (by > 0 ? 0 : n - 1) : Math.min(n - 1, Math.max(0, at + by));
|
|
168
|
+
else if (e.key === 'Home') next = 0;
|
|
169
|
+
else if (e.key === 'End') next = n - 1;
|
|
170
|
+
else if (e.key === 'Escape') next = null;
|
|
171
|
+
else return;
|
|
172
|
+
e.preventDefault();
|
|
173
|
+
this.active = next;
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
/** A tooltip at `left` px (its middle) and `top` px of the plot, kept inside it. */
|
|
177
|
+
protected tip(left: number, top: number, body: TemplateResult): TemplateResult {
|
|
178
|
+
const w = this.plotWidth;
|
|
179
|
+
const side = left > w * 0.6 ? 'right' : 'left';
|
|
180
|
+
const x = side === 'left' ? Math.max(0, left + 12) : Math.max(0, w - left + 12);
|
|
181
|
+
return html`<div class="tip" role="status" style="${side}: ${x}px; top: ${Math.max(0, top)}px">${body}</div>`;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/** One line of a tooltip: a swatch, a name and its value. */
|
|
185
|
+
protected tipRow(colour: string | null, name: string, value: string): TemplateResult {
|
|
186
|
+
return html`<div class="row">${colour ? html`<i style="background: ${colour}"></i>` : nothing}<span>${name}</span><span class="v">${value}</span></div>`;
|
|
187
|
+
}
|
|
188
|
+
}
|