ggaction 0.0.2 → 0.0.4

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.
Files changed (242) hide show
  1. package/CHANGELOG.md +55 -2
  2. package/README.md +95 -72
  3. package/package.json +15 -5
  4. package/src/actions/boxPlots/components.js +3 -3
  5. package/src/actions/boxPlots/edit.js +277 -0
  6. package/src/actions/boxPlots/index.js +2 -0
  7. package/src/actions/boxPlots/materialize.js +12 -1
  8. package/src/actions/boxPlots/options.js +25 -14
  9. package/src/actions/canvas/actions.js +21 -17
  10. package/src/actions/composition/actions.js +247 -0
  11. package/src/actions/composition/index.js +1 -0
  12. package/src/actions/coordinates/actions.js +2 -5
  13. package/src/actions/data/density.js +7 -1
  14. package/src/actions/data/filter.js +3 -1
  15. package/src/actions/data/regression.js +1 -1
  16. package/src/actions/encodings/appearance.js +12 -1
  17. package/src/actions/encodings/barWidth.js +5 -3
  18. package/src/actions/encodings/color/continuous.js +137 -0
  19. package/src/actions/encodings/color/index.js +151 -0
  20. package/src/actions/encodings/color/layout.js +91 -0
  21. package/src/actions/encodings/color/policy.js +88 -0
  22. package/src/actions/encodings/index.js +4 -2
  23. package/src/actions/encodings/offset.js +91 -73
  24. package/src/actions/encodings/position/apply.js +66 -0
  25. package/src/actions/encodings/position/index.js +130 -0
  26. package/src/actions/encodings/position/policies/arc.js +26 -0
  27. package/src/actions/encodings/position/policies/bar.js +9 -5
  28. package/src/actions/encodings/position/policies/index.js +5 -1
  29. package/src/actions/encodings/position/policies/line.js +20 -3
  30. package/src/actions/encodings/position/resolve.js +58 -9
  31. package/src/actions/encodings/ranged.js +30 -8
  32. package/src/actions/encodings/shared.js +17 -21
  33. package/src/actions/encodings/strokeDash.js +1 -1
  34. package/src/actions/encodings/text.js +73 -0
  35. package/src/actions/errorBands/create.js +37 -29
  36. package/src/actions/errorBands/edit.js +206 -0
  37. package/src/actions/errorBands/index.js +9 -0
  38. package/src/actions/errorBands/options.js +39 -0
  39. package/src/actions/errorBars/create.js +50 -43
  40. package/src/actions/errorBars/edit.js +130 -0
  41. package/src/actions/errorBars/index.js +3 -0
  42. package/src/actions/errorBars/options.js +52 -0
  43. package/src/actions/facets/actions.js +162 -0
  44. package/src/actions/facets/derive.js +200 -0
  45. package/src/actions/facets/guides.js +16 -0
  46. package/src/actions/facets/index.js +1 -0
  47. package/src/actions/facets/replay.js +69 -0
  48. package/src/actions/guides/applicability.js +113 -0
  49. package/src/actions/guides/axes/axes.js +70 -16
  50. package/src/actions/guides/axes/edit.js +126 -0
  51. package/src/actions/guides/axes/index.js +12 -0
  52. package/src/actions/guides/axes/labels.js +22 -19
  53. package/src/actions/guides/axes/remove.js +60 -0
  54. package/src/actions/guides/axes/tickGroups.js +7 -5
  55. package/src/actions/guides/axes/ticks.js +10 -5
  56. package/src/actions/guides/axes/titles.js +8 -6
  57. package/src/actions/guides/grids/grid.js +144 -15
  58. package/src/actions/guides/grids/resolve.js +6 -14
  59. package/src/actions/guides/guides.js +17 -75
  60. package/src/actions/guides/index.js +6 -0
  61. package/src/actions/guides/legends/categorical/actions.js +48 -9
  62. package/src/actions/guides/legends/categorical/components.js +16 -16
  63. package/src/actions/guides/legends/categorical/index.js +14 -14
  64. package/src/actions/guides/legends/categorical/layout.js +7 -3
  65. package/src/actions/guides/legends/categorical/options.js +2 -5
  66. package/src/actions/guides/legends/categorical/resolve.js +2 -2
  67. package/src/actions/guides/legends/categorical/symbols.js +14 -14
  68. package/src/actions/guides/legends/continuous/common.js +7 -7
  69. package/src/actions/guides/legends/continuous/interval.js +6 -6
  70. package/src/actions/guides/legends/continuous/opacity.js +1 -1
  71. package/src/actions/guides/legends/edit.js +4 -26
  72. package/src/actions/guides/legends/focused.js +63 -0
  73. package/src/actions/guides/legends/index.js +4 -0
  74. package/src/actions/guides/legends/remove.js +46 -0
  75. package/src/actions/guides/legends/size.js +13 -15
  76. package/src/actions/guides/legends/target.js +25 -0
  77. package/src/actions/guides/polar/axes/facade.js +219 -0
  78. package/src/actions/guides/polar/axes/index.js +55 -0
  79. package/src/actions/guides/polar/axes/labels.js +188 -0
  80. package/src/actions/guides/polar/axes/lines.js +113 -0
  81. package/src/actions/guides/polar/axes/shared.js +112 -0
  82. package/src/actions/guides/polar/axes/ticks.js +164 -0
  83. package/src/actions/guides/polar/axes/titles.js +165 -0
  84. package/src/actions/guides/polar/grids.js +252 -0
  85. package/src/actions/guides/polar/index.js +2 -0
  86. package/src/actions/guides/polar/resolve.js +269 -0
  87. package/src/actions/guides/tickValues.js +1 -1
  88. package/src/actions/index.js +4 -0
  89. package/src/actions/intervals/resolve.js +1 -1
  90. package/src/actions/marks/arc/actions.js +239 -0
  91. package/src/actions/marks/arc/index.js +1 -0
  92. package/src/actions/marks/{area.js → area/actions.js} +51 -38
  93. package/src/actions/marks/area/index.js +4 -0
  94. package/src/actions/marks/bar/create.js +26 -5
  95. package/src/actions/marks/bar/edit.js +1 -1
  96. package/src/actions/marks/bar/materialize.js +25 -31
  97. package/src/actions/marks/index.js +12 -4
  98. package/src/actions/marks/lifecycle.js +27 -0
  99. package/src/actions/marks/line/actions.js +373 -0
  100. package/src/actions/marks/line/index.js +1 -0
  101. package/src/actions/marks/{point.js → point/actions.js} +67 -108
  102. package/src/actions/marks/point/index.js +1 -0
  103. package/src/actions/marks/rect/actions.js +165 -0
  104. package/src/actions/marks/rect/index.js +1 -0
  105. package/src/actions/marks/remove.js +214 -0
  106. package/src/actions/marks/{rule.js → rule/actions.js} +34 -28
  107. package/src/actions/marks/rule/index.js +1 -0
  108. package/src/actions/marks/shared.js +156 -25
  109. package/src/actions/marks/text/actions.js +192 -0
  110. package/src/actions/marks/text/index.js +1 -0
  111. package/src/actions/primitives/createGraphics.js +13 -6
  112. package/src/actions/primitives/editGraphics.js +10 -3
  113. package/src/actions/primitives/semantic.js +26 -3
  114. package/src/actions/primitives/semanticValue.js +26 -4
  115. package/src/actions/regression/components.js +2 -2
  116. package/src/actions/regression/create.js +19 -2
  117. package/src/actions/regression/edit.js +247 -0
  118. package/src/actions/regression/index.js +3 -0
  119. package/src/actions/regression/resolve.js +3 -1
  120. package/src/actions/scales/consumers/common.js +91 -0
  121. package/src/actions/scales/consumers/families.js +47 -0
  122. package/src/actions/scales/consumers/index.js +41 -0
  123. package/src/actions/scales/{consumers.js → consumers/seriesLayout.js} +14 -127
  124. package/src/actions/scales/create.js +1 -1
  125. package/src/actions/scales/definitions.js +15 -6
  126. package/src/actions/scales/edit.js +45 -22
  127. package/src/actions/scales/materialize.js +58 -409
  128. package/src/actions/selection/actions.js +38 -24
  129. package/src/actions/selection/index.js +2 -0
  130. package/src/actions/titles/actions.js +63 -2
  131. package/src/actions/titles/index.js +2 -0
  132. package/src/actions/titles/resolve.js +12 -17
  133. package/src/composition.js +10 -0
  134. package/src/core/ChartProgram.js +49 -65
  135. package/src/core/action.js +10 -0
  136. package/src/core/compositionState.js +169 -0
  137. package/src/core/materializationState.js +65 -0
  138. package/src/core/programState.js +28 -0
  139. package/src/core/validation.js +16 -0
  140. package/src/core/vocabulary.js +154 -4
  141. package/src/grammar/arcs.js +154 -0
  142. package/src/grammar/areaSeries.js +1 -1
  143. package/src/grammar/bars/aggregate.js +3 -3
  144. package/src/grammar/bars/geometry.js +3 -3
  145. package/src/grammar/bars/policy.js +7 -1
  146. package/src/grammar/coordinates.js +3 -7
  147. package/src/grammar/density.js +21 -2
  148. package/src/grammar/facets/dependencies.js +185 -0
  149. package/src/grammar/facets/guides.js +257 -0
  150. package/src/grammar/facets/index.js +122 -0
  151. package/src/grammar/facets/scales.js +254 -0
  152. package/src/grammar/interval.js +2 -96
  153. package/src/grammar/lineSeries.js +112 -4
  154. package/src/grammar/palettes.js +5 -7
  155. package/src/grammar/polar.js +102 -0
  156. package/src/grammar/polarGuides.js +243 -0
  157. package/src/grammar/polarLineCommands.js +43 -0
  158. package/src/grammar/polarPaths.js +161 -0
  159. package/src/grammar/positionCompatibility.js +18 -2
  160. package/src/grammar/rects.js +26 -0
  161. package/src/grammar/regression/derive.js +97 -0
  162. package/src/grammar/regression/index.js +22 -0
  163. package/src/grammar/regression/models.js +282 -0
  164. package/src/grammar/regression/parameters.js +106 -0
  165. package/src/grammar/rules.js +1 -1
  166. package/src/grammar/scales/color.js +4 -2
  167. package/src/grammar/scales/continuous.js +6 -1
  168. package/src/grammar/scales/fields.js +7 -0
  169. package/src/grammar/scales/ordinal.js +5 -2
  170. package/src/grammar/scales/policies.js +1 -1
  171. package/src/grammar/schemas/graphic.js +1 -1
  172. package/src/grammar/schemas/graphicBounds.js +64 -9
  173. package/src/grammar/schemas/graphicTree.js +44 -10
  174. package/src/grammar/schemas/semanticPath.js +31 -9
  175. package/src/grammar/seriesLayout.js +13 -2
  176. package/src/grammar/statistics/studentT.js +98 -0
  177. package/src/grammar/text.js +71 -0
  178. package/src/grammar/ticks.js +50 -13
  179. package/src/grammar/transforms.js +1 -1
  180. package/src/index.js +1 -0
  181. package/src/layout/composition.js +310 -0
  182. package/src/layout/facets.js +131 -0
  183. package/src/layout/title.js +6 -0
  184. package/src/materialization/bars/aggregate.js +6 -3
  185. package/src/materialization/bars/grouped.js +75 -37
  186. package/src/materialization/bars/histogram.js +1 -1
  187. package/src/materialization/bars/ranged.js +1 -1
  188. package/src/materialization/composition.js +152 -0
  189. package/src/materialization/compositionSnapshot.js +114 -0
  190. package/src/materialization/density.js +1 -1
  191. package/src/materialization/dependencies.js +47 -73
  192. package/src/materialization/encodings.js +14 -28
  193. package/src/materialization/facetGuides/index.js +2 -0
  194. package/src/materialization/facetGuides/legacyCategorical.js +125 -0
  195. package/src/materialization/facetGuides/placement.js +126 -0
  196. package/src/materialization/facetGuides/preparation.js +188 -0
  197. package/src/materialization/facets.js +214 -0
  198. package/src/materialization/graphicHierarchy.js +15 -5
  199. package/src/materialization/guides/resources.js +46 -0
  200. package/src/materialization/marks/capabilities.js +141 -0
  201. package/src/materialization/marks/index.js +105 -0
  202. package/src/materialization/marks/policies.js +87 -0
  203. package/src/materialization/planner.js +105 -12
  204. package/src/materialization/rect.js +138 -0
  205. package/src/materialization/rectConfig.js +38 -0
  206. package/src/materialization/rowEncoding.js +33 -0
  207. package/src/materialization/scaleGuideDependencies.js +94 -0
  208. package/src/materialization/scales/map.js +40 -0
  209. package/src/materialization/scales/policies/arc.js +37 -0
  210. package/src/materialization/scales/policies/bar.js +132 -0
  211. package/src/materialization/scales/policies/series.js +76 -0
  212. package/src/materialization/scales/resolve.js +326 -0
  213. package/src/materialization/selection/items/arc.js +29 -0
  214. package/src/materialization/selection/items/bar.js +255 -0
  215. package/src/materialization/selection/items/common.js +131 -0
  216. package/src/materialization/selection/items/index.js +6 -0
  217. package/src/materialization/selection/items/path.js +59 -0
  218. package/src/materialization/selection/items/point.js +55 -0
  219. package/src/materialization/selection/items/rect.js +23 -0
  220. package/src/materialization/selection/items/rule.js +25 -0
  221. package/src/materialization/selection/policies/arc.js +10 -0
  222. package/src/materialization/selection/policies/area.js +1 -1
  223. package/src/materialization/selection/policies/bar.js +1 -1
  224. package/src/materialization/selection/policies/index.js +5 -1
  225. package/src/materialization/selection/policies/line.js +1 -1
  226. package/src/materialization/selection/policies/point.js +1 -1
  227. package/src/materialization/selection/policies/rect.js +10 -0
  228. package/src/materialization/selection/policies/rule.js +1 -1
  229. package/src/materialization/selection/styles.js +25 -17
  230. package/src/materialization/text.js +156 -0
  231. package/src/renderers/canvas/index.js +68 -22
  232. package/src/renderers/canvas/text.js +14 -1
  233. package/types/extension.d.ts +5 -1
  234. package/types/index.d.ts +56 -1
  235. package/types/program.d.ts +664 -27
  236. package/src/actions/encodings/color.js +0 -329
  237. package/src/actions/encodings/position.js +0 -176
  238. package/src/actions/marks/line.js +0 -248
  239. package/src/grammar/regression.js +0 -578
  240. package/src/grammar/scales.js +0 -1
  241. package/src/materialization/marks.js +0 -110
  242. package/src/materialization/selection/items.js +0 -503
@@ -4,7 +4,10 @@ import { drawPathGraphic } from "./path.js";
4
4
  import { drawRectGraphic } from "./rect.js";
5
5
  import { drawTextGraphic } from "./text.js";
6
6
  import { requireFiniteProperty } from "./validation.js";
7
- import { walkGraphicDrawOrder } from "../../grammar/schemas/graphicTree.js";
7
+ import {
8
+ requireSingleOrderedGraphicByType,
9
+ walkGraphicTreeEvents
10
+ } from "../../grammar/schemas/graphicTree.js";
8
11
 
9
12
  const DRAWERS = Object.freeze({
10
13
  circle: drawCircleGraphic,
@@ -46,16 +49,41 @@ function requireCanvasContext(context) {
46
49
  }
47
50
  }
48
51
 
49
- function findCanvas(graphicSpec) {
50
- const canvasIds = graphicSpec.order.filter(
51
- id => graphicSpec.objects[id]?.type === "canvas"
52
- );
52
+ function requireContextMethod(context, method, label) {
53
+ if (typeof context[method] !== "function") {
54
+ throw new TypeError(`${label} requires Canvas context ${method}().`);
55
+ }
56
+ }
53
57
 
54
- if (canvasIds.length !== 1) {
55
- throw new Error("graphicSpec must contain exactly one ordered canvas.");
58
+ function fillCanvasBackground(context, id, canvas, width, height) {
59
+ if (canvas.properties.background === undefined) return;
60
+ if (typeof canvas.properties.background !== "string") {
61
+ throw new Error(
62
+ `Graphic "${id}" requires a string background property.`
63
+ );
56
64
  }
65
+ context.globalAlpha = 1;
66
+ context.fillStyle = canvas.properties.background;
67
+ context.fillRect(0, 0, width, height);
68
+ }
57
69
 
58
- return { id: canvasIds[0], graphic: graphicSpec.objects[canvasIds[0]] };
70
+ function enterNestedCanvas(context, id, canvas) {
71
+ const properties = canvas.properties ?? {};
72
+ const x = requireFiniteProperty(properties, "x", id);
73
+ const y = requireFiniteProperty(properties, "y", id);
74
+ const width = requireFiniteProperty(properties, "width", id);
75
+ const height = requireFiniteProperty(properties, "height", id);
76
+ if (width < 0 || height < 0) {
77
+ throw new Error(`Nested Canvas "${id}" width and height must not be negative.`);
78
+ }
79
+ requireContextMethod(context, "rect", `Nested Canvas "${id}"`);
80
+ requireContextMethod(context, "clip", `Nested Canvas "${id}"`);
81
+ context.save();
82
+ context.translate(x, y);
83
+ context.beginPath();
84
+ context.rect(0, 0, width, height);
85
+ context.clip();
86
+ fillCanvasBackground(context, id, canvas, width, height);
59
87
  }
60
88
 
61
89
  export function render(program, context, { pixelRatio = 1 } = {}) {
@@ -77,7 +105,8 @@ export function render(program, context, { pixelRatio = 1 } = {}) {
77
105
  throw new RangeError("render pixelRatio must be a positive finite number.");
78
106
  }
79
107
 
80
- const { id: canvasId, graphic: canvas } = findCanvas(graphicSpec);
108
+ const { id: canvasId, object: canvas } =
109
+ requireSingleOrderedGraphicByType(graphicSpec, "canvas");
81
110
  const width = requireFiniteProperty(canvas.properties ?? {}, "width", canvasId);
82
111
  const height = requireFiniteProperty(
83
112
  canvas.properties ?? {},
@@ -97,20 +126,37 @@ export function render(program, context, { pixelRatio = 1 } = {}) {
97
126
  context.scale(pixelRatio, pixelRatio);
98
127
  context.clearRect(0, 0, width, height);
99
128
 
100
- if (canvas.properties.background !== undefined) {
101
- if (typeof canvas.properties.background !== "string") {
102
- throw new Error(
103
- `Graphic "${canvasId}" requires a string background property.`
104
- );
129
+ fillCanvasBackground(context, canvasId, canvas, width, height);
130
+
131
+ walkGraphicTreeEvents(graphicSpec, {
132
+ enter({ id, object }) {
133
+ if (id === canvasId) return;
134
+ if (object.type === "canvas") {
135
+ enterNestedCanvas(context, id, object);
136
+ return;
137
+ }
138
+ if (object.type === "collection") {
139
+ context.save();
140
+ return;
141
+ }
142
+ if (!Array.isArray(object.items)) {
143
+ drawConcreteGraphic(context, id, object);
144
+ }
145
+ },
146
+ item({ id, object, owner }) {
147
+ drawConcreteGraphic(context, id, {
148
+ ...object,
149
+ type: object.type ?? owner.type
150
+ });
151
+ },
152
+ exit({ id, object }) {
153
+ if (
154
+ id !== canvasId &&
155
+ (object.type === "collection" || object.type === "canvas")
156
+ ) {
157
+ context.restore();
158
+ }
105
159
  }
106
-
107
- context.globalAlpha = 1;
108
- context.fillStyle = canvas.properties.background;
109
- context.fillRect(0, 0, width, height);
110
- }
111
-
112
- walkGraphicDrawOrder(graphicSpec, ({ id, object }) => {
113
- if (id !== canvasId) drawConcreteGraphic(context, id, object);
114
160
  });
115
161
  } finally {
116
162
  context.restore();
@@ -2,6 +2,18 @@ import { requireFiniteProperty, requireStringProperty } from "./validation.js";
2
2
  import { validateConcreteGraphicProperties } from
3
3
  "../../grammar/schemas/concreteGraphic.js";
4
4
 
5
+ const MIN_CANVAS_NUMERIC_FONT_WEIGHT = 100;
6
+ const MAX_CANVAS_NUMERIC_FONT_WEIGHT = 900;
7
+
8
+ export function normalizeCanvasFontWeight(fontWeight) {
9
+ if (typeof fontWeight !== "number") return fontWeight;
10
+ const rounded = Math.round(fontWeight / 100) * 100;
11
+ return Math.min(
12
+ MAX_CANVAS_NUMERIC_FONT_WEIGHT,
13
+ Math.max(MIN_CANVAS_NUMERIC_FONT_WEIGHT, rounded)
14
+ );
15
+ }
16
+
5
17
  function drawText(context, child, collectionId) {
6
18
  const properties = child.properties ?? {};
7
19
  const graphicId = child.id ?? collectionId;
@@ -73,7 +85,8 @@ function drawText(context, child, collectionId) {
73
85
  try {
74
86
  context.fillStyle = fill;
75
87
  context.globalAlpha = opacity;
76
- context.font = `${fontWeight} ${fontSize}px ${fontFamily}`;
88
+ const canvasFontWeight = normalizeCanvasFontWeight(fontWeight);
89
+ context.font = `${canvasFontWeight} ${fontSize}px ${fontFamily}`;
77
90
  context.textAlign = textAlign;
78
91
  context.textBaseline = textBaseline;
79
92
  context.translate(x, y);
@@ -6,9 +6,13 @@ export { ChartProgram };
6
6
  export interface ActionMetadata {
7
7
  op: string;
8
8
  description: string;
9
+ scope?: "unit" | "composition" | "any";
9
10
  }
10
11
 
11
12
  export function action<TOptions extends ActionOptions = ActionOptions>(
12
13
  metadata: ActionMetadata,
13
14
  implementation: (this: ChartProgram, options: TOptions) => ChartProgram
14
- ): (this: ChartProgram, options?: TOptions) => ChartProgram;
15
+ ): <TProgram extends ChartProgram>(
16
+ this: TProgram,
17
+ options?: TOptions
18
+ ) => TProgram;
package/types/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ChartProgram } from "./program.js";
1
+ import type { ChartProgram, CompositionOptions } from "./program.js";
2
2
 
3
3
  export type {
4
4
  ActionOptions,
@@ -18,19 +18,56 @@ export type {
18
18
  ColorLayout,
19
19
  ColorEncodingOptions,
20
20
  CompleteAxisOptions,
21
+ ConcatCompositionSpec,
22
+ CompositionAlign,
23
+ CompositionOptions,
24
+ CompositionPadding,
25
+ CompositionProgramEntry,
26
+ CompositionSpec,
21
27
  ChartProgram,
22
28
  ConcretePathCommand,
23
29
  CurveInterpolation,
30
+ CreateDerivedDataOptions,
24
31
  CreateAxesOptions,
32
+ CreateCoordinateOptions,
33
+ CreateGuidesOptions,
25
34
  CreateGridOptions,
35
+ CreateRegressionBandOptions,
36
+ CreateRegressionLineOptions,
37
+ CreateScaleOptions,
26
38
  DashPattern,
27
39
  DashScaleOptions,
28
40
  DashStyle,
41
+ DatasetDensityTransform,
42
+ DatasetFilterTransform,
43
+ DatasetIntervalOutputFields,
44
+ DatasetIntervalTransform,
45
+ DatasetRegressionTransform,
46
+ DatasetScalar,
47
+ DatasetTransform,
29
48
  EditGraphicsOptions,
49
+ EditCompositionLayoutOptions,
50
+ EditFacetHeadersOptions,
51
+ EditAxisOptions,
52
+ EditGridDirectionsOptions,
30
53
  EditGridOptions,
54
+ EditErrorBandBoundaryOptions,
55
+ EditErrorBandOptions,
56
+ EditErrorBarOptions,
57
+ EditBoxPlotOptions,
58
+ EditLegendBorderOptions,
59
+ EditLegendLabelsOptions,
60
+ EditLegendLayoutOptions,
61
+ EditLegendSymbolsOptions,
62
+ EditLegendTitleOptions,
31
63
  EditScaleOptions,
32
64
  EditSemanticOptions,
33
65
  FieldType,
66
+ FacetCompositionSpec,
67
+ FacetGuideOptions,
68
+ FacetOptions,
69
+ FacetScaleResolution,
70
+ FacetScaleResolutions,
34
71
  GraphicObject,
35
72
  GraphicSpec,
36
73
  GraphicType,
@@ -57,23 +94,41 @@ export type {
57
94
  RegressionInterval,
58
95
  RegressionMethod,
59
96
  RegressionOptions,
97
+ RectMarkOptions,
98
+ ReplaceCompositionChildOptions,
99
+ EditRegressionOptions,
100
+ EditRectMarkOptions,
101
+ RemoveAxisOptions,
102
+ RemoveGridOptions,
103
+ RemoveLegendOptions,
104
+ RemoveMarkOptions,
60
105
  ScaleRange,
61
106
  ScaleOptions,
62
107
  ScaleType,
63
108
  StackMode,
109
+ SemanticCoordinate,
110
+ SemanticDataset,
111
+ SemanticLayer,
112
+ SemanticScale,
64
113
  SemanticSpec,
65
114
  SelectMarksOptions,
66
115
  StrokeDashEncodingOptions,
67
116
  TraceNode,
68
117
  TitleOptions,
69
118
  EditTitleOptions,
119
+ EditTextMarkOptions,
70
120
  TitleTextStyleOptions,
121
+ TextEncodingOptions,
122
+ TextFormat,
123
+ TextMarkOptions,
71
124
  XAxisPosition,
72
125
  YAxisPosition,
73
126
  XOffsetEncodingOptions
74
127
  } from "./program.js";
75
128
 
76
129
  export function chart(): ChartProgram;
130
+ export function hconcat(options: CompositionOptions): ChartProgram;
131
+ export function vconcat(options: CompositionOptions): ChartProgram;
77
132
  export function render(
78
133
  program: Pick<ChartProgram, "graphicSpec">,
79
134
  context: CanvasRenderingContext2D,