@ggts-sh/spec 0.43.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/LICENSE +21 -0
- package/README.md +75 -0
- package/dist/artifact.d.ts +11 -0
- package/dist/artifact.d.ts.map +1 -0
- package/dist/artifact.js +71 -0
- package/dist/artifact.js.map +1 -0
- package/dist/builder-core.d.ts +100 -0
- package/dist/builder-core.d.ts.map +1 -0
- package/dist/builder-core.js +176 -0
- package/dist/builder-core.js.map +1 -0
- package/dist/builder-data.d.ts +36 -0
- package/dist/builder-data.d.ts.map +1 -0
- package/dist/builder-data.js +123 -0
- package/dist/builder-data.js.map +1 -0
- package/dist/builder-geoms.d.ts +128 -0
- package/dist/builder-geoms.d.ts.map +1 -0
- package/dist/builder-geoms.js +221 -0
- package/dist/builder-geoms.js.map +1 -0
- package/dist/builder-options.d.ts +323 -0
- package/dist/builder-options.d.ts.map +1 -0
- package/dist/builder-options.js +2 -0
- package/dist/builder-options.js.map +1 -0
- package/dist/builder-scales.d.ts +160 -0
- package/dist/builder-scales.d.ts.map +1 -0
- package/dist/builder-scales.js +322 -0
- package/dist/builder-scales.js.map +1 -0
- package/dist/builder.d.ts +242 -0
- package/dist/builder.d.ts.map +1 -0
- package/dist/builder.js +42 -0
- package/dist/builder.js.map +1 -0
- package/dist/capabilities-data.d.ts +72 -0
- package/dist/capabilities-data.d.ts.map +1 -0
- package/dist/capabilities-data.js +337 -0
- package/dist/capabilities-data.js.map +1 -0
- package/dist/capabilities-helpers.d.ts +31 -0
- package/dist/capabilities-helpers.d.ts.map +1 -0
- package/dist/capabilities-helpers.js +41 -0
- package/dist/capabilities-helpers.js.map +1 -0
- package/dist/capabilities.d.ts +22 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +154 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/coord-helpers.d.ts +102 -0
- package/dist/coord-helpers.d.ts.map +1 -0
- package/dist/coord-helpers.js +90 -0
- package/dist/coord-helpers.js.map +1 -0
- package/dist/coord-reference-build.d.ts +50 -0
- package/dist/coord-reference-build.d.ts.map +1 -0
- package/dist/coord-reference-build.js +211 -0
- package/dist/coord-reference-build.js.map +1 -0
- package/dist/coord-reference.d.ts +52 -0
- package/dist/coord-reference.d.ts.map +1 -0
- package/dist/coord-reference.js +27 -0
- package/dist/coord-reference.js.map +1 -0
- package/dist/error-catalog.d.ts +258 -0
- package/dist/error-catalog.d.ts.map +1 -0
- package/dist/error-catalog.js +235 -0
- package/dist/error-catalog.js.map +1 -0
- package/dist/error-prose-shared.d.ts +100 -0
- package/dist/error-prose-shared.d.ts.map +1 -0
- package/dist/error-prose-shared.js +95 -0
- package/dist/error-prose-shared.js.map +1 -0
- package/dist/errors.d.ts +39 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +52 -0
- package/dist/errors.js.map +1 -0
- package/dist/generated/coord-reference-data.d.ts +189 -0
- package/dist/generated/coord-reference-data.d.ts.map +1 -0
- package/dist/generated/coord-reference-data.js +212 -0
- package/dist/generated/coord-reference-data.js.map +1 -0
- package/dist/generated/geom-param-keys.d.ts +58 -0
- package/dist/generated/geom-param-keys.d.ts.map +1 -0
- package/dist/generated/geom-param-keys.js +223 -0
- package/dist/generated/geom-param-keys.js.map +1 -0
- package/dist/generated/geom-reference-data.d.ts +2377 -0
- package/dist/generated/geom-reference-data.d.ts.map +1 -0
- package/dist/generated/geom-reference-data.js +2790 -0
- package/dist/generated/geom-reference-data.js.map +1 -0
- package/dist/generated/guide-reference-data.d.ts +219 -0
- package/dist/generated/guide-reference-data.d.ts.map +1 -0
- package/dist/generated/guide-reference-data.js +253 -0
- package/dist/generated/guide-reference-data.js.map +1 -0
- package/dist/generated/plot-spec-validator.d.ts +2 -0
- package/dist/generated/plot-spec-validator.d.ts.map +1 -0
- package/dist/generated/plot-spec-validator.js +6274 -0
- package/dist/generated/plot-spec-validator.js.map +1 -0
- package/dist/generated/position-reference-data.d.ts +82 -0
- package/dist/generated/position-reference-data.d.ts.map +1 -0
- package/dist/generated/position-reference-data.js +181 -0
- package/dist/generated/position-reference-data.js.map +1 -0
- package/dist/generated/scale-reference-data.d.ts +8366 -0
- package/dist/generated/scale-reference-data.d.ts.map +1 -0
- package/dist/generated/scale-reference-data.js +9821 -0
- package/dist/generated/scale-reference-data.js.map +1 -0
- package/dist/generated/stat-reference-data.d.ts +241 -0
- package/dist/generated/stat-reference-data.d.ts.map +1 -0
- package/dist/generated/stat-reference-data.js +311 -0
- package/dist/generated/stat-reference-data.js.map +1 -0
- package/dist/geom-params-build.d.ts +3 -0
- package/dist/geom-params-build.d.ts.map +1 -0
- package/dist/geom-params-build.js +80 -0
- package/dist/geom-params-build.js.map +1 -0
- package/dist/geom-params.d.ts +13 -0
- package/dist/geom-params.d.ts.map +1 -0
- package/dist/geom-params.js +7 -0
- package/dist/geom-params.js.map +1 -0
- package/dist/geom-reference-build.d.ts +29 -0
- package/dist/geom-reference-build.d.ts.map +1 -0
- package/dist/geom-reference-build.js +221 -0
- package/dist/geom-reference-build.js.map +1 -0
- package/dist/geom-reference.d.ts +52 -0
- package/dist/geom-reference.d.ts.map +1 -0
- package/dist/geom-reference.js +72 -0
- package/dist/geom-reference.js.map +1 -0
- package/dist/guide-helpers.d.ts +20 -0
- package/dist/guide-helpers.d.ts.map +1 -0
- package/dist/guide-helpers.js +25 -0
- package/dist/guide-helpers.js.map +1 -0
- package/dist/guide-reference-build.d.ts +42 -0
- package/dist/guide-reference-build.d.ts.map +1 -0
- package/dist/guide-reference-build.js +180 -0
- package/dist/guide-reference-build.js.map +1 -0
- package/dist/guide-reference.d.ts +48 -0
- package/dist/guide-reference.d.ts.map +1 -0
- package/dist/guide-reference.js +32 -0
- package/dist/guide-reference.js.map +1 -0
- package/dist/hue-grey-palettes.d.ts +15 -0
- package/dist/hue-grey-palettes.d.ts.map +1 -0
- package/dist/hue-grey-palettes.js +77 -0
- package/dist/hue-grey-palettes.js.map +1 -0
- package/dist/index.d.ts +364 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +225 -0
- package/dist/index.js.map +1 -0
- package/dist/lint-catalog.d.ts +47 -0
- package/dist/lint-catalog.d.ts.map +1 -0
- package/dist/lint-catalog.js +39 -0
- package/dist/lint-catalog.js.map +1 -0
- package/dist/lint-layer-rules.d.ts +18 -0
- package/dist/lint-layer-rules.d.ts.map +1 -0
- package/dist/lint-layer-rules.js +145 -0
- package/dist/lint-layer-rules.js.map +1 -0
- package/dist/lint-scale-rules.d.ts +8 -0
- package/dist/lint-scale-rules.d.ts.map +1 -0
- package/dist/lint-scale-rules.js +254 -0
- package/dist/lint-scale-rules.js.map +1 -0
- package/dist/lint.d.ts +62 -0
- package/dist/lint.d.ts.map +1 -0
- package/dist/lint.js +57 -0
- package/dist/lint.js.map +1 -0
- package/dist/normalize-coord.d.ts +8 -0
- package/dist/normalize-coord.d.ts.map +1 -0
- package/dist/normalize-coord.js +123 -0
- package/dist/normalize-coord.js.map +1 -0
- package/dist/normalize-input-layers-marks.d.ts +208 -0
- package/dist/normalize-input-layers-marks.d.ts.map +1 -0
- package/dist/normalize-input-layers-marks.js +2 -0
- package/dist/normalize-input-layers-marks.js.map +1 -0
- package/dist/normalize-input-layers-special.d.ts +131 -0
- package/dist/normalize-input-layers-special.d.ts.map +1 -0
- package/dist/normalize-input-layers-special.js +2 -0
- package/dist/normalize-input-layers-special.js.map +1 -0
- package/dist/normalize-input.d.ts +81 -0
- package/dist/normalize-input.d.ts.map +1 -0
- package/dist/normalize-input.js +2 -0
- package/dist/normalize-input.js.map +1 -0
- package/dist/normalize-paint.d.ts +8 -0
- package/dist/normalize-paint.d.ts.map +1 -0
- package/dist/normalize-paint.js +83 -0
- package/dist/normalize-paint.js.map +1 -0
- package/dist/normalize-scales.d.ts +7 -0
- package/dist/normalize-scales.d.ts.map +1 -0
- package/dist/normalize-scales.js +90 -0
- package/dist/normalize-scales.js.map +1 -0
- package/dist/normalize.d.ts +46 -0
- package/dist/normalize.d.ts.map +1 -0
- package/dist/normalize.js +279 -0
- package/dist/normalize.js.map +1 -0
- package/dist/paint-helpers.d.ts +45 -0
- package/dist/paint-helpers.d.ts.map +1 -0
- package/dist/paint-helpers.js +48 -0
- package/dist/paint-helpers.js.map +1 -0
- package/dist/pipeline-error-catalog.d.ts +319 -0
- package/dist/pipeline-error-catalog.d.ts.map +1 -0
- package/dist/pipeline-error-catalog.js +260 -0
- package/dist/pipeline-error-catalog.js.map +1 -0
- package/dist/portability-check.d.ts +35 -0
- package/dist/portability-check.d.ts.map +1 -0
- package/dist/portability-check.js +121 -0
- package/dist/portability-check.js.map +1 -0
- package/dist/portability-lossy.d.ts +19 -0
- package/dist/portability-lossy.d.ts.map +1 -0
- package/dist/portability-lossy.js +65 -0
- package/dist/portability-lossy.js.map +1 -0
- package/dist/portability.d.ts +23 -0
- package/dist/portability.d.ts.map +1 -0
- package/dist/portability.js +23 -0
- package/dist/portability.js.map +1 -0
- package/dist/portable-builder.d.ts +215 -0
- package/dist/portable-builder.d.ts.map +1 -0
- package/dist/portable-builder.js +27 -0
- package/dist/portable-builder.js.map +1 -0
- package/dist/portable-entry.d.ts +16 -0
- package/dist/portable-entry.d.ts.map +1 -0
- package/dist/portable-entry.js +14 -0
- package/dist/portable-entry.js.map +1 -0
- package/dist/position-reference-build.d.ts +29 -0
- package/dist/position-reference-build.d.ts.map +1 -0
- package/dist/position-reference-build.js +115 -0
- package/dist/position-reference-build.js.map +1 -0
- package/dist/position-reference.d.ts +34 -0
- package/dist/position-reference.d.ts.map +1 -0
- package/dist/position-reference.js +19 -0
- package/dist/position-reference.js.map +1 -0
- package/dist/runtime.d.ts +139 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +2 -0
- package/dist/runtime.js.map +1 -0
- package/dist/scale-color-helpers.d.ts +121 -0
- package/dist/scale-color-helpers.d.ts.map +1 -0
- package/dist/scale-color-helpers.js +188 -0
- package/dist/scale-color-helpers.js.map +1 -0
- package/dist/scale-color-hue-grey.d.ts +52 -0
- package/dist/scale-color-hue-grey.d.ts.map +1 -0
- package/dist/scale-color-hue-grey.js +60 -0
- package/dist/scale-color-hue-grey.js.map +1 -0
- package/dist/scale-color-stops.d.ts +85 -0
- package/dist/scale-color-stops.d.ts.map +1 -0
- package/dist/scale-color-stops.js +87 -0
- package/dist/scale-color-stops.js.map +1 -0
- package/dist/scale-color-viridis.d.ts +52 -0
- package/dist/scale-color-viridis.d.ts.map +1 -0
- package/dist/scale-color-viridis.js +68 -0
- package/dist/scale-color-viridis.js.map +1 -0
- package/dist/scale-helpers.d.ts +20 -0
- package/dist/scale-helpers.d.ts.map +1 -0
- package/dist/scale-helpers.js +20 -0
- package/dist/scale-helpers.js.map +1 -0
- package/dist/scale-multi-helpers.d.ts +61 -0
- package/dist/scale-multi-helpers.d.ts.map +1 -0
- package/dist/scale-multi-helpers.js +147 -0
- package/dist/scale-multi-helpers.js.map +1 -0
- package/dist/scale-position-helpers.d.ts +81 -0
- package/dist/scale-position-helpers.d.ts.map +1 -0
- package/dist/scale-position-helpers.js +133 -0
- package/dist/scale-position-helpers.js.map +1 -0
- package/dist/scale-reference-build.d.ts +50 -0
- package/dist/scale-reference-build.d.ts.map +1 -0
- package/dist/scale-reference-build.js +147 -0
- package/dist/scale-reference-build.js.map +1 -0
- package/dist/scale-reference-classify-color.d.ts +11 -0
- package/dist/scale-reference-classify-color.d.ts.map +1 -0
- package/dist/scale-reference-classify-color.js +292 -0
- package/dist/scale-reference-classify-color.js.map +1 -0
- package/dist/scale-reference-classify-position.d.ts +10 -0
- package/dist/scale-reference-classify-position.d.ts.map +1 -0
- package/dist/scale-reference-classify-position.js +137 -0
- package/dist/scale-reference-classify-position.js.map +1 -0
- package/dist/scale-reference-classify-style.d.ts +10 -0
- package/dist/scale-reference-classify-style.d.ts.map +1 -0
- package/dist/scale-reference-classify-style.js +194 -0
- package/dist/scale-reference-classify-style.js.map +1 -0
- package/dist/scale-reference-classify-support.d.ts +37 -0
- package/dist/scale-reference-classify-support.d.ts.map +1 -0
- package/dist/scale-reference-classify-support.js +206 -0
- package/dist/scale-reference-classify-support.js.map +1 -0
- package/dist/scale-reference.d.ts +80 -0
- package/dist/scale-reference.d.ts.map +1 -0
- package/dist/scale-reference.js +85 -0
- package/dist/scale-reference.js.map +1 -0
- package/dist/scale-style-helpers.d.ts +158 -0
- package/dist/scale-style-helpers.d.ts.map +1 -0
- package/dist/scale-style-helpers.js +197 -0
- package/dist/scale-style-helpers.js.map +1 -0
- package/dist/schema-catalog.d.ts +62 -0
- package/dist/schema-catalog.d.ts.map +1 -0
- package/dist/schema-catalog.js +208 -0
- package/dist/schema-catalog.js.map +1 -0
- package/dist/schema-declarations.d.ts +1585 -0
- package/dist/schema-declarations.d.ts.map +1 -0
- package/dist/schema-declarations.js +51 -0
- package/dist/schema-declarations.js.map +1 -0
- package/dist/schema-decls-data.d.ts +58 -0
- package/dist/schema-decls-data.d.ts.map +1 -0
- package/dist/schema-decls-data.js +151 -0
- package/dist/schema-decls-data.js.map +1 -0
- package/dist/schema-decls-guides-theme.d.ts +166 -0
- package/dist/schema-decls-guides-theme.d.ts.map +1 -0
- package/dist/schema-decls-guides-theme.js +251 -0
- package/dist/schema-decls-guides-theme.js.map +1 -0
- package/dist/schema-decls-layers-col-boxplot.d.ts +118 -0
- package/dist/schema-decls-layers-col-boxplot.d.ts.map +1 -0
- package/dist/schema-decls-layers-col-boxplot.js +239 -0
- package/dist/schema-decls-layers-col-boxplot.js.map +1 -0
- package/dist/schema-decls-layers-count-pointrange.d.ts +89 -0
- package/dist/schema-decls-layers-count-pointrange.d.ts.map +1 -0
- package/dist/schema-decls-layers-count-pointrange.js +190 -0
- package/dist/schema-decls-layers-count-pointrange.js.map +1 -0
- package/dist/schema-decls-layers-crossbar-jitter.d.ts +129 -0
- package/dist/schema-decls-layers-crossbar-jitter.d.ts.map +1 -0
- package/dist/schema-decls-layers-crossbar-jitter.js +255 -0
- package/dist/schema-decls-layers-crossbar-jitter.js.map +1 -0
- package/dist/schema-decls-layers-point-path.d.ts +49 -0
- package/dist/schema-decls-layers-point-path.d.ts.map +1 -0
- package/dist/schema-decls-layers-point-path.js +156 -0
- package/dist/schema-decls-layers-point-path.js.map +1 -0
- package/dist/schema-decls-layers-sf-blank.d.ts +89 -0
- package/dist/schema-decls-layers-sf-blank.d.ts.map +1 -0
- package/dist/schema-decls-layers-sf-blank.js +254 -0
- package/dist/schema-decls-layers-sf-blank.js.map +1 -0
- package/dist/schema-decls-layers-text-map.d.ts +80 -0
- package/dist/schema-decls-layers-text-map.d.ts.map +1 -0
- package/dist/schema-decls-layers-text-map.js +151 -0
- package/dist/schema-decls-layers-text-map.js.map +1 -0
- package/dist/schema-decls-paint.d.ts +39 -0
- package/dist/schema-decls-paint.d.ts.map +1 -0
- package/dist/schema-decls-paint.js +95 -0
- package/dist/schema-decls-paint.js.map +1 -0
- package/dist/schema-decls-params-area-abline.d.ts +85 -0
- package/dist/schema-decls-params-area-abline.d.ts.map +1 -0
- package/dist/schema-decls-params-area-abline.js +259 -0
- package/dist/schema-decls-params-area-abline.js.map +1 -0
- package/dist/schema-decls-params-col-contour.d.ts +61 -0
- package/dist/schema-decls-params-col-contour.d.ts.map +1 -0
- package/dist/schema-decls-params-col-contour.js +202 -0
- package/dist/schema-decls-params-col-contour.js.map +1 -0
- package/dist/schema-decls-params-curve-label.d.ts +64 -0
- package/dist/schema-decls-params-curve-label.d.ts.map +1 -0
- package/dist/schema-decls-params-curve-label.js +204 -0
- package/dist/schema-decls-params-curve-label.js.map +1 -0
- package/dist/schema-decls-params-errorbar-position.d.ts +83 -0
- package/dist/schema-decls-params-errorbar-position.d.ts.map +1 -0
- package/dist/schema-decls-params-errorbar-position.js +264 -0
- package/dist/schema-decls-params-errorbar-position.js.map +1 -0
- package/dist/schema-decls-params-point-path.d.ts +61 -0
- package/dist/schema-decls-params-point-path.d.ts.map +1 -0
- package/dist/schema-decls-params-point-path.js +240 -0
- package/dist/schema-decls-params-point-path.js.map +1 -0
- package/dist/schema-decls-params-violin-summary.d.ts +78 -0
- package/dist/schema-decls-params-violin-summary.d.ts.map +1 -0
- package/dist/schema-decls-params-violin-summary.js +272 -0
- package/dist/schema-decls-params-violin-summary.js.map +1 -0
- package/dist/schema-decls-plot.d.ts +80 -0
- package/dist/schema-decls-plot.d.ts.map +1 -0
- package/dist/schema-decls-plot.js +222 -0
- package/dist/schema-decls-plot.js.map +1 -0
- package/dist/schema-decls-scales-guides.d.ts +291 -0
- package/dist/schema-decls-scales-guides.d.ts.map +1 -0
- package/dist/schema-decls-scales-guides.js +189 -0
- package/dist/schema-decls-scales-guides.js.map +1 -0
- package/dist/schema-decls-scales.d.ts +124 -0
- package/dist/schema-decls-scales.d.ts.map +1 -0
- package/dist/schema-decls-scales.js +279 -0
- package/dist/schema-decls-scales.js.map +1 -0
- package/dist/schema-imports.d.ts +1679 -0
- package/dist/schema-imports.d.ts.map +1 -0
- package/dist/schema-imports.js +104 -0
- package/dist/schema-imports.js.map +1 -0
- package/dist/schema-name-schemas.d.ts +18 -0
- package/dist/schema-name-schemas.d.ts.map +1 -0
- package/dist/schema-name-schemas.js +13 -0
- package/dist/schema-name-schemas.js.map +1 -0
- package/dist/schema-names.d.ts +53 -0
- package/dist/schema-names.d.ts.map +1 -0
- package/dist/schema-names.js +229 -0
- package/dist/schema-names.js.map +1 -0
- package/dist/schema-types.d.ts +336 -0
- package/dist/schema-types.d.ts.map +1 -0
- package/dist/schema-types.js +10 -0
- package/dist/schema-types.js.map +1 -0
- package/dist/schema.d.ts +38 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +34 -0
- package/dist/schema.js.map +1 -0
- package/dist/stat-reference-build.d.ts +24 -0
- package/dist/stat-reference-build.d.ts.map +1 -0
- package/dist/stat-reference-build.js +86 -0
- package/dist/stat-reference-build.js.map +1 -0
- package/dist/stat-reference.d.ts +33 -0
- package/dist/stat-reference.d.ts.map +1 -0
- package/dist/stat-reference.js +19 -0
- package/dist/stat-reference.js.map +1 -0
- package/dist/structural-gate.d.ts +15 -0
- package/dist/structural-gate.d.ts.map +1 -0
- package/dist/structural-gate.js +34 -0
- package/dist/structural-gate.js.map +1 -0
- package/dist/temporal-column.d.ts +33 -0
- package/dist/temporal-column.d.ts.map +1 -0
- package/dist/temporal-column.js +247 -0
- package/dist/temporal-column.js.map +1 -0
- package/dist/temporal-guides.d.ts +11 -0
- package/dist/temporal-guides.d.ts.map +1 -0
- package/dist/temporal-guides.js +11 -0
- package/dist/temporal-guides.js.map +1 -0
- package/dist/temporal-interval-schema.d.ts +9 -0
- package/dist/temporal-interval-schema.d.ts.map +1 -0
- package/dist/temporal-interval-schema.js +25 -0
- package/dist/temporal-interval-schema.js.map +1 -0
- package/dist/temporal-interval.d.ts +29 -0
- package/dist/temporal-interval.d.ts.map +1 -0
- package/dist/temporal-interval.js +122 -0
- package/dist/temporal-interval.js.map +1 -0
- package/dist/temporal-parse-core.d.ts +96 -0
- package/dist/temporal-parse-core.d.ts.map +1 -0
- package/dist/temporal-parse-core.js +235 -0
- package/dist/temporal-parse-core.js.map +1 -0
- package/dist/temporal-parse-format.d.ts +13 -0
- package/dist/temporal-parse-format.d.ts.map +1 -0
- package/dist/temporal-parse-format.js +180 -0
- package/dist/temporal-parse-format.js.map +1 -0
- package/dist/temporal-parse-schema.d.ts +11 -0
- package/dist/temporal-parse-schema.d.ts.map +1 -0
- package/dist/temporal-parse-schema.js +23 -0
- package/dist/temporal-parse-schema.js.map +1 -0
- package/dist/temporal-parse.d.ts +18 -0
- package/dist/temporal-parse.d.ts.map +1 -0
- package/dist/temporal-parse.js +183 -0
- package/dist/temporal-parse.js.map +1 -0
- package/dist/temporal-polyfill.d.ts +3 -0
- package/dist/temporal-polyfill.d.ts.map +1 -0
- package/dist/temporal-polyfill.js +25 -0
- package/dist/temporal-polyfill.js.map +1 -0
- package/dist/temporal-ticks.d.ts +20 -0
- package/dist/temporal-ticks.d.ts.map +1 -0
- package/dist/temporal-ticks.js +246 -0
- package/dist/temporal-ticks.js.map +1 -0
- package/dist/temporal.d.ts +109 -0
- package/dist/temporal.d.ts.map +1 -0
- package/dist/temporal.js +73 -0
- package/dist/temporal.js.map +1 -0
- package/dist/validate-data-checks-color-temporal.d.ts +58 -0
- package/dist/validate-data-checks-color-temporal.d.ts.map +1 -0
- package/dist/validate-data-checks-color-temporal.js +168 -0
- package/dist/validate-data-checks-color-temporal.js.map +1 -0
- package/dist/validate-data-checks-color.d.ts +28 -0
- package/dist/validate-data-checks-color.d.ts.map +1 -0
- package/dist/validate-data-checks-color.js +296 -0
- package/dist/validate-data-checks-color.js.map +1 -0
- package/dist/validate-data-checks-layer.d.ts +37 -0
- package/dist/validate-data-checks-layer.d.ts.map +1 -0
- package/dist/validate-data-checks-layer.js +343 -0
- package/dist/validate-data-checks-layer.js.map +1 -0
- package/dist/validate-data-checks-position.d.ts +45 -0
- package/dist/validate-data-checks-position.d.ts.map +1 -0
- package/dist/validate-data-checks-position.js +204 -0
- package/dist/validate-data-checks-position.js.map +1 -0
- package/dist/validate-data-checks-style-finite.d.ts +24 -0
- package/dist/validate-data-checks-style-finite.d.ts.map +1 -0
- package/dist/validate-data-checks-style-finite.js +40 -0
- package/dist/validate-data-checks-style-finite.js.map +1 -0
- package/dist/validate-data-checks-style-numeric.d.ts +26 -0
- package/dist/validate-data-checks-style-numeric.d.ts.map +1 -0
- package/dist/validate-data-checks-style-numeric.js +327 -0
- package/dist/validate-data-checks-style-numeric.js.map +1 -0
- package/dist/validate-data-checks-style.d.ts +14 -0
- package/dist/validate-data-checks-style.d.ts.map +1 -0
- package/dist/validate-data-checks-style.js +14 -0
- package/dist/validate-data-checks-style.js.map +1 -0
- package/dist/validate-data-checks-temporal.d.ts +57 -0
- package/dist/validate-data-checks-temporal.d.ts.map +1 -0
- package/dist/validate-data-checks-temporal.js +83 -0
- package/dist/validate-data-checks-temporal.js.map +1 -0
- package/dist/validate-data-checks.d.ts +31 -0
- package/dist/validate-data-checks.d.ts.map +1 -0
- package/dist/validate-data-checks.js +110 -0
- package/dist/validate-data-checks.js.map +1 -0
- package/dist/validate-data-evidence.d.ts +69 -0
- package/dist/validate-data-evidence.d.ts.map +1 -0
- package/dist/validate-data-evidence.js +329 -0
- package/dist/validate-data-evidence.js.map +1 -0
- package/dist/validate-data.d.ts +73 -0
- package/dist/validate-data.d.ts.map +1 -0
- package/dist/validate-data.js +30 -0
- package/dist/validate-data.js.map +1 -0
- package/dist/validate-map-errors.d.ts +32 -0
- package/dist/validate-map-errors.d.ts.map +1 -0
- package/dist/validate-map-errors.js +76 -0
- package/dist/validate-map-errors.js.map +1 -0
- package/dist/validate-map-forms.d.ts +43 -0
- package/dist/validate-map-forms.d.ts.map +1 -0
- package/dist/validate-map-forms.js +125 -0
- package/dist/validate-map-forms.js.map +1 -0
- package/dist/validate-map-path-keywords.d.ts +11 -0
- package/dist/validate-map-path-keywords.d.ts.map +1 -0
- package/dist/validate-map-path-keywords.js +95 -0
- package/dist/validate-map-path-keywords.js.map +1 -0
- package/dist/validate-map-path-unions.d.ts +27 -0
- package/dist/validate-map-path-unions.d.ts.map +1 -0
- package/dist/validate-map-path-unions.js +200 -0
- package/dist/validate-map-path-unions.js.map +1 -0
- package/dist/validate-schema-shape.d.ts +69 -0
- package/dist/validate-schema-shape.d.ts.map +1 -0
- package/dist/validate-schema-shape.js +156 -0
- package/dist/validate-schema-shape.js.map +1 -0
- package/dist/validate-schema-walk.d.ts +34 -0
- package/dist/validate-schema-walk.d.ts.map +1 -0
- package/dist/validate-schema-walk.js +216 -0
- package/dist/validate-schema-walk.js.map +1 -0
- package/dist/validate-structure-facet.d.ts +8 -0
- package/dist/validate-structure-facet.d.ts.map +1 -0
- package/dist/validate-structure-facet.js +67 -0
- package/dist/validate-structure-facet.js.map +1 -0
- package/dist/validate-structure-layer-computed-y.d.ts +14 -0
- package/dist/validate-structure-layer-computed-y.d.ts.map +1 -0
- package/dist/validate-structure-layer-computed-y.js +70 -0
- package/dist/validate-structure-layer-computed-y.js.map +1 -0
- package/dist/validate-structure-layer-ribbon.d.ts +8 -0
- package/dist/validate-structure-layer-ribbon.d.ts.map +1 -0
- package/dist/validate-structure-layer-ribbon.js +36 -0
- package/dist/validate-structure-layer-ribbon.js.map +1 -0
- package/dist/validate-structure-layer-rule.d.ts +14 -0
- package/dist/validate-structure-layer-rule.d.ts.map +1 -0
- package/dist/validate-structure-layer-rule.js +90 -0
- package/dist/validate-structure-layer-rule.js.map +1 -0
- package/dist/validate-structure-layer-shared.d.ts +12 -0
- package/dist/validate-structure-layer-shared.d.ts.map +1 -0
- package/dist/validate-structure-layer-shared.js +17 -0
- package/dist/validate-structure-layer-shared.js.map +1 -0
- package/dist/validate-structure-layers.d.ts +12 -0
- package/dist/validate-structure-layers.d.ts.map +1 -0
- package/dist/validate-structure-layers.js +292 -0
- package/dist/validate-structure-layers.js.map +1 -0
- package/dist/validate-structure-paint.d.ts +12 -0
- package/dist/validate-structure-paint.d.ts.map +1 -0
- package/dist/validate-structure-paint.js +87 -0
- package/dist/validate-structure-paint.js.map +1 -0
- package/dist/validate-structure-scales.d.ts +10 -0
- package/dist/validate-structure-scales.d.ts.map +1 -0
- package/dist/validate-structure-scales.js +242 -0
- package/dist/validate-structure-scales.js.map +1 -0
- package/dist/validate-structure-style-bins.d.ts +17 -0
- package/dist/validate-structure-style-bins.d.ts.map +1 -0
- package/dist/validate-structure-style-bins.js +150 -0
- package/dist/validate-structure-style-bins.js.map +1 -0
- package/dist/validate-structure.d.ts +16 -0
- package/dist/validate-structure.d.ts.map +1 -0
- package/dist/validate-structure.js +16 -0
- package/dist/validate-structure.js.map +1 -0
- package/dist/validate.d.ts +24 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +178 -0
- package/dist/validate.js.map +1 -0
- package/package.json +59 -0
- package/schema/v0.json +9618 -0
- package/src/artifact.ts +81 -0
- package/src/builder-core.ts +276 -0
- package/src/builder-data.ts +156 -0
- package/src/builder-geoms.ts +290 -0
- package/src/builder-options.ts +428 -0
- package/src/builder-scales.ts +443 -0
- package/src/builder.ts +125 -0
- package/src/capabilities-data.ts +336 -0
- package/src/capabilities-helpers.ts +54 -0
- package/src/capabilities.ts +159 -0
- package/src/coord-helpers.ts +177 -0
- package/src/coord-reference-build.ts +283 -0
- package/src/coord-reference.ts +75 -0
- package/src/error-catalog.ts +253 -0
- package/src/error-prose-shared.ts +106 -0
- package/src/errors.ts +87 -0
- package/src/generated/coord-reference-data.ts +235 -0
- package/src/generated/geom-param-keys.ts +222 -0
- package/src/generated/geom-reference-data.ts +3024 -0
- package/src/generated/guide-reference-data.ts +284 -0
- package/src/generated/plot-spec-validator.ts +7335 -0
- package/src/generated/position-reference-data.ts +191 -0
- package/src/generated/scale-reference-data.ts +10665 -0
- package/src/generated/stat-reference-data.ts +339 -0
- package/src/geom-params-build.ts +92 -0
- package/src/geom-params.ts +14 -0
- package/src/geom-reference-build.ts +292 -0
- package/src/geom-reference.ts +127 -0
- package/src/guide-helpers.ts +44 -0
- package/src/guide-reference-build.ts +249 -0
- package/src/guide-reference.ts +76 -0
- package/src/hue-grey-palettes.ts +82 -0
- package/src/index.ts +400 -0
- package/src/lint-catalog.ts +57 -0
- package/src/lint-layer-rules.ts +175 -0
- package/src/lint-scale-rules.ts +285 -0
- package/src/lint.ts +126 -0
- package/src/normalize-coord.ts +126 -0
- package/src/normalize-input-layers-marks.ts +276 -0
- package/src/normalize-input-layers-special.ts +252 -0
- package/src/normalize-input.ts +154 -0
- package/src/normalize-paint.ts +98 -0
- package/src/normalize-scales.ts +108 -0
- package/src/normalize.ts +403 -0
- package/src/paint-helpers.ts +98 -0
- package/src/pipeline-error-catalog.ts +278 -0
- package/src/portability-check.ts +155 -0
- package/src/portability-lossy.ts +81 -0
- package/src/portability.ts +31 -0
- package/src/portable-builder.ts +35 -0
- package/src/portable-entry.ts +37 -0
- package/src/position-reference-build.ts +164 -0
- package/src/position-reference.ts +41 -0
- package/src/runtime.ts +198 -0
- package/src/scale-color-helpers.ts +263 -0
- package/src/scale-color-hue-grey.ts +95 -0
- package/src/scale-color-stops.ts +177 -0
- package/src/scale-color-viridis.ts +99 -0
- package/src/scale-helpers.ts +264 -0
- package/src/scale-multi-helpers.ts +220 -0
- package/src/scale-position-helpers.ts +231 -0
- package/src/scale-reference-build.ts +222 -0
- package/src/scale-reference-classify-color.ts +334 -0
- package/src/scale-reference-classify-position.ts +164 -0
- package/src/scale-reference-classify-style.ts +229 -0
- package/src/scale-reference-classify-support.ts +298 -0
- package/src/scale-reference.ts +165 -0
- package/src/scale-style-helpers.ts +316 -0
- package/src/schema-catalog.ts +222 -0
- package/src/schema-declarations.ts +51 -0
- package/src/schema-decls-data.ts +272 -0
- package/src/schema-decls-guides-theme.ts +395 -0
- package/src/schema-decls-layers-col-boxplot.ts +410 -0
- package/src/schema-decls-layers-count-pointrange.ts +321 -0
- package/src/schema-decls-layers-crossbar-jitter.ts +443 -0
- package/src/schema-decls-layers-point-path.ts +246 -0
- package/src/schema-decls-layers-sf-blank.ts +408 -0
- package/src/schema-decls-layers-text-map.ts +259 -0
- package/src/schema-decls-paint.ts +124 -0
- package/src/schema-decls-params-area-abline.ts +440 -0
- package/src/schema-decls-params-col-contour.ts +333 -0
- package/src/schema-decls-params-curve-label.ts +343 -0
- package/src/schema-decls-params-errorbar-position.ts +446 -0
- package/src/schema-decls-params-point-path.ts +394 -0
- package/src/schema-decls-params-violin-summary.ts +447 -0
- package/src/schema-decls-plot.ts +385 -0
- package/src/schema-decls-scales-guides.ts +233 -0
- package/src/schema-decls-scales.ts +432 -0
- package/src/schema-imports.ts +116 -0
- package/src/schema-name-schemas.ts +37 -0
- package/src/schema-names.ts +243 -0
- package/src/schema-types.ts +400 -0
- package/src/schema.ts +287 -0
- package/src/stat-reference-build.ts +145 -0
- package/src/stat-reference.ts +38 -0
- package/src/structural-gate.ts +42 -0
- package/src/temporal-column.ts +323 -0
- package/src/temporal-guides.ts +32 -0
- package/src/temporal-interval-schema.ts +40 -0
- package/src/temporal-interval.ts +151 -0
- package/src/temporal-parse-core.ts +331 -0
- package/src/temporal-parse-format.ts +222 -0
- package/src/temporal-parse-schema.ts +38 -0
- package/src/temporal-parse.ts +259 -0
- package/src/temporal-polyfill.ts +27 -0
- package/src/temporal-ticks.ts +312 -0
- package/src/temporal.ts +112 -0
- package/src/validate-data-checks-color-temporal.ts +261 -0
- package/src/validate-data-checks-color.ts +395 -0
- package/src/validate-data-checks-layer.ts +492 -0
- package/src/validate-data-checks-position.ts +275 -0
- package/src/validate-data-checks-style-finite.ts +55 -0
- package/src/validate-data-checks-style-numeric.ts +455 -0
- package/src/validate-data-checks-style.ts +13 -0
- package/src/validate-data-checks-temporal.ts +129 -0
- package/src/validate-data-checks.ts +157 -0
- package/src/validate-data-evidence.ts +419 -0
- package/src/validate-data.ts +114 -0
- package/src/validate-map-errors.ts +126 -0
- package/src/validate-map-forms.ts +148 -0
- package/src/validate-map-path-keywords.ts +129 -0
- package/src/validate-map-path-unions.ts +281 -0
- package/src/validate-schema-shape.ts +232 -0
- package/src/validate-schema-walk.ts +219 -0
- package/src/validate-structure-facet.ts +76 -0
- package/src/validate-structure-layer-computed-y.ts +94 -0
- package/src/validate-structure-layer-ribbon.ts +61 -0
- package/src/validate-structure-layer-rule.ts +98 -0
- package/src/validate-structure-layer-shared.ts +29 -0
- package/src/validate-structure-layers.ts +395 -0
- package/src/validate-structure-paint.ts +101 -0
- package/src/validate-structure-scales.ts +278 -0
- package/src/validate-structure-style-bins.ts +167 -0
- package/src/validate-structure.ts +16 -0
- package/src/validate.ts +212 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scale canonicalization for normalize() — position type rewrites and color hex.
|
|
3
|
+
* Coord: normalize-coord.ts. Layer/aes orchestration: normalize.ts.
|
|
4
|
+
*/
|
|
5
|
+
function isRecord(value) {
|
|
6
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
7
|
+
}
|
|
8
|
+
function withGuide(scale) {
|
|
9
|
+
if (!("guide" in scale) || !isRecord(scale.guide))
|
|
10
|
+
return { ...scale };
|
|
11
|
+
const guide = {
|
|
12
|
+
...scale.guide,
|
|
13
|
+
...(isRecord(scale.guide["theme"]) && { theme: { ...scale.guide["theme"] } }),
|
|
14
|
+
};
|
|
15
|
+
return { ...scale, guide };
|
|
16
|
+
}
|
|
17
|
+
function normalizeHexColor(color) {
|
|
18
|
+
const match = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(color);
|
|
19
|
+
if (match === null)
|
|
20
|
+
return color;
|
|
21
|
+
const digits = match[1].toLowerCase();
|
|
22
|
+
return digits.length === 3
|
|
23
|
+
? `#${digits[0]}${digits[0]}${digits[1]}${digits[1]}${digits[2]}${digits[2]}`
|
|
24
|
+
: `#${digits}`;
|
|
25
|
+
}
|
|
26
|
+
function normalizeColorScale(scale) {
|
|
27
|
+
const fallbacks = {
|
|
28
|
+
...(scale.naValue !== undefined && { naValue: normalizeHexColor(scale.naValue) }),
|
|
29
|
+
...(scale.unknownValue !== undefined && {
|
|
30
|
+
unknownValue: normalizeHexColor(scale.unknownValue),
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
33
|
+
if (scale.type === "identity")
|
|
34
|
+
return { ...withGuide(scale), ...fallbacks };
|
|
35
|
+
return {
|
|
36
|
+
...withGuide(scale),
|
|
37
|
+
...(Array.isArray(scale.range) && {
|
|
38
|
+
range: scale.range.map((color) => normalizeHexColor(color)),
|
|
39
|
+
}),
|
|
40
|
+
...fallbacks,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function normalizePositionScale(scale) {
|
|
44
|
+
if (scale.type === "band") {
|
|
45
|
+
const { temporalKind: _, parse: __, parseFailure: ___, timezone: ____, disambiguation: _____, dateBreaks: ______, dateMinorBreaks: _______, dateLabels: ________, locale: _________, weekStart: __________, ...band } = scale;
|
|
46
|
+
return band;
|
|
47
|
+
}
|
|
48
|
+
// Canonical log10: an authored `type: "log"` (base-10) IS the linear family
|
|
49
|
+
// with the log10 transform. A conflicting explicit transform (identity/sqrt)
|
|
50
|
+
// is left uncanonicalized for pipeline preflight to reject as
|
|
51
|
+
// scale-type-transform-conflict. Pure normalize never throws.
|
|
52
|
+
if (scale.type === "log" && (scale.transform === undefined || scale.transform === "log10")) {
|
|
53
|
+
return { ...scale, type: "linear", transform: "log10" };
|
|
54
|
+
}
|
|
55
|
+
// Binned is a quantitative position family; it never requests a time scale.
|
|
56
|
+
// Contradictory temporal options are left for validate() to reject.
|
|
57
|
+
if (scale.type === "binned") {
|
|
58
|
+
return { ...scale };
|
|
59
|
+
}
|
|
60
|
+
const hasTemporalGuideOption = scale.dateBreaks !== undefined ||
|
|
61
|
+
scale.dateMinorBreaks !== undefined ||
|
|
62
|
+
scale.dateLabels !== undefined ||
|
|
63
|
+
scale.locale !== undefined ||
|
|
64
|
+
scale.weekStart !== undefined;
|
|
65
|
+
if ((scale.type === "linear" || scale.type === "log") && hasTemporalGuideOption) {
|
|
66
|
+
return { ...scale };
|
|
67
|
+
}
|
|
68
|
+
const requestsTime = scale.type === "time" ||
|
|
69
|
+
scale.temporalKind !== undefined ||
|
|
70
|
+
scale.parse !== undefined ||
|
|
71
|
+
scale.parseFailure !== undefined ||
|
|
72
|
+
scale.timezone !== undefined ||
|
|
73
|
+
scale.disambiguation !== undefined ||
|
|
74
|
+
hasTemporalGuideOption;
|
|
75
|
+
return requestsTime ? { ...scale, type: "time" } : { ...scale };
|
|
76
|
+
}
|
|
77
|
+
export function normalizeScales(scales) {
|
|
78
|
+
return {
|
|
79
|
+
...(scales.x !== undefined && { x: withGuide(normalizePositionScale(scales.x)) }),
|
|
80
|
+
...(scales.y !== undefined && { y: withGuide(normalizePositionScale(scales.y)) }),
|
|
81
|
+
...(scales.color !== undefined && { color: normalizeColorScale(scales.color) }),
|
|
82
|
+
...(scales.fill !== undefined && { fill: normalizeColorScale(scales.fill) }),
|
|
83
|
+
...(scales.size !== undefined && { size: withGuide(scales.size) }),
|
|
84
|
+
...(scales.linewidth !== undefined && { linewidth: withGuide(scales.linewidth) }),
|
|
85
|
+
...(scales.alpha !== undefined && { alpha: withGuide(scales.alpha) }),
|
|
86
|
+
...(scales.shape !== undefined && { shape: withGuide(scales.shape) }),
|
|
87
|
+
...(scales.linetype !== undefined && { linetype: withGuide(scales.linetype) }),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=normalize-scales.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-scales.js","sourceRoot":"","sources":["../src/normalize-scales.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* normalize() — the canonicalizer (plan: "One canonical form per concept").
|
|
3
|
+
*
|
|
4
|
+
* Input: a SpecInput, the TS/builder-level convenience form where channels may
|
|
5
|
+
* be bare strings ('displ' means { field: 'displ' }). The JSON Schema does NOT
|
|
6
|
+
* admit bare strings — the shorthand exists only here and in the Svelte props.
|
|
7
|
+
* Input types live in normalize-input.ts.
|
|
8
|
+
*
|
|
9
|
+
* Output: a canonical PortableSpec. Canonicalization performed:
|
|
10
|
+
* 1. Bare-string channels -> { field } (in plot aes and layer aes).
|
|
11
|
+
* 2. Geom defaults filled (GEOM_DEFAULTS): bar -> stat count + position
|
|
12
|
+
* stack; col/area -> identity + stack; everything else identity/identity.
|
|
13
|
+
* 3. Bar layers with no y channel get the count stat's default mapping
|
|
14
|
+
* y: { stat: "count" } (ggplot2's after_stat default aes).
|
|
15
|
+
* 4. Aes inheritance RESOLVED into each layer with null-unset semantics
|
|
16
|
+
* (layer channel null removes the inherited channel), and the plot-level
|
|
17
|
+
* `aes` removed from the output. Every normalized layer is self-contained.
|
|
18
|
+
* (Resolving at normalize time is what makes normalize idempotent: keeping
|
|
19
|
+
* plot aes AND merged layers would re-inherit null-unset channels on a
|
|
20
|
+
* second pass.)
|
|
21
|
+
* 5. Theme names stay strings; theme objects are cloned (both canonical).
|
|
22
|
+
* 6. Deterministic key order for every object it constructs.
|
|
23
|
+
*
|
|
24
|
+
* Scale-type inference needs data, so it lives in @ggts-sh/core (pipeline);
|
|
25
|
+
* normalize only fills structural defaults. Normalized output is itself a
|
|
26
|
+
* valid PortableSpec, and normalize(normalize(s)) deep-equals normalize(s).
|
|
27
|
+
*
|
|
28
|
+
* Scale and coord canonicalization live in normalize-scales.ts and
|
|
29
|
+
* normalize-coord.ts; this module owns channels, layers, facet, theme, and
|
|
30
|
+
* the top-level normalize() walk.
|
|
31
|
+
*/
|
|
32
|
+
import type { ChannelValue, NormalizedSpec } from "./schema.js";
|
|
33
|
+
import type { ChannelInput, SpecInput } from "./normalize-input.js";
|
|
34
|
+
export type { AesInput, AreaLayerInput, BarLayerInput, BoxplotLayerInput, ChannelInput, ColLayerInput, DensityLayerInput, ErrorbarLayerInput, LinerangeLayerInput, PointrangeLayerInput, CrossbarLayerInput, FacetFieldInput, FacetInput, HistogramLayerInput, FreqpolyLayerInput, HlineLayerInput, JitterLayerInput, RibbonLayerInput, SegmentLayerInput, CountLayerInput, ViolinLayerInput, FunctionLayerInput, PolygonLayerInput, AblineLayerInput, ContourLayerInput, Density2dLayerInput, Density2dFilledLayerInput, DotplotLayerInput, BlankLayerInput, MapLayerInput, SpokeLayerInput, SfLayerInput, SfTextLayerInput, SfLabelLayerInput, CurveLayerInput, RugLayerInput, StepLayerInput, QqLayerInput, QqLineLayerInput, LayerInput, LineLayerInput, PathLayerInput, PointLayerInput, RasterLayerInput, HexLayerInput, RectLayerInput, RuleLayerInput, QuantileLayerInput, SmoothLayerInput, SpecInput, TextLayerInput, LabelLayerInput, TileLayerInput, Bin2dLayerInput, VlineLayerInput, } from "./normalize-input.js";
|
|
35
|
+
/** Canonicalize one channel: bare string -> { field }; clone canonical forms. */
|
|
36
|
+
export declare function normalizeChannel(input: ChannelInput): ChannelValue;
|
|
37
|
+
/**
|
|
38
|
+
* Canonicalize a SpecInput into a normalized PortableSpec (see module docs).
|
|
39
|
+
*
|
|
40
|
+
* The NormalizedSpec return type promises one thing the runtime enforces —
|
|
41
|
+
* canonicalGeom() has rewritten every alias geom. It promises nothing about an
|
|
42
|
+
* unknown geom: normalize() deliberately never throws on one (see below), so
|
|
43
|
+
* the type is only sound once validate() has passed on the result.
|
|
44
|
+
*/
|
|
45
|
+
export declare function normalize(input: SpecInput): NormalizedSpec;
|
|
46
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,EAGV,YAAY,EAMZ,cAAc,EAGf,MAAM,aAAa,CAAC;AAKrB,OAAO,KAAK,EAEV,YAAY,EAGZ,SAAS,EACV,MAAM,sBAAsB,CAAC;AAI9B,YAAY,EACV,QAAQ,EACR,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAUlE;AAiPD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,CA0B1D"}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { normalizeCoord } from "./normalize-coord.js";
|
|
2
|
+
import { normalizeLayerParamsPaint } from "./normalize-paint.js";
|
|
3
|
+
import { normalizeScales } from "./normalize-scales.js";
|
|
4
|
+
import { CHANNELS, CURRENT_EDITION, GEOM_ALIASES, GEOM_DEFAULTS } from "./schema-catalog.js";
|
|
5
|
+
/** Canonicalize one channel: bare string -> { field }; clone canonical forms. */
|
|
6
|
+
export function normalizeChannel(input) {
|
|
7
|
+
if (typeof input === "string")
|
|
8
|
+
return { field: input };
|
|
9
|
+
if (input === null)
|
|
10
|
+
return null;
|
|
11
|
+
if ("field" in input)
|
|
12
|
+
return { field: input.field };
|
|
13
|
+
if ("value" in input) {
|
|
14
|
+
return input.scale === undefined
|
|
15
|
+
? { value: input.value }
|
|
16
|
+
: { value: input.value, scale: input.scale };
|
|
17
|
+
}
|
|
18
|
+
return { stat: input.stat };
|
|
19
|
+
}
|
|
20
|
+
function normalizeAes(input) {
|
|
21
|
+
if (input === undefined)
|
|
22
|
+
return undefined;
|
|
23
|
+
const out = {};
|
|
24
|
+
for (const channel of CHANNELS) {
|
|
25
|
+
const v = input[channel];
|
|
26
|
+
if (v === undefined)
|
|
27
|
+
continue;
|
|
28
|
+
out[channel] = normalizeChannel(v);
|
|
29
|
+
}
|
|
30
|
+
return out;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Merge plot-level aes into a layer's aes with null-unset semantics:
|
|
34
|
+
* layer channels override; a layer channel of null REMOVES the inherited
|
|
35
|
+
* channel (and does not survive into the resolved mapping).
|
|
36
|
+
*/
|
|
37
|
+
function resolveLayerAes(plotAes, layerAes) {
|
|
38
|
+
const out = {};
|
|
39
|
+
for (const channel of CHANNELS) {
|
|
40
|
+
const own = layerAes?.[channel];
|
|
41
|
+
if (own === null)
|
|
42
|
+
continue; // explicit unset
|
|
43
|
+
const inherited = plotAes?.[channel];
|
|
44
|
+
const chosen = own ?? inherited;
|
|
45
|
+
if (chosen === undefined || chosen === null)
|
|
46
|
+
continue;
|
|
47
|
+
out[channel] = chosen;
|
|
48
|
+
}
|
|
49
|
+
return Object.keys(out).length === 0 ? undefined : out;
|
|
50
|
+
}
|
|
51
|
+
/** Annotation-form rule / hline / vline layers (fixed intercepts) inherit NO
|
|
52
|
+
* plot aes — ggplot2's `inherit.aes = FALSE` on geom_vline/hline (Hadley
|
|
53
|
+
* lesson 15: honest, separate signatures for the two rule forms).
|
|
54
|
+
* Asymmetric: hline is annotation only when yintercept is set; vline only
|
|
55
|
+
* when xintercept is set; rule when either intercept is set. */
|
|
56
|
+
function isAnnotationRule(layer) {
|
|
57
|
+
const params = layer.params;
|
|
58
|
+
if (layer.geom === "hline")
|
|
59
|
+
return params?.yintercept !== undefined;
|
|
60
|
+
if (layer.geom === "vline")
|
|
61
|
+
return params?.xintercept !== undefined;
|
|
62
|
+
if (layer.geom !== "rule")
|
|
63
|
+
return false;
|
|
64
|
+
return params?.xintercept !== undefined || params?.yintercept !== undefined;
|
|
65
|
+
}
|
|
66
|
+
/** Abline is always annotation-style (fixed slope/intercept; no plot aes). */
|
|
67
|
+
function isAnnotationAbline(layer) {
|
|
68
|
+
return layer.geom === "abline";
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Convenience geom aliases (#818 / histogram / freqpoly): rewrite to the
|
|
72
|
+
* canonical geom name. Pure renames only — no cross-field params surgery.
|
|
73
|
+
*
|
|
74
|
+
* The rewrite is GEOM_ALIASES, so the alias set is one table core can key its
|
|
75
|
+
* pipeline records off (#1042) rather than a fact buried in this branch.
|
|
76
|
+
*/
|
|
77
|
+
function canonicalGeom(geom) {
|
|
78
|
+
// Own-key check, not `in`: `in` walks the prototype chain, so a geom named
|
|
79
|
+
// "constructor" or "toString" would read as an alias and rewrite to a
|
|
80
|
+
// function. Unknown names must pass through for validate() to reject.
|
|
81
|
+
return Object.hasOwn(GEOM_ALIASES, geom)
|
|
82
|
+
? GEOM_ALIASES[geom]
|
|
83
|
+
: geom;
|
|
84
|
+
}
|
|
85
|
+
function normalizeLayer(layer, plotAes) {
|
|
86
|
+
// Data-driven hline/vline are one-axis rules: drop the orthogonal position
|
|
87
|
+
// channel from inheritance so plot-level x+y does not trigger rule-both-axes.
|
|
88
|
+
const layerAesInput = normalizeRuleAesInput(layer);
|
|
89
|
+
const inherited = isAnnotationRule(layer) || isAnnotationAbline(layer) ? undefined : plotAes;
|
|
90
|
+
let aes = resolveLayerAes(inherited, normalizeAes(layerAesInput));
|
|
91
|
+
// Unknown geoms fall back to identity defaults so normalize never throws —
|
|
92
|
+
// validate() rejects them right after with the proper did-you-mean error.
|
|
93
|
+
// Own-key check for the same reason as canonicalGeom: plain `[…]` on a geom
|
|
94
|
+
// named "constructor" returns a function, which is truthy, so `??` would not
|
|
95
|
+
// fire and the layer would lose stat and position.
|
|
96
|
+
const defaults = Object.hasOwn(GEOM_DEFAULTS, layer.geom)
|
|
97
|
+
? GEOM_DEFAULTS[layer.geom]
|
|
98
|
+
: { stat: "identity", position: "identity" };
|
|
99
|
+
// geom_sf: public stat_sf (#809 phase 7). Rewrite legacy portable
|
|
100
|
+
// `stat: "identity"` so re-normalize stays additive (draw path unchanged).
|
|
101
|
+
const rawStat = layer.stat ?? defaults.stat;
|
|
102
|
+
const stat = layer.geom === "sf" && rawStat === "identity" ? "sf" : rawStat;
|
|
103
|
+
// Stat default mappings (ggplot2's `after_stat()` default aes): the count
|
|
104
|
+
// and bin stats map y to their count column; the density stat maps y to
|
|
105
|
+
// its density column.
|
|
106
|
+
aes = normalizeStatAes(aes, stat, layer.geom);
|
|
107
|
+
const geom = canonicalGeom(layer.geom);
|
|
108
|
+
const positionParams = "positionParams" in layer && layer.positionParams !== undefined
|
|
109
|
+
? { ...layer.positionParams }
|
|
110
|
+
: undefined;
|
|
111
|
+
const rawParams = layer.params === undefined ? undefined : { ...layer.params };
|
|
112
|
+
const params = rawParams === undefined ? undefined : normalizeLayerParamsPaint(rawParams);
|
|
113
|
+
// "auto" is the render default — one canonical form per concept, so it
|
|
114
|
+
// canonicalizes away (same rule as coord "cartesian" / a11y "auto").
|
|
115
|
+
const render = layer.render === "auto" ? undefined : layer.render;
|
|
116
|
+
// Jitter alias has no position field on the input type; always use defaults.
|
|
117
|
+
const position = normalizeLayerPosition(layer, defaults.position);
|
|
118
|
+
const out = {
|
|
119
|
+
geom,
|
|
120
|
+
stat,
|
|
121
|
+
position,
|
|
122
|
+
...(positionParams !== undefined && { positionParams }),
|
|
123
|
+
...(render !== undefined && { render }),
|
|
124
|
+
...(aes !== undefined && { aes }),
|
|
125
|
+
...(layer.data !== undefined && { data: layer.data }),
|
|
126
|
+
// Only `false` is expressible. Read as unknown so a raw JSON `inspect: true`
|
|
127
|
+
// is not rewritten to false — validate rejects non-false; typed input only
|
|
128
|
+
// admits false (#1065).
|
|
129
|
+
...(layer.inspect === false && {
|
|
130
|
+
inspect: false,
|
|
131
|
+
}),
|
|
132
|
+
...(params !== undefined && { params }),
|
|
133
|
+
};
|
|
134
|
+
return out;
|
|
135
|
+
}
|
|
136
|
+
function normalizeRuleAesInput(layer) {
|
|
137
|
+
if (layer.geom === "hline" && !isAnnotationRule(layer))
|
|
138
|
+
return { ...layer.aes, x: null };
|
|
139
|
+
if (layer.geom === "vline" && !isAnnotationRule(layer))
|
|
140
|
+
return { ...layer.aes, y: null };
|
|
141
|
+
return layer.aes;
|
|
142
|
+
}
|
|
143
|
+
function normalizeStatAes(aes, stat, geom) {
|
|
144
|
+
let normalized = normalizeStatPositionAes(aes, stat);
|
|
145
|
+
normalized = normalizeStatStyleAes(normalized, stat, geom);
|
|
146
|
+
return normalized;
|
|
147
|
+
}
|
|
148
|
+
function normalizeStatPositionAes(aes, stat) {
|
|
149
|
+
if ((stat === "count" || stat === "bin") && aes?.y === undefined) {
|
|
150
|
+
return { ...aes, y: { stat: "count" } };
|
|
151
|
+
}
|
|
152
|
+
if (stat === "density" && aes?.y === undefined)
|
|
153
|
+
return { ...aes, y: { stat: "density" } };
|
|
154
|
+
if (stat === "function" && aes?.y === undefined)
|
|
155
|
+
return { ...aes, y: { stat: "y" } };
|
|
156
|
+
if (stat === "ecdf" && aes?.y === undefined)
|
|
157
|
+
return { ...aes, y: { stat: "ecdf" } };
|
|
158
|
+
if (stat === "bindot" && aes?.y === undefined)
|
|
159
|
+
return { ...aes, y: { stat: "stackpos" } };
|
|
160
|
+
return aes;
|
|
161
|
+
}
|
|
162
|
+
function normalizeStatStyleAes(aes, stat, geom) {
|
|
163
|
+
if (stat === "sum" && aes?.size === undefined)
|
|
164
|
+
return { ...aes, size: { stat: "n" } };
|
|
165
|
+
if (stat === "bin_hex" && aes?.fill === undefined)
|
|
166
|
+
return { ...aes, fill: { stat: "count" } };
|
|
167
|
+
if ((stat === "density_2d_filled" || geom === "density_2d_filled") && aes?.fill === undefined) {
|
|
168
|
+
return { ...aes, fill: { stat: "level" } };
|
|
169
|
+
}
|
|
170
|
+
if (stat === "bin_2d" && aes?.fill === undefined)
|
|
171
|
+
return { ...aes, fill: { stat: "count" } };
|
|
172
|
+
return aes;
|
|
173
|
+
}
|
|
174
|
+
function normalizeLayerPosition(layer, defaultPosition) {
|
|
175
|
+
if (layer.geom === "jitter")
|
|
176
|
+
return defaultPosition;
|
|
177
|
+
return "position" in layer && layer.position !== undefined ? layer.position : defaultPosition;
|
|
178
|
+
}
|
|
179
|
+
/** Canonicalize one facet field: bare string -> { field }; clone levels/labels. */
|
|
180
|
+
function normalizeFacetField(v) {
|
|
181
|
+
if (v === undefined)
|
|
182
|
+
return undefined;
|
|
183
|
+
if (typeof v === "string")
|
|
184
|
+
return { field: v };
|
|
185
|
+
const levels = v.levels === undefined
|
|
186
|
+
? undefined
|
|
187
|
+
: [...v.levels];
|
|
188
|
+
const labels = v.labels === undefined ? undefined : { ...v.labels };
|
|
189
|
+
return {
|
|
190
|
+
field: v.field,
|
|
191
|
+
...(levels !== undefined && { levels }),
|
|
192
|
+
...(labels !== undefined && { labels }),
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/** Canonicalize facet strip chrome (position + show). */
|
|
196
|
+
function normalizeFacetStrip(strip) {
|
|
197
|
+
const out = {
|
|
198
|
+
...(strip.position !== undefined && { position: strip.position }),
|
|
199
|
+
...(strip.show !== undefined && { show: strip.show }),
|
|
200
|
+
};
|
|
201
|
+
return out;
|
|
202
|
+
}
|
|
203
|
+
/** Canonicalize a facet input: bare-string fields -> { field }. */
|
|
204
|
+
function normalizeFacet(facet) {
|
|
205
|
+
const wrap = normalizeFacetField(facet.wrap);
|
|
206
|
+
const rows = normalizeFacetField(facet.rows);
|
|
207
|
+
const cols = normalizeFacetField(facet.cols);
|
|
208
|
+
const strip = facet.strip === undefined ? undefined : normalizeFacetStrip(facet.strip);
|
|
209
|
+
return {
|
|
210
|
+
...(wrap !== undefined && { wrap }),
|
|
211
|
+
...(rows !== undefined && { rows }),
|
|
212
|
+
...(cols !== undefined && { cols }),
|
|
213
|
+
...(facet.ncol !== undefined && { ncol: facet.ncol }),
|
|
214
|
+
...(facet.scales !== undefined && { scales: facet.scales }),
|
|
215
|
+
...(strip !== undefined && Object.keys(strip).length > 0 && { strip }),
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
function normalizeTheme(theme) {
|
|
219
|
+
return typeof theme === "string" ? theme : { ...theme };
|
|
220
|
+
}
|
|
221
|
+
function normalizeGuide(guide) {
|
|
222
|
+
return {
|
|
223
|
+
...guide,
|
|
224
|
+
...(guide.type !== "none" && guide.theme !== undefined && { theme: { ...guide.theme } }),
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
const GUIDE_ORDER = [
|
|
228
|
+
"x",
|
|
229
|
+
"y",
|
|
230
|
+
"color",
|
|
231
|
+
"fill",
|
|
232
|
+
"size",
|
|
233
|
+
"linewidth",
|
|
234
|
+
"alpha",
|
|
235
|
+
"shape",
|
|
236
|
+
"linetype",
|
|
237
|
+
];
|
|
238
|
+
function normalizeGuides(guides) {
|
|
239
|
+
return Object.fromEntries(GUIDE_ORDER.flatMap((aesthetic) => {
|
|
240
|
+
const guide = guides[aesthetic];
|
|
241
|
+
return guide === undefined ? [] : [[aesthetic, normalizeGuide(guide)]];
|
|
242
|
+
}));
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Canonicalize a SpecInput into a normalized PortableSpec (see module docs).
|
|
246
|
+
*
|
|
247
|
+
* The NormalizedSpec return type promises one thing the runtime enforces —
|
|
248
|
+
* canonicalGeom() has rewritten every alias geom. It promises nothing about an
|
|
249
|
+
* unknown geom: normalize() deliberately never throws on one (see below), so
|
|
250
|
+
* the type is only sound once validate() has passed on the result.
|
|
251
|
+
*/
|
|
252
|
+
export function normalize(input) {
|
|
253
|
+
const plotAes = normalizeAes(input.aes);
|
|
254
|
+
// Defaults canonicalize away: Cartesian/identity coord and a11y "auto" ARE
|
|
255
|
+
// the absent forms (one canonical form per concept).
|
|
256
|
+
const coord = normalizeCoord(input.coord);
|
|
257
|
+
const a11y = input.a11y === "force-svg" ? input.a11y : undefined;
|
|
258
|
+
const out = {
|
|
259
|
+
...(input.$schema !== undefined && { $schema: input.$schema }),
|
|
260
|
+
// Defaults-edition stamping (Hadley lesson 13): absent -> current, so the
|
|
261
|
+
// spec's default look is frozen at authoring time (schema description).
|
|
262
|
+
edition: input.edition ?? CURRENT_EDITION,
|
|
263
|
+
...(input.data !== undefined && { data: input.data }),
|
|
264
|
+
...(input.datasets !== undefined && { datasets: input.datasets }),
|
|
265
|
+
layers: input.layers.map((layer) => normalizeLayer(layer, plotAes)),
|
|
266
|
+
...(input.facet !== undefined && { facet: normalizeFacet(input.facet) }),
|
|
267
|
+
...(coord !== undefined && { coord }),
|
|
268
|
+
...(input.scales !== undefined && { scales: normalizeScales(input.scales) }),
|
|
269
|
+
...(input.guides !== undefined && { guides: normalizeGuides(input.guides) }),
|
|
270
|
+
...(input.legend !== undefined && { legend: { ...input.legend } }),
|
|
271
|
+
...(input.labs !== undefined && { labs: { ...input.labs } }),
|
|
272
|
+
...(input.theme !== undefined && { theme: normalizeTheme(input.theme) }),
|
|
273
|
+
...(input.width !== undefined && { width: input.width }),
|
|
274
|
+
...(input.height !== undefined && { height: input.height }),
|
|
275
|
+
...(a11y !== undefined && { a11y }),
|
|
276
|
+
};
|
|
277
|
+
return out;
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AA4CA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAqE7F,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACvD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,OAAO,IAAI,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACpD,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,KAAK,KAAK,SAAS;YAC9B,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;YACxB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,YAAY,CAAC,KAA2B;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,GAAG,GAAiC,EAAE,CAAC;IAC7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QAC9B,GAAG,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,OAAwB,EAAE,QAAyB;IAC1E,MAAM,GAAG,GAAiC,EAAE,CAAC;IAC7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,GAAG,KAAK,IAAI;YAAE,SAAS,CAAC,iBAAiB;QAC7C,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC;QAChC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QACtD,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;IACxB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACzD,CAAC;AAED;;;;iEAIiE;AACjE,SAAS,gBAAgB,CAAC,KAAiB;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAoE,CAAC;IAC1F,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,MAAM,EAAE,UAAU,KAAK,SAAS,CAAC;IACpE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,MAAM,EAAE,UAAU,KAAK,SAAS,CAAC;IACpE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,MAAM,EAAE,UAAU,KAAK,SAAS,IAAI,MAAM,EAAE,UAAU,KAAK,SAAS,CAAC;AAC9E,CAAC;AAED,8EAA8E;AAC9E,SAAS,kBAAkB,CAAC,KAAiB;IAC3C,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,IAAwB;IAC7C,2EAA2E;IAC3E,sEAAsE;IACtE,sEAAsE;IACtE,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC;QACtC,CAAC,CAAC,YAAY,CAAC,IAAqB,CAAC;QACrC,CAAC,CAAE,IAA2B,CAAC;AACnC,CAAC;AAED,SAAS,cAAc,CAAC,KAAiB,EAAE,OAAwB;IACjE,2EAA2E;IAC3E,8EAA8E;IAC9E,MAAM,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7F,IAAI,GAAG,GAAG,eAAe,CAAC,SAAS,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IAClE,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,6EAA6E;IAC7E,mDAAmD;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;QACvD,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,UAAmB,EAAE,QAAQ,EAAE,UAAmB,EAAE,CAAC;IACjE,kEAAkE;IAClE,2EAA2E;IAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5E,0EAA0E;IAC1E,wEAAwE;IACxE,sBAAsB;IACtB,GAAG,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,cAAc,GAClB,gBAAgB,IAAI,KAAK,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS;QAC7D,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE;QAC7B,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAC/E,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAC1F,uEAAuE;IACvE,qEAAqE;IACrE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IAClE,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG;QACV,IAAI;QACJ,IAAI;QACJ,QAAQ;QACR,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,cAAc,EAAE,CAAC;QACvD,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;QACvC,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC;QACjC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACrD,6EAA6E;QAC7E,2EAA2E;QAC3E,wBAAwB;QACxB,GAAG,CAAE,KAAwC,CAAC,OAAO,KAAK,KAAK,IAAI;YACjE,OAAO,EAAE,KAAc;SACxB,CAAC;QACF,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;KACxC,CAAC;IACF,OAAO,GAA0B,CAAC;AACpC,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAiB;IAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;IACzF,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;IACzF,OAAO,KAAK,CAAC,GAAG,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAoB,EACpB,IAAY,EACZ,IAAwB;IAExB,IAAI,UAAU,GAAG,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrD,UAAU,GAAG,qBAAqB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAoB,EAAE,IAAY;IAClE,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;QACjE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,EAAE,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IAC1F,IAAI,IAAI,KAAK,UAAU,IAAI,GAAG,EAAE,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;IACrF,IAAI,IAAI,KAAK,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACpF,IAAI,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC;IAC1F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,qBAAqB,CAC5B,GAAoB,EACpB,IAAY,EACZ,IAAwB;IAExB,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;IACtF,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,EAAE,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;IAC9F,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,mBAAmB,CAAC,IAAI,GAAG,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9F,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;IAC7F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAiB,EACjB,eAAgD;IAEhD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,eAAe,CAAC;IACpD,OAAO,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC;AAChG,CAAC;AAED,mFAAmF;AACnF,SAAS,mBAAmB,CAAC,CAAqB;IAChD,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC/C,MAAM,MAAM,GACV,CAAC,CAAC,MAAM,KAAK,SAAS;QACpB,CAAC,CAAC,SAAS;QACX,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAA8C,CAAC;IAClE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IACpE,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;QACvC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,SAAS,mBAAmB,CAAC,KAAuC;IAClE,MAAM,GAAG,GAAoC;QAC3C,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;KACtD,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mEAAmE;AACnE,SAAS,cAAc,CAAC,KAAiB;IACvC,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvF,OAAO;QACL,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;QACnC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACrD,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3D,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAA4B;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,cAAc,CAAC,KAAgB;IACtC,OAAO;QACL,GAAG,KAAK;QACR,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;KACzF,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG;IAClB,GAAG;IACH,GAAG;IACH,OAAO;IACP,MAAM;IACN,MAAM;IACN,WAAW;IACX,OAAO;IACP,OAAO;IACP,UAAU;CACF,CAAC;AAEX,SAAS,eAAe,CAAC,MAAkB;IACzC,OAAO,MAAM,CAAC,WAAW,CACvB,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,KAAgB;IACxC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,2EAA2E;IAC3E,qDAAqD;IACrD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,MAAM,GAAG,GAAmB;QAC1B,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9D,0EAA0E;QAC1E,wEAAwE;QACxE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe;QACzC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACrD,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC;QACrC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QAClE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5D,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACxD,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3D,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;KACpC,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Within-mark paint authoring helpers (#591).
|
|
3
|
+
* Closed portable gradients + bounded glow — not theme decoration.
|
|
4
|
+
*/
|
|
5
|
+
import type { ColorStop, GlowSpec, LinearGradientPaint, PaintSpace, RadialGradientPaint } from "./schema.js";
|
|
6
|
+
export type ColorStopInput = ColorStop;
|
|
7
|
+
export type LinearPaintOptions = {
|
|
8
|
+
x1: number;
|
|
9
|
+
y1: number;
|
|
10
|
+
x2: number;
|
|
11
|
+
y2: number;
|
|
12
|
+
/** Gradient coordinate space. Default "mark" (object bounding box). */
|
|
13
|
+
space?: PaintSpace;
|
|
14
|
+
stops: ColorStopInput[];
|
|
15
|
+
/** Required solid #rgb/#rrggbb fallback for a11y / reduced-effects paths. */
|
|
16
|
+
fallback: string;
|
|
17
|
+
};
|
|
18
|
+
export type RadialPaintOptions = {
|
|
19
|
+
cx: number;
|
|
20
|
+
cy: number;
|
|
21
|
+
r: number;
|
|
22
|
+
/** Gradient coordinate space. Default "mark" (object bounding box). */
|
|
23
|
+
space?: PaintSpace;
|
|
24
|
+
stops: ColorStopInput[];
|
|
25
|
+
/** Required solid #rgb/#rrggbb fallback for a11y / reduced-effects paths. */
|
|
26
|
+
fallback: string;
|
|
27
|
+
};
|
|
28
|
+
export type GlowOptions = {
|
|
29
|
+
color: string;
|
|
30
|
+
/** Blur radius in CSS px (exclusive minimum 0, maximum 32). */
|
|
31
|
+
radius: number;
|
|
32
|
+
/** Glow opacity 0–1. */
|
|
33
|
+
opacity: number;
|
|
34
|
+
};
|
|
35
|
+
/** Build a deterministic linear gradient paint for fillPaint / strokePaint. */
|
|
36
|
+
export declare function fillPaintLinear(options: LinearPaintOptions): LinearGradientPaint;
|
|
37
|
+
/** Build a deterministic radial gradient paint for fillPaint. */
|
|
38
|
+
export declare function fillPaintRadial(options: RadialPaintOptions): RadialGradientPaint;
|
|
39
|
+
/** Build a deterministic linear gradient paint for strokePaint. */
|
|
40
|
+
export declare function strokePaintLinear(options: LinearPaintOptions): LinearGradientPaint;
|
|
41
|
+
/** Build a deterministic radial gradient paint for strokePaint. */
|
|
42
|
+
export declare function strokePaintRadial(options: RadialPaintOptions): RadialGradientPaint;
|
|
43
|
+
/** Build a bounded glow treatment (color, radius ≤ 32px, opacity). */
|
|
44
|
+
export declare function glow(options: GlowOptions): GlowSpec;
|
|
45
|
+
//# sourceMappingURL=paint-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paint-helpers.d.ts","sourceRoot":"","sources":["../src/paint-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,mBAAmB,EACnB,UAAU,EACV,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC;AAEvC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,uEAAuE;IACvE,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AA2BF,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,CAEhF;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,CAEhF;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,CAElF;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,CAElF;AAED,sEAAsE;AACtE,wBAAgB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,CAMnD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
function linear(options) {
|
|
2
|
+
return {
|
|
3
|
+
type: "linear",
|
|
4
|
+
x1: options.x1,
|
|
5
|
+
y1: options.y1,
|
|
6
|
+
x2: options.x2,
|
|
7
|
+
y2: options.y2,
|
|
8
|
+
space: options.space ?? "mark",
|
|
9
|
+
stops: options.stops.map((stop) => ({ ...stop })),
|
|
10
|
+
fallback: options.fallback,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function radial(options) {
|
|
14
|
+
return {
|
|
15
|
+
type: "radial",
|
|
16
|
+
cx: options.cx,
|
|
17
|
+
cy: options.cy,
|
|
18
|
+
r: options.r,
|
|
19
|
+
space: options.space ?? "mark",
|
|
20
|
+
stops: options.stops.map((stop) => ({ ...stop })),
|
|
21
|
+
fallback: options.fallback,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** Build a deterministic linear gradient paint for fillPaint / strokePaint. */
|
|
25
|
+
export function fillPaintLinear(options) {
|
|
26
|
+
return linear(options);
|
|
27
|
+
}
|
|
28
|
+
/** Build a deterministic radial gradient paint for fillPaint. */
|
|
29
|
+
export function fillPaintRadial(options) {
|
|
30
|
+
return radial(options);
|
|
31
|
+
}
|
|
32
|
+
/** Build a deterministic linear gradient paint for strokePaint. */
|
|
33
|
+
export function strokePaintLinear(options) {
|
|
34
|
+
return linear(options);
|
|
35
|
+
}
|
|
36
|
+
/** Build a deterministic radial gradient paint for strokePaint. */
|
|
37
|
+
export function strokePaintRadial(options) {
|
|
38
|
+
return radial(options);
|
|
39
|
+
}
|
|
40
|
+
/** Build a bounded glow treatment (color, radius ≤ 32px, opacity). */
|
|
41
|
+
export function glow(options) {
|
|
42
|
+
return {
|
|
43
|
+
color: options.color,
|
|
44
|
+
radius: options.radius,
|
|
45
|
+
opacity: options.opacity,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=paint-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paint-helpers.js","sourceRoot":"","sources":["../src/paint-helpers.ts"],"names":[],"mappings":"AA6CA,SAAS,MAAM,CAAC,OAA2B;IACzC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,OAA2B;IACzC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,CAAC,EAAE,OAAO,CAAC,CAAC;QACZ,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,OAA2B;IACzD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAAC,OAA2B;IACzD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,IAAI,CAAC,OAAoB;IACvC,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;AACJ,CAAC"}
|