@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,292 @@
|
|
|
1
|
+
// The graph in the frame that pans and zooms: clusters, nodes with their marks,
|
|
2
|
+
// stubs and edges; and the keys that move between marks and along edges.
|
|
3
|
+
import { html, nothing, svg } from 'lit';
|
|
4
|
+
import { repeat } from 'lit/directives/repeat.js';
|
|
5
|
+
import { toneAttr } from '../../core/tone.js';
|
|
6
|
+
import { stateCount } from '../../primitives/states.js';
|
|
7
|
+
import { isPoint } from '../arrange.js';
|
|
8
|
+
import { BAR_LIST, firstMark, gridOf, hlKeyOf, slotsOf } from '../host.js';
|
|
9
|
+
import { cycleIcon, innerIcon, toggleIcon } from '../icons.js';
|
|
10
|
+
import { asBar, barParts } from '../marks.js';
|
|
11
|
+
import { alongEdge } from '../nav.js';
|
|
12
|
+
import { edgePath, returnPath } from '../paths.js';
|
|
13
|
+
/** A note's class by its tone: failed, attention, running, muted. */
|
|
14
|
+
export const NOTE_CLASS = { failed: 'err', attention: 'warn', running: 'live', muted: 'mut' };
|
|
15
|
+
/** The graph in its frame: dragging pans, a click on the frame clears the selection. */
|
|
16
|
+
export function dag(h) {
|
|
17
|
+
const pz = h.pz;
|
|
18
|
+
return html `<div class="frame gframe ${h.down ? 'down' : ''}" part="frame" style="height:${Math.round(pz.frameH)}px"
|
|
19
|
+
@pointerdown=${pz.onPointerDown} @pointermove=${pz.onPointerMove} @pointerup=${pz.onPointerUp} @pointercancel=${pz.onPointerUp}
|
|
20
|
+
@click=${(e) => !e.target.closest('.node, .cluster, .stub, .tools') && h.select(null)}>
|
|
21
|
+
<div class="stage view" part="stage" style="transform:${pz.transform}">${graphView(h)}</div>
|
|
22
|
+
</div>`;
|
|
23
|
+
}
|
|
24
|
+
/** Where an item is drawn, from its parent's corner (a cluster's, inside its border), or hidden until laid out. */
|
|
25
|
+
function at(h, id, parent) {
|
|
26
|
+
const r = h.lay?.at[id];
|
|
27
|
+
if (!r)
|
|
28
|
+
return 'left:0;top:0';
|
|
29
|
+
const dx = parent ? parent.x + 1 : 0;
|
|
30
|
+
const dy = parent ? parent.y + 1 : 0;
|
|
31
|
+
return `left:${r.x - dx}px;top:${r.y - dy}px`;
|
|
32
|
+
}
|
|
33
|
+
function graphView(h) {
|
|
34
|
+
const { on } = h.lit();
|
|
35
|
+
const g = h.drawn;
|
|
36
|
+
const lay = h.lay;
|
|
37
|
+
const stubs = new Map(g.stubs.map((s) => [s.id, s]));
|
|
38
|
+
const items = (container) => (h.arr.slots[container] ?? []).flat().filter((id) => !isPoint(id));
|
|
39
|
+
const item = (id, parent) => {
|
|
40
|
+
const b = h.clusters.get(id);
|
|
41
|
+
if (b)
|
|
42
|
+
return cluster(h, b, parent, (x, r) => item(x, r));
|
|
43
|
+
const s = stubs.get(id);
|
|
44
|
+
if (s)
|
|
45
|
+
return html `<span class="stub" part="stub" data-id=${s.id} style=${at(h, s.id, parent)} title=${h.words.stubTip}>${s.label}</span>`;
|
|
46
|
+
const n = h.nodes.get(id);
|
|
47
|
+
return n ? node(h, n, parent) : nothing;
|
|
48
|
+
};
|
|
49
|
+
// Unplaced until a layout of this structure exists: the first render only measures.
|
|
50
|
+
const placed = !!lay && g.nodes.every((n) => lay.at[n.id]);
|
|
51
|
+
const w = lay?.w ?? 0;
|
|
52
|
+
const ht = lay?.h ?? 0;
|
|
53
|
+
return html `<div class="dag ${h.down ? 'down' : ''} ${on ? 'hl' : ''} ${placed ? '' : 'unplaced'}" style="width:${w}px;height:${ht}px"
|
|
54
|
+
@mouseleave=${() => (h.hover = null)}>
|
|
55
|
+
<svg class="edges" aria-hidden="true" width=${w} height=${ht}>
|
|
56
|
+
<defs>
|
|
57
|
+
<marker id="arr" viewBox="0 0 8 8" refX="8" refY="4" markerWidth="8" markerHeight="8" markerUnits="userSpaceOnUse" orient="auto">
|
|
58
|
+
<path d="M0,0.5 L8,4 L0,7.5 z" fill="var(--line2)" stroke="none"></path>
|
|
59
|
+
</marker>
|
|
60
|
+
<marker id="arr-ret" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" markerUnits="userSpaceOnUse" orient="auto">
|
|
61
|
+
<path class="ret-tip" d="M0,0.5 L8,4 L0,7.5 z"></path>
|
|
62
|
+
</marker>
|
|
63
|
+
</defs>
|
|
64
|
+
${(lay?.edges ?? []).map((e) => svg `<path class=${e.style} part="edge" d=${edgePath(e.runs, lay?.down)} marker-end="url(#arr)"></path>`)}
|
|
65
|
+
${(lay?.returns ?? []).map((r) => svg `<path class="ret" data-cluster=${r.box} d=${returnPath(r, lay?.down)} marker-end="url(#arr-ret)"></path>`)}
|
|
66
|
+
</svg>
|
|
67
|
+
${repeat(items(''), (id) => id, (id) => item(id, null))}
|
|
68
|
+
</div>`;
|
|
69
|
+
}
|
|
70
|
+
/** A click on a node or a cluster, not on one of its marks or on a node inside it: selects it. */
|
|
71
|
+
function onItemClick(h, e, id) {
|
|
72
|
+
const own = e.target.closest('.mark, .taskchip, .node, .cluster');
|
|
73
|
+
if (own !== e.currentTarget)
|
|
74
|
+
return;
|
|
75
|
+
e.stopPropagation();
|
|
76
|
+
if (e.detail >= 2)
|
|
77
|
+
return; // the second click of a double click
|
|
78
|
+
h.select(id);
|
|
79
|
+
}
|
|
80
|
+
function onItemDblClick(h, e, id) {
|
|
81
|
+
const own = e.target.closest('.mark, .taskchip, .node, .cluster');
|
|
82
|
+
if (own !== e.currentTarget)
|
|
83
|
+
return;
|
|
84
|
+
e.stopPropagation();
|
|
85
|
+
h.act(id);
|
|
86
|
+
}
|
|
87
|
+
/** Enter on a node's or a cluster's name: its action (Space selects it, as a click does). */
|
|
88
|
+
function onNameKey(h, e, id) {
|
|
89
|
+
if (e.key !== 'Enter')
|
|
90
|
+
return;
|
|
91
|
+
e.preventDefault();
|
|
92
|
+
h.act(id);
|
|
93
|
+
}
|
|
94
|
+
/** The control that opens or closes an item drawn closed or open (`toggle`), named with the item. */
|
|
95
|
+
function toggleControl(h, id, label, open) {
|
|
96
|
+
const word = open ? h.words.close : h.words.open;
|
|
97
|
+
return html `<button type="button" class="tog" part="toggle" aria-expanded=${open} aria-label=${`${word}: ${label}`} title=${word}
|
|
98
|
+
@click=${(e) => {
|
|
99
|
+
e.stopPropagation();
|
|
100
|
+
h.toggle(id, !open);
|
|
101
|
+
}}
|
|
102
|
+
@dblclick=${(e) => e.stopPropagation()}>${toggleIcon(open)}</button>`;
|
|
103
|
+
}
|
|
104
|
+
/** A cluster's name: its label, or the parts of its path, each after the first a link to its own inner view. */
|
|
105
|
+
function clusterName(h, b, sel) {
|
|
106
|
+
const first = b.path?.[0];
|
|
107
|
+
const name = html `<button type="button" class="name" title=${(first?.tip ?? b.tip) || nothing} aria-pressed=${sel}
|
|
108
|
+
@focus=${() => h.focusSelect(b.id)} @keydown=${(e) => onNameKey(h, e, b.id)}>${b.cycle ? cycleIcon() : nothing}${first?.label ?? b.label}</button>`;
|
|
109
|
+
if (!b.path || b.path.length < 2)
|
|
110
|
+
return name;
|
|
111
|
+
return html `${name}${b.path.slice(1).map((p) => html `<span class="psep" aria-hidden="true">›</span><button type="button" class="part" title=${p.tip || nothing}
|
|
112
|
+
@click=${(e) => {
|
|
113
|
+
e.stopPropagation();
|
|
114
|
+
h.drill(p.id);
|
|
115
|
+
}}
|
|
116
|
+
@dblclick=${(e) => e.stopPropagation()}>${p.label}</button>`)}`;
|
|
117
|
+
}
|
|
118
|
+
function cluster(h, b, parent, item) {
|
|
119
|
+
const r = h.lay?.at[b.id] ?? null;
|
|
120
|
+
const kids = (h.arr.slots[b.id] ?? []).flat().filter((id) => !isPoint(id));
|
|
121
|
+
const size = r ? `;width:${r.w}px;height:${r.h}px` : '';
|
|
122
|
+
const sel = h.selected === b.id;
|
|
123
|
+
return html `<section class="cluster ${sel ? 'sel' : ''}" part="cluster" role="group" data-cluster=${b.id} style=${at(h, b.id, parent) + size}
|
|
124
|
+
aria-label=${b.summary ?? b.label}
|
|
125
|
+
@click=${(e) => onItemClick(h, e, b.id)} @dblclick=${(e) => onItemDblClick(h, e, b.id)}>
|
|
126
|
+
<div class="hd" part="cluster-label" data-id=${`lbl:${b.id}`}>
|
|
127
|
+
<span class="line">
|
|
128
|
+
${clusterName(h, b, sel)}
|
|
129
|
+
${b.note ? html `<span class="count">${b.note}</span>` : nothing}
|
|
130
|
+
</span>
|
|
131
|
+
${b.detail ? html `<span class="spread" title=${b.detailTip ?? nothing}>${b.detail}</span>` : nothing}
|
|
132
|
+
</div>
|
|
133
|
+
${b.toggle
|
|
134
|
+
? html `<span class="cue">${toggleControl(h, b.id, b.path?.map((p) => p.label).join(' › ') ?? b.label, true)}</span>`
|
|
135
|
+
: b.drill
|
|
136
|
+
? html `<span class="cue" aria-hidden="true">${innerIcon()}</span>`
|
|
137
|
+
: nothing}
|
|
138
|
+
<div class="in">${repeat(kids, (id) => id, (id) => item(id, r))}</div>
|
|
139
|
+
</section>`;
|
|
140
|
+
}
|
|
141
|
+
/** A node's notes ("1 failed | 1 not started"), each in its tone's class. */
|
|
142
|
+
export const notes = (n, tag = 'span') => (n.notes ?? []).map((f) => (tag === 'span' ? html `<span class=${NOTE_CLASS[f.tone ?? 'neutral'] ?? ''}>${f.text}</span>` : html `<div class=${NOTE_CLASS[f.tone ?? 'neutral'] ?? ''}>${f.text}</div>`));
|
|
143
|
+
function node(h, n, parent) {
|
|
144
|
+
const series = h.drawn.series;
|
|
145
|
+
const bar = asBar(n, h.barAt);
|
|
146
|
+
const all = slotsOf(n, series);
|
|
147
|
+
const failed = (s) => !!s && h.states[s.m.state]?.tone === 'failed';
|
|
148
|
+
const group = bar
|
|
149
|
+
? { id: n.id, slots: all.filter(failed), grid: { cols: BAR_LIST, size: 12, gap: 4 } }
|
|
150
|
+
: { id: n.id, slots: all, grid: gridOf(n, series.length) };
|
|
151
|
+
const sel = h.selected === n.id;
|
|
152
|
+
const icons = (n.icons ?? []).map((x) => h.renderIcon(x));
|
|
153
|
+
return html `<section class="node ${n.drill ? 'drill' : ''} ${n.accent ? 'accent' : ''} ${sel ? 'sel' : ''}" part="node" role="group" data-id=${n.id}
|
|
154
|
+
data-look=${n.look && n.look !== 'neutral' ? n.look : nothing} aria-label=${n.summary ?? n.label}
|
|
155
|
+
style="${at(h, n.id, parent)};--cols:${group.grid.cols};--m:${group.grid.size}px;--g:${group.grid.gap}px"
|
|
156
|
+
@click=${(e) => onItemClick(h, e, n.id)} @dblclick=${(e) => onItemDblClick(h, e, n.id)}>
|
|
157
|
+
<div class="hd" part="node-header">
|
|
158
|
+
<span class="nm">${icons}<button type="button" class="name" part="node-name" title=${n.tip ?? nothing} aria-pressed=${sel}
|
|
159
|
+
@focus=${() => h.focusSelect(n.id)} @keydown=${(e) => onNameKey(h, e, n.id)}>${n.label}</button></span>
|
|
160
|
+
<span class="right"><span class="count" aria-hidden="true" title=${n.progress.label}>${n.progress.done}/${n.progress.total}</span>${n.toggle
|
|
161
|
+
? toggleControl(h, n.id, n.label, false)
|
|
162
|
+
: n.drill
|
|
163
|
+
? html `<span class="cue" aria-hidden="true">${innerIcon()}</span>`
|
|
164
|
+
: nothing}</span>
|
|
165
|
+
</div>
|
|
166
|
+
${bar ? statusBar(h, n, group) : marks(h, group)}
|
|
167
|
+
${n.notes?.length ? html `<div class="ex" aria-hidden="true">${notes(n)}</div>` : nothing}
|
|
168
|
+
</section>`;
|
|
169
|
+
}
|
|
170
|
+
/** A node with too many marks to draw: a bar of its counts, and its failed marks by name. */
|
|
171
|
+
function statusBar(h, n, g) {
|
|
172
|
+
const order = Object.keys(h.states);
|
|
173
|
+
const parts = barParts(n.counts, order);
|
|
174
|
+
const shown = g.slots.slice(0, BAR_LIST);
|
|
175
|
+
const more = g.slots.length - shown.length;
|
|
176
|
+
const active = Math.min(h.active.get(g.id) ?? 0, Math.max(0, shown.length - 1));
|
|
177
|
+
const words = order.filter((s) => n.counts[s]).map((s) => stateCount(h.states, s, n.counts[s] ?? 0));
|
|
178
|
+
return html `<div class="sbar" role="img" aria-label=${words.join(' | ')}>
|
|
179
|
+
${parts.map((p) => {
|
|
180
|
+
const look = h.states[p.state];
|
|
181
|
+
return html `<i data-tone=${toneAttr(look?.tone)} data-shape=${look?.shape ?? nothing} style="width:${p.pct}%" title=${stateCount(h.states, p.state, p.n)}></i>`;
|
|
182
|
+
})}
|
|
183
|
+
</div>
|
|
184
|
+
${shown.length
|
|
185
|
+
? html `<div class="fails" @keydown=${(e) => onKey(h, e, { ...g, slots: shown, grid: { ...g.grid, cols: shown.length } })}>
|
|
186
|
+
${shown.map((s, i) => (s ? mark(h, g, s, i, i === active, true) : nothing))}
|
|
187
|
+
${more > 0 ? html `<span>${h.words.more(more)}</span>` : nothing}
|
|
188
|
+
</div>`
|
|
189
|
+
: nothing}`;
|
|
190
|
+
}
|
|
191
|
+
/** A group's marks, with one tab stop. */
|
|
192
|
+
function marks(h, g) {
|
|
193
|
+
const active = Math.min(h.active.get(g.id) ?? firstMark(g.slots), g.slots.length - 1);
|
|
194
|
+
return html `<div class="marks ${g.grid.size >= 10 ? 'big' : ''}" @keydown=${(e) => onKey(h, e, g)}>
|
|
195
|
+
${g.slots.map((s, i) => (s ? mark(h, g, s, i, i === active) : html `<span class="slot"></span>`))}
|
|
196
|
+
</div>`;
|
|
197
|
+
}
|
|
198
|
+
function mark(h, g, s, i, tabStop, chip = false) {
|
|
199
|
+
const { m } = s;
|
|
200
|
+
const { key, on } = h.lit();
|
|
201
|
+
const hlKey = hlKeyOf(s);
|
|
202
|
+
const lit = on !== null && ((s.series !== '' && s.series === key) || on.has(m.id));
|
|
203
|
+
const sel = h.selected === m.id ? 'sel' : '';
|
|
204
|
+
const focus = (e) => {
|
|
205
|
+
h.hover = hlKey;
|
|
206
|
+
h.active.set(g.id, i);
|
|
207
|
+
h.pz.reveal(e.currentTarget);
|
|
208
|
+
h.focusSelect(m.id);
|
|
209
|
+
};
|
|
210
|
+
if (chip) {
|
|
211
|
+
return html `<button type="button" class="taskchip ${lit ? 'on' : ''} ${sel}" part="mark" data-i=${i} tabindex=${tabStop ? 0 : -1}
|
|
212
|
+
title=${m.tip ?? nothing} aria-label=${m.label} aria-pressed=${!!sel}
|
|
213
|
+
@mouseenter=${() => (h.hover = hlKey)} @focus=${focus} @blur=${() => (h.hover = null)}
|
|
214
|
+
@click=${() => h.select(m.id)} @dblclick=${() => h.act(m.id)}>${m.name ?? (s.series || m.id)}</button>`;
|
|
215
|
+
}
|
|
216
|
+
const look = h.states[m.state];
|
|
217
|
+
return html `<button type="button" class="mark ${lit ? 'on' : ''} ${sel}" part="mark" data-tone=${toneAttr(look?.tone)} data-shape=${look?.shape ?? nothing}
|
|
218
|
+
data-i=${i} data-n=${m.badge ?? nothing} tabindex=${tabStop ? 0 : -1}
|
|
219
|
+
title=${m.tip ?? nothing}
|
|
220
|
+
aria-label=${m.label} aria-pressed=${!!sel}
|
|
221
|
+
@mouseenter=${() => (h.hover = hlKey)}
|
|
222
|
+
@focus=${focus}
|
|
223
|
+
@blur=${() => (h.hover = null)}
|
|
224
|
+
@click=${() => h.select(m.id)}
|
|
225
|
+
@dblclick=${() => h.act(m.id)}></button>`;
|
|
226
|
+
}
|
|
227
|
+
/** Arrow keys, Home and End within a group's marks, skipping empty slots; Shift and an arrow key along an edge to another node. */
|
|
228
|
+
function onKey(h, e, g) {
|
|
229
|
+
const target = e.target;
|
|
230
|
+
if (!target.classList.contains('mark') && !target.classList.contains('taskchip'))
|
|
231
|
+
return;
|
|
232
|
+
if (e.shiftKey && e.key.startsWith('Arrow'))
|
|
233
|
+
return toEdge(h, e, g);
|
|
234
|
+
const { slots } = g;
|
|
235
|
+
if (e.key === 'Enter') {
|
|
236
|
+
const s = slots[Number(target.dataset['i'])];
|
|
237
|
+
e.preventDefault();
|
|
238
|
+
if (s)
|
|
239
|
+
h.act(s.m.id);
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
const cur = h.active.get(g.id) ?? firstMark(slots);
|
|
243
|
+
const step = { ArrowRight: 1, ArrowLeft: -1, ArrowDown: g.grid.cols, ArrowUp: -g.grid.cols };
|
|
244
|
+
let next;
|
|
245
|
+
if (e.key === 'Home')
|
|
246
|
+
next = firstMark(slots);
|
|
247
|
+
else if (e.key === 'End')
|
|
248
|
+
next = slots.length - 1 - [...slots].reverse().findIndex((m) => m !== null);
|
|
249
|
+
else if (step[e.key] !== undefined) {
|
|
250
|
+
const d = step[e.key];
|
|
251
|
+
next = cur + d;
|
|
252
|
+
while (next >= 0 && next < slots.length && !slots[next])
|
|
253
|
+
next += Math.sign(d);
|
|
254
|
+
if (next < 0 || next >= slots.length)
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
else
|
|
258
|
+
return;
|
|
259
|
+
e.preventDefault();
|
|
260
|
+
h.active.set(g.id, next);
|
|
261
|
+
h.requestUpdate();
|
|
262
|
+
const group = e.currentTarget;
|
|
263
|
+
void h.updateComplete.then(() => group.querySelector(`[data-i="${next}"]`)?.focus());
|
|
264
|
+
}
|
|
265
|
+
/** To the node an edge joins: a later one (Shift and → or ↓) or an earlier one (Shift and ← or ↑), on the same series when it has a mark there. */
|
|
266
|
+
function toEdge(h, e, g) {
|
|
267
|
+
const dir = e.key === 'ArrowRight' || e.key === 'ArrowDown' ? 'later' : 'earlier';
|
|
268
|
+
const lay = h.lay;
|
|
269
|
+
const across = (id) => {
|
|
270
|
+
const r = lay?.at[id];
|
|
271
|
+
return !r ? 0 : lay?.down ? r.x + r.w / 2 : r.y + r.h / 2;
|
|
272
|
+
};
|
|
273
|
+
const to = alongEdge({ drawn: h.arr.drawn, edges: h.drawn.edges, back: h.arr.back }, g.id, dir, across);
|
|
274
|
+
e.preventDefault();
|
|
275
|
+
if (!to)
|
|
276
|
+
return;
|
|
277
|
+
const n = h.nodes.get(to);
|
|
278
|
+
if (!n)
|
|
279
|
+
return;
|
|
280
|
+
const series = g.slots[h.active.get(g.id) ?? firstMark(g.slots)]?.series ?? '';
|
|
281
|
+
const all = slotsOf(n, h.drawn.series);
|
|
282
|
+
const slots = asBar(n, h.barAt) ? all.filter((s) => !!s && h.states[s.m.state]?.tone === 'failed') : all;
|
|
283
|
+
const same = series ? slots.findIndex((s) => s?.series === series) : -1;
|
|
284
|
+
const i = same >= 0 ? same : (h.active.get(n.id) ?? firstMark(slots));
|
|
285
|
+
h.active.set(n.id, i);
|
|
286
|
+
h.requestUpdate();
|
|
287
|
+
void h.updateComplete.then(() => {
|
|
288
|
+
const el = h.renderRoot.querySelector(`.node[data-id="${CSS.escape(to)}"]`);
|
|
289
|
+
(el?.querySelector(`[data-i="${i}"]`) ?? el?.querySelector('.name'))?.focus();
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=dag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dag.js","sourceRoot":"","sources":["../../../src/graph/views/dag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MarkMatrixInput } from '../../matrix/types.js';
|
|
2
|
+
import { type GraphHost } from '../host.js';
|
|
3
|
+
/**
|
|
4
|
+
* The legend on the left, the tools at the right end of the first line, and the keys
|
|
5
|
+
* under them: their line keeps its room, and shows its words while the graph has the focus.
|
|
6
|
+
*/
|
|
7
|
+
export declare function foot(h: GraphHost, matrix: MarkMatrixInput | null): import("lit").TemplateResult<1>;
|
|
8
|
+
//# sourceMappingURL=foot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foot.d.ts","sourceRoot":"","sources":["../../../src/graph/views/foot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrD;;;GAGG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,mCAOhE"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// The row under the frame: the legend, the zoom buttons and the view switch, and the keys of the view shown.
|
|
2
|
+
import { html, nothing, svg } from 'lit';
|
|
3
|
+
import { toneAttr } from '../../core/tone.js';
|
|
4
|
+
import { legend as legendRow } from '../../primitives/legend.js';
|
|
5
|
+
import { asBar } from '../marks.js';
|
|
6
|
+
import { slotsOf } from '../host.js';
|
|
7
|
+
import { innerIcon } from '../icons.js';
|
|
8
|
+
/**
|
|
9
|
+
* The legend on the left, the tools at the right end of the first line, and the keys
|
|
10
|
+
* under them: their line keeps its room, and shows its words while the graph has the focus.
|
|
11
|
+
*/
|
|
12
|
+
export function foot(h, matrix) {
|
|
13
|
+
const table = !!matrix || h.asTable;
|
|
14
|
+
return html `<div class="foot">
|
|
15
|
+
${legend(h, matrix)}
|
|
16
|
+
<div class="tools">${table ? nothing : zoomTools(h)}${viewSwitch(h, table)}</div>
|
|
17
|
+
<div class="keys" part="keys">${keyHints(h, matrix).map((k, i) => html `${i ? ' | ' : ''}<span>${k}</span>`)}</div>
|
|
18
|
+
</div>`;
|
|
19
|
+
}
|
|
20
|
+
/** Zoom out, zoom in, and back to the whole drawing (which does nothing while the whole drawing shows at its own size). */
|
|
21
|
+
function zoomTools(h) {
|
|
22
|
+
const pz = h.pz;
|
|
23
|
+
const w = h.words;
|
|
24
|
+
const whole = !pz.moved && pz.fitK >= 1;
|
|
25
|
+
return html `<button type="button" aria-label=${w.zoomOut} title=${w.zoomOutTip} @click=${() => pz.zoomBy(1 / 1.25)}>−</button>
|
|
26
|
+
<button type="button" aria-label=${w.zoomIn} title=${w.zoomInTip} @click=${() => pz.zoomBy(1.25)}>+</button>
|
|
27
|
+
<button type="button" ?disabled=${whole} @click=${() => pz.showAll()}>${w.showAll}</button>`;
|
|
28
|
+
}
|
|
29
|
+
/** The two views, at the same place in each: the drawing, and the table (a mark matrix, or a row per node). */
|
|
30
|
+
function viewSwitch(h, table) {
|
|
31
|
+
const options = [
|
|
32
|
+
{ value: 'graph', label: h.words.graph },
|
|
33
|
+
{ value: 'table', label: h.words.table },
|
|
34
|
+
];
|
|
35
|
+
return html `<cae-segmented class="views" .options=${options} .value=${table ? 'table' : 'graph'} label=${h.words.view}
|
|
36
|
+
@cae-change=${(e) => {
|
|
37
|
+
e.stopPropagation();
|
|
38
|
+
h.showView(e.detail.value === 'table' ? 'table' : 'graph');
|
|
39
|
+
}}></cae-segmented>`;
|
|
40
|
+
}
|
|
41
|
+
/** The keys of the view shown. */
|
|
42
|
+
function keyHints(h, matrix) {
|
|
43
|
+
const w = h.words;
|
|
44
|
+
const esc = h.selected ? w.clearKey : w.upKey;
|
|
45
|
+
const keys = matrix ? w.matrixKeys : h.asTable ? w.tableKeys : w.graphKeys;
|
|
46
|
+
return [...keys, esc].filter(Boolean);
|
|
47
|
+
}
|
|
48
|
+
/** A status mark in a state's look, as the legend shows it. */
|
|
49
|
+
const legendMark = (h, state, badge) => {
|
|
50
|
+
const look = h.states[state];
|
|
51
|
+
return html `<i class="mark" data-tone=${toneAttr(look?.tone)} data-shape=${look?.shape ?? nothing} data-n=${badge ?? nothing}></i>`;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* What the view shows that needs a word: the states of the marks shown, a badge when a
|
|
55
|
+
* mark shows one, the icons the host names, the edge styles when both are drawn, a
|
|
56
|
+
* cluster's return, and the mark of an item with an inner view.
|
|
57
|
+
*/
|
|
58
|
+
function legend(h, mx) {
|
|
59
|
+
const g = h.drawn;
|
|
60
|
+
const flat = h.asTable && !mx;
|
|
61
|
+
// The marks drawn: a node with a bar draws its failed marks only (its badges none); the table draws none.
|
|
62
|
+
const marks = flat
|
|
63
|
+
? []
|
|
64
|
+
: mx
|
|
65
|
+
? mx.rows.flatMap((r) => r.cells).map((m) => m && { state: m.state, badge: undefined })
|
|
66
|
+
: g.nodes.flatMap((n) => slotsOf(n, g.series).map((s) => s && { state: s.m.state, badge: asBar(n, h.barAt) ? undefined : s.m.badge }));
|
|
67
|
+
const shown = marks.filter((m) => m !== null);
|
|
68
|
+
const present = new Set(shown.map((m) => m.state));
|
|
69
|
+
const badge = shown.some((m) => m.badge);
|
|
70
|
+
const dashed = !mx && !flat && [...g.edges, ...g.stubs].some((e) => e.style === 'dashed');
|
|
71
|
+
const icons = new Set(mx ? mx.head.flat().flatMap((c) => c.icons ?? []) : g.nodes.flatMap((n) => n.icons ?? []));
|
|
72
|
+
const cycles = !mx && !flat && g.clusters.some((c) => c.cycle);
|
|
73
|
+
const inner = !mx && ((!flat && g.clusters.some((c) => c.drill)) || g.nodes.some((n) => n.drill));
|
|
74
|
+
const first = Object.keys(h.states)[0] ?? '';
|
|
75
|
+
const line = (dash) => svg `<svg width="22" height="8" aria-hidden="true"><path d="M1,4 H21" stroke-dasharray=${dash ? '5 4' : 'none'}></path></svg>`;
|
|
76
|
+
const items = [
|
|
77
|
+
...Object.entries(h.states)
|
|
78
|
+
.filter(([s]) => present.has(s))
|
|
79
|
+
.map(([s, look]) => ({ label: look.label, icon: legendMark(h, s), decorative: true })),
|
|
80
|
+
...(badge ? [{ label: h.words.badge, icon: legendMark(h, first, '2'), decorative: true }] : []),
|
|
81
|
+
...Object.entries(h.words.iconNames)
|
|
82
|
+
.filter(([name]) => icons.has(name))
|
|
83
|
+
.map(([name, label]) => ({ label, icon: h.renderIcon(name) })),
|
|
84
|
+
...(dashed
|
|
85
|
+
? [
|
|
86
|
+
{ label: h.words.solidEdge, icon: line(false) },
|
|
87
|
+
{ label: h.words.dashedEdge, icon: line(true) },
|
|
88
|
+
]
|
|
89
|
+
: []),
|
|
90
|
+
...(cycles
|
|
91
|
+
? [
|
|
92
|
+
{
|
|
93
|
+
label: h.words.cycle,
|
|
94
|
+
icon: html `<svg width="24" height="12" aria-hidden="true"><path class="ret" d="M20,1.5 V5.5 Q20,9.5 16,9.5 H8 Q4,9.5 4,5.5 V5"></path>
|
|
95
|
+
<path class="ret-head" d="M4,0.8 L1.4,5 L6.6,5 z"></path></svg>`,
|
|
96
|
+
},
|
|
97
|
+
]
|
|
98
|
+
: []),
|
|
99
|
+
...(inner ? [{ label: h.words.drill, icon: innerIcon() }] : []),
|
|
100
|
+
];
|
|
101
|
+
return legendRow(items, { cls: 'big' });
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=foot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foot.js","sourceRoot":"","sources":["../../../src/graph/views/foot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { GraphHost } from '../host.js';
|
|
2
|
+
import type { GraphInput, GraphNode } from '../types.js';
|
|
3
|
+
/** The names of the nodes `n` is joined to: by a solid edge, by a dashed one, and the later ones. */
|
|
4
|
+
export declare function neighbours(n: GraphNode, g: Pick<GraphInput, 'edges' | 'stubs'>, nodes: ReadonlyMap<string, GraphNode>, inCluster: (label: string) => string): {
|
|
5
|
+
solid: string[];
|
|
6
|
+
dashed: string[];
|
|
7
|
+
later: string[];
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* The graph as a table, in its frame: a row per node with its status (the node's
|
|
11
|
+
* count and notes) and the nodes it is joined to. A row is selected as a node is,
|
|
12
|
+
* with the same card.
|
|
13
|
+
*/
|
|
14
|
+
export declare function nodeTable(h: GraphHost): import("lit").TemplateResult<1>;
|
|
15
|
+
/** A node's status in one row, as its node in the graph says it: "28/30 | 1 failed | 1 not started". */
|
|
16
|
+
export declare function statusLine(n: GraphNode): import("lit").TemplateResult<1>;
|
|
17
|
+
//# sourceMappingURL=node-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-table.d.ts","sourceRoot":"","sources":["../../../src/graph/views/node-table.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAa,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGpE,qGAAqG;AACrG,wBAAgB,UAAU,CACxB,CAAC,EAAE,SAAS,EACZ,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,EACtC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EACrC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACnC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAUxD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,mCAiDrC;AAED,wGAAwG;AACxG,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,mCAKtC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// The graph as a table, in its frame: a row per node.
|
|
2
|
+
import { html, nothing } from 'lit';
|
|
3
|
+
import { repeat } from 'lit/directives/repeat.js';
|
|
4
|
+
import { FRAME_MIN, FRAME_SHARE } from '../../core/frame.js';
|
|
5
|
+
import { cycleIcon, innerIcon } from '../icons.js';
|
|
6
|
+
import { notes } from './dag.js';
|
|
7
|
+
/** The names of the nodes `n` is joined to: by a solid edge, by a dashed one, and the later ones. */
|
|
8
|
+
export function neighbours(n, g, nodes, inCluster) {
|
|
9
|
+
const label = (id) => {
|
|
10
|
+
const x = nodes.get(id);
|
|
11
|
+
return !x ? id : x.cluster ? inCluster(x.label) : x.label;
|
|
12
|
+
};
|
|
13
|
+
const into = (style) => [
|
|
14
|
+
...g.stubs.filter((s) => s.to === n.id && s.style === style).map((s) => s.label),
|
|
15
|
+
...g.edges.filter((e) => e.to === n.id && e.style === style).map((e) => label(e.from)),
|
|
16
|
+
];
|
|
17
|
+
return { solid: into('solid'), dashed: into('dashed'), later: [...new Set(g.edges.filter((e) => e.from === n.id).map((e) => label(e.to)))] };
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The graph as a table, in its frame: a row per node with its status (the node's
|
|
21
|
+
* count and notes) and the nodes it is joined to. A row is selected as a node is,
|
|
22
|
+
* with the same card.
|
|
23
|
+
*/
|
|
24
|
+
export function nodeTable(h) {
|
|
25
|
+
const g = h.drawn;
|
|
26
|
+
const w = h.words;
|
|
27
|
+
const dashed = [...g.edges, ...g.stubs].some((e) => e.style === 'dashed');
|
|
28
|
+
const list = (xs) => w.list(xs) || w.none;
|
|
29
|
+
// The frame keeps the drawing's height when the drawing of this graph was laid out (left to right); else the table's own, up to the frame's limit.
|
|
30
|
+
const height = !h.down && h.laidOut && h.pz.frameH > 0 ? `height:${Math.round(h.pz.frameH)}px` : `max-height:max(${FRAME_MIN}px, ${FRAME_SHARE * 100}vh)`;
|
|
31
|
+
const rows = h.arr.drawn.map((id) => h.nodes.get(id)).filter((n) => !!n);
|
|
32
|
+
return html `<div class="frame tframe" part="frame" data-scroll="x" style=${height} @scroll=${() => h.card.place()}
|
|
33
|
+
@click=${(e) => !e.target.closest('tbody tr') && h.select(null)}>
|
|
34
|
+
<table class="list view" part="table">
|
|
35
|
+
<thead>
|
|
36
|
+
<tr>
|
|
37
|
+
<th scope="col" class="fit">${w.nameHeader}</th>
|
|
38
|
+
<th scope="col" class="fit">${w.statusHeader}</th>
|
|
39
|
+
<th scope="col">${w.solidHeader}</th>
|
|
40
|
+
${dashed ? html `<th scope="col">${w.dashedHeader}</th>` : nothing}
|
|
41
|
+
<th scope="col">${w.laterHeader}</th>
|
|
42
|
+
</tr>
|
|
43
|
+
</thead>
|
|
44
|
+
<tbody>
|
|
45
|
+
${repeat(rows, (n) => n.id, (n) => {
|
|
46
|
+
const nb = neighbours(n, g, h.nodes, w.inCluster);
|
|
47
|
+
const box = n.cluster ? h.clusters.get(n.cluster) : undefined;
|
|
48
|
+
const on = h.selected === n.id;
|
|
49
|
+
const icons = html `${(n.icons ?? []).map((x) => h.renderIcon(x))}${n.drill ? innerIcon() : nothing}`;
|
|
50
|
+
return html `<tr class=${on ? 'sel' : ''} part="row" data-id=${n.id}
|
|
51
|
+
@click=${(e) => !e.target.closest('.loopchip') && e.detail < 2 && h.select(n.id)}
|
|
52
|
+
@dblclick=${(e) => !e.target.closest('.loopchip') && h.act(n.id)}>
|
|
53
|
+
<th scope="row" class="fit">
|
|
54
|
+
<span class="nm">${icons}<button type="button" class="name" title=${n.tip ?? nothing} aria-pressed=${on}
|
|
55
|
+
@focus=${() => h.focusSelect(n.id)} @keydown=${(e) => {
|
|
56
|
+
if (e.key !== 'Enter')
|
|
57
|
+
return;
|
|
58
|
+
e.preventDefault();
|
|
59
|
+
h.act(n.id);
|
|
60
|
+
}}>${n.label}</button>${box?.drill
|
|
61
|
+
? html `<button type="button" class="taskchip loopchip" title=${box.chipTip ?? nothing} aria-label=${box.chipLabel ?? nothing}
|
|
62
|
+
@click=${() => h.drill(box.id)}>${box.cycle ? cycleIcon(12) : nothing}${box.note ?? box.label}</button>`
|
|
63
|
+
: nothing}</span>
|
|
64
|
+
</th>
|
|
65
|
+
<td class="fit st">${statusLine(n)}</td>
|
|
66
|
+
<td class="rel"><span>${list(nb.solid)}</span></td>
|
|
67
|
+
${dashed ? html `<td class="rel"><span>${list(nb.dashed)}</span></td>` : nothing}
|
|
68
|
+
<td class="rel"><span>${list(nb.later)}</span></td>
|
|
69
|
+
</tr>`;
|
|
70
|
+
})}
|
|
71
|
+
</tbody>
|
|
72
|
+
</table>
|
|
73
|
+
</div>`;
|
|
74
|
+
}
|
|
75
|
+
/** A node's status in one row, as its node in the graph says it: "28/30 | 1 failed | 1 not started". */
|
|
76
|
+
export function statusLine(n) {
|
|
77
|
+
const sep = html `<span class="sep" aria-hidden="true"> | </span>`;
|
|
78
|
+
return html `<span class="n" aria-hidden="true" title=${n.progress.label}>${n.progress.done}/${n.progress.total}</span><span class="sr">${n.progress.label}</span>${notes(n).map((x) => html `${sep}${x}`)}`;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=node-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-table.js","sourceRoot":"","sources":["../../../src/graph/views/node-table.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export * from './core/tone.js';
|
|
2
|
+
export * from './core/events.js';
|
|
3
|
+
export * from './core/strings.js';
|
|
4
|
+
export * from './core/define.js';
|
|
5
|
+
export * from './core/format.js';
|
|
6
|
+
export * from './core/clock.js';
|
|
7
|
+
export * from './styles/index.js';
|
|
8
|
+
export * from './themes/index.js';
|
|
9
|
+
export * from './primitives/index.js';
|
|
10
|
+
export * from './json/index.js';
|
|
11
|
+
export * from './markdown/index.js';
|
|
12
|
+
export * from './count/index.js';
|
|
13
|
+
export * from './table/index.js';
|
|
14
|
+
export * from './tiles/index.js';
|
|
15
|
+
export * from './lanes/index.js';
|
|
16
|
+
export * from './charts/index.js';
|
|
17
|
+
export * from './checks/index.js';
|
|
18
|
+
export * from './matrix/index.js';
|
|
19
|
+
export * from './graph/index.js';
|
|
20
|
+
export * from './core/frame.js';
|
|
21
|
+
export * from './transcript/index.js';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// @contraagent/elements: generic web components and the parts they are built
|
|
2
|
+
// from. Importing this module registers nothing: each class is registered by its
|
|
3
|
+
// `define` entry (`@contraagent/elements/define` registers every `cae-*`), or by
|
|
4
|
+
// the host under a tag name of its own.
|
|
5
|
+
export * from './core/tone.js';
|
|
6
|
+
export * from './core/events.js';
|
|
7
|
+
export * from './core/strings.js';
|
|
8
|
+
export * from './core/define.js';
|
|
9
|
+
export * from './core/format.js';
|
|
10
|
+
export * from './core/clock.js';
|
|
11
|
+
export * from './styles/index.js';
|
|
12
|
+
export * from './themes/index.js';
|
|
13
|
+
export * from './primitives/index.js';
|
|
14
|
+
export * from './json/index.js';
|
|
15
|
+
export * from './markdown/index.js';
|
|
16
|
+
export * from './count/index.js';
|
|
17
|
+
export * from './table/index.js';
|
|
18
|
+
export * from './tiles/index.js';
|
|
19
|
+
export * from './lanes/index.js';
|
|
20
|
+
export * from './charts/index.js';
|
|
21
|
+
export * from './checks/index.js';
|
|
22
|
+
export * from './matrix/index.js';
|
|
23
|
+
export * from './graph/index.js';
|
|
24
|
+
export * from './core/frame.js';
|
|
25
|
+
export * from './transcript/index.js';
|
|
26
|
+
//# sourceMappingURL=index.js.map
|