@opendata-ai/openchart-core 8.0.0-rc.11 → 8.0.0-rc.13
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/dist/index.d.ts +181 -4
- package/dist/index.js +31 -12
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/package.json +1 -1
- package/schema/chart.schema.json +12 -0
- package/schema/table.schema.json +4 -0
- package/schema/vizspec.schema.json +389 -1
|
@@ -5898,6 +5898,10 @@
|
|
|
5898
5898
|
"color": {
|
|
5899
5899
|
"type": "string",
|
|
5900
5900
|
"description": "Text color (CSS color string)."
|
|
5901
|
+
},
|
|
5902
|
+
"maxLines": {
|
|
5903
|
+
"type": "number",
|
|
5904
|
+
"description": "Maximum number of lines this chrome text may wrap to. Additional lines are dropped and the last kept line is truncated with an ellipsis. Bounds the chrome's contribution to layout height at any container width. Applies whether the font size comes from the theme default or an explicit override. Caps height only, not horizontal overflow of a single unbreakable word."
|
|
5901
5905
|
}
|
|
5902
5906
|
},
|
|
5903
5907
|
"additionalProperties": false,
|
|
@@ -9331,6 +9335,14 @@
|
|
|
9331
9335
|
"$ref": "#/definitions/Chrome",
|
|
9332
9336
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
9333
9337
|
},
|
|
9338
|
+
"chromeLayout": {
|
|
9339
|
+
"type": "string",
|
|
9340
|
+
"enum": [
|
|
9341
|
+
"subtract",
|
|
9342
|
+
"grow"
|
|
9343
|
+
],
|
|
9344
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
9345
|
+
},
|
|
9334
9346
|
"title": {
|
|
9335
9347
|
"anyOf": [
|
|
9336
9348
|
{
|
|
@@ -9780,6 +9792,14 @@
|
|
|
9780
9792
|
"$ref": "#/definitions/Chrome",
|
|
9781
9793
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
9782
9794
|
},
|
|
9795
|
+
"chromeLayout": {
|
|
9796
|
+
"type": "string",
|
|
9797
|
+
"enum": [
|
|
9798
|
+
"subtract",
|
|
9799
|
+
"grow"
|
|
9800
|
+
],
|
|
9801
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
9802
|
+
},
|
|
9783
9803
|
"title": {
|
|
9784
9804
|
"anyOf": [
|
|
9785
9805
|
{
|
|
@@ -10229,6 +10249,14 @@
|
|
|
10229
10249
|
"$ref": "#/definitions/Chrome",
|
|
10230
10250
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
10231
10251
|
},
|
|
10252
|
+
"chromeLayout": {
|
|
10253
|
+
"type": "string",
|
|
10254
|
+
"enum": [
|
|
10255
|
+
"subtract",
|
|
10256
|
+
"grow"
|
|
10257
|
+
],
|
|
10258
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
10259
|
+
},
|
|
10232
10260
|
"title": {
|
|
10233
10261
|
"anyOf": [
|
|
10234
10262
|
{
|
|
@@ -10678,6 +10706,14 @@
|
|
|
10678
10706
|
"$ref": "#/definitions/Chrome",
|
|
10679
10707
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
10680
10708
|
},
|
|
10709
|
+
"chromeLayout": {
|
|
10710
|
+
"type": "string",
|
|
10711
|
+
"enum": [
|
|
10712
|
+
"subtract",
|
|
10713
|
+
"grow"
|
|
10714
|
+
],
|
|
10715
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
10716
|
+
},
|
|
10681
10717
|
"title": {
|
|
10682
10718
|
"anyOf": [
|
|
10683
10719
|
{
|
|
@@ -11127,6 +11163,14 @@
|
|
|
11127
11163
|
"$ref": "#/definitions/Chrome",
|
|
11128
11164
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
11129
11165
|
},
|
|
11166
|
+
"chromeLayout": {
|
|
11167
|
+
"type": "string",
|
|
11168
|
+
"enum": [
|
|
11169
|
+
"subtract",
|
|
11170
|
+
"grow"
|
|
11171
|
+
],
|
|
11172
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
11173
|
+
},
|
|
11130
11174
|
"title": {
|
|
11131
11175
|
"anyOf": [
|
|
11132
11176
|
{
|
|
@@ -11576,6 +11620,14 @@
|
|
|
11576
11620
|
"$ref": "#/definitions/Chrome",
|
|
11577
11621
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
11578
11622
|
},
|
|
11623
|
+
"chromeLayout": {
|
|
11624
|
+
"type": "string",
|
|
11625
|
+
"enum": [
|
|
11626
|
+
"subtract",
|
|
11627
|
+
"grow"
|
|
11628
|
+
],
|
|
11629
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
11630
|
+
},
|
|
11579
11631
|
"title": {
|
|
11580
11632
|
"anyOf": [
|
|
11581
11633
|
{
|
|
@@ -12025,6 +12077,14 @@
|
|
|
12025
12077
|
"$ref": "#/definitions/Chrome",
|
|
12026
12078
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
12027
12079
|
},
|
|
12080
|
+
"chromeLayout": {
|
|
12081
|
+
"type": "string",
|
|
12082
|
+
"enum": [
|
|
12083
|
+
"subtract",
|
|
12084
|
+
"grow"
|
|
12085
|
+
],
|
|
12086
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
12087
|
+
},
|
|
12028
12088
|
"title": {
|
|
12029
12089
|
"anyOf": [
|
|
12030
12090
|
{
|
|
@@ -12474,6 +12534,14 @@
|
|
|
12474
12534
|
"$ref": "#/definitions/Chrome",
|
|
12475
12535
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
12476
12536
|
},
|
|
12537
|
+
"chromeLayout": {
|
|
12538
|
+
"type": "string",
|
|
12539
|
+
"enum": [
|
|
12540
|
+
"subtract",
|
|
12541
|
+
"grow"
|
|
12542
|
+
],
|
|
12543
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
12544
|
+
},
|
|
12477
12545
|
"title": {
|
|
12478
12546
|
"anyOf": [
|
|
12479
12547
|
{
|
|
@@ -12923,6 +12991,14 @@
|
|
|
12923
12991
|
"$ref": "#/definitions/Chrome",
|
|
12924
12992
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
12925
12993
|
},
|
|
12994
|
+
"chromeLayout": {
|
|
12995
|
+
"type": "string",
|
|
12996
|
+
"enum": [
|
|
12997
|
+
"subtract",
|
|
12998
|
+
"grow"
|
|
12999
|
+
],
|
|
13000
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
13001
|
+
},
|
|
12926
13002
|
"title": {
|
|
12927
13003
|
"anyOf": [
|
|
12928
13004
|
{
|
|
@@ -13372,6 +13448,14 @@
|
|
|
13372
13448
|
"$ref": "#/definitions/Chrome",
|
|
13373
13449
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
13374
13450
|
},
|
|
13451
|
+
"chromeLayout": {
|
|
13452
|
+
"type": "string",
|
|
13453
|
+
"enum": [
|
|
13454
|
+
"subtract",
|
|
13455
|
+
"grow"
|
|
13456
|
+
],
|
|
13457
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
13458
|
+
},
|
|
13375
13459
|
"title": {
|
|
13376
13460
|
"anyOf": [
|
|
13377
13461
|
{
|
|
@@ -13821,6 +13905,14 @@
|
|
|
13821
13905
|
"$ref": "#/definitions/Chrome",
|
|
13822
13906
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
13823
13907
|
},
|
|
13908
|
+
"chromeLayout": {
|
|
13909
|
+
"type": "string",
|
|
13910
|
+
"enum": [
|
|
13911
|
+
"subtract",
|
|
13912
|
+
"grow"
|
|
13913
|
+
],
|
|
13914
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
13915
|
+
},
|
|
13824
13916
|
"title": {
|
|
13825
13917
|
"anyOf": [
|
|
13826
13918
|
{
|
|
@@ -14270,6 +14362,14 @@
|
|
|
14270
14362
|
"$ref": "#/definitions/Chrome",
|
|
14271
14363
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
14272
14364
|
},
|
|
14365
|
+
"chromeLayout": {
|
|
14366
|
+
"type": "string",
|
|
14367
|
+
"enum": [
|
|
14368
|
+
"subtract",
|
|
14369
|
+
"grow"
|
|
14370
|
+
],
|
|
14371
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
14372
|
+
},
|
|
14273
14373
|
"title": {
|
|
14274
14374
|
"anyOf": [
|
|
14275
14375
|
{
|
|
@@ -14719,6 +14819,14 @@
|
|
|
14719
14819
|
"$ref": "#/definitions/Chrome",
|
|
14720
14820
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
14721
14821
|
},
|
|
14822
|
+
"chromeLayout": {
|
|
14823
|
+
"type": "string",
|
|
14824
|
+
"enum": [
|
|
14825
|
+
"subtract",
|
|
14826
|
+
"grow"
|
|
14827
|
+
],
|
|
14828
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
14829
|
+
},
|
|
14722
14830
|
"title": {
|
|
14723
14831
|
"anyOf": [
|
|
14724
14832
|
{
|
|
@@ -15168,6 +15276,14 @@
|
|
|
15168
15276
|
"$ref": "#/definitions/Chrome",
|
|
15169
15277
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
15170
15278
|
},
|
|
15279
|
+
"chromeLayout": {
|
|
15280
|
+
"type": "string",
|
|
15281
|
+
"enum": [
|
|
15282
|
+
"subtract",
|
|
15283
|
+
"grow"
|
|
15284
|
+
],
|
|
15285
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
15286
|
+
},
|
|
15171
15287
|
"title": {
|
|
15172
15288
|
"anyOf": [
|
|
15173
15289
|
{
|
|
@@ -15617,6 +15733,14 @@
|
|
|
15617
15733
|
"$ref": "#/definitions/Chrome",
|
|
15618
15734
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
15619
15735
|
},
|
|
15736
|
+
"chromeLayout": {
|
|
15737
|
+
"type": "string",
|
|
15738
|
+
"enum": [
|
|
15739
|
+
"subtract",
|
|
15740
|
+
"grow"
|
|
15741
|
+
],
|
|
15742
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
15743
|
+
},
|
|
15620
15744
|
"title": {
|
|
15621
15745
|
"anyOf": [
|
|
15622
15746
|
{
|
|
@@ -16066,6 +16190,14 @@
|
|
|
16066
16190
|
"$ref": "#/definitions/Chrome",
|
|
16067
16191
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
16068
16192
|
},
|
|
16193
|
+
"chromeLayout": {
|
|
16194
|
+
"type": "string",
|
|
16195
|
+
"enum": [
|
|
16196
|
+
"subtract",
|
|
16197
|
+
"grow"
|
|
16198
|
+
],
|
|
16199
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
16200
|
+
},
|
|
16069
16201
|
"title": {
|
|
16070
16202
|
"anyOf": [
|
|
16071
16203
|
{
|
|
@@ -16699,6 +16831,34 @@
|
|
|
16699
16831
|
"$ref": "#/definitions/DarkMode",
|
|
16700
16832
|
"description": "Dark mode behavior."
|
|
16701
16833
|
},
|
|
16834
|
+
"animation": {
|
|
16835
|
+
"$ref": "#/definitions/GraphAnimationSpec",
|
|
16836
|
+
"description": "Motion configuration. DEFAULT-ON: omit for full defaults, `false` to opt out of choreography (layout warmup still applies)."
|
|
16837
|
+
},
|
|
16838
|
+
"interaction": {
|
|
16839
|
+
"$ref": "#/definitions/GraphInteractionConfig",
|
|
16840
|
+
"description": "Interaction behavior (hover mode, select-fly, opt-in physics)."
|
|
16841
|
+
},
|
|
16842
|
+
"legend": {
|
|
16843
|
+
"anyOf": [
|
|
16844
|
+
{
|
|
16845
|
+
"type": "boolean"
|
|
16846
|
+
},
|
|
16847
|
+
{
|
|
16848
|
+
"type": "object",
|
|
16849
|
+
"properties": {
|
|
16850
|
+
"interactive": {
|
|
16851
|
+
"type": "boolean"
|
|
16852
|
+
},
|
|
16853
|
+
"counts": {
|
|
16854
|
+
"type": "boolean"
|
|
16855
|
+
}
|
|
16856
|
+
},
|
|
16857
|
+
"additionalProperties": false
|
|
16858
|
+
}
|
|
16859
|
+
],
|
|
16860
|
+
"description": "Built-in legend. Interactive by default. Set `false` if you render your own legend, so the built-in filter UI doesn't compete with it."
|
|
16861
|
+
},
|
|
16702
16862
|
"watermark": {
|
|
16703
16863
|
"type": "boolean",
|
|
16704
16864
|
"description": "Whether to show the tryOpenData.ai watermark. Defaults to true."
|
|
@@ -16757,7 +16917,11 @@
|
|
|
16757
16917
|
},
|
|
16758
16918
|
"nodeSize": {
|
|
16759
16919
|
"$ref": "#/definitions/GraphEncodingChannel",
|
|
16760
|
-
"description": "Size mapping for nodes."
|
|
16920
|
+
"description": "Size mapping for nodes. `scale.type` defaults to `'sqrt'` (area-perceptual, today's behavior); set `scale.type: 'linear'` for a linear radius ramp. `scale.range` sets the pixel radius extent (default `[3, 12]`)."
|
|
16921
|
+
},
|
|
16922
|
+
"nodeOpacity": {
|
|
16923
|
+
"$ref": "#/definitions/GraphEncodingChannel",
|
|
16924
|
+
"description": "Opacity mapping for nodes (VL opacity channel). Quantitative fields map linearly to `[0.25, 1]`; `scale.range` overrides.\n\nNOTE: there is deliberately no `edgeOpacity` channel — edge alpha is owned by the interaction alpha-tier machinery (hover dimming, search)."
|
|
16761
16925
|
},
|
|
16762
16926
|
"edgeColor": {
|
|
16763
16927
|
"$ref": "#/definitions/GraphEncodingChannel",
|
|
@@ -16793,6 +16957,42 @@
|
|
|
16793
16957
|
"scale": {
|
|
16794
16958
|
"$ref": "#/definitions/ScaleConfig",
|
|
16795
16959
|
"description": "Scale configuration. Auto-derived from data if omitted."
|
|
16960
|
+
},
|
|
16961
|
+
"sort": {
|
|
16962
|
+
"anyOf": [
|
|
16963
|
+
{
|
|
16964
|
+
"type": "string",
|
|
16965
|
+
"const": "ascending"
|
|
16966
|
+
},
|
|
16967
|
+
{
|
|
16968
|
+
"type": "string",
|
|
16969
|
+
"const": "descending"
|
|
16970
|
+
},
|
|
16971
|
+
{
|
|
16972
|
+
"type": "null"
|
|
16973
|
+
},
|
|
16974
|
+
{
|
|
16975
|
+
"type": "array",
|
|
16976
|
+
"items": {
|
|
16977
|
+
"type": "string"
|
|
16978
|
+
}
|
|
16979
|
+
}
|
|
16980
|
+
],
|
|
16981
|
+
"description": "Category ordering for the color domain and legend. Graph channels default `'ascending'` (VL-aligned, deterministic); `string[]` pins an explicit order; `null` keeps data order.\n\nNOTE: chart encoding channels keep data-order — this graph default is a deliberate divergence this release (see docs/migrating-v8.md)."
|
|
16982
|
+
},
|
|
16983
|
+
"highlight": {
|
|
16984
|
+
"anyOf": [
|
|
16985
|
+
{
|
|
16986
|
+
"type": "string"
|
|
16987
|
+
},
|
|
16988
|
+
{
|
|
16989
|
+
"type": "array",
|
|
16990
|
+
"items": {
|
|
16991
|
+
"type": "string"
|
|
16992
|
+
}
|
|
16993
|
+
}
|
|
16994
|
+
],
|
|
16995
|
+
"description": "Category values to emphasize on load; the rest dim. Mirrors the chart `encoding.color.highlight` value list. Distinct from the `highlight()` runtime verb and `interaction.hover.mode`."
|
|
16796
16996
|
}
|
|
16797
16997
|
},
|
|
16798
16998
|
"required": [
|
|
@@ -16846,6 +17046,35 @@
|
|
|
16846
17046
|
"centerForce": {
|
|
16847
17047
|
"type": "boolean",
|
|
16848
17048
|
"description": "Whether to apply center force (default true)."
|
|
17049
|
+
},
|
|
17050
|
+
"seed": {
|
|
17051
|
+
"type": "number",
|
|
17052
|
+
"description": "Deterministic layout seed. Same spec + seed ⇒ identical settled layout within a given execution path (worker vs sync parity is not guaranteed)."
|
|
17053
|
+
},
|
|
17054
|
+
"energy": {
|
|
17055
|
+
"type": "string",
|
|
17056
|
+
"enum": [
|
|
17057
|
+
"gentle",
|
|
17058
|
+
"balanced",
|
|
17059
|
+
"energetic"
|
|
17060
|
+
],
|
|
17061
|
+
"description": "Repulsion preset (plain-language, no d3 jargon): `gentle`/`balanced`/`energetic` → chargeStrength −150/−300/−600 and velocityDecay 0.5/0.4/0.3. A raw `chargeStrength` wins over the preset."
|
|
17062
|
+
},
|
|
17063
|
+
"settle": {
|
|
17064
|
+
"type": "string",
|
|
17065
|
+
"enum": [
|
|
17066
|
+
"quick",
|
|
17067
|
+
"balanced",
|
|
17068
|
+
"thorough"
|
|
17069
|
+
],
|
|
17070
|
+
"description": "Settle-speed preset: `quick`/`balanced`/`thorough` → alphaDecay 0.05/0.0228/0.01. Higher = faster cool-down, less final refinement."
|
|
17071
|
+
},
|
|
17072
|
+
"warmup": {
|
|
17073
|
+
"type": [
|
|
17074
|
+
"boolean",
|
|
17075
|
+
"number"
|
|
17076
|
+
],
|
|
17077
|
+
"description": "Headless settle ticks run before the first paint. `true` → 100 ticks under a 250ms budget; a number sets an explicit tick count; `false` disables.\n\nLives in `layout`, NOT `animation`, on purpose: warmup *reduces* motion, so it must survive `animation: false` (opt-out consumers get less settling chaos, not more)."
|
|
16849
17078
|
}
|
|
16850
17079
|
},
|
|
16851
17080
|
"required": [
|
|
@@ -16881,6 +17110,157 @@
|
|
|
16881
17110
|
"additionalProperties": false,
|
|
16882
17111
|
"description": "Per-node visual overrides, keyed by node id."
|
|
16883
17112
|
},
|
|
17113
|
+
"GraphAnimationSpec": {
|
|
17114
|
+
"anyOf": [
|
|
17115
|
+
{
|
|
17116
|
+
"type": "boolean"
|
|
17117
|
+
},
|
|
17118
|
+
{
|
|
17119
|
+
"$ref": "#/definitions/GraphAnimationConfig"
|
|
17120
|
+
}
|
|
17121
|
+
],
|
|
17122
|
+
"description": "Graph motion spec.\n- omitted → full defaults (default-ON)\n- `false` → no choreography (warmup still applies)\n- object → per-phase control\n\n`prefers-reduced-motion` is always respected regardless of this value."
|
|
17123
|
+
},
|
|
17124
|
+
"GraphAnimationConfig": {
|
|
17125
|
+
"type": "object",
|
|
17126
|
+
"properties": {
|
|
17127
|
+
"enter": {
|
|
17128
|
+
"anyOf": [
|
|
17129
|
+
{
|
|
17130
|
+
"$ref": "#/definitions/AnimationPhaseConfig"
|
|
17131
|
+
},
|
|
17132
|
+
{
|
|
17133
|
+
"type": "boolean"
|
|
17134
|
+
}
|
|
17135
|
+
],
|
|
17136
|
+
"description": "Node/edge reveal on first render. Default `{ duration: 600, ease: 'smooth', stagger: true }`."
|
|
17137
|
+
},
|
|
17138
|
+
"update": {
|
|
17139
|
+
"anyOf": [
|
|
17140
|
+
{
|
|
17141
|
+
"$ref": "#/definitions/AnimationPhaseConfig"
|
|
17142
|
+
},
|
|
17143
|
+
{
|
|
17144
|
+
"type": "boolean"
|
|
17145
|
+
}
|
|
17146
|
+
],
|
|
17147
|
+
"description": "Data-update enter-fade for newly added marks. Default `{ duration: 300, ease: 'smooth' }`."
|
|
17148
|
+
},
|
|
17149
|
+
"exit": {
|
|
17150
|
+
"anyOf": [
|
|
17151
|
+
{
|
|
17152
|
+
"$ref": "#/definitions/AnimationPhaseConfig"
|
|
17153
|
+
},
|
|
17154
|
+
{
|
|
17155
|
+
"type": "boolean"
|
|
17156
|
+
}
|
|
17157
|
+
],
|
|
17158
|
+
"description": "Ghost fade-out for removed marks. Default `{ duration: 300, ease: 'smooth' }`."
|
|
17159
|
+
},
|
|
17160
|
+
"camera": {
|
|
17161
|
+
"anyOf": [
|
|
17162
|
+
{
|
|
17163
|
+
"type": "object",
|
|
17164
|
+
"properties": {
|
|
17165
|
+
"duration": {
|
|
17166
|
+
"type": "number"
|
|
17167
|
+
},
|
|
17168
|
+
"ease": {
|
|
17169
|
+
"$ref": "#/definitions/AnimationEase"
|
|
17170
|
+
}
|
|
17171
|
+
},
|
|
17172
|
+
"additionalProperties": false
|
|
17173
|
+
},
|
|
17174
|
+
{
|
|
17175
|
+
"type": "boolean"
|
|
17176
|
+
}
|
|
17177
|
+
],
|
|
17178
|
+
"description": "Camera flight easing. Default duration `'auto'` (derived from the zoom distance)."
|
|
17179
|
+
},
|
|
17180
|
+
"hover": {
|
|
17181
|
+
"anyOf": [
|
|
17182
|
+
{
|
|
17183
|
+
"type": "object",
|
|
17184
|
+
"properties": {
|
|
17185
|
+
"duration": {
|
|
17186
|
+
"type": "number"
|
|
17187
|
+
},
|
|
17188
|
+
"ease": {
|
|
17189
|
+
"$ref": "#/definitions/AnimationEase"
|
|
17190
|
+
}
|
|
17191
|
+
},
|
|
17192
|
+
"additionalProperties": false
|
|
17193
|
+
},
|
|
17194
|
+
{
|
|
17195
|
+
"type": "boolean"
|
|
17196
|
+
}
|
|
17197
|
+
],
|
|
17198
|
+
"description": "Hover emphasis crossfade. Default `{ duration: 150, ease: 'smooth' }`."
|
|
17199
|
+
}
|
|
17200
|
+
},
|
|
17201
|
+
"additionalProperties": false,
|
|
17202
|
+
"description": "Per-phase and per-behavior motion config for a graph.\n\nDEFAULT-ON semantics (deliberately different from charts, which are opt-in): omit `animation` → the resolver returns full defaults; `animation: false` → no choreography (but `layout.warmup` still applies); a per-phase `false` disables just that phase. Graphs are default-on because physics motion already exists on load and choreography reduces the chaos."
|
|
17203
|
+
},
|
|
17204
|
+
"GraphInteractionConfig": {
|
|
17205
|
+
"type": "object",
|
|
17206
|
+
"properties": {
|
|
17207
|
+
"hover": {
|
|
17208
|
+
"type": "object",
|
|
17209
|
+
"properties": {
|
|
17210
|
+
"mode": {
|
|
17211
|
+
"type": "string",
|
|
17212
|
+
"enum": [
|
|
17213
|
+
"neighbors",
|
|
17214
|
+
"category",
|
|
17215
|
+
"node",
|
|
17216
|
+
"none"
|
|
17217
|
+
]
|
|
17218
|
+
},
|
|
17219
|
+
"dimOpacity": {
|
|
17220
|
+
"type": "number"
|
|
17221
|
+
}
|
|
17222
|
+
},
|
|
17223
|
+
"additionalProperties": false,
|
|
17224
|
+
"description": "Hover emphasis behavior. `neighbors` (default) lights the hovered node and its adjacency; `category` lights same-category nodes; `node` lights only the hovered node; `none` disables. `dimOpacity` (default 0.15) is the node dim tier. Named `mode` (not `highlight`) to avoid colliding with the three other meanings of \"highlight\" (the encoding value list, the `highlight()` verb)."
|
|
17225
|
+
},
|
|
17226
|
+
"select": {
|
|
17227
|
+
"type": "object",
|
|
17228
|
+
"properties": {
|
|
17229
|
+
"flyTo": {
|
|
17230
|
+
"type": "boolean"
|
|
17231
|
+
}
|
|
17232
|
+
},
|
|
17233
|
+
"additionalProperties": false,
|
|
17234
|
+
"description": "Selecting a node flies the camera to it. Default `false`."
|
|
17235
|
+
},
|
|
17236
|
+
"cursorRepulsion": {
|
|
17237
|
+
"anyOf": [
|
|
17238
|
+
{
|
|
17239
|
+
"type": "boolean"
|
|
17240
|
+
},
|
|
17241
|
+
{
|
|
17242
|
+
"type": "object",
|
|
17243
|
+
"properties": {
|
|
17244
|
+
"radius": {
|
|
17245
|
+
"type": "number"
|
|
17246
|
+
},
|
|
17247
|
+
"strength": {
|
|
17248
|
+
"type": "number"
|
|
17249
|
+
}
|
|
17250
|
+
},
|
|
17251
|
+
"additionalProperties": false
|
|
17252
|
+
}
|
|
17253
|
+
],
|
|
17254
|
+
"description": "Opt-in cursor repulsion (nodes drift away from the pointer). Disabled under `prefers-reduced-motion` and above the node-count gate."
|
|
17255
|
+
},
|
|
17256
|
+
"springyDrag": {
|
|
17257
|
+
"type": "boolean",
|
|
17258
|
+
"description": "Opt-in springy node drag (user-initiated; no reduced-motion gate)."
|
|
17259
|
+
}
|
|
17260
|
+
},
|
|
17261
|
+
"additionalProperties": false,
|
|
17262
|
+
"description": "Interaction behavior for a graph (hover mode, select-fly, opt-in physics)."
|
|
17263
|
+
},
|
|
16884
17264
|
"SankeySpec": {
|
|
16885
17265
|
"type": "object",
|
|
16886
17266
|
"properties": {
|
|
@@ -17748,6 +18128,14 @@
|
|
|
17748
18128
|
"$ref": "#/definitions/Chrome",
|
|
17749
18129
|
"description": "Editorial chrome (title, subtitle, source, etc.)."
|
|
17750
18130
|
},
|
|
18131
|
+
"chromeLayout": {
|
|
18132
|
+
"type": "string",
|
|
18133
|
+
"enum": [
|
|
18134
|
+
"subtract",
|
|
18135
|
+
"grow"
|
|
18136
|
+
],
|
|
18137
|
+
"description": "How chrome height interacts with the container height budget.\n\n- `'subtract'` (default): the container height is fixed and chrome text (title/subtitle/source) is subtracted from it, shrinking the plot. This is the historical behavior.\n- `'grow'`: the container height is treated as the *plot* budget, and the rendered SVG grows taller by the measured chrome height. The plot keeps its full budget (minus axis/padding overhead) regardless of how many lines the title wraps to.\n\n`'grow'` is a no-op for faceted specs in this version."
|
|
18138
|
+
},
|
|
17751
18139
|
"title": {
|
|
17752
18140
|
"anyOf": [
|
|
17753
18141
|
{
|