@contraagent/elements 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -2
- package/custom-elements.json +4260 -0
- package/dist/charts/bar-chart.d.ts +32 -0
- package/dist/charts/bar-chart.d.ts.map +1 -0
- package/dist/charts/bar-chart.js +70 -0
- package/dist/charts/bar-chart.js.map +1 -0
- package/dist/charts/base.d.ts +48 -0
- package/dist/charts/base.d.ts.map +1 -0
- package/dist/charts/base.js +203 -0
- package/dist/charts/base.js.map +1 -0
- package/dist/charts/column-chart.d.ts +42 -0
- package/dist/charts/column-chart.d.ts.map +1 -0
- package/dist/charts/column-chart.js +146 -0
- package/dist/charts/column-chart.js.map +1 -0
- package/dist/charts/heatmap.d.ts +42 -0
- package/dist/charts/heatmap.d.ts.map +1 -0
- package/dist/charts/heatmap.js +124 -0
- package/dist/charts/heatmap.js.map +1 -0
- package/dist/charts/index.d.ts +9 -0
- package/dist/charts/index.d.ts.map +1 -0
- package/dist/charts/index.js +11 -0
- package/dist/charts/index.js.map +1 -0
- package/dist/charts/line-chart.d.ts +36 -0
- package/dist/charts/line-chart.d.ts.map +1 -0
- package/dist/charts/line-chart.js +118 -0
- package/dist/charts/line-chart.js.map +1 -0
- package/dist/charts/scale.d.ts +32 -0
- package/dist/charts/scale.d.ts.map +1 -0
- package/dist/charts/scale.js +50 -0
- package/dist/charts/scale.js.map +1 -0
- package/dist/charts/state-grid.d.ts +64 -0
- package/dist/charts/state-grid.d.ts.map +1 -0
- package/dist/charts/state-grid.js +223 -0
- package/dist/charts/state-grid.js.map +1 -0
- package/dist/charts/types.d.ts +34 -0
- package/dist/charts/types.d.ts.map +1 -0
- package/dist/charts/types.js +11 -0
- package/dist/charts/types.js.map +1 -0
- package/dist/checks/check-table.d.ts +32 -0
- package/dist/checks/check-table.d.ts.map +1 -0
- package/dist/checks/check-table.js +94 -0
- package/dist/checks/check-table.js.map +1 -0
- package/dist/checks/index.d.ts +4 -0
- package/dist/checks/index.d.ts.map +1 -0
- package/dist/checks/index.js +6 -0
- package/dist/checks/index.js.map +1 -0
- package/dist/checks/styles.d.ts +5 -0
- package/dist/checks/styles.d.ts.map +1 -0
- package/dist/checks/styles.js +30 -0
- package/dist/checks/styles.js.map +1 -0
- package/dist/checks/types.d.ts +35 -0
- package/dist/checks/types.d.ts.map +1 -0
- package/dist/checks/types.js +12 -0
- package/dist/checks/types.js.map +1 -0
- package/dist/core/clock.d.ts +20 -0
- package/dist/core/clock.d.ts.map +1 -0
- package/dist/core/clock.js +45 -0
- package/dist/core/clock.js.map +1 -0
- package/dist/core/define.d.ts +3 -0
- package/dist/core/define.d.ts.map +1 -0
- package/dist/core/define.js +8 -0
- package/dist/core/define.js.map +1 -0
- package/dist/core/events.d.ts +78 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +8 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/format.d.ts +8 -0
- package/dist/core/format.d.ts.map +1 -0
- package/dist/core/format.js +28 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/frame.d.ts +4 -0
- package/dist/core/frame.d.ts.map +1 -0
- package/dist/core/frame.js +5 -0
- package/dist/core/frame.js.map +1 -0
- package/dist/core/strings.d.ts +3 -0
- package/dist/core/strings.d.ts.map +1 -0
- package/dist/core/strings.js +14 -0
- package/dist/core/strings.js.map +1 -0
- package/dist/core/tone.d.ts +8 -0
- package/dist/core/tone.d.ts.map +1 -0
- package/dist/core/tone.js +9 -0
- package/dist/core/tone.js.map +1 -0
- package/dist/count/count.d.ts +22 -0
- package/dist/count/count.d.ts.map +1 -0
- package/dist/count/count.js +60 -0
- package/dist/count/count.js.map +1 -0
- package/dist/count/elapsed.d.ts +18 -0
- package/dist/count/elapsed.d.ts.map +1 -0
- package/dist/count/elapsed.js +33 -0
- package/dist/count/elapsed.js.map +1 -0
- package/dist/count/index.d.ts +3 -0
- package/dist/count/index.d.ts.map +1 -0
- package/dist/count/index.js +5 -0
- package/dist/count/index.js.map +1 -0
- package/dist/define/all.d.ts +13 -0
- package/dist/define/all.d.ts.map +1 -0
- package/dist/define/all.js +14 -0
- package/dist/define/all.js.map +1 -0
- package/dist/define/charts.d.ts +8 -0
- package/dist/define/charts.d.ts.map +1 -0
- package/dist/define/charts.js +15 -0
- package/dist/define/charts.js.map +1 -0
- package/dist/define/check-table.d.ts +4 -0
- package/dist/define/check-table.d.ts.map +1 -0
- package/dist/define/check-table.js +7 -0
- package/dist/define/check-table.js.map +1 -0
- package/dist/define/count.d.ts +5 -0
- package/dist/define/count.d.ts.map +1 -0
- package/dist/define/count.js +9 -0
- package/dist/define/count.js.map +1 -0
- package/dist/define/data-table.d.ts +4 -0
- package/dist/define/data-table.d.ts.map +1 -0
- package/dist/define/data-table.js +7 -0
- package/dist/define/data-table.js.map +1 -0
- package/dist/define/graph.d.ts +6 -0
- package/dist/define/graph.d.ts.map +1 -0
- package/dist/define/graph.js +9 -0
- package/dist/define/graph.js.map +1 -0
- package/dist/define/json-tree.d.ts +4 -0
- package/dist/define/json-tree.d.ts.map +1 -0
- package/dist/define/json-tree.js +7 -0
- package/dist/define/json-tree.js.map +1 -0
- package/dist/define/lanes.d.ts +4 -0
- package/dist/define/lanes.d.ts.map +1 -0
- package/dist/define/lanes.js +7 -0
- package/dist/define/lanes.js.map +1 -0
- package/dist/define/markdown.d.ts +4 -0
- package/dist/define/markdown.d.ts.map +1 -0
- package/dist/define/markdown.js +7 -0
- package/dist/define/markdown.js.map +1 -0
- package/dist/define/matrix.d.ts +4 -0
- package/dist/define/matrix.d.ts.map +1 -0
- package/dist/define/matrix.js +7 -0
- package/dist/define/matrix.js.map +1 -0
- package/dist/define/segmented.d.ts +4 -0
- package/dist/define/segmented.d.ts.map +1 -0
- package/dist/define/segmented.js +7 -0
- package/dist/define/segmented.js.map +1 -0
- package/dist/define/tiles.d.ts +5 -0
- package/dist/define/tiles.d.ts.map +1 -0
- package/dist/define/tiles.js +9 -0
- package/dist/define/tiles.js.map +1 -0
- package/dist/define/transcript.d.ts +4 -0
- package/dist/define/transcript.d.ts.map +1 -0
- package/dist/define/transcript.js +7 -0
- package/dist/define/transcript.js.map +1 -0
- package/dist/graph/arrange.d.ts +43 -0
- package/dist/graph/arrange.d.ts.map +1 -0
- package/dist/graph/arrange.js +390 -0
- package/dist/graph/arrange.js.map +1 -0
- package/dist/graph/card.d.ts +71 -0
- package/dist/graph/card.d.ts.map +1 -0
- package/dist/graph/card.js +185 -0
- package/dist/graph/card.js.map +1 -0
- package/dist/graph/host.d.ts +82 -0
- package/dist/graph/host.d.ts.map +1 -0
- package/dist/graph/host.js +21 -0
- package/dist/graph/host.js.map +1 -0
- package/dist/graph/icons.d.ts +7 -0
- package/dist/graph/icons.d.ts.map +1 -0
- package/dist/graph/icons.js +18 -0
- package/dist/graph/icons.js.map +1 -0
- package/dist/graph/index.d.ts +15 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +17 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/layered-graph.d.ts +226 -0
- package/dist/graph/layered-graph.d.ts.map +1 -0
- package/dist/graph/layered-graph.js +396 -0
- package/dist/graph/layered-graph.js.map +1 -0
- package/dist/graph/layout.d.ts +80 -0
- package/dist/graph/layout.d.ts.map +1 -0
- package/dist/graph/layout.js +264 -0
- package/dist/graph/layout.js.map +1 -0
- package/dist/graph/marks.d.ts +24 -0
- package/dist/graph/marks.d.ts.map +1 -0
- package/dist/graph/marks.js +38 -0
- package/dist/graph/marks.js.map +1 -0
- package/dist/graph/nav.d.ts +14 -0
- package/dist/graph/nav.d.ts.map +1 -0
- package/dist/graph/nav.js +14 -0
- package/dist/graph/nav.js.map +1 -0
- package/dist/graph/pan-zoom.d.ts +80 -0
- package/dist/graph/pan-zoom.d.ts.map +1 -0
- package/dist/graph/pan-zoom.js +191 -0
- package/dist/graph/pan-zoom.js.map +1 -0
- package/dist/graph/paths.d.ts +9 -0
- package/dist/graph/paths.d.ts.map +1 -0
- package/dist/graph/paths.js +44 -0
- package/dist/graph/paths.js.map +1 -0
- package/dist/graph/place-card.d.ts +36 -0
- package/dist/graph/place-card.d.ts.map +1 -0
- package/dist/graph/place-card.js +68 -0
- package/dist/graph/place-card.js.map +1 -0
- package/dist/graph/strings.d.ts +50 -0
- package/dist/graph/strings.d.ts.map +1 -0
- package/dist/graph/strings.js +37 -0
- package/dist/graph/strings.js.map +1 -0
- package/dist/graph/styles.d.ts +2 -0
- package/dist/graph/styles.d.ts.map +1 -0
- package/dist/graph/styles.js +203 -0
- package/dist/graph/styles.js.map +1 -0
- package/dist/graph/types.d.ts +184 -0
- package/dist/graph/types.d.ts.map +1 -0
- package/dist/graph/types.js +2 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/graph/view.d.ts +17 -0
- package/dist/graph/view.d.ts.map +1 -0
- package/dist/graph/view.js +21 -0
- package/dist/graph/view.js.map +1 -0
- package/dist/graph/views/dag.d.ts +10 -0
- package/dist/graph/views/dag.d.ts.map +1 -0
- package/dist/graph/views/dag.js +292 -0
- package/dist/graph/views/dag.js.map +1 -0
- package/dist/graph/views/foot.d.ts +8 -0
- package/dist/graph/views/foot.d.ts.map +1 -0
- package/dist/graph/views/foot.js +103 -0
- package/dist/graph/views/foot.js.map +1 -0
- package/dist/graph/views/node-table.d.ts +17 -0
- package/dist/graph/views/node-table.d.ts.map +1 -0
- package/dist/graph/views/node-table.js +80 -0
- package/dist/graph/views/node-table.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/json/index.d.ts +2 -0
- package/dist/json/index.d.ts.map +1 -0
- package/dist/json/index.js +3 -0
- package/dist/json/index.js.map +1 -0
- package/dist/json/json-tree.d.ts +21 -0
- package/dist/json/json-tree.d.ts.map +1 -0
- package/dist/json/json-tree.js +51 -0
- package/dist/json/json-tree.js.map +1 -0
- package/dist/lanes/index.d.ts +5 -0
- package/dist/lanes/index.d.ts.map +1 -0
- package/dist/lanes/index.js +7 -0
- package/dist/lanes/index.js.map +1 -0
- package/dist/lanes/lanes.d.ts +56 -0
- package/dist/lanes/lanes.d.ts.map +1 -0
- package/dist/lanes/lanes.js +160 -0
- package/dist/lanes/lanes.js.map +1 -0
- package/dist/lanes/stack.d.ts +26 -0
- package/dist/lanes/stack.d.ts.map +1 -0
- package/dist/lanes/stack.js +43 -0
- package/dist/lanes/stack.js.map +1 -0
- package/dist/lanes/styles.d.ts +2 -0
- package/dist/lanes/styles.d.ts.map +1 -0
- package/dist/lanes/styles.js +30 -0
- package/dist/lanes/styles.js.map +1 -0
- package/dist/lanes/types.d.ts +41 -0
- package/dist/lanes/types.d.ts.map +1 -0
- package/dist/lanes/types.js +6 -0
- package/dist/lanes/types.js.map +1 -0
- package/dist/markdown/cae-markdown.d.ts +37 -0
- package/dist/markdown/cae-markdown.d.ts.map +1 -0
- package/dist/markdown/cae-markdown.js +68 -0
- package/dist/markdown/cae-markdown.js.map +1 -0
- package/dist/markdown/highlight.d.ts +5 -0
- package/dist/markdown/highlight.d.ts.map +1 -0
- package/dist/markdown/highlight.js +86 -0
- package/dist/markdown/highlight.js.map +1 -0
- package/dist/markdown/index.d.ts +4 -0
- package/dist/markdown/index.d.ts.map +1 -0
- package/dist/markdown/index.js +6 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/markdown.d.ts +4 -0
- package/dist/markdown/markdown.d.ts.map +1 -0
- package/dist/markdown/markdown.js +105 -0
- package/dist/markdown/markdown.js.map +1 -0
- package/dist/matrix/grid-step.d.ts +8 -0
- package/dist/matrix/grid-step.d.ts.map +1 -0
- package/dist/matrix/grid-step.js +69 -0
- package/dist/matrix/grid-step.js.map +1 -0
- package/dist/matrix/index.d.ts +5 -0
- package/dist/matrix/index.d.ts.map +1 -0
- package/dist/matrix/index.js +7 -0
- package/dist/matrix/index.js.map +1 -0
- package/dist/matrix/mark-matrix.d.ts +97 -0
- package/dist/matrix/mark-matrix.d.ts.map +1 -0
- package/dist/matrix/mark-matrix.js +272 -0
- package/dist/matrix/mark-matrix.js.map +1 -0
- package/dist/matrix/styles.d.ts +4 -0
- package/dist/matrix/styles.d.ts.map +1 -0
- package/dist/matrix/styles.js +47 -0
- package/dist/matrix/styles.js.map +1 -0
- package/dist/matrix/types.d.ts +79 -0
- package/dist/matrix/types.d.ts.map +1 -0
- package/dist/matrix/types.js +5 -0
- package/dist/matrix/types.js.map +1 -0
- package/dist/primitives/fact-line.d.ts +14 -0
- package/dist/primitives/fact-line.d.ts.map +1 -0
- package/dist/primitives/fact-line.js +18 -0
- package/dist/primitives/fact-line.js.map +1 -0
- package/dist/primitives/icon.d.ts +14 -0
- package/dist/primitives/icon.d.ts.map +1 -0
- package/dist/primitives/icon.js +19 -0
- package/dist/primitives/icon.js.map +1 -0
- package/dist/primitives/index.d.ts +10 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +13 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/legend.d.ts +28 -0
- package/dist/primitives/legend.d.ts.map +1 -0
- package/dist/primitives/legend.js +28 -0
- package/dist/primitives/legend.js.map +1 -0
- package/dist/primitives/pill.d.ts +23 -0
- package/dist/primitives/pill.d.ts.map +1 -0
- package/dist/primitives/pill.js +40 -0
- package/dist/primitives/pill.js.map +1 -0
- package/dist/primitives/roving-focus.d.ts +47 -0
- package/dist/primitives/roving-focus.d.ts.map +1 -0
- package/dist/primitives/roving-focus.js +111 -0
- package/dist/primitives/roving-focus.js.map +1 -0
- package/dist/primitives/segmented.d.ts +41 -0
- package/dist/primitives/segmented.d.ts.map +1 -0
- package/dist/primitives/segmented.js +88 -0
- package/dist/primitives/segmented.js.map +1 -0
- package/dist/primitives/share-bar.d.ts +37 -0
- package/dist/primitives/share-bar.d.ts.map +1 -0
- package/dist/primitives/share-bar.js +69 -0
- package/dist/primitives/share-bar.js.map +1 -0
- package/dist/primitives/states.d.ts +19 -0
- package/dist/primitives/states.d.ts.map +1 -0
- package/dist/primitives/states.js +11 -0
- package/dist/primitives/states.js.map +1 -0
- package/dist/primitives/window.d.ts +24 -0
- package/dist/primitives/window.d.ts.map +1 -0
- package/dist/primitives/window.js +56 -0
- package/dist/primitives/window.js.map +1 -0
- package/dist/styles/chips.d.ts +2 -0
- package/dist/styles/chips.d.ts.map +1 -0
- package/dist/styles/chips.js +18 -0
- package/dist/styles/chips.js.map +1 -0
- package/dist/styles/facts.d.ts +2 -0
- package/dist/styles/facts.d.ts.map +1 -0
- package/dist/styles/facts.js +7 -0
- package/dist/styles/facts.js.map +1 -0
- package/dist/styles/index.d.ts +16 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/index.js +15 -0
- package/dist/styles/index.js.map +1 -0
- package/dist/styles/layout.d.ts +2 -0
- package/dist/styles/layout.d.ts.map +1 -0
- package/dist/styles/layout.js +33 -0
- package/dist/styles/layout.js.map +1 -0
- package/dist/styles/marks.d.ts +2 -0
- package/dist/styles/marks.d.ts.map +1 -0
- package/dist/styles/marks.js +30 -0
- package/dist/styles/marks.js.map +1 -0
- package/dist/styles/meter.d.ts +3 -0
- package/dist/styles/meter.d.ts.map +1 -0
- package/dist/styles/meter.js +9 -0
- package/dist/styles/meter.js.map +1 -0
- package/dist/styles/motion.d.ts +2 -0
- package/dist/styles/motion.d.ts.map +1 -0
- package/dist/styles/motion.js +27 -0
- package/dist/styles/motion.js.map +1 -0
- package/dist/styles/prose.d.ts +3 -0
- package/dist/styles/prose.d.ts.map +1 -0
- package/dist/styles/prose.js +59 -0
- package/dist/styles/prose.js.map +1 -0
- package/dist/styles/reset.d.ts +2 -0
- package/dist/styles/reset.d.ts.map +1 -0
- package/dist/styles/reset.js +13 -0
- package/dist/styles/reset.js.map +1 -0
- package/dist/styles/status.d.ts +2 -0
- package/dist/styles/status.d.ts.map +1 -0
- package/dist/styles/status.js +52 -0
- package/dist/styles/status.js.map +1 -0
- package/dist/styles/text.d.ts +2 -0
- package/dist/styles/text.d.ts.map +1 -0
- package/dist/styles/text.js +21 -0
- package/dist/styles/text.js.map +1 -0
- package/dist/styles/tokens.d.ts +8 -0
- package/dist/styles/tokens.d.ts.map +1 -0
- package/dist/styles/tokens.js +32 -0
- package/dist/styles/tokens.js.map +1 -0
- package/dist/table/data-table.d.ts +106 -0
- package/dist/table/data-table.d.ts.map +1 -0
- package/dist/table/data-table.js +408 -0
- package/dist/table/data-table.js.map +1 -0
- package/dist/table/index.d.ts +4 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/table/index.js +6 -0
- package/dist/table/index.js.map +1 -0
- package/dist/table/styles.d.ts +2 -0
- package/dist/table/styles.d.ts.map +1 -0
- package/dist/table/styles.js +32 -0
- package/dist/table/styles.js.map +1 -0
- package/dist/table/types.d.ts +48 -0
- package/dist/table/types.d.ts.map +1 -0
- package/dist/table/types.js +30 -0
- package/dist/table/types.js.map +1 -0
- package/dist/themes/boot.d.ts +7 -0
- package/dist/themes/boot.d.ts.map +1 -0
- package/dist/themes/boot.js +14 -0
- package/dist/themes/boot.js.map +1 -0
- package/dist/themes/choice.d.ts +16 -0
- package/dist/themes/choice.d.ts.map +1 -0
- package/dist/themes/choice.js +45 -0
- package/dist/themes/choice.js.map +1 -0
- package/dist/themes/data.d.ts +43 -0
- package/dist/themes/data.d.ts.map +1 -0
- package/dist/themes/data.js +408 -0
- package/dist/themes/data.js.map +1 -0
- package/dist/themes/index.d.ts +7 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +11 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/sheet.d.ts +16 -0
- package/dist/themes/sheet.d.ts.map +1 -0
- package/dist/themes/sheet.js +28 -0
- package/dist/themes/sheet.js.map +1 -0
- package/dist/themes/token-meanings.d.ts +3 -0
- package/dist/themes/token-meanings.d.ts.map +1 -0
- package/dist/themes/token-meanings.js +67 -0
- package/dist/themes/token-meanings.js.map +1 -0
- package/dist/themes/tokens-list.d.ts +14 -0
- package/dist/themes/tokens-list.d.ts.map +1 -0
- package/dist/themes/tokens-list.js +69 -0
- package/dist/themes/tokens-list.js.map +1 -0
- package/dist/tiles/index.d.ts +4 -0
- package/dist/tiles/index.d.ts.map +1 -0
- package/dist/tiles/index.js +6 -0
- package/dist/tiles/index.js.map +1 -0
- package/dist/tiles/stat-tiles.d.ts +40 -0
- package/dist/tiles/stat-tiles.d.ts.map +1 -0
- package/dist/tiles/stat-tiles.js +99 -0
- package/dist/tiles/stat-tiles.js.map +1 -0
- package/dist/tiles/styles.d.ts +2 -0
- package/dist/tiles/styles.d.ts.map +1 -0
- package/dist/tiles/styles.js +23 -0
- package/dist/tiles/styles.js.map +1 -0
- package/dist/tiles/types.d.ts +22 -0
- package/dist/tiles/types.d.ts.map +1 -0
- package/dist/tiles/types.js +2 -0
- package/dist/tiles/types.js.map +1 -0
- package/dist/transcript/follow-scroll.d.ts +21 -0
- package/dist/transcript/follow-scroll.d.ts.map +1 -0
- package/dist/transcript/follow-scroll.js +76 -0
- package/dist/transcript/follow-scroll.js.map +1 -0
- package/dist/transcript/index.d.ts +5 -0
- package/dist/transcript/index.d.ts.map +1 -0
- package/dist/transcript/index.js +7 -0
- package/dist/transcript/index.js.map +1 -0
- package/dist/transcript/styles.d.ts +2 -0
- package/dist/transcript/styles.d.ts.map +1 -0
- package/dist/transcript/styles.js +114 -0
- package/dist/transcript/styles.js.map +1 -0
- package/dist/transcript/tags.d.ts +6 -0
- package/dist/transcript/tags.d.ts.map +1 -0
- package/dist/transcript/tags.js +13 -0
- package/dist/transcript/tags.js.map +1 -0
- package/dist/transcript/tool-card.d.ts +16 -0
- package/dist/transcript/tool-card.d.ts.map +1 -0
- package/dist/transcript/tool-card.js +87 -0
- package/dist/transcript/tool-card.js.map +1 -0
- package/dist/transcript/transcript.d.ts +103 -0
- package/dist/transcript/transcript.d.ts.map +1 -0
- package/dist/transcript/transcript.js +397 -0
- package/dist/transcript/transcript.js.map +1 -0
- package/dist/transcript/types.d.ts +161 -0
- package/dist/transcript/types.d.ts.map +1 -0
- package/dist/transcript/types.js +25 -0
- package/dist/transcript/types.js.map +1 -0
- package/docs/charts.md +58 -0
- package/docs/check-table.md +40 -0
- package/docs/data-table.md +57 -0
- package/docs/examples/charts.ts +61 -0
- package/docs/examples/check-table.ts +19 -0
- package/docs/examples/ci-pipeline.ts +271 -0
- package/docs/examples/data-table.ts +39 -0
- package/docs/examples/graph.ts +57 -0
- package/docs/examples/lanes.ts +40 -0
- package/docs/examples/matrix.ts +56 -0
- package/docs/examples/page.css +34 -0
- package/docs/examples/segmented.ts +18 -0
- package/docs/examples/status.ts +30 -0
- package/docs/examples/theme.css +54 -0
- package/docs/examples/tiles.ts +27 -0
- package/docs/examples/transcript.ts +59 -0
- package/docs/graph.md +112 -0
- package/docs/lanes.md +48 -0
- package/docs/matrix.md +34 -0
- package/docs/page.md +87 -0
- package/docs/primitives.md +57 -0
- package/docs/strings.md +16 -0
- package/docs/theming.md +147 -0
- package/docs/tiles.md +40 -0
- package/docs/transcript.md +73 -0
- package/docs/tsconfig.json +20 -0
- package/package.json +161 -4
- package/src/charts/bar-chart.ts +74 -0
- package/src/charts/base.ts +188 -0
- package/src/charts/column-chart.ts +153 -0
- package/src/charts/heatmap.ts +129 -0
- package/src/charts/index.ts +10 -0
- package/src/charts/line-chart.ts +128 -0
- package/src/charts/scale.ts +61 -0
- package/src/charts/state-grid.ts +245 -0
- package/src/charts/types.ts +48 -0
- package/src/checks/check-table.ts +85 -0
- package/src/checks/index.ts +5 -0
- package/src/checks/styles.ts +31 -0
- package/src/checks/types.ts +48 -0
- package/src/core/clock.ts +46 -0
- package/src/core/define.ts +7 -0
- package/src/core/events.ts +89 -0
- package/src/core/format.ts +25 -0
- package/src/core/frame.ts +5 -0
- package/src/core/strings.ts +11 -0
- package/src/core/tone.ts +14 -0
- package/src/count/count.ts +54 -0
- package/src/count/elapsed.ts +33 -0
- package/src/count/index.ts +4 -0
- package/src/define/all.ts +13 -0
- package/src/define/charts.ts +17 -0
- package/src/define/check-table.ts +9 -0
- package/src/define/count.ts +11 -0
- package/src/define/data-table.ts +9 -0
- package/src/define/graph.ts +11 -0
- package/src/define/json-tree.ts +9 -0
- package/src/define/lanes.ts +9 -0
- package/src/define/markdown.ts +9 -0
- package/src/define/matrix.ts +9 -0
- package/src/define/segmented.ts +9 -0
- package/src/define/tiles.ts +11 -0
- package/src/define/transcript.ts +9 -0
- package/src/graph/arrange.ts +399 -0
- package/src/graph/card.ts +209 -0
- package/src/graph/host.ts +100 -0
- package/src/graph/icons.ts +23 -0
- package/src/graph/index.ts +16 -0
- package/src/graph/layered-graph.ts +417 -0
- package/src/graph/layout.ts +331 -0
- package/src/graph/marks.ts +42 -0
- package/src/graph/nav.ts +19 -0
- package/src/graph/pan-zoom.ts +219 -0
- package/src/graph/paths.ts +41 -0
- package/src/graph/place-card.ts +93 -0
- package/src/graph/strings.ts +86 -0
- package/src/graph/styles.ts +204 -0
- package/src/graph/types.ts +202 -0
- package/src/graph/view.ts +28 -0
- package/src/graph/views/dag.ts +294 -0
- package/src/graph/views/foot.ts +109 -0
- package/src/graph/views/node-table.ts +90 -0
- package/src/index.ts +25 -0
- package/src/json/index.ts +2 -0
- package/src/json/json-tree.ts +49 -0
- package/src/lanes/index.ts +6 -0
- package/src/lanes/lanes.ts +143 -0
- package/src/lanes/stack.ts +51 -0
- package/src/lanes/styles.ts +30 -0
- package/src/lanes/types.ts +51 -0
- package/src/markdown/cae-markdown.ts +64 -0
- package/src/markdown/highlight.ts +94 -0
- package/src/markdown/index.ts +5 -0
- package/src/markdown/markdown.ts +110 -0
- package/src/matrix/grid-step.ts +58 -0
- package/src/matrix/index.ts +6 -0
- package/src/matrix/mark-matrix.ts +285 -0
- package/src/matrix/styles.ts +48 -0
- package/src/matrix/types.ts +83 -0
- package/src/primitives/fact-line.ts +26 -0
- package/src/primitives/icon.ts +26 -0
- package/src/primitives/index.ts +12 -0
- package/src/primitives/legend.ts +56 -0
- package/src/primitives/pill.ts +58 -0
- package/src/primitives/roving-focus.ts +138 -0
- package/src/primitives/segmented.ts +92 -0
- package/src/primitives/share-bar.ts +94 -0
- package/src/primitives/states.ts +28 -0
- package/src/primitives/window.ts +65 -0
- package/src/styles/chips.ts +18 -0
- package/src/styles/facts.ts +7 -0
- package/src/styles/index.ts +19 -0
- package/src/styles/layout.ts +33 -0
- package/src/styles/marks.ts +30 -0
- package/src/styles/meter.ts +9 -0
- package/src/styles/motion.ts +27 -0
- package/src/styles/prose.ts +59 -0
- package/src/styles/reset.ts +13 -0
- package/src/styles/status.ts +52 -0
- package/src/styles/text.ts +21 -0
- package/src/styles/tokens.ts +35 -0
- package/src/table/data-table.ts +367 -0
- package/src/table/index.ts +5 -0
- package/src/table/styles.ts +32 -0
- package/src/table/types.ts +73 -0
- package/src/themes/boot.ts +14 -0
- package/src/themes/choice.ts +47 -0
- package/src/themes/data.ts +433 -0
- package/src/themes/index.ts +10 -0
- package/src/themes/sheet.ts +29 -0
- package/src/themes/token-meanings.ts +67 -0
- package/src/themes/tokens-list.ts +82 -0
- package/src/tiles/index.ts +5 -0
- package/src/tiles/stat-tiles.ts +92 -0
- package/src/tiles/styles.ts +23 -0
- package/src/tiles/types.ts +20 -0
- package/src/transcript/follow-scroll.ts +72 -0
- package/src/transcript/index.ts +6 -0
- package/src/transcript/styles.ts +114 -0
- package/src/transcript/tags.ts +18 -0
- package/src/transcript/tool-card.ts +103 -0
- package/src/transcript/transcript.ts +358 -0
- package/src/transcript/types.ts +167 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
// The selection's card in the graph's frame: placed beside the selected item
|
|
2
|
+
// (`place-card`), joined to it for the keyboard, and the focus put back on the item.
|
|
3
|
+
// The card's content is the host's (the `inspector` slot).
|
|
4
|
+
import type { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
5
|
+
import { PAD, placeCard, type Box } from './place-card.js';
|
|
6
|
+
|
|
7
|
+
export interface CardOptions {
|
|
8
|
+
/** The card is a sheet under the frame (a narrow screen): it is not placed. */
|
|
9
|
+
docked: () => boolean;
|
|
10
|
+
/** The frame's height. */
|
|
11
|
+
frameH: () => number;
|
|
12
|
+
/** The card needs another least height of the frame (`room`): make the frame that tall. */
|
|
13
|
+
grow: () => void;
|
|
14
|
+
/** A pointer is down on the frame. */
|
|
15
|
+
pressed: () => boolean;
|
|
16
|
+
/** The shadow root of a view drawn by another element in the frame (a mark matrix), or null. */
|
|
17
|
+
inner: () => ParentNode | null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** The selected item as drawn, what the card keeps clear of, and the box it is shown in. */
|
|
21
|
+
export interface Anchor {
|
|
22
|
+
item: HTMLElement;
|
|
23
|
+
clear: HTMLElement;
|
|
24
|
+
frame: HTMLElement;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** The focused element, inside the shadow roots it is in. */
|
|
28
|
+
function deepActive(root: DocumentOrShadowRoot | null | undefined): Element | null {
|
|
29
|
+
let at = root?.activeElement ?? null;
|
|
30
|
+
while (at?.shadowRoot?.activeElement) at = at.shadowRoot.activeElement;
|
|
31
|
+
return at;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The card (`.insp`) of the selected item in the host's frame (`.main > .frame`):
|
|
36
|
+
* a table row (`tr.sel > th`), a mark (`.mark.sel`, `.taskchip.sel`, in the frame or
|
|
37
|
+
* in the view of `inner`), a node (`.node.sel`) or a cluster (`.cluster.sel`). It
|
|
38
|
+
* runs after every draw, pan, zoom and scroll (`place`), and keeps Tab and Shift+Tab
|
|
39
|
+
* between the item and its card.
|
|
40
|
+
*/
|
|
41
|
+
export class CardController implements ReactiveController {
|
|
42
|
+
/** The frame height the card needs (0 without one). */
|
|
43
|
+
room = 0;
|
|
44
|
+
/** Focus is being put back, not moved by the reader: it does not select. */
|
|
45
|
+
quiet = false;
|
|
46
|
+
|
|
47
|
+
constructor(
|
|
48
|
+
private readonly host: ReactiveControllerHost & HTMLElement,
|
|
49
|
+
private readonly o: CardOptions,
|
|
50
|
+
) {
|
|
51
|
+
host.addController(this);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
hostConnected(): void {
|
|
55
|
+
this.host.addEventListener('keydown', this.onTabToCard);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
hostDisconnected(): void {
|
|
59
|
+
this.host.removeEventListener('keydown', this.onTabToCard);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private get root(): ParentNode {
|
|
63
|
+
return this.host.shadowRoot ?? this.host;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
private get focused(): Element | null {
|
|
67
|
+
return deepActive(this.host.shadowRoot);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** The card, when there is a selection. */
|
|
71
|
+
card(): HTMLElement | null {
|
|
72
|
+
return this.root.querySelector<HTMLElement>('.insp');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** The card's content: the elements the host put in the `inspector` slot. */
|
|
76
|
+
content(): Element[] {
|
|
77
|
+
return this.card()?.querySelector('slot')?.assignedElements({ flatten: true }) ?? [];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/** The buttons and links of the card's content, in order. */
|
|
81
|
+
private actions(): HTMLElement[] {
|
|
82
|
+
return this.content().flatMap((el) => [...(el.matches('button, a[href]') ? [el as HTMLElement] : []), ...el.querySelectorAll<HTMLElement>('button, a[href]')]);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* The selected item as drawn (a mark, a node, a cluster's header), what the card keeps clear of
|
|
87
|
+
* (a mark's whole node), and the box it is shown in (the frame, or a mark matrix).
|
|
88
|
+
*/
|
|
89
|
+
anchor(): Anchor | null {
|
|
90
|
+
const frame = this.root.querySelector<HTMLElement>('.main > .frame');
|
|
91
|
+
const row = frame?.querySelector<HTMLElement>('tr.sel > th');
|
|
92
|
+
if (frame && row) return { item: row, clear: row, frame };
|
|
93
|
+
const sel = frame?.querySelector<HTMLElement>('.mark.sel, .taskchip.sel, .node.sel, .cluster.sel') ?? this.o.inner()?.querySelector<HTMLElement>('.mark.sel');
|
|
94
|
+
if (!frame || !sel) return null;
|
|
95
|
+
// A cluster: the card points at its header, where its name is, and keeps clear of the whole cluster when there is room.
|
|
96
|
+
const item = sel.classList.contains('cluster') ? (sel.querySelector<HTMLElement>(':scope > .hd') ?? sel) : sel;
|
|
97
|
+
return { item, clear: item.closest<HTMLElement>('.node') ?? sel, frame };
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** Put the card beside the selected item, inside the frame; hide it while the item is out of view. */
|
|
101
|
+
place(): void {
|
|
102
|
+
const card = this.card();
|
|
103
|
+
const docked = this.o.docked();
|
|
104
|
+
const room = card && !docked ? card.querySelector<HTMLElement>('.scroll')!.scrollHeight + 24 + 2 * PAD : 0;
|
|
105
|
+
if (room !== this.room && (room > this.o.frameH() || this.room > 0)) {
|
|
106
|
+
this.room = room;
|
|
107
|
+
this.o.grow();
|
|
108
|
+
}
|
|
109
|
+
if (!card || docked) return;
|
|
110
|
+
const a = this.anchor();
|
|
111
|
+
const main = this.root.querySelector<HTMLElement>('.main');
|
|
112
|
+
if (!a || !main) {
|
|
113
|
+
card.classList.remove('placed');
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const m = main.getBoundingClientRect();
|
|
117
|
+
const rel = (r: DOMRect): Box => ({ left: r.left - m.left, top: r.top - m.top, width: r.width, height: r.height });
|
|
118
|
+
const item = rel(a.item.getBoundingClientRect());
|
|
119
|
+
const clear = rel(a.clear.getBoundingClientRect());
|
|
120
|
+
const f = rel(a.frame.getBoundingClientRect());
|
|
121
|
+
// A mark matrix scrolls: the item hides when scrolled out of it.
|
|
122
|
+
const port = a.frame.querySelector<HTMLElement>('.mx') ?? this.o.inner()?.querySelector<HTMLElement>('.mx');
|
|
123
|
+
const inView = placeCard(item, port ? rel(port.getBoundingClientRect()) : f, { width: 0, height: 0 }).shown;
|
|
124
|
+
const scroll = card.querySelector<HTMLElement>('.scroll');
|
|
125
|
+
if (scroll) scroll.style.maxHeight = `${Math.max(120, f.height - 2 * PAD - 24)}px`;
|
|
126
|
+
const size = { width: card.offsetWidth, height: card.offsetHeight };
|
|
127
|
+
let p = placeCard(clear, f, size, item);
|
|
128
|
+
if (!p.fits && a.clear !== a.item && !a.clear.classList.contains('node')) p = placeCard(item, f, size);
|
|
129
|
+
card.classList.toggle('placed', p.shown && inView);
|
|
130
|
+
card.dataset['side'] = p.side;
|
|
131
|
+
card.style.left = `${p.x}px`;
|
|
132
|
+
card.style.top = `${p.y}px`;
|
|
133
|
+
card.style.setProperty('--arrow', `${p.arrow}px`);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** The focusable that stands for the selected item: the mark itself, or a node's or a cluster's name. */
|
|
137
|
+
itemFocus(): HTMLElement | null {
|
|
138
|
+
const a = this.anchor();
|
|
139
|
+
if (!a) return null;
|
|
140
|
+
return a.item.matches('button') ? a.item : a.item.querySelector<HTMLElement>('.name');
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* The selected item's focusable described by the card, and what a live region says
|
|
145
|
+
* of the item: its name and its status (the card content's first heading and its
|
|
146
|
+
* `[data-status]`), '' without a selection.
|
|
147
|
+
*/
|
|
148
|
+
describe(): [name: string, status: string] {
|
|
149
|
+
const roots = [this.root, this.o.inner()].filter((r): r is ParentNode => !!r);
|
|
150
|
+
for (const r of roots) for (const el of r.querySelectorAll('[aria-describedby="insp"]')) el.removeAttribute('aria-describedby');
|
|
151
|
+
const own = this.itemFocus();
|
|
152
|
+
const card = this.card();
|
|
153
|
+
if (own && card) {
|
|
154
|
+
// An item in the view of another element (a mark matrix) names the card by reference: an id does not cross shadow roots.
|
|
155
|
+
if (own.getRootNode() === card.getRootNode()) own.setAttribute('aria-describedby', 'insp');
|
|
156
|
+
else if ('ariaDescribedByElements' in own) (own as HTMLElement & { ariaDescribedByElements: Element[] }).ariaDescribedByElements = [card];
|
|
157
|
+
}
|
|
158
|
+
const content = this.content();
|
|
159
|
+
const find = (sel: string) => content.map((el) => (el.matches(sel) ? el : el.querySelector(sel))).find(Boolean) ?? null;
|
|
160
|
+
return [find('h1, h2, h3, h4, h5, h6')?.textContent?.trim() ?? '', find('[data-status]')?.textContent?.trim() ?? ''];
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/** Focus `el` without selecting what it is on. */
|
|
164
|
+
focusQuietly(el: HTMLElement | null | undefined): void {
|
|
165
|
+
this.quiet = true;
|
|
166
|
+
el?.focus();
|
|
167
|
+
this.quiet = false;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/** Run `f` now, or, while a pointer is down on the frame, once it is released (a scroll under a pressed pointer would move the click elsewhere). */
|
|
171
|
+
whenReleased(f: () => void): void {
|
|
172
|
+
if (!this.o.pressed()) return f();
|
|
173
|
+
globalThis.addEventListener('pointerup', () => setTimeout(f), { once: true });
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/** On a narrow screen: scroll the selected item into view when it is out of it or under the sheet. */
|
|
177
|
+
revealOverSheet(): void {
|
|
178
|
+
const item = this.anchor()?.item;
|
|
179
|
+
if (!item) return;
|
|
180
|
+
const r = item.getBoundingClientRect();
|
|
181
|
+
const sheet = this.card()?.getBoundingClientRect();
|
|
182
|
+
const bottom = Math.min(globalThis.innerHeight, sheet?.top ?? Infinity);
|
|
183
|
+
if (r.top < 0 || r.bottom > bottom) item.scrollIntoView({ block: 'center' });
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/** Shift+Tab on the card's first action comes back to the item; Escape puts the focus back on the item first. */
|
|
187
|
+
readonly onCardKey = (e: KeyboardEvent): void => {
|
|
188
|
+
if (e.key === 'Tab' && e.shiftKey && e.target === this.actions()[0]) {
|
|
189
|
+
const own = this.itemFocus();
|
|
190
|
+
if (!own) return;
|
|
191
|
+
e.preventDefault();
|
|
192
|
+
this.focusQuietly(own);
|
|
193
|
+
} else if (e.key === 'Escape') {
|
|
194
|
+
// The card goes with the selection: the focus goes back to the item first.
|
|
195
|
+
this.focusQuietly(this.itemFocus());
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
/** Tab on the selected item goes on to its card. */
|
|
200
|
+
private readonly onTabToCard = (e: KeyboardEvent): void => {
|
|
201
|
+
if (e.key !== 'Tab' || e.shiftKey || e.defaultPrevented) return;
|
|
202
|
+
const own = this.itemFocus();
|
|
203
|
+
if (!own || this.focused !== own) return;
|
|
204
|
+
const first = this.actions()[0];
|
|
205
|
+
if (!first) return;
|
|
206
|
+
e.preventDefault();
|
|
207
|
+
first.focus();
|
|
208
|
+
};
|
|
209
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// What the graph's views read from `cae-layered-graph` and call on it. Each view is
|
|
2
|
+
// a function of the element (`GraphHost`, its private members included) that renders
|
|
3
|
+
// into its shadow root.
|
|
4
|
+
import type { ReactiveControllerHost } from 'lit';
|
|
5
|
+
import type { StateStyles } from '../primitives/states.js';
|
|
6
|
+
import type { CardController } from './card.js';
|
|
7
|
+
import type { GraphLayout } from './layout.js';
|
|
8
|
+
import { markGrid } from './marks.js';
|
|
9
|
+
import type { PanZoomController } from './pan-zoom.js';
|
|
10
|
+
import type { LayeredGraphStrings } from './strings.js';
|
|
11
|
+
import type { Arrangement, DrawnGraph, GraphClusterInput, GraphMark, GraphNode } from './types.js';
|
|
12
|
+
|
|
13
|
+
/** The failed marks a node drawn as a bar lists by name. */
|
|
14
|
+
export const BAR_LIST = 8;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The element as its views see it: what it shows, the state the views change
|
|
18
|
+
* (each change renders the element again), its controllers and what it sends.
|
|
19
|
+
*/
|
|
20
|
+
export interface GraphHost extends ReactiveControllerHost, HTMLElement {
|
|
21
|
+
readonly renderRoot: ParentNode;
|
|
22
|
+
/** The graph, its nodes with their defaults. */
|
|
23
|
+
readonly drawn: DrawnGraph;
|
|
24
|
+
readonly arr: Arrangement;
|
|
25
|
+
readonly states: StateStyles;
|
|
26
|
+
readonly words: LayeredGraphStrings;
|
|
27
|
+
readonly selected: string | null;
|
|
28
|
+
readonly nodes: ReadonlyMap<string, GraphNode>;
|
|
29
|
+
readonly clusters: ReadonlyMap<string, GraphClusterInput>;
|
|
30
|
+
/** Where everything is drawn, and whether it was drawn for this graph (`key`). */
|
|
31
|
+
readonly lay: GraphLayout | null;
|
|
32
|
+
readonly laidOut: boolean;
|
|
33
|
+
/** Top to bottom. */
|
|
34
|
+
readonly down: boolean;
|
|
35
|
+
readonly barAt: number;
|
|
36
|
+
/** The node table is shown. */
|
|
37
|
+
readonly asTable: boolean;
|
|
38
|
+
/** The series (or a mark's id, for a mark outside any series) under the pointer or focus. */
|
|
39
|
+
hover: string | null;
|
|
40
|
+
/** Each group's focused mark (roving tabindex): one tab stop per group. */
|
|
41
|
+
readonly active: Map<string, number>;
|
|
42
|
+
readonly pz: PanZoomController;
|
|
43
|
+
readonly card: CardController;
|
|
44
|
+
renderIcon(name: string): unknown;
|
|
45
|
+
/** The series (or mark id) highlighted, and the marks it lights. */
|
|
46
|
+
lit(): { key: string | null; on: ReadonlySet<string> | null };
|
|
47
|
+
/** Select an item by its id (null: none). */
|
|
48
|
+
select(id: string | null): void;
|
|
49
|
+
/** Focus moved by the reader selects what it is on; focus put back does not. */
|
|
50
|
+
focusSelect(id: string): void;
|
|
51
|
+
/** An item's action: Enter, a double click, a card's first link. */
|
|
52
|
+
act(id: string): void;
|
|
53
|
+
/** Enter a cluster's inner view. */
|
|
54
|
+
drill(id: string): void;
|
|
55
|
+
/** Open (`open`) or close an item that can be drawn open. */
|
|
56
|
+
toggle(id: string, open: boolean): void;
|
|
57
|
+
/** The view switch. */
|
|
58
|
+
showView(view: 'graph' | 'table'): void;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** A mark in a node, with its series id ('' outside any series). */
|
|
62
|
+
export interface Slot {
|
|
63
|
+
m: GraphMark;
|
|
64
|
+
series: string;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** How a group of marks lays out. */
|
|
68
|
+
export interface Grid {
|
|
69
|
+
cols: number;
|
|
70
|
+
size: number;
|
|
71
|
+
gap: number;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** A group of marks with one tab stop: a node's marks, or the failed marks a node drawn as a bar lists. */
|
|
75
|
+
export interface MarkGroup {
|
|
76
|
+
id: string;
|
|
77
|
+
slots: (Slot | null)[];
|
|
78
|
+
grid: Grid;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** A node's marks in slot order: one per series (null where the series has none here), then those outside any series. */
|
|
82
|
+
export const slotsOf = (n: Pick<GraphNode, 'marks' | 'loose'>, series: readonly string[]): (Slot | null)[] => [
|
|
83
|
+
...n.marks.map((m, i) => (m ? { m, series: series[i] ?? '' } : null)),
|
|
84
|
+
...n.loose.map((m) => ({ m, series: '' })),
|
|
85
|
+
];
|
|
86
|
+
|
|
87
|
+
/** A group's grid: the graph's, so a series sits at one place in every node; a group without series lays out its own few marks. */
|
|
88
|
+
export function gridOf(n: Pick<GraphNode, 'marks' | 'loose'>, series: number): Grid {
|
|
89
|
+
const slots = n.marks.length + n.loose.length;
|
|
90
|
+
const g = markGrid(n.marks.length ? series : slots);
|
|
91
|
+
return { cols: Math.min(g.cols, Math.max(1, slots)), size: g.size, gap: g.size >= 10 ? 4 : 2 };
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** The first slot that holds a mark. */
|
|
95
|
+
export function firstMark(slots: readonly (Slot | null)[]): number {
|
|
96
|
+
return Math.max(0, slots.findIndex((m) => m !== null));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/** What a mark highlights: its series, or itself outside any series. */
|
|
100
|
+
export const hlKeyOf = (s: Slot): string => s.series || s.m.id;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// The graph's own icons: a cluster that repeats, and an inner view.
|
|
2
|
+
import { html } from 'lit';
|
|
3
|
+
|
|
4
|
+
/** A cycle: a circle that comes back round to where it started, its head at the top right. */
|
|
5
|
+
export const cycleIcon = (size = 14) =>
|
|
6
|
+
html`<svg class="ic loop-ic" width=${size} height=${size} viewBox="0 0 16 16" aria-hidden="true" focusable="false">
|
|
7
|
+
<path d="M12.7,9.71 A5,5 0 1 1 11.21,4.17" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path>
|
|
8
|
+
<path d="M12.44,5.2 L9.15,5.06 L11.73,2 z" fill="currentColor"></path>
|
|
9
|
+
</svg>`;
|
|
10
|
+
|
|
11
|
+
/** Something with an inner view: two cards, one behind the other, as a node with one is drawn. */
|
|
12
|
+
export const innerIcon = () =>
|
|
13
|
+
html`<svg class="ic in-ic" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true" focusable="false">
|
|
14
|
+
<rect x="3.4" y="0.7" width="7.9" height="7.9" rx="1.6" fill="none" stroke="currentColor" stroke-width="1.2"></rect>
|
|
15
|
+
<path d="M0.7,3.6 V9.7 Q0.7,11.3 2.3,11.3 H8.4" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"></path>
|
|
16
|
+
</svg>`;
|
|
17
|
+
|
|
18
|
+
/** Show inside (a plus) or hide inside (a minus), in a square: the control of an item that can be drawn open. */
|
|
19
|
+
export const toggleIcon = (open: boolean) =>
|
|
20
|
+
html`<svg class="ic tog-ic" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true" focusable="false">
|
|
21
|
+
<rect x="0.7" y="0.7" width="10.6" height="10.6" rx="2.2" fill="none" stroke="currentColor" stroke-width="1.2"></rect>
|
|
22
|
+
<path d=${open ? 'M3.5,6 H8.5' : 'M3.5,6 H8.5 M6,3.5 V8.5'} fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"></path>
|
|
23
|
+
</svg>`;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// A layered graph: `@contraagent/elements/graph`. `CaeLayeredGraph` is registered
|
|
2
|
+
// by `@contraagent/elements/graph/define` (with the elements it renders).
|
|
3
|
+
export * from './types.js';
|
|
4
|
+
export { arrange, extentOf, isPoint, orderRows, rankLayers, type GraphShape } from './arrange.js';
|
|
5
|
+
export * from './layout.js';
|
|
6
|
+
export * from './paths.js';
|
|
7
|
+
export * from './view.js';
|
|
8
|
+
export * from './nav.js';
|
|
9
|
+
export * from './marks.js';
|
|
10
|
+
export * from './place-card.js';
|
|
11
|
+
export * from './pan-zoom.js';
|
|
12
|
+
export * from './card.js';
|
|
13
|
+
export * from './icons.js';
|
|
14
|
+
export * from './strings.js';
|
|
15
|
+
export * from './styles.js';
|
|
16
|
+
export * from './layered-graph.js';
|