@bestagentkits/render 0.2.0 → 0.3.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/CHANGELOG.md +100 -1
- package/README.md +157 -32
- package/dist/blocks/chart/chart-check-kind-rules.d.ts +10 -0
- package/dist/blocks/chart/chart-check-kind-rules.d.ts.map +1 -0
- package/dist/blocks/chart/chart-check-kind-rules.js +151 -0
- package/dist/blocks/chart/chart-check-kind-rules.js.map +1 -0
- package/dist/blocks/chart/chart-check.d.ts +15 -0
- package/dist/blocks/chart/chart-check.d.ts.map +1 -0
- package/dist/blocks/chart/chart-check.js +196 -0
- package/dist/blocks/chart/chart-check.js.map +1 -0
- package/dist/blocks/chart/chart-encoding-schema.d.ts +7 -0
- package/dist/blocks/chart/chart-encoding-schema.d.ts.map +1 -0
- package/dist/blocks/chart/chart-encoding-schema.js +39 -0
- package/dist/blocks/chart/chart-encoding-schema.js.map +1 -0
- package/dist/blocks/chart/chart-encodings.d.ts +29 -0
- package/dist/blocks/chart/chart-encodings.d.ts.map +1 -0
- package/dist/blocks/chart/chart-encodings.js +59 -0
- package/dist/blocks/chart/chart-encodings.js.map +1 -0
- package/dist/blocks/chart/chart-kinds.d.ts +18 -0
- package/dist/blocks/chart/chart-kinds.d.ts.map +1 -0
- package/dist/blocks/chart/chart-kinds.js +60 -0
- package/dist/blocks/chart/chart-kinds.js.map +1 -0
- package/dist/blocks/chart/chart-model-rows.d.ts +23 -0
- package/dist/blocks/chart/chart-model-rows.d.ts.map +1 -0
- package/dist/blocks/chart/chart-model-rows.js +153 -0
- package/dist/blocks/chart/chart-model-rows.js.map +1 -0
- package/dist/blocks/chart/chart-model.d.ts +17 -0
- package/dist/blocks/chart/chart-model.d.ts.map +1 -0
- package/dist/blocks/chart/chart-model.js +131 -0
- package/dist/blocks/chart/chart-model.js.map +1 -0
- package/dist/blocks/chart/chart-styles.d.ts +3 -0
- package/dist/blocks/chart/chart-styles.d.ts.map +1 -0
- package/dist/blocks/chart/chart-styles.js +76 -0
- package/dist/blocks/chart/chart-styles.js.map +1 -0
- package/dist/blocks/chart/chart.d.ts +12 -0
- package/dist/blocks/chart/chart.d.ts.map +1 -0
- package/dist/blocks/chart/chart.js +73 -0
- package/dist/blocks/chart/chart.js.map +1 -0
- package/dist/blocks/chart/index.d.ts +4 -0
- package/dist/blocks/chart/index.d.ts.map +1 -0
- package/dist/blocks/chart/index.js +8 -0
- package/dist/blocks/chart/index.js.map +1 -0
- package/dist/blocks/composition/accordion.d.ts +4 -0
- package/dist/blocks/composition/accordion.d.ts.map +1 -0
- package/dist/blocks/composition/accordion.js +45 -0
- package/dist/blocks/composition/accordion.js.map +1 -0
- package/dist/blocks/composition/bento.d.ts +4 -0
- package/dist/blocks/composition/bento.d.ts.map +1 -0
- package/dist/blocks/composition/bento.js +91 -0
- package/dist/blocks/composition/bento.js.map +1 -0
- package/dist/blocks/composition/carousel.d.ts +4 -0
- package/dist/blocks/composition/carousel.d.ts.map +1 -0
- package/dist/blocks/composition/carousel.js +51 -0
- package/dist/blocks/composition/carousel.js.map +1 -0
- package/dist/blocks/composition/composition-runtime.d.ts +14 -0
- package/dist/blocks/composition/composition-runtime.d.ts.map +1 -0
- package/dist/blocks/composition/composition-runtime.js +136 -0
- package/dist/blocks/composition/composition-runtime.js.map +1 -0
- package/dist/blocks/composition/composition-styles.d.ts +10 -0
- package/dist/blocks/composition/composition-styles.d.ts.map +1 -0
- package/dist/blocks/composition/composition-styles.js +80 -0
- package/dist/blocks/composition/composition-styles.js.map +1 -0
- package/dist/blocks/composition/index.d.ts +4 -0
- package/dist/blocks/composition/index.d.ts.map +1 -0
- package/dist/blocks/composition/index.js +11 -0
- package/dist/blocks/composition/index.js.map +1 -0
- package/dist/blocks/composition/nestable-blocks.d.ts +37 -0
- package/dist/blocks/composition/nestable-blocks.d.ts.map +1 -0
- package/dist/blocks/composition/nestable-blocks.js +92 -0
- package/dist/blocks/composition/nestable-blocks.js.map +1 -0
- package/dist/blocks/composition/tabs.d.ts +4 -0
- package/dist/blocks/composition/tabs.d.ts.map +1 -0
- package/dist/blocks/composition/tabs.js +48 -0
- package/dist/blocks/composition/tabs.js.map +1 -0
- package/dist/blocks/controls/checkbox.d.ts +12 -0
- package/dist/blocks/controls/checkbox.d.ts.map +1 -0
- package/dist/blocks/controls/checkbox.js +43 -0
- package/dist/blocks/controls/checkbox.js.map +1 -0
- package/dist/blocks/controls/choice-options.d.ts +24 -0
- package/dist/blocks/controls/choice-options.d.ts.map +1 -0
- package/dist/blocks/controls/choice-options.js +117 -0
- package/dist/blocks/controls/choice-options.js.map +1 -0
- package/dist/blocks/controls/control-shared.d.ts +66 -0
- package/dist/blocks/controls/control-shared.d.ts.map +1 -0
- package/dist/blocks/controls/control-shared.js +241 -0
- package/dist/blocks/controls/control-shared.js.map +1 -0
- package/dist/blocks/controls/controls-runtime.d.ts +17 -0
- package/dist/blocks/controls/controls-runtime.d.ts.map +1 -0
- package/dist/blocks/controls/controls-runtime.js +180 -0
- package/dist/blocks/controls/controls-runtime.js.map +1 -0
- package/dist/blocks/controls/controls-styles.d.ts +14 -0
- package/dist/blocks/controls/controls-styles.d.ts.map +1 -0
- package/dist/blocks/controls/controls-styles.js +54 -0
- package/dist/blocks/controls/controls-styles.js.map +1 -0
- package/dist/blocks/controls/date-input.d.ts +6 -0
- package/dist/blocks/controls/date-input.d.ts.map +1 -0
- package/dist/blocks/controls/date-input.js +58 -0
- package/dist/blocks/controls/date-input.js.map +1 -0
- package/dist/blocks/controls/field-input.d.ts +10 -0
- package/dist/blocks/controls/field-input.d.ts.map +1 -0
- package/dist/blocks/controls/field-input.js +20 -0
- package/dist/blocks/controls/field-input.js.map +1 -0
- package/dist/blocks/controls/filter-bar.d.ts +11 -0
- package/dist/blocks/controls/filter-bar.d.ts.map +1 -0
- package/dist/blocks/controls/filter-bar.js +115 -0
- package/dist/blocks/controls/filter-bar.js.map +1 -0
- package/dist/blocks/controls/index.d.ts +4 -0
- package/dist/blocks/controls/index.d.ts.map +1 -0
- package/dist/blocks/controls/index.js +41 -0
- package/dist/blocks/controls/index.js.map +1 -0
- package/dist/blocks/controls/number-input.d.ts +4 -0
- package/dist/blocks/controls/number-input.d.ts.map +1 -0
- package/dist/blocks/controls/number-input.js +62 -0
- package/dist/blocks/controls/number-input.js.map +1 -0
- package/dist/blocks/controls/radio-group.d.ts +4 -0
- package/dist/blocks/controls/radio-group.d.ts.map +1 -0
- package/dist/blocks/controls/radio-group.js +56 -0
- package/dist/blocks/controls/radio-group.js.map +1 -0
- package/dist/blocks/controls/select.d.ts +4 -0
- package/dist/blocks/controls/select.d.ts.map +1 -0
- package/dist/blocks/controls/select.js +49 -0
- package/dist/blocks/controls/select.js.map +1 -0
- package/dist/blocks/controls/switch.d.ts +4 -0
- package/dist/blocks/controls/switch.d.ts.map +1 -0
- package/dist/blocks/controls/switch.js +22 -0
- package/dist/blocks/controls/switch.js.map +1 -0
- package/dist/blocks/controls/text-input.d.ts +4 -0
- package/dist/blocks/controls/text-input.d.ts.map +1 -0
- package/dist/blocks/controls/text-input.js +42 -0
- package/dist/blocks/controls/text-input.js.map +1 -0
- package/dist/blocks/data-table/data-table-cells.d.ts +26 -0
- package/dist/blocks/data-table/data-table-cells.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-cells.js +154 -0
- package/dist/blocks/data-table/data-table-cells.js.map +1 -0
- package/dist/blocks/data-table/data-table-check.d.ts +10 -0
- package/dist/blocks/data-table/data-table-check.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-check.js +99 -0
- package/dist/blocks/data-table/data-table-check.js.map +1 -0
- package/dist/blocks/data-table/data-table-columns.d.ts +41 -0
- package/dist/blocks/data-table/data-table-columns.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-columns.js +155 -0
- package/dist/blocks/data-table/data-table-columns.js.map +1 -0
- package/dist/blocks/data-table/data-table-runtime.d.ts +15 -0
- package/dist/blocks/data-table/data-table-runtime.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-runtime.js +106 -0
- package/dist/blocks/data-table/data-table-runtime.js.map +1 -0
- package/dist/blocks/data-table/data-table-styles.d.ts +11 -0
- package/dist/blocks/data-table/data-table-styles.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-styles.js +74 -0
- package/dist/blocks/data-table/data-table-styles.js.map +1 -0
- package/dist/blocks/data-table/data-table.d.ts +17 -0
- package/dist/blocks/data-table/data-table.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table.js +159 -0
- package/dist/blocks/data-table/data-table.js.map +1 -0
- package/dist/blocks/data-table/index.d.ts +4 -0
- package/dist/blocks/data-table/index.d.ts.map +1 -0
- package/dist/blocks/data-table/index.js +18 -0
- package/dist/blocks/data-table/index.js.map +1 -0
- package/dist/blocks/engineering/api-endpoint.d.ts +12 -0
- package/dist/blocks/engineering/api-endpoint.d.ts.map +1 -0
- package/dist/blocks/engineering/api-endpoint.js +174 -0
- package/dist/blocks/engineering/api-endpoint.js.map +1 -0
- package/dist/blocks/engineering/engineering-helpers.d.ts +49 -0
- package/dist/blocks/engineering/engineering-helpers.d.ts.map +1 -0
- package/dist/blocks/engineering/engineering-helpers.js +156 -0
- package/dist/blocks/engineering/engineering-helpers.js.map +1 -0
- package/dist/blocks/engineering/engineering-styles.d.ts +12 -0
- package/dist/blocks/engineering/engineering-styles.d.ts.map +1 -0
- package/dist/blocks/engineering/engineering-styles.js +174 -0
- package/dist/blocks/engineering/engineering-styles.js.map +1 -0
- package/dist/blocks/engineering/index.d.ts +4 -0
- package/dist/blocks/engineering/index.d.ts.map +1 -0
- package/dist/blocks/engineering/index.js +30 -0
- package/dist/blocks/engineering/index.js.map +1 -0
- package/dist/blocks/engineering/kanban.d.ts +11 -0
- package/dist/blocks/engineering/kanban.d.ts.map +1 -0
- package/dist/blocks/engineering/kanban.js +162 -0
- package/dist/blocks/engineering/kanban.js.map +1 -0
- package/dist/blocks/engineering/log-viewer.d.ts +14 -0
- package/dist/blocks/engineering/log-viewer.d.ts.map +1 -0
- package/dist/blocks/engineering/log-viewer.js +158 -0
- package/dist/blocks/engineering/log-viewer.js.map +1 -0
- package/dist/blocks/engineering/roadmap.d.ts +13 -0
- package/dist/blocks/engineering/roadmap.d.ts.map +1 -0
- package/dist/blocks/engineering/roadmap.js +197 -0
- package/dist/blocks/engineering/roadmap.js.map +1 -0
- package/dist/blocks/engineering/schema-viewer.d.ts +25 -0
- package/dist/blocks/engineering/schema-viewer.d.ts.map +1 -0
- package/dist/blocks/engineering/schema-viewer.js +124 -0
- package/dist/blocks/engineering/schema-viewer.js.map +1 -0
- package/dist/blocks/engineering/test-results.d.ts +12 -0
- package/dist/blocks/engineering/test-results.d.ts.map +1 -0
- package/dist/blocks/engineering/test-results.js +180 -0
- package/dist/blocks/engineering/test-results.js.map +1 -0
- package/dist/blocks/evidence/annotated-image.d.ts +15 -0
- package/dist/blocks/evidence/annotated-image.d.ts.map +1 -0
- package/dist/blocks/evidence/annotated-image.js +99 -0
- package/dist/blocks/evidence/annotated-image.js.map +1 -0
- package/dist/blocks/evidence/benchmark-comparison.d.ts +11 -0
- package/dist/blocks/evidence/benchmark-comparison.d.ts.map +1 -0
- package/dist/blocks/evidence/benchmark-comparison.js +262 -0
- package/dist/blocks/evidence/benchmark-comparison.js.map +1 -0
- package/dist/blocks/evidence/benchmark-verdict.d.ts +26 -0
- package/dist/blocks/evidence/benchmark-verdict.d.ts.map +1 -0
- package/dist/blocks/evidence/benchmark-verdict.js +31 -0
- package/dist/blocks/evidence/benchmark-verdict.js.map +1 -0
- package/dist/blocks/evidence/evidence-helpers.d.ts +39 -0
- package/dist/blocks/evidence/evidence-helpers.d.ts.map +1 -0
- package/dist/blocks/evidence/evidence-helpers.js +87 -0
- package/dist/blocks/evidence/evidence-helpers.js.map +1 -0
- package/dist/blocks/evidence/evidence-styles.d.ts +12 -0
- package/dist/blocks/evidence/evidence-styles.d.ts.map +1 -0
- package/dist/blocks/evidence/evidence-styles.js +88 -0
- package/dist/blocks/evidence/evidence-styles.js.map +1 -0
- package/dist/blocks/evidence/index.d.ts +4 -0
- package/dist/blocks/evidence/index.d.ts.map +1 -0
- package/dist/blocks/evidence/index.js +15 -0
- package/dist/blocks/evidence/index.js.map +1 -0
- package/dist/blocks/evidence/metric-breakdown.d.ts +22 -0
- package/dist/blocks/evidence/metric-breakdown.d.ts.map +1 -0
- package/dist/blocks/evidence/metric-breakdown.js +203 -0
- package/dist/blocks/evidence/metric-breakdown.js.map +1 -0
- package/dist/blocks/evidence/references.d.ts +13 -0
- package/dist/blocks/evidence/references.d.ts.map +1 -0
- package/dist/blocks/evidence/references.js +103 -0
- package/dist/blocks/evidence/references.js.map +1 -0
- package/dist/blocks/index.d.ts +8 -0
- package/dist/blocks/index.d.ts.map +1 -0
- package/dist/blocks/index.js +24 -0
- package/dist/blocks/index.js.map +1 -0
- package/dist/blocks/layout/grid-item.d.ts +4 -0
- package/dist/blocks/layout/grid-item.d.ts.map +1 -0
- package/dist/blocks/layout/grid-item.js +65 -0
- package/dist/blocks/layout/grid-item.js.map +1 -0
- package/dist/blocks/layout/grid.d.ts +9 -0
- package/dist/blocks/layout/grid.d.ts.map +1 -0
- package/dist/blocks/layout/grid.js +99 -0
- package/dist/blocks/layout/grid.js.map +1 -0
- package/dist/blocks/layout/index.d.ts +4 -0
- package/dist/blocks/layout/index.d.ts.map +1 -0
- package/dist/blocks/layout/index.js +23 -0
- package/dist/blocks/layout/index.js.map +1 -0
- package/dist/blocks/layout/layout-styles.d.ts +40 -0
- package/dist/blocks/layout/layout-styles.d.ts.map +1 -0
- package/dist/blocks/layout/layout-styles.js +110 -0
- package/dist/blocks/layout/layout-styles.js.map +1 -0
- package/dist/blocks/layout/main-aside.d.ts +4 -0
- package/dist/blocks/layout/main-aside.d.ts.map +1 -0
- package/dist/blocks/layout/main-aside.js +21 -0
- package/dist/blocks/layout/main-aside.js.map +1 -0
- package/dist/blocks/layout/rail-layout.d.ts +4 -0
- package/dist/blocks/layout/rail-layout.d.ts.map +1 -0
- package/dist/blocks/layout/rail-layout.js +33 -0
- package/dist/blocks/layout/rail-layout.js.map +1 -0
- package/dist/blocks/layout/semantic-layout-parts.d.ts +14 -0
- package/dist/blocks/layout/semantic-layout-parts.d.ts.map +1 -0
- package/dist/blocks/layout/semantic-layout-parts.js +9 -0
- package/dist/blocks/layout/semantic-layout-parts.js.map +1 -0
- package/dist/blocks/layout/sidebar-layout.d.ts +4 -0
- package/dist/blocks/layout/sidebar-layout.d.ts.map +1 -0
- package/dist/blocks/layout/sidebar-layout.js +30 -0
- package/dist/blocks/layout/sidebar-layout.js.map +1 -0
- package/dist/blocks/layout/split.d.ts +4 -0
- package/dist/blocks/layout/split.d.ts.map +1 -0
- package/dist/blocks/layout/split.js +23 -0
- package/dist/blocks/layout/split.js.map +1 -0
- package/dist/blocks/layout/stack.d.ts +4 -0
- package/dist/blocks/layout/stack.d.ts.map +1 -0
- package/dist/blocks/layout/stack.js +36 -0
- package/dist/blocks/layout/stack.js.map +1 -0
- package/dist/blocks/product/calendar-dates.d.ts +59 -0
- package/dist/blocks/product/calendar-dates.d.ts.map +1 -0
- package/dist/blocks/product/calendar-dates.js +100 -0
- package/dist/blocks/product/calendar-dates.js.map +1 -0
- package/dist/blocks/product/calendar.d.ts +12 -0
- package/dist/blocks/product/calendar.d.ts.map +1 -0
- package/dist/blocks/product/calendar.js +125 -0
- package/dist/blocks/product/calendar.js.map +1 -0
- package/dist/blocks/product/feature-matrix.d.ts +4 -0
- package/dist/blocks/product/feature-matrix.d.ts.map +1 -0
- package/dist/blocks/product/feature-matrix.js +72 -0
- package/dist/blocks/product/feature-matrix.js.map +1 -0
- package/dist/blocks/product/gallery.d.ts +14 -0
- package/dist/blocks/product/gallery.d.ts.map +1 -0
- package/dist/blocks/product/gallery.js +86 -0
- package/dist/blocks/product/gallery.js.map +1 -0
- package/dist/blocks/product/index.d.ts +4 -0
- package/dist/blocks/product/index.d.ts.map +1 -0
- package/dist/blocks/product/index.js +40 -0
- package/dist/blocks/product/index.js.map +1 -0
- package/dist/blocks/product/logo-cloud.d.ts +4 -0
- package/dist/blocks/product/logo-cloud.d.ts.map +1 -0
- package/dist/blocks/product/logo-cloud.js +42 -0
- package/dist/blocks/product/logo-cloud.js.map +1 -0
- package/dist/blocks/product/people.d.ts +4 -0
- package/dist/blocks/product/people.d.ts.map +1 -0
- package/dist/blocks/product/people.js +53 -0
- package/dist/blocks/product/people.js.map +1 -0
- package/dist/blocks/product/pricing.d.ts +4 -0
- package/dist/blocks/product/pricing.d.ts.map +1 -0
- package/dist/blocks/product/pricing.js +86 -0
- package/dist/blocks/product/pricing.js.map +1 -0
- package/dist/blocks/product/product-helpers.d.ts +22 -0
- package/dist/blocks/product/product-helpers.d.ts.map +1 -0
- package/dist/blocks/product/product-helpers.js +48 -0
- package/dist/blocks/product/product-helpers.js.map +1 -0
- package/dist/blocks/product/product-runtime.d.ts +15 -0
- package/dist/blocks/product/product-runtime.d.ts.map +1 -0
- package/dist/blocks/product/product-runtime.js +97 -0
- package/dist/blocks/product/product-runtime.js.map +1 -0
- package/dist/blocks/product/product-styles.d.ts +14 -0
- package/dist/blocks/product/product-styles.d.ts.map +1 -0
- package/dist/blocks/product/product-styles.js +120 -0
- package/dist/blocks/product/product-styles.js.map +1 -0
- package/dist/blocks/product/testimonial.d.ts +8 -0
- package/dist/blocks/product/testimonial.d.ts.map +1 -0
- package/dist/blocks/product/testimonial.js +67 -0
- package/dist/blocks/product/testimonial.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +143 -30
- package/dist/cli.js.map +1 -1
- package/dist/data/data-json-schema.d.ts +9 -0
- package/dist/data/data-json-schema.d.ts.map +1 -0
- package/dist/data/data-json-schema.js +48 -0
- package/dist/data/data-json-schema.js.map +1 -0
- package/dist/data/dataset-types.d.ts +47 -0
- package/dist/data/dataset-types.d.ts.map +1 -0
- package/dist/data/dataset-types.js +49 -0
- package/dist/data/dataset-types.js.map +1 -0
- package/dist/data/format-value.d.ts +39 -0
- package/dist/data/format-value.d.ts.map +1 -0
- package/dist/data/format-value.js +214 -0
- package/dist/data/format-value.js.map +1 -0
- package/dist/data/resolve-block-data.d.ts +24 -0
- package/dist/data/resolve-block-data.d.ts.map +1 -0
- package/dist/data/resolve-block-data.js +190 -0
- package/dist/data/resolve-block-data.js.map +1 -0
- package/dist/data/transform-pipeline.d.ts +65 -0
- package/dist/data/transform-pipeline.d.ts.map +1 -0
- package/dist/data/transform-pipeline.js +234 -0
- package/dist/data/transform-pipeline.js.map +1 -0
- package/dist/data/validate-datasets.d.ts +22 -0
- package/dist/data/validate-datasets.d.ts.map +1 -0
- package/dist/data/validate-datasets.js +137 -0
- package/dist/data/validate-datasets.js.map +1 -0
- package/dist/diagram/adapter-markup-fit.d.ts +44 -0
- package/dist/diagram/adapter-markup-fit.d.ts.map +1 -0
- package/dist/diagram/adapter-markup-fit.js +292 -0
- package/dist/diagram/adapter-markup-fit.js.map +1 -0
- package/dist/diagram/adapter-stylesheet-filter.d.ts +56 -0
- package/dist/diagram/adapter-stylesheet-filter.d.ts.map +1 -0
- package/dist/diagram/adapter-stylesheet-filter.js +245 -0
- package/dist/diagram/adapter-stylesheet-filter.js.map +1 -0
- package/dist/diagram/adapter.d.ts +17 -0
- package/dist/diagram/adapter.d.ts.map +1 -1
- package/dist/diagram/adapter.js +43 -2
- package/dist/diagram/adapter.js.map +1 -1
- package/dist/index.d.ts +14 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/ir.d.ts +18 -0
- package/dist/ir.d.ts.map +1 -1
- package/dist/ir.js.map +1 -1
- package/dist/mcp/mcp-http-transport.d.ts +68 -0
- package/dist/mcp/mcp-http-transport.d.ts.map +1 -0
- package/dist/mcp/mcp-http-transport.js +140 -0
- package/dist/mcp/mcp-http-transport.js.map +1 -0
- package/dist/mcp/mcp-json-rpc-dispatch.d.ts +38 -0
- package/dist/mcp/mcp-json-rpc-dispatch.d.ts.map +1 -0
- package/dist/mcp/mcp-json-rpc-dispatch.js +98 -0
- package/dist/mcp/mcp-json-rpc-dispatch.js.map +1 -0
- package/dist/mcp/mcp-local-tools.d.ts +20 -0
- package/dist/mcp/mcp-local-tools.d.ts.map +1 -0
- package/dist/mcp/mcp-local-tools.js +58 -0
- package/dist/mcp/mcp-local-tools.js.map +1 -0
- package/dist/mcp/mcp-protocol.d.ts +79 -0
- package/dist/mcp/mcp-protocol.d.ts.map +1 -0
- package/dist/mcp/mcp-protocol.js +83 -0
- package/dist/mcp/mcp-protocol.js.map +1 -0
- package/dist/mcp/mcp-stdio-transport.d.ts +28 -0
- package/dist/mcp/mcp-stdio-transport.d.ts.map +1 -0
- package/dist/mcp/mcp-stdio-transport.js +73 -0
- package/dist/mcp/mcp-stdio-transport.js.map +1 -0
- package/dist/mcp/mcp-tool-definitions.d.ts +66 -0
- package/dist/mcp/mcp-tool-definitions.d.ts.map +1 -0
- package/dist/mcp/mcp-tool-definitions.js +246 -0
- package/dist/mcp/mcp-tool-definitions.js.map +1 -0
- package/dist/mcp-server.d.ts +6 -33
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +5 -270
- package/dist/mcp-server.js.map +1 -1
- package/dist/recipes/index.d.ts +27 -0
- package/dist/recipes/index.d.ts.map +1 -0
- package/dist/recipes/index.js +30 -0
- package/dist/recipes/index.js.map +1 -0
- package/dist/recipes/recipes.generated.d.ts +8 -0
- package/dist/recipes/recipes.generated.d.ts.map +1 -0
- package/dist/recipes/recipes.generated.js +704 -0
- package/dist/recipes/recipes.generated.js.map +1 -0
- package/dist/registry/actions.d.ts +2 -0
- package/dist/registry/actions.d.ts.map +1 -1
- package/dist/registry/actions.js +3 -1
- package/dist/registry/actions.js.map +1 -1
- package/dist/registry/block-module.d.ts +65 -0
- package/dist/registry/block-module.d.ts.map +1 -0
- package/dist/registry/block-module.js +19 -0
- package/dist/registry/block-module.js.map +1 -0
- package/dist/registry/catalog-search.d.ts +32 -0
- package/dist/registry/catalog-search.d.ts.map +1 -0
- package/dist/registry/catalog-search.js +122 -0
- package/dist/registry/catalog-search.js.map +1 -0
- package/dist/registry/define-helpers.d.ts +89 -0
- package/dist/registry/define-helpers.d.ts.map +1 -0
- package/dist/registry/define-helpers.js +87 -0
- package/dist/registry/define-helpers.js.map +1 -0
- package/dist/registry/describe-many.d.ts +58 -0
- package/dist/registry/describe-many.d.ts.map +1 -0
- package/dist/registry/describe-many.js +156 -0
- package/dist/registry/describe-many.js.map +1 -0
- package/dist/registry/prop-schema.d.ts +32 -1
- package/dist/registry/prop-schema.d.ts.map +1 -1
- package/dist/registry/prop-schema.js +108 -2
- package/dist/registry/prop-schema.js.map +1 -1
- package/dist/registry/registry-builder.d.ts +17 -0
- package/dist/registry/registry-builder.d.ts.map +1 -0
- package/dist/registry/registry-builder.js +158 -0
- package/dist/registry/registry-builder.js.map +1 -0
- package/dist/registry/registry.d.ts +32 -5
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +67 -14
- package/dist/registry/registry.js.map +1 -1
- package/dist/registry/roster.d.ts +34 -5
- package/dist/registry/roster.d.ts.map +1 -1
- package/dist/registry/roster.js +184 -224
- package/dist/registry/roster.js.map +1 -1
- package/dist/render/block-helpers.d.ts +11 -18
- package/dist/render/block-helpers.d.ts.map +1 -1
- package/dist/render/block-helpers.js +14 -44
- package/dist/render/block-helpers.js.map +1 -1
- package/dist/render/blocks.d.ts +9 -33
- package/dist/render/blocks.d.ts.map +1 -1
- package/dist/render/blocks.js +56 -180
- package/dist/render/blocks.js.map +1 -1
- package/dist/render/chart-figure-encoded.d.ts +11 -0
- package/dist/render/chart-figure-encoded.d.ts.map +1 -0
- package/dist/render/chart-figure-encoded.js +81 -0
- package/dist/render/chart-figure-encoded.js.map +1 -0
- package/dist/render/chart-kinds-cartesian.d.ts +14 -0
- package/dist/render/chart-kinds-cartesian.d.ts.map +1 -0
- package/dist/render/chart-kinds-cartesian.js +122 -0
- package/dist/render/chart-kinds-cartesian.js.map +1 -0
- package/dist/render/chart-kinds-composite.d.ts +16 -0
- package/dist/render/chart-kinds-composite.d.ts.map +1 -0
- package/dist/render/chart-kinds-composite.js +144 -0
- package/dist/render/chart-kinds-composite.js.map +1 -0
- package/dist/render/chart-kinds-gauge-treemap.d.ts +8 -0
- package/dist/render/chart-kinds-gauge-treemap.d.ts.map +1 -0
- package/dist/render/chart-kinds-gauge-treemap.js +101 -0
- package/dist/render/chart-kinds-gauge-treemap.js.map +1 -0
- package/dist/render/chart-kinds-histogram-waterfall.d.ts +17 -0
- package/dist/render/chart-kinds-histogram-waterfall.d.ts.map +1 -0
- package/dist/render/chart-kinds-histogram-waterfall.js +172 -0
- package/dist/render/chart-kinds-histogram-waterfall.js.map +1 -0
- package/dist/render/chart-overlays.d.ts +18 -0
- package/dist/render/chart-overlays.d.ts.map +1 -0
- package/dist/render/chart-overlays.js +58 -0
- package/dist/render/chart-overlays.js.map +1 -0
- package/dist/render/chart-scales.d.ts +83 -0
- package/dist/render/chart-scales.d.ts.map +1 -0
- package/dist/render/chart-scales.js +166 -0
- package/dist/render/chart-scales.js.map +1 -0
- package/dist/render/chart-svg-parts.d.ts +50 -0
- package/dist/render/chart-svg-parts.d.ts.map +1 -0
- package/dist/render/chart-svg-parts.js +125 -0
- package/dist/render/chart-svg-parts.js.map +1 -0
- package/dist/render/chart-text.d.ts +18 -0
- package/dist/render/chart-text.d.ts.map +1 -0
- package/dist/render/chart-text.js +69 -0
- package/dist/render/chart-text.js.map +1 -0
- package/dist/render/chart-treemap-layout.d.ts +17 -0
- package/dist/render/chart-treemap-layout.d.ts.map +1 -0
- package/dist/render/chart-treemap-layout.js +74 -0
- package/dist/render/chart-treemap-layout.js.map +1 -0
- package/dist/render/chart-types.d.ts +107 -0
- package/dist/render/chart-types.d.ts.map +1 -0
- package/dist/render/chart-types.js +11 -0
- package/dist/render/chart-types.js.map +1 -0
- package/dist/render/charts.d.ts +28 -11
- package/dist/render/charts.d.ts.map +1 -1
- package/dist/render/charts.js +38 -117
- package/dist/render/charts.js.map +1 -1
- package/dist/render/derived-variables.d.ts +20 -0
- package/dist/render/derived-variables.d.ts.map +1 -1
- package/dist/render/derived-variables.js +23 -0
- package/dist/render/derived-variables.js.map +1 -1
- package/dist/render/document.d.ts +11 -0
- package/dist/render/document.d.ts.map +1 -1
- package/dist/render/document.js +20 -3
- package/dist/render/document.js.map +1 -1
- package/dist/render/escape.d.ts +10 -0
- package/dist/render/escape.d.ts.map +1 -1
- package/dist/render/escape.js +28 -0
- package/dist/render/escape.js.map +1 -1
- package/dist/render/feature-styles.d.ts.map +1 -1
- package/dist/render/feature-styles.js +42 -80
- package/dist/render/feature-styles.js.map +1 -1
- package/dist/render/outline.d.ts +1 -1
- package/dist/render/outline.d.ts.map +1 -1
- package/dist/render/outline.js +4 -1
- package/dist/render/outline.js.map +1 -1
- package/dist/render/recipe-styles.d.ts +26 -0
- package/dist/render/recipe-styles.d.ts.map +1 -0
- package/dist/render/recipe-styles.js +218 -0
- package/dist/render/recipe-styles.js.map +1 -0
- package/dist/render/render-context.d.ts +40 -0
- package/dist/render/render-context.d.ts.map +1 -0
- package/dist/render/render-context.js +16 -0
- package/dist/render/render-context.js.map +1 -0
- package/dist/render/render.d.ts +7 -0
- package/dist/render/render.d.ts.map +1 -1
- package/dist/render/render.js +68 -44
- package/dist/render/render.js.map +1 -1
- package/dist/render/runtime.d.ts +4 -1
- package/dist/render/runtime.d.ts.map +1 -1
- package/dist/render/runtime.js +91 -118
- package/dist/render/runtime.js.map +1 -1
- package/dist/render/showcase-blocks.d.ts +5 -0
- package/dist/render/showcase-blocks.d.ts.map +1 -1
- package/dist/render/showcase-blocks.js +8 -28
- package/dist/render/showcase-blocks.js.map +1 -1
- package/dist/render/showcase-styles.d.ts.map +1 -1
- package/dist/render/showcase-styles.js +15 -31
- package/dist/render/showcase-styles.js.map +1 -1
- package/dist/render/style-units.d.ts +17 -0
- package/dist/render/style-units.d.ts.map +1 -0
- package/dist/render/style-units.js +24 -0
- package/dist/render/style-units.js.map +1 -0
- package/dist/render/styles.d.ts.map +1 -1
- package/dist/render/styles.js +8 -5
- package/dist/render/styles.js.map +1 -1
- package/dist/render/tone.d.ts +14 -0
- package/dist/render/tone.d.ts.map +1 -0
- package/dist/render/tone.js +40 -0
- package/dist/render/tone.js.map +1 -0
- package/dist/render/verify.d.ts +3 -0
- package/dist/render/verify.d.ts.map +1 -1
- package/dist/render/verify.js +15 -2
- package/dist/render/verify.js.map +1 -1
- package/dist/spec/asset-references.d.ts +35 -0
- package/dist/spec/asset-references.d.ts.map +1 -0
- package/dist/spec/asset-references.js +93 -0
- package/dist/spec/asset-references.js.map +1 -0
- package/dist/spec/bounds.d.ts +6 -0
- package/dist/spec/bounds.d.ts.map +1 -1
- package/dist/spec/bounds.js +7 -0
- package/dist/spec/bounds.js.map +1 -1
- package/dist/spec/conditions.d.ts +43 -0
- package/dist/spec/conditions.d.ts.map +1 -0
- package/dist/spec/conditions.js +179 -0
- package/dist/spec/conditions.js.map +1 -0
- package/dist/spec/network-policy.d.ts +33 -0
- package/dist/spec/network-policy.d.ts.map +1 -0
- package/dist/spec/network-policy.js +57 -0
- package/dist/spec/network-policy.js.map +1 -0
- package/dist/spec/normalize.d.ts +7 -2
- package/dist/spec/normalize.d.ts.map +1 -1
- package/dist/spec/normalize.js +203 -57
- package/dist/spec/normalize.js.map +1 -1
- package/dist/theme/dialect-presets.d.ts +12 -0
- package/dist/theme/dialect-presets.d.ts.map +1 -0
- package/dist/theme/dialect-presets.js +214 -0
- package/dist/theme/dialect-presets.js.map +1 -0
- package/dist/theme/load-theme.d.ts +9 -1
- package/dist/theme/load-theme.d.ts.map +1 -1
- package/dist/theme/load-theme.js +25 -2
- package/dist/theme/load-theme.js.map +1 -1
- package/dist/theme/preset-builder.d.ts +36 -0
- package/dist/theme/preset-builder.d.ts.map +1 -0
- package/dist/theme/preset-builder.js +51 -0
- package/dist/theme/preset-builder.js.map +1 -0
- package/dist/theme/presets.d.ts +4 -7
- package/dist/theme/presets.d.ts.map +1 -1
- package/dist/theme/presets.js +7 -40
- package/dist/theme/presets.js.map +1 -1
- package/dist/theme/recipes.d.ts +38 -0
- package/dist/theme/recipes.d.ts.map +1 -0
- package/dist/theme/recipes.js +96 -0
- package/dist/theme/recipes.js.map +1 -0
- package/dist/theme/theme-catalog.d.ts.map +1 -1
- package/dist/theme/theme-catalog.js +16 -0
- package/dist/theme/theme-catalog.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/llms.txt +9 -5
- package/package.json +6 -2
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encoded charts that show a distribution or a running total: histogram and
|
|
3
|
+
* waterfall. Bins snap to clean steps; a waterfall closes with a computed total.
|
|
4
|
+
*/
|
|
5
|
+
import { axisBounds, bandCentre, CARTESIAN_TITLED, clampTo, niceStep, numberFormatter, plotWidth, round, scaleX, scaleY, seriesClass, tickFormatter, } from './chart-scales.js';
|
|
6
|
+
import { axisTitles, boundedGridAndTicks, categoryIndex, categoryLabels, MAX_BAR_WIDTH, numericXTicks, plotFor, rectPath, textValueLabel, } from './chart-svg-parts.js';
|
|
7
|
+
import { escapeText } from './escape.js';
|
|
8
|
+
/**
|
|
9
|
+
* Bin edges on clean steps (1, 2, 2.5 or 5 × 10ⁿ). `bins` is a target count:
|
|
10
|
+
* the clean step whose bin count lands closest to it wins, the wider step on a
|
|
11
|
+
* tie. Deterministic for a given input.
|
|
12
|
+
*/
|
|
13
|
+
export function histogramEdges(samples, bins) {
|
|
14
|
+
const finite = samples.filter((value) => Number.isFinite(value));
|
|
15
|
+
if (finite.length === 0)
|
|
16
|
+
return [];
|
|
17
|
+
const low = Math.min(...finite);
|
|
18
|
+
const high = Math.max(...finite);
|
|
19
|
+
// One bin when every sample is equal, or when the values are too large for
|
|
20
|
+
// clean steps to separate (1e16 + 4): its width must still be representable.
|
|
21
|
+
const single = [low, high > low ? high : low + Math.max(1, Math.abs(low) * Number.EPSILON * 4)];
|
|
22
|
+
if (low === high)
|
|
23
|
+
return single;
|
|
24
|
+
const target = Math.max(1, bins);
|
|
25
|
+
const magnitude = 10 ** Math.floor(Math.log10((high - low) / target));
|
|
26
|
+
const layout = (step) => {
|
|
27
|
+
const start = Math.floor(low / step) * step;
|
|
28
|
+
return { step, start, count: Math.max(1, Math.ceil((high - start) / step - 1e-9)) };
|
|
29
|
+
};
|
|
30
|
+
let best = layout(10 * magnitude);
|
|
31
|
+
for (const factor of [5, 2.5, 2, 1]) {
|
|
32
|
+
const candidate = layout(factor * magnitude);
|
|
33
|
+
if (Math.abs(candidate.count - target) < Math.abs(best.count - target))
|
|
34
|
+
best = candidate;
|
|
35
|
+
}
|
|
36
|
+
const edges = [];
|
|
37
|
+
for (let index = 0; index <= best.count; index += 1) {
|
|
38
|
+
edges.push(Number((best.start + best.step * index).toPrecision(12)));
|
|
39
|
+
}
|
|
40
|
+
const increasing = edges.every((edge, index) => index === 0 || edge > (edges[index - 1] ?? edge));
|
|
41
|
+
return increasing ? edges : single;
|
|
42
|
+
}
|
|
43
|
+
/** Samples per bin; each bin is [a, b) and the last is closed. */
|
|
44
|
+
export function histogramCounts(samples, edges) {
|
|
45
|
+
const bins = Math.max(0, edges.length - 1);
|
|
46
|
+
const counts = new Array(bins).fill(0);
|
|
47
|
+
if (bins === 0)
|
|
48
|
+
return counts;
|
|
49
|
+
const start = edges[0] ?? 0;
|
|
50
|
+
const span = (edges[bins] ?? start) - start;
|
|
51
|
+
for (const value of samples) {
|
|
52
|
+
if (!Number.isFinite(value))
|
|
53
|
+
continue;
|
|
54
|
+
const slot = Math.min(bins - 1, Math.max(0, Math.floor(((value - start) / span) * bins + 1e-9)));
|
|
55
|
+
counts[slot] = (counts[slot] ?? 0) + 1;
|
|
56
|
+
}
|
|
57
|
+
return counts;
|
|
58
|
+
}
|
|
59
|
+
export function histogramChart(input, encoded) {
|
|
60
|
+
const frame = CARTESIAN_TITLED;
|
|
61
|
+
const xFormat = numberFormatter(encoded.x.format);
|
|
62
|
+
const count = numberFormatter({ format: 'integer' });
|
|
63
|
+
const edges = histogramEdges(encoded.samples, encoded.bins);
|
|
64
|
+
const counts = histogramCounts(encoded.samples, edges);
|
|
65
|
+
const first = edges[0] ?? 0;
|
|
66
|
+
const last = edges[edges.length - 1] ?? 1;
|
|
67
|
+
const step = counts.length === 0 ? 1 : (last - first) / counts.length;
|
|
68
|
+
const xBounds = { min: first, max: last, step };
|
|
69
|
+
// Ticks on clean multiples inside the binned range, not on every edge.
|
|
70
|
+
const tickStep = niceStep(Math.max(last - first, step), 5);
|
|
71
|
+
const xTicks = [];
|
|
72
|
+
for (let tick = Math.ceil(first / tickStep) * tickStep; tick <= last + tickStep / 1000; tick += tickStep) {
|
|
73
|
+
xTicks.push(Number(tick.toPrecision(12)));
|
|
74
|
+
}
|
|
75
|
+
const yBounds = axisBounds(counts, encoded.y, true);
|
|
76
|
+
const zeroY = scaleY(clampTo(0, yBounds), yBounds, frame);
|
|
77
|
+
const ranges = counts.map((_, index) => `${xFormat(edges[index] ?? 0)}–${xFormat(edges[index + 1] ?? 0)}`);
|
|
78
|
+
const bars = counts.map((value, index) => {
|
|
79
|
+
const x1 = scaleX(edges[index] ?? 0, xBounds, frame);
|
|
80
|
+
const x2 = scaleX(edges[index + 1] ?? 0, xBounds, frame);
|
|
81
|
+
const y = scaleY(clampTo(value, yBounds), yBounds, frame);
|
|
82
|
+
const width = Math.max(1, x2 - x1 - 2);
|
|
83
|
+
return `<path class="ak-chart-bar ${seriesClass(0)}" tabindex="0" d="${rectPath(x1 + 1, y, width, zeroY - y)}"><title>${escapeText(`${ranges[index]}: ${count(value)}`)}</title></path>${textValueLabel(x1 + 1 + width / 2, y - 7, count(value))}`;
|
|
84
|
+
});
|
|
85
|
+
const busiest = counts.indexOf(Math.max(...counts, 0));
|
|
86
|
+
const label = encoded.x.label ?? input.series[0]?.label ?? 'Values';
|
|
87
|
+
return {
|
|
88
|
+
body: `${boundedGridAndTicks(yBounds, frame, count)}${numericXTicks(xBounds, frame, tickFormatter(encoded.x.format, { ...xBounds, step: tickStep }), xTicks)}${bars.join('')}${axisTitles(frame, encoded.x.label, encoded.y.label ?? 'Count')}`,
|
|
89
|
+
viewBox: frame,
|
|
90
|
+
legend: [],
|
|
91
|
+
summary: counts.length === 0
|
|
92
|
+
? `${label}: no values.`
|
|
93
|
+
: `${label}: ${encoded.samples.length} values in ${counts.length} bins from ${xFormat(first)} to ${xFormat(last)}; the most common range is ${ranges[busiest]} (${count(counts[busiest] ?? 0)}).`,
|
|
94
|
+
table: {
|
|
95
|
+
columns: [
|
|
96
|
+
{ label: label, numeric: false },
|
|
97
|
+
{ label: 'Count', numeric: true },
|
|
98
|
+
],
|
|
99
|
+
rows: counts.map((value, index) => [ranges[index] ?? '', count(value)]),
|
|
100
|
+
},
|
|
101
|
+
plot: plotFor(frame, yBounds, (x) => typeof x === 'number' ? scaleX(clampTo(x, xBounds), xBounds, frame) : undefined),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/** Running total of signed changes, closed by a computed total bar. */
|
|
105
|
+
export function waterfallChart(input, encoded) {
|
|
106
|
+
const frame = CARTESIAN_TITLED;
|
|
107
|
+
const format = numberFormatter(encoded.y.format);
|
|
108
|
+
const signed = (value) => (value > 0 ? `+${format(value)}` : format(value));
|
|
109
|
+
const series = input.series[0] ?? { label: '', values: [] };
|
|
110
|
+
const steps = input.labels.map((label, index) => ({ label, value: series.values[index] ?? 0 }));
|
|
111
|
+
const running = [];
|
|
112
|
+
let total = 0;
|
|
113
|
+
for (const step of steps) {
|
|
114
|
+
total += step.value;
|
|
115
|
+
running.push(total);
|
|
116
|
+
}
|
|
117
|
+
const labels = [...input.labels, 'Total'];
|
|
118
|
+
const groups = labels.length;
|
|
119
|
+
const bounds = axisBounds([0, ...running], encoded.y, true);
|
|
120
|
+
const band = plotWidth(frame) / groups;
|
|
121
|
+
const width = round(Math.max(4, Math.min(MAX_BAR_WIDTH, band * 0.62)));
|
|
122
|
+
const parts = [];
|
|
123
|
+
let previous = 0;
|
|
124
|
+
const bar = (index, from, to, tone, text, title) => {
|
|
125
|
+
const x = round(bandCentre(index, groups, frame) - width / 2);
|
|
126
|
+
const y1 = scaleY(clampTo(from, bounds), bounds, frame);
|
|
127
|
+
const y2 = scaleY(clampTo(to, bounds), bounds, frame);
|
|
128
|
+
const top = Math.min(y1, y2);
|
|
129
|
+
parts.push(`<path class="ak-chart-bar ${tone}" tabindex="0" d="${rectPath(x, top, width, Math.max(1, Math.abs(y1 - y2)))}"><title>${escapeText(title)}</title></path>`, textValueLabel(x + width / 2, top - 7, text));
|
|
130
|
+
return { x, y: y2 };
|
|
131
|
+
};
|
|
132
|
+
steps.forEach((step, index) => {
|
|
133
|
+
const next = previous + step.value;
|
|
134
|
+
const end = bar(index, previous, next, step.value >= 0 ? 'ak-chart-up' : 'ak-chart-down', signed(step.value), `${step.label}: ${signed(step.value)}, running total ${format(next)}`);
|
|
135
|
+
const nextX = round(bandCentre(index + 1, groups, frame) - width / 2);
|
|
136
|
+
parts.push(`<line class="ak-chart-connector" x1="${round(end.x + width)}" y1="${end.y}" x2="${nextX}" y2="${end.y}"/>`);
|
|
137
|
+
previous = next;
|
|
138
|
+
});
|
|
139
|
+
bar(steps.length, 0, total, 'ak-chart-net', format(total), `Total: ${format(total)}`);
|
|
140
|
+
return {
|
|
141
|
+
body: `${boundedGridAndTicks(bounds, frame, tickFormatter(encoded.y.format, bounds))}${categoryLabels(labels, (index) => bandCentre(index, groups, frame), frame)}${parts.join('')}${axisTitles(frame, encoded.x.label, encoded.y.label)}`,
|
|
142
|
+
viewBox: frame,
|
|
143
|
+
legend: [
|
|
144
|
+
{ label: 'Increase', swatch: 'ak-chart-up' },
|
|
145
|
+
{ label: 'Decrease', swatch: 'ak-chart-down' },
|
|
146
|
+
{ label: 'Total', swatch: 'ak-chart-net' },
|
|
147
|
+
],
|
|
148
|
+
summary: `${series.label}: ${steps
|
|
149
|
+
.map((step) => `${step.label} ${signed(step.value)}`)
|
|
150
|
+
.join(', ')}; total ${format(total)}.`,
|
|
151
|
+
table: {
|
|
152
|
+
columns: [
|
|
153
|
+
{ label: encoded.x.label ?? 'Step', numeric: false },
|
|
154
|
+
{ label: 'Change', numeric: true },
|
|
155
|
+
{ label: 'Running total', numeric: true },
|
|
156
|
+
],
|
|
157
|
+
rows: [
|
|
158
|
+
...steps.map((step, index) => [
|
|
159
|
+
step.label,
|
|
160
|
+
signed(step.value),
|
|
161
|
+
format(running[index] ?? 0),
|
|
162
|
+
]),
|
|
163
|
+
['Total', '', format(total)],
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
plot: plotFor(frame, bounds, (x) => {
|
|
167
|
+
const index = categoryIndex(labels, x);
|
|
168
|
+
return index === undefined ? undefined : bandCentre(index, groups, frame);
|
|
169
|
+
}),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=chart-kinds-histogram-waterfall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-kinds-histogram-waterfall.js","sourceRoot":"","sources":["../../src/render/chart-kinds-histogram-waterfall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markers and annotations on charts drawn on x/y axes.
|
|
3
|
+
*
|
|
4
|
+
* A marker is a dashed vertical rule with its label. An annotation is a
|
|
5
|
+
* numbered callout at a point; the same numbers head the list under the chart
|
|
6
|
+
* and the summary, so the note never depends on seeing the plot.
|
|
7
|
+
*/
|
|
8
|
+
import type { NumberFormatter } from './chart-svg-parts.js';
|
|
9
|
+
import type { ChartAnnotation, ChartMarker, KindRender } from './chart-types.js';
|
|
10
|
+
type Plot = NonNullable<KindRender['plot']>;
|
|
11
|
+
export declare function markerLayer(markers: readonly ChartMarker[], plot: Plot): string;
|
|
12
|
+
export declare function annotationLayer(annotations: readonly ChartAnnotation[], plot: Plot): string;
|
|
13
|
+
/** The visible numbered list of annotations under the chart. */
|
|
14
|
+
export declare function annotationList(annotations: readonly ChartAnnotation[], xFormat: NumberFormatter, yFormat: NumberFormatter): string;
|
|
15
|
+
/** Sentences that restate the overlays for the summary. */
|
|
16
|
+
export declare function overlaySummary(markers: readonly ChartMarker[], annotations: readonly ChartAnnotation[], xFormat: NumberFormatter, yFormat: NumberFormatter): string;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=chart-overlays.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-overlays.d.ts","sourceRoot":"","sources":["../../src/render/chart-overlays.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGjF,KAAK,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5C,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAW/E;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAW3F;AAMD,gEAAgE;AAChE,wBAAgB,cAAc,CAC5B,WAAW,EAAE,SAAS,eAAe,EAAE,EACvC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,eAAe,GACvB,MAAM,CAUR;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,WAAW,EAAE,SAAS,eAAe,EAAE,EACvC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,eAAe,GACvB,MAAM,CAuBR"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markers and annotations on charts drawn on x/y axes.
|
|
3
|
+
*
|
|
4
|
+
* A marker is a dashed vertical rule with its label. An annotation is a
|
|
5
|
+
* numbered callout at a point; the same numbers head the list under the chart
|
|
6
|
+
* and the summary, so the note never depends on seeing the plot.
|
|
7
|
+
*/
|
|
8
|
+
import { round } from './chart-scales.js';
|
|
9
|
+
import { escapeText } from './escape.js';
|
|
10
|
+
export function markerLayer(markers, plot) {
|
|
11
|
+
return markers
|
|
12
|
+
.map((marker) => {
|
|
13
|
+
const x = plot.xAt(marker.x);
|
|
14
|
+
if (x === undefined)
|
|
15
|
+
return '';
|
|
16
|
+
const flip = x > plot.right - 140;
|
|
17
|
+
return `<g class="ak-chart-marker"><line class="ak-chart-marker-rule" x1="${x}" y1="${plot.top}" x2="${x}" y2="${plot.bottom}"/><text class="ak-chart-marker-label" x="${round(flip ? x - 6 : x + 6)}" y="${plot.top + 10}" text-anchor="${flip ? 'end' : 'start'}">${escapeText(marker.label)}</text></g>`;
|
|
18
|
+
})
|
|
19
|
+
.join('');
|
|
20
|
+
}
|
|
21
|
+
export function annotationLayer(annotations, plot) {
|
|
22
|
+
return annotations
|
|
23
|
+
.map((note, index) => {
|
|
24
|
+
const x = plot.xAt(note.x);
|
|
25
|
+
if (x === undefined)
|
|
26
|
+
return '';
|
|
27
|
+
const y = plot.yAt(note.y);
|
|
28
|
+
return `<g class="ak-chart-note"><circle class="ak-chart-note-dot" cx="${x}" cy="${y}" r="10"/><text class="ak-chart-note-number" x="${x}" y="${round(y + 4)}" text-anchor="middle">${index + 1}</text></g>`;
|
|
29
|
+
})
|
|
30
|
+
.join('');
|
|
31
|
+
}
|
|
32
|
+
function where(x, y, xFormat, yFormat) {
|
|
33
|
+
return `${typeof x === 'number' ? xFormat(x) : x}, ${yFormat(y)}`;
|
|
34
|
+
}
|
|
35
|
+
/** The visible numbered list of annotations under the chart. */
|
|
36
|
+
export function annotationList(annotations, xFormat, yFormat) {
|
|
37
|
+
if (annotations.length === 0)
|
|
38
|
+
return '';
|
|
39
|
+
return `<ol class="ak-chart-notes">${annotations
|
|
40
|
+
.map((note) => `<li>${escapeText(note.text)} <span class="ak-chart-note-at">(${escapeText(where(note.x, note.y, xFormat, yFormat))})</span></li>`)
|
|
41
|
+
.join('')}</ol>`;
|
|
42
|
+
}
|
|
43
|
+
/** Sentences that restate the overlays for the summary. */
|
|
44
|
+
export function overlaySummary(markers, annotations, xFormat, yFormat) {
|
|
45
|
+
const parts = [];
|
|
46
|
+
if (markers.length > 0) {
|
|
47
|
+
parts.push(`Markers: ${markers
|
|
48
|
+
.map((marker) => `${marker.label} at ${typeof marker.x === 'number' ? xFormat(marker.x) : marker.x}`)
|
|
49
|
+
.join('; ')}.`);
|
|
50
|
+
}
|
|
51
|
+
if (annotations.length > 0) {
|
|
52
|
+
parts.push(`Notes: ${annotations
|
|
53
|
+
.map((note, index) => `${index + 1}. ${note.text} (${where(note.x, note.y, xFormat, yFormat)})`)
|
|
54
|
+
.join('; ')}.`);
|
|
55
|
+
}
|
|
56
|
+
return parts.join(' ');
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=chart-overlays.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-overlays.js","sourceRoot":"","sources":["../../src/render/chart-overlays.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chart scales and geometry primitives.
|
|
3
|
+
*
|
|
4
|
+
* Every coordinate passes through `round()` (two decimals) before it reaches
|
|
5
|
+
* the markup, so floating-point noise never breaks byte-determinism. Axis
|
|
6
|
+
* bounds end on clean ticks (1, 2, 2.5 or 5 × 10ⁿ).
|
|
7
|
+
*/
|
|
8
|
+
import { type FormatSpec } from '../data/format-value.js';
|
|
9
|
+
import type { ChartSeries } from './chart-types.js';
|
|
10
|
+
export interface Bounds {
|
|
11
|
+
min: number;
|
|
12
|
+
max: number;
|
|
13
|
+
}
|
|
14
|
+
export interface TickBounds extends Bounds {
|
|
15
|
+
step: number;
|
|
16
|
+
}
|
|
17
|
+
export interface Frame {
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
top: number;
|
|
21
|
+
right: number;
|
|
22
|
+
bottom: number;
|
|
23
|
+
left: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Shared viewBox width. Text inside the SVG scales with the rendered width, so
|
|
27
|
+
* this is sized for a full-width card: labels render near their nominal size
|
|
28
|
+
* there, and the canvas scrolls rather than shrinks on narrow screens.
|
|
29
|
+
*/
|
|
30
|
+
export declare const WIDTH = 800;
|
|
31
|
+
/** Number of distinct series colours the stylesheet defines. */
|
|
32
|
+
export declare const PALETTE_SIZE = 6;
|
|
33
|
+
export declare const CARTESIAN: Frame;
|
|
34
|
+
export declare const RADIAL: Frame;
|
|
35
|
+
export declare const SPARK: Frame;
|
|
36
|
+
/** Encoded cartesian charts reserve room for axis titles and formatted ticks. */
|
|
37
|
+
export declare const CARTESIAN_TITLED: Frame;
|
|
38
|
+
export declare function round(value: number): number;
|
|
39
|
+
/** Group digits with a thin comma, deterministically and without locale data. */
|
|
40
|
+
export declare function formatNumber(value: number): string;
|
|
41
|
+
/**
|
|
42
|
+
* A number formatter for an axis or magnitude encoding. `text` (the schema
|
|
43
|
+
* default) reads as a plain grouped number with the unit, if any.
|
|
44
|
+
*/
|
|
45
|
+
export declare function numberFormatter(spec: FormatSpec): (value: number) => string;
|
|
46
|
+
/** Drop floating-point noise (0.1 + 0.2) without rounding real precision away. */
|
|
47
|
+
export declare function denoise(value: number): number;
|
|
48
|
+
export declare function seriesClass(index: number): string;
|
|
49
|
+
/** Round a span up to 1, 2, 2.5 or 5 times a power of ten, so ticks read cleanly. */
|
|
50
|
+
export declare function niceStep(span: number, count: number): number;
|
|
51
|
+
/** Axis bounds that include zero and end on a clean tick. */
|
|
52
|
+
export declare function niceBounds(series: ChartSeries[]): TickBounds;
|
|
53
|
+
/** Clean-tick bounds around a raw range. */
|
|
54
|
+
export declare function niceRange(rawMin: number, rawMax: number): TickBounds;
|
|
55
|
+
/**
|
|
56
|
+
* Bounds for an encoded value axis: the data range (with zero when `zero`),
|
|
57
|
+
* overridden by the author's `min`/`max`, with a clean step between them.
|
|
58
|
+
*/
|
|
59
|
+
export declare function axisBounds(values: readonly number[], axis: {
|
|
60
|
+
min?: number;
|
|
61
|
+
max?: number;
|
|
62
|
+
}, zero: boolean): TickBounds;
|
|
63
|
+
export declare function plotWidth(frame: Frame): number;
|
|
64
|
+
export declare function plotHeight(frame: Frame): number;
|
|
65
|
+
export declare function scaleY(value: number, bounds: Bounds, frame: Frame): number;
|
|
66
|
+
/** A value clamped into the bounds, so an out-of-range mark stays inside the plot. */
|
|
67
|
+
export declare function clampTo(value: number, bounds: Bounds): number;
|
|
68
|
+
export declare function scaleX(value: number, bounds: Bounds, frame: Frame): number;
|
|
69
|
+
/** Point charts span the plot edge to edge. */
|
|
70
|
+
export declare function pointX(index: number, count: number, frame: Frame): number;
|
|
71
|
+
/** Bar groups sit in equal bands, labelled at the band centre. */
|
|
72
|
+
export declare function bandCentre(index: number, count: number, frame: Frame): number;
|
|
73
|
+
/** Fragment-safe id fragment derived from a block id. */
|
|
74
|
+
export declare function safeId(id: string): string;
|
|
75
|
+
/** Ticks from `min` to `max` in `step` increments, rounded. */
|
|
76
|
+
export declare function tickValues(bounds: TickBounds): number[];
|
|
77
|
+
/**
|
|
78
|
+
* The formatter for axis ticks: like `numberFormatter`, but whole-number
|
|
79
|
+
* currency ticks drop their cents ($15,000 rather than $15,000.00) unless the
|
|
80
|
+
* author fixed `decimals`.
|
|
81
|
+
*/
|
|
82
|
+
export declare function tickFormatter(spec: FormatSpec, bounds: TickBounds): (value: number) => string;
|
|
83
|
+
//# sourceMappingURL=chart-scales.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-scales.d.ts","sourceRoot":"","sources":["../../src/render/chart-scales.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chart scales and geometry primitives.
|
|
3
|
+
*
|
|
4
|
+
* Every coordinate passes through `round()` (two decimals) before it reaches
|
|
5
|
+
* the markup, so floating-point noise never breaks byte-determinism. Axis
|
|
6
|
+
* bounds end on clean ticks (1, 2, 2.5 or 5 × 10ⁿ).
|
|
7
|
+
*/
|
|
8
|
+
import { formatValue } from '../data/format-value.js';
|
|
9
|
+
/**
|
|
10
|
+
* Shared viewBox width. Text inside the SVG scales with the rendered width, so
|
|
11
|
+
* this is sized for a full-width card: labels render near their nominal size
|
|
12
|
+
* there, and the canvas scrolls rather than shrinks on narrow screens.
|
|
13
|
+
*/
|
|
14
|
+
export const WIDTH = 800;
|
|
15
|
+
/** Number of distinct series colours the stylesheet defines. */
|
|
16
|
+
export const PALETTE_SIZE = 6;
|
|
17
|
+
export const CARTESIAN = {
|
|
18
|
+
width: WIDTH,
|
|
19
|
+
height: 300,
|
|
20
|
+
top: 20,
|
|
21
|
+
right: 36,
|
|
22
|
+
bottom: 36,
|
|
23
|
+
left: 56,
|
|
24
|
+
};
|
|
25
|
+
export const RADIAL = { width: WIDTH, height: 240, top: 0, right: 0, bottom: 0, left: 0 };
|
|
26
|
+
export const SPARK = { width: WIDTH, height: 72, top: 10, right: 10, bottom: 10, left: 10 };
|
|
27
|
+
/** Encoded cartesian charts reserve room for axis titles and formatted ticks. */
|
|
28
|
+
export const CARTESIAN_TITLED = {
|
|
29
|
+
width: WIDTH,
|
|
30
|
+
height: 300,
|
|
31
|
+
top: 30,
|
|
32
|
+
right: 36,
|
|
33
|
+
bottom: 50,
|
|
34
|
+
left: 68,
|
|
35
|
+
};
|
|
36
|
+
export function round(value) {
|
|
37
|
+
return Math.round(value * 100) / 100;
|
|
38
|
+
}
|
|
39
|
+
/** Group digits with a thin comma, deterministically and without locale data. */
|
|
40
|
+
export function formatNumber(value) {
|
|
41
|
+
const rounded = round(value);
|
|
42
|
+
const [whole = '0', fraction] = String(Math.abs(rounded)).split('.');
|
|
43
|
+
const grouped = whole.replace(/\B(?=(\d{3})+(?!\d))/gu, ',');
|
|
44
|
+
return `${rounded < 0 ? '-' : ''}${grouped}${fraction === undefined ? '' : `.${fraction}`}`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A number formatter for an axis or magnitude encoding. `text` (the schema
|
|
48
|
+
* default) reads as a plain grouped number with the unit, if any.
|
|
49
|
+
*/
|
|
50
|
+
export function numberFormatter(spec) {
|
|
51
|
+
const format = spec.format === undefined || spec.format === 'text' ? 'number' : spec.format;
|
|
52
|
+
// Only floating-point noise is removed here; the format owns the decimals,
|
|
53
|
+
// so a fine-grained value is not rounded away before it is formatted.
|
|
54
|
+
return (value) => formatValue(denoise(value), { ...spec, format });
|
|
55
|
+
}
|
|
56
|
+
/** Drop floating-point noise (0.1 + 0.2) without rounding real precision away. */
|
|
57
|
+
export function denoise(value) {
|
|
58
|
+
return Number(value.toPrecision(12));
|
|
59
|
+
}
|
|
60
|
+
export function seriesClass(index) {
|
|
61
|
+
return `ak-chart-s${index % PALETTE_SIZE}`;
|
|
62
|
+
}
|
|
63
|
+
/** Round a span up to 1, 2, 2.5 or 5 times a power of ten, so ticks read cleanly. */
|
|
64
|
+
export function niceStep(span, count) {
|
|
65
|
+
const raw = span / Math.max(count, 1);
|
|
66
|
+
const magnitude = 10 ** Math.floor(Math.log10(raw));
|
|
67
|
+
const normalized = raw / magnitude;
|
|
68
|
+
const factor = [1, 2, 2.5, 5].find((candidate) => normalized <= candidate) ?? 10;
|
|
69
|
+
return factor * magnitude;
|
|
70
|
+
}
|
|
71
|
+
/** Axis bounds that include zero and end on a clean tick. */
|
|
72
|
+
export function niceBounds(series) {
|
|
73
|
+
const values = series.flatMap((entry) => entry.values).filter((value) => Number.isFinite(value));
|
|
74
|
+
return niceRange(Math.min(0, ...values), Math.max(0, ...values));
|
|
75
|
+
}
|
|
76
|
+
/** Clean-tick bounds around a raw range. */
|
|
77
|
+
export function niceRange(rawMin, rawMax) {
|
|
78
|
+
if (rawMax === rawMin)
|
|
79
|
+
return { min: rawMin, max: rawMin + 1, step: 0.25 };
|
|
80
|
+
const step = niceStep(rawMax - rawMin, 4);
|
|
81
|
+
return {
|
|
82
|
+
min: Math.floor(rawMin / step) * step,
|
|
83
|
+
max: Math.ceil(rawMax / step) * step,
|
|
84
|
+
step,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Bounds for an encoded value axis: the data range (with zero when `zero`),
|
|
89
|
+
* overridden by the author's `min`/`max`, with a clean step between them.
|
|
90
|
+
*/
|
|
91
|
+
export function axisBounds(values, axis, zero) {
|
|
92
|
+
const finite = values.filter((value) => Number.isFinite(value));
|
|
93
|
+
const low = finite.length === 0 ? 0 : Math.min(...finite, ...(zero ? [0] : []));
|
|
94
|
+
const high = finite.length === 0 ? 1 : Math.max(...finite, ...(zero ? [0] : []));
|
|
95
|
+
const nice = niceRange(low, high);
|
|
96
|
+
const min = axis.min ?? nice.min;
|
|
97
|
+
const max = axis.max ?? nice.max;
|
|
98
|
+
if (max <= min)
|
|
99
|
+
return nice;
|
|
100
|
+
if (axis.min === undefined && axis.max === undefined)
|
|
101
|
+
return nice;
|
|
102
|
+
return { min, max, step: niceStep(max - min, 4) };
|
|
103
|
+
}
|
|
104
|
+
export function plotWidth(frame) {
|
|
105
|
+
return frame.width - frame.left - frame.right;
|
|
106
|
+
}
|
|
107
|
+
export function plotHeight(frame) {
|
|
108
|
+
return frame.height - frame.top - frame.bottom;
|
|
109
|
+
}
|
|
110
|
+
export function scaleY(value, bounds, frame) {
|
|
111
|
+
const ratio = (value - bounds.min) / (bounds.max - bounds.min);
|
|
112
|
+
return round(frame.top + plotHeight(frame) * (1 - ratio));
|
|
113
|
+
}
|
|
114
|
+
/** A value clamped into the bounds, so an out-of-range mark stays inside the plot. */
|
|
115
|
+
export function clampTo(value, bounds) {
|
|
116
|
+
return Math.min(bounds.max, Math.max(bounds.min, value));
|
|
117
|
+
}
|
|
118
|
+
export function scaleX(value, bounds, frame) {
|
|
119
|
+
const ratio = (value - bounds.min) / (bounds.max - bounds.min);
|
|
120
|
+
return round(frame.left + plotWidth(frame) * ratio);
|
|
121
|
+
}
|
|
122
|
+
/** Point charts span the plot edge to edge. */
|
|
123
|
+
export function pointX(index, count, frame) {
|
|
124
|
+
if (count <= 1)
|
|
125
|
+
return round(frame.left + plotWidth(frame) / 2);
|
|
126
|
+
return round(frame.left + (plotWidth(frame) * index) / (count - 1));
|
|
127
|
+
}
|
|
128
|
+
/** Bar groups sit in equal bands, labelled at the band centre. */
|
|
129
|
+
export function bandCentre(index, count, frame) {
|
|
130
|
+
const band = plotWidth(frame) / Math.max(count, 1);
|
|
131
|
+
return round(frame.left + band * index + band / 2);
|
|
132
|
+
}
|
|
133
|
+
/** Fragment-safe id fragment derived from a block id. */
|
|
134
|
+
export function safeId(id) {
|
|
135
|
+
return id.replace(/[^A-Za-z0-9_-]/gu, '-');
|
|
136
|
+
}
|
|
137
|
+
/** Ticks from `min` to `max` in `step` increments, rounded. */
|
|
138
|
+
export function tickValues(bounds) {
|
|
139
|
+
const steps = Math.round((bounds.max - bounds.min) / bounds.step);
|
|
140
|
+
const values = [];
|
|
141
|
+
for (let index = 0; index <= steps; index += 1) {
|
|
142
|
+
const value = denoise(bounds.min + bounds.step * index);
|
|
143
|
+
if (value <= bounds.max + bounds.step / 1000)
|
|
144
|
+
values.push(value);
|
|
145
|
+
}
|
|
146
|
+
return values;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* The formatter for axis ticks: like `numberFormatter`, but whole-number
|
|
150
|
+
* currency ticks drop their cents ($15,000 rather than $15,000.00) unless the
|
|
151
|
+
* author fixed `decimals`.
|
|
152
|
+
*/
|
|
153
|
+
export function tickFormatter(spec, bounds) {
|
|
154
|
+
const whole = Number.isInteger(bounds.step) && Number.isInteger(bounds.min);
|
|
155
|
+
if (spec.format === 'currency' && spec.decimals === undefined && whole) {
|
|
156
|
+
return numberFormatter({ ...spec, decimals: 0 });
|
|
157
|
+
}
|
|
158
|
+
// A step finer than the format's default two decimals would print every
|
|
159
|
+
// tick the same ("0 | 0 | 0"), so the ticks get the decimals the step needs.
|
|
160
|
+
if (spec.decimals === undefined && bounds.step > 0 && bounds.step < 0.01) {
|
|
161
|
+
const needed = Math.min(4, Math.ceil(-Math.log10(bounds.step) - 1e-9));
|
|
162
|
+
return numberFormatter({ ...spec, decimals: needed });
|
|
163
|
+
}
|
|
164
|
+
return numberFormatter(spec);
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=chart-scales.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-scales.js","sourceRoot":"","sources":["../../src/render/chart-scales.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SVG fragments every chart kind shares: gridlines and ticks, category
|
|
3
|
+
* labels, hover value labels and axis titles. Colour never appears here;
|
|
4
|
+
* shapes carry classes and the stylesheet maps them onto tokens.
|
|
5
|
+
*/
|
|
6
|
+
import { type Frame, type TickBounds } from './chart-scales.js';
|
|
7
|
+
import type { ChartSeries, KindRender } from './chart-types.js';
|
|
8
|
+
export type NumberFormatter = (value: number) => string;
|
|
9
|
+
/** Horizontal gridlines with value ticks; the zero line reads as the axis. */
|
|
10
|
+
export declare function gridAndTicks(bounds: TickBounds, frame: Frame, format?: NumberFormatter): string;
|
|
11
|
+
/**
|
|
12
|
+
* Gridlines for an encoded axis whose author bounds need not land on a step:
|
|
13
|
+
* ticks stop at the last step inside the bounds, and the plot floor is drawn
|
|
14
|
+
* as the axis when zero is outside the range.
|
|
15
|
+
*/
|
|
16
|
+
export declare function boundedGridAndTicks(bounds: TickBounds, frame: Frame, format: NumberFormatter): string;
|
|
17
|
+
/** Vertical gridlines and tick labels for a numeric x axis. */
|
|
18
|
+
export declare function numericXTicks(bounds: TickBounds, frame: Frame, format: NumberFormatter, ticks?: readonly number[]): string;
|
|
19
|
+
/**
|
|
20
|
+
* At most about eight evenly spaced label positions. The first and the last
|
|
21
|
+
* category are always labelled, so a series never reads as ending early; when
|
|
22
|
+
* the last would crowd the previous kept label, that one gives way.
|
|
23
|
+
*/
|
|
24
|
+
export declare function thinnedLabelIndexes(count: number): number[];
|
|
25
|
+
export declare function categoryLabels(labels: string[], position: (index: number) => number, frame: Frame): string;
|
|
26
|
+
export declare function pointTitle(label: string, series: ChartSeries, index: number): string;
|
|
27
|
+
/**
|
|
28
|
+
* A value label drawn directly after its mark. The stylesheet reveals it while
|
|
29
|
+
* the mark is hovered or focused (`mark:hover + .ak-chart-value`), so the exact
|
|
30
|
+
* number is one pointer move away without a tooltip script.
|
|
31
|
+
*/
|
|
32
|
+
export declare function valueLabel(x: number, y: number, value: number): string;
|
|
33
|
+
/**
|
|
34
|
+
* A hover value label with preformatted text. `halo` outlines it in the
|
|
35
|
+
* surface colour, for labels drawn over a filled mark.
|
|
36
|
+
*/
|
|
37
|
+
export declare function textValueLabel(x: number, y: number, text: string, halo?: boolean): string;
|
|
38
|
+
/** Axis titles: the y title above the value ticks, the x title centred under the categories. */
|
|
39
|
+
export declare function axisTitles(frame: Frame, x: string | undefined, y: string | undefined): string;
|
|
40
|
+
/** A rectangle as a path, so golden tests can pin its geometry in one attribute. */
|
|
41
|
+
export declare function rectPath(x: number, y: number, width: number, height: number): string;
|
|
42
|
+
/** Bars wider than this read as slabs rather than marks. */
|
|
43
|
+
export declare const MAX_BAR_WIDTH = 56;
|
|
44
|
+
/** The index of a category label, or undefined when the axis has no such category. */
|
|
45
|
+
export declare function categoryIndex(labels: readonly string[], x: string | number): number | undefined;
|
|
46
|
+
/** Overlay coordinates for a cartesian plot. */
|
|
47
|
+
export declare function plotFor(frame: Frame, bounds: TickBounds, xAt: (x: string | number) => number | undefined): NonNullable<KindRender['plot']>;
|
|
48
|
+
/** Shorten text to `max` characters with an ellipsis. */
|
|
49
|
+
export declare function clipText(text: string, max: number): string;
|
|
50
|
+
//# sourceMappingURL=chart-svg-parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-svg-parts.d.ts","sourceRoot":"","sources":["../../src/render/chart-svg-parts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,KAAK,KAAK,EAKV,KAAK,UAAU,EAEhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGhE,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAExD,8EAA8E;AAC9E,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,eAA8B,GACrC,MAAM,CAkBR;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,eAAe,GACtB,MAAM,CAcR;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAC3B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,eAAe,EACvB,KAAK,GAAE,SAAS,MAAM,EAAuB,GAC5C,MAAM,CAWR;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAW3D;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EACnC,KAAK,EAAE,KAAK,GACX,MAAM,CAUR;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,MAAM,CAIvF;AAED,gGAAgG;AAChG,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAe7F;AAED,oFAAoF;AACpF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,4DAA4D;AAC5D,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/F;AAED,gDAAgD;AAChD,wBAAgB,OAAO,CACrB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,GAAG,SAAS,GAC9C,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAQjC;AAED,yDAAyD;AACzD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D"}
|