@genome-spy/app 0.84.0 → 0.86.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.
Files changed (62) hide show
  1. package/README.md +28 -0
  2. package/dist/{agentApi-DHXYZVvQ.js → agentApi-DgopQbMV.js} +5804 -7009
  3. package/dist/agentApi.es.js +2823 -2594
  4. package/dist/agentShared.es.js +15 -14
  5. package/dist/canvas2d-8uxuN_vx.js +619 -0
  6. package/dist/canvas2d-BtQC7Xr8.js +619 -0
  7. package/dist/canvasSizeHelper-7h_8rOcx.js +56 -0
  8. package/dist/clipOptions-BQfNhxgP.js +2239 -0
  9. package/dist/clipOptions-taFzEljc.js +2259 -0
  10. package/dist/{debug-aHQsa6hU.js → debug-Bzc3SoRg.js} +8 -8
  11. package/dist/{debug-D6FqxKEj.js → debug-D_VtWQ6l.js} +8 -8
  12. package/dist/{esm-CGLz7idZ.js → esm-BA6yMcc-.js} +438 -434
  13. package/dist/{esm-D8vvQAP3.js → esm-CcDLRSvC.js} +33 -33
  14. package/dist/{esm-BeV56E_5.js → esm-CfYZhLHN.js} +33 -33
  15. package/dist/{esm-DQ3lJSQN.js → esm-JAiZmFIS.js} +1 -1
  16. package/dist/index.es.js +3067 -2987
  17. package/dist/index.js +2030 -2022
  18. package/dist/indexer-qiFctgR3.js +72 -0
  19. package/dist/indexer-qy_dq5l5.js +72 -0
  20. package/dist/layoutResult-D50MSHXR.js +97 -0
  21. package/dist/nativeText-DFV5XIx8.js +860 -0
  22. package/dist/nativeText-vT3AWE14.js +860 -0
  23. package/dist/performanceProfiler-CPLEjApa.js +20 -0
  24. package/dist/rasterExport-B8pVoOsj.js +44 -0
  25. package/dist/rasterExport-C4r4xjQT.js +44 -0
  26. package/dist/rasterImage-B4rPLaW9.js +18 -0
  27. package/dist/rasterization-CFogVB3B.js +50 -0
  28. package/dist/rectangle-DKnrAmKs.js +142 -0
  29. package/dist/renderCanvas2D-BQrRWp2Z.js +271 -0
  30. package/dist/renderCanvas2D-CHVNfIUz.js +271 -0
  31. package/dist/schema.json +1559 -219
  32. package/dist/style.css +1 -1
  33. package/dist/svg-C-Sw6E6G.js +1167 -0
  34. package/dist/svg-CKHwwKRt.js +1167 -0
  35. package/dist/{svgNumber-C6aRPc8Z.js → svgNumber-DNxESJQB.js} +1 -1
  36. package/dist/svgRasterizer-BgD72AmG.js +40 -0
  37. package/dist/svgRasterizer-BgSNqI3L.js +40 -0
  38. package/dist/vega-scale-CK0_al6O.js +2700 -0
  39. package/dist/vega-scale-D46-iCaL.js +2700 -0
  40. package/dist/viewError-BiR9VCgL.js +29 -0
  41. package/dist/{viewIdentityRegistry-Dl7rR4Ay.js → viewIdentityRegistry-B-VGlez1.js} +1 -1
  42. package/dist/{viewIdentityRegistry-AEQpJTDm.js → viewIdentityRegistry-CDtVktJD.js} +1 -1
  43. package/dist/viewSelectors-CKfxF_LM.js +1817 -0
  44. package/dist/viewSelectors-D_imtq5Z.js +1817 -0
  45. package/dist/viewUtils-nCJ7AoaI.js +5782 -0
  46. package/dist/warning-CpIIpk8e.js +7 -0
  47. package/dist/webgl-BaA3jSa2.js +4128 -0
  48. package/dist/webgl-FP-4EsBL.js +4128 -0
  49. package/package.json +7 -6
  50. package/dist/bmFontMetrics-CuNB-kNN.js +0 -31
  51. package/dist/clipOptions-Dqco1p8b.js +0 -377
  52. package/dist/framebufferReadback-Bje9lHb7.js +0 -1993
  53. package/dist/framebufferReadback-CC0D6Haw.js +0 -147
  54. package/dist/raster-9uKYMjHZ.js +0 -53
  55. package/dist/raster-BofBWXbe.js +0 -54
  56. package/dist/svg-CvsT1Y2V.js +0 -1793
  57. package/dist/svg-DRgWfcsL.js +0 -1793
  58. package/dist/twgl-full.module-BNEMlXRV.js +0 -1849
  59. package/dist/viewRenderingContext-HtpqwS_x.js +0 -120
  60. package/dist/viewSelectors-BhW4mTR1.js +0 -6386
  61. package/dist/viewSelectors-Bwzj10Qz.js +0 -6363
  62. package/dist/viewUtils-DMNiWslc.js +0 -7228
package/dist/schema.json CHANGED
@@ -39,7 +39,7 @@
39
39
  "type": "array"
40
40
  },
41
41
  "groupby": {
42
- "description": "The fields by which to group the data. If these are not defined, all data objects will be grouped into a single category.",
42
+ "description": "The fields by which to group the data. If these are not defined, all rows will be grouped into a single category.",
43
43
  "items": {
44
44
  "$ref": "#/definitions/Field"
45
45
  },
@@ -83,7 +83,7 @@
83
83
  },
84
84
  "AlignmentMismatchesParams": {
85
85
  "additionalProperties": false,
86
- "description": "Emits one row per mismatching aligned base in a read alignment.\n\nThe transform uses the read sequence, CIGAR string, and MD tag. The MD tag is required because ordinary `M` CIGAR operations do not distinguish matches from mismatches. The output rows preserve the input datum fields, or only the fields listed in `copyFields` when it is defined, and add fixed mismatch fields: `mismatchStart`, `mismatchEnd`, `readOffset`, `base`, `refBase`, and optionally `baseQuality`. Reference coordinates are 0-based, half-open.",
86
+ "description": "Emits one row per mismatching aligned base in a read alignment.\n\nThe transform uses the read sequence, CIGAR string, and MD tag. The MD tag is required because ordinary `M` CIGAR operations do not distinguish matches from mismatches. The output rows preserve the input row fields, or only the fields listed in `copyFields` when it is defined, and add fixed mismatch fields: `mismatchStart`, `mismatchEnd`, `readOffset`, `base`, `refBase`, and optionally `baseQuality`. Reference coordinates are 0-based, half-open.",
87
87
  "properties": {
88
88
  "cigar": {
89
89
  "$ref": "#/definitions/Field",
@@ -276,7 +276,7 @@
276
276
  "type": "number"
277
277
  },
278
278
  "extraValues": {
279
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
279
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
280
280
  "items": {
281
281
  "type": "number"
282
282
  },
@@ -340,6 +340,17 @@
340
340
  "description": "The color of the tick label, can be in hex color code or regular color name.",
341
341
  "type": "string"
342
342
  },
343
+ "labelFlush": {
344
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
345
+ "type": [
346
+ "boolean",
347
+ "number"
348
+ ]
349
+ },
350
+ "labelFlushOffset": {
351
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
352
+ "type": "number"
353
+ },
343
354
  "labelFont": {
344
355
  "description": "The font of the tick label.",
345
356
  "type": "string"
@@ -361,10 +372,31 @@
361
372
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
362
373
  "type": "number"
363
374
  },
375
+ "labelOverlap": {
376
+ "anyOf": [
377
+ {
378
+ "type": "boolean"
379
+ },
380
+ {
381
+ "const": "parity",
382
+ "type": "string"
383
+ },
384
+ {
385
+ "const": "greedy",
386
+ "type": "string"
387
+ }
388
+ ],
389
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
390
+ },
364
391
  "labelPadding": {
365
392
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
366
393
  "type": "number"
367
394
  },
395
+ "labelSeparation": {
396
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
397
+ "minimum": 0,
398
+ "type": "number"
399
+ },
368
400
  "labels": {
369
401
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
370
402
  "type": "boolean"
@@ -505,7 +537,7 @@
505
537
  "type": "number"
506
538
  },
507
539
  "values": {
508
- "description": "Explicitly set the visible axis tick and label values.",
540
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
509
541
  "items": {},
510
542
  "type": "array"
511
543
  },
@@ -658,7 +690,7 @@
658
690
  "type": "number"
659
691
  },
660
692
  "extraValues": {
661
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
693
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
662
694
  "items": {
663
695
  "type": "number"
664
696
  },
@@ -722,6 +754,17 @@
722
754
  "description": "The color of the tick label, can be in hex color code or regular color name.",
723
755
  "type": "string"
724
756
  },
757
+ "labelFlush": {
758
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
759
+ "type": [
760
+ "boolean",
761
+ "number"
762
+ ]
763
+ },
764
+ "labelFlushOffset": {
765
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
766
+ "type": "number"
767
+ },
725
768
  "labelFont": {
726
769
  "description": "The font of the tick label.",
727
770
  "type": "string"
@@ -743,10 +786,31 @@
743
786
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
744
787
  "type": "number"
745
788
  },
789
+ "labelOverlap": {
790
+ "anyOf": [
791
+ {
792
+ "type": "boolean"
793
+ },
794
+ {
795
+ "const": "parity",
796
+ "type": "string"
797
+ },
798
+ {
799
+ "const": "greedy",
800
+ "type": "string"
801
+ }
802
+ ],
803
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
804
+ },
746
805
  "labelPadding": {
747
806
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
748
807
  "type": "number"
749
808
  },
809
+ "labelSeparation": {
810
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
811
+ "minimum": 0,
812
+ "type": "number"
813
+ },
750
814
  "labels": {
751
815
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
752
816
  "type": "boolean"
@@ -887,7 +951,7 @@
887
951
  "type": "number"
888
952
  },
889
953
  "values": {
890
- "description": "Explicitly set the visible axis tick and label values.",
954
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
891
955
  "items": {},
892
956
  "type": "array"
893
957
  },
@@ -1089,7 +1153,7 @@
1089
1153
  },
1090
1154
  "scales": {
1091
1155
  "additionalProperties": false,
1092
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
1156
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
1093
1157
  "properties": {
1094
1158
  "angle": {
1095
1159
  "$ref": "#/definitions/Scale"
@@ -1250,6 +1314,10 @@
1250
1314
  }
1251
1315
  ],
1252
1316
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
1317
+ },
1318
+ "zindex": {
1319
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
1320
+ "type": "number"
1253
1321
  }
1254
1322
  },
1255
1323
  "required": [
@@ -1407,7 +1475,7 @@
1407
1475
  "type": "number"
1408
1476
  },
1409
1477
  "extraValues": {
1410
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
1478
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
1411
1479
  "items": {
1412
1480
  "type": "number"
1413
1481
  },
@@ -1471,6 +1539,17 @@
1471
1539
  "description": "The color of the tick label, can be in hex color code or regular color name.",
1472
1540
  "type": "string"
1473
1541
  },
1542
+ "labelFlush": {
1543
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
1544
+ "type": [
1545
+ "boolean",
1546
+ "number"
1547
+ ]
1548
+ },
1549
+ "labelFlushOffset": {
1550
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
1551
+ "type": "number"
1552
+ },
1474
1553
  "labelFont": {
1475
1554
  "description": "The font of the tick label.",
1476
1555
  "type": "string"
@@ -1492,10 +1571,31 @@
1492
1571
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
1493
1572
  "type": "number"
1494
1573
  },
1574
+ "labelOverlap": {
1575
+ "anyOf": [
1576
+ {
1577
+ "type": "boolean"
1578
+ },
1579
+ {
1580
+ "const": "parity",
1581
+ "type": "string"
1582
+ },
1583
+ {
1584
+ "const": "greedy",
1585
+ "type": "string"
1586
+ }
1587
+ ],
1588
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
1589
+ },
1495
1590
  "labelPadding": {
1496
1591
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
1497
1592
  "type": "number"
1498
1593
  },
1594
+ "labelSeparation": {
1595
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
1596
+ "minimum": 0,
1597
+ "type": "number"
1598
+ },
1499
1599
  "labels": {
1500
1600
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
1501
1601
  "type": "boolean"
@@ -1636,7 +1736,7 @@
1636
1736
  "type": "number"
1637
1737
  },
1638
1738
  "values": {
1639
- "description": "Explicitly set the visible axis tick and label values.",
1739
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
1640
1740
  "items": {},
1641
1741
  "type": "array"
1642
1742
  },
@@ -1789,7 +1889,7 @@
1789
1889
  "type": "number"
1790
1890
  },
1791
1891
  "extraValues": {
1792
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
1892
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
1793
1893
  "items": {
1794
1894
  "type": "number"
1795
1895
  },
@@ -1853,6 +1953,17 @@
1853
1953
  "description": "The color of the tick label, can be in hex color code or regular color name.",
1854
1954
  "type": "string"
1855
1955
  },
1956
+ "labelFlush": {
1957
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
1958
+ "type": [
1959
+ "boolean",
1960
+ "number"
1961
+ ]
1962
+ },
1963
+ "labelFlushOffset": {
1964
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
1965
+ "type": "number"
1966
+ },
1856
1967
  "labelFont": {
1857
1968
  "description": "The font of the tick label.",
1858
1969
  "type": "string"
@@ -1874,10 +1985,31 @@
1874
1985
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
1875
1986
  "type": "number"
1876
1987
  },
1988
+ "labelOverlap": {
1989
+ "anyOf": [
1990
+ {
1991
+ "type": "boolean"
1992
+ },
1993
+ {
1994
+ "const": "parity",
1995
+ "type": "string"
1996
+ },
1997
+ {
1998
+ "const": "greedy",
1999
+ "type": "string"
2000
+ }
2001
+ ],
2002
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
2003
+ },
1877
2004
  "labelPadding": {
1878
2005
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
1879
2006
  "type": "number"
1880
2007
  },
2008
+ "labelSeparation": {
2009
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
2010
+ "minimum": 0,
2011
+ "type": "number"
2012
+ },
1881
2013
  "labels": {
1882
2014
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
1883
2015
  "type": "boolean"
@@ -2018,7 +2150,7 @@
2018
2150
  "type": "number"
2019
2151
  },
2020
2152
  "values": {
2021
- "description": "Explicitly set the visible axis tick and label values.",
2153
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
2022
2154
  "items": {},
2023
2155
  "type": "array"
2024
2156
  },
@@ -2216,7 +2348,7 @@
2216
2348
  },
2217
2349
  "scales": {
2218
2350
  "additionalProperties": false,
2219
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
2351
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
2220
2352
  "properties": {
2221
2353
  "angle": {
2222
2354
  "$ref": "#/definitions/Scale"
@@ -2377,6 +2509,10 @@
2377
2509
  }
2378
2510
  ],
2379
2511
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
2512
+ },
2513
+ "zindex": {
2514
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
2515
+ "type": "number"
2380
2516
  }
2381
2517
  },
2382
2518
  "required": [
@@ -2540,7 +2676,7 @@
2540
2676
  "type": "number"
2541
2677
  },
2542
2678
  "extraValues": {
2543
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
2679
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
2544
2680
  "items": {
2545
2681
  "type": "number"
2546
2682
  },
@@ -2604,6 +2740,17 @@
2604
2740
  "description": "The color of the tick label, can be in hex color code or regular color name.",
2605
2741
  "type": "string"
2606
2742
  },
2743
+ "labelFlush": {
2744
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
2745
+ "type": [
2746
+ "boolean",
2747
+ "number"
2748
+ ]
2749
+ },
2750
+ "labelFlushOffset": {
2751
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
2752
+ "type": "number"
2753
+ },
2607
2754
  "labelFont": {
2608
2755
  "description": "The font of the tick label.",
2609
2756
  "type": "string"
@@ -2625,10 +2772,31 @@
2625
2772
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
2626
2773
  "type": "number"
2627
2774
  },
2775
+ "labelOverlap": {
2776
+ "anyOf": [
2777
+ {
2778
+ "type": "boolean"
2779
+ },
2780
+ {
2781
+ "const": "parity",
2782
+ "type": "string"
2783
+ },
2784
+ {
2785
+ "const": "greedy",
2786
+ "type": "string"
2787
+ }
2788
+ ],
2789
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
2790
+ },
2628
2791
  "labelPadding": {
2629
2792
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
2630
2793
  "type": "number"
2631
2794
  },
2795
+ "labelSeparation": {
2796
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
2797
+ "minimum": 0,
2798
+ "type": "number"
2799
+ },
2632
2800
  "labels": {
2633
2801
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
2634
2802
  "type": "boolean"
@@ -2769,7 +2937,7 @@
2769
2937
  "type": "number"
2770
2938
  },
2771
2939
  "values": {
2772
- "description": "Explicitly set the visible axis tick and label values.",
2940
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
2773
2941
  "items": {},
2774
2942
  "type": "array"
2775
2943
  },
@@ -2922,7 +3090,7 @@
2922
3090
  "type": "number"
2923
3091
  },
2924
3092
  "extraValues": {
2925
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
3093
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
2926
3094
  "items": {
2927
3095
  "type": "number"
2928
3096
  },
@@ -2986,6 +3154,17 @@
2986
3154
  "description": "The color of the tick label, can be in hex color code or regular color name.",
2987
3155
  "type": "string"
2988
3156
  },
3157
+ "labelFlush": {
3158
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
3159
+ "type": [
3160
+ "boolean",
3161
+ "number"
3162
+ ]
3163
+ },
3164
+ "labelFlushOffset": {
3165
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
3166
+ "type": "number"
3167
+ },
2989
3168
  "labelFont": {
2990
3169
  "description": "The font of the tick label.",
2991
3170
  "type": "string"
@@ -3007,10 +3186,31 @@
3007
3186
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
3008
3187
  "type": "number"
3009
3188
  },
3189
+ "labelOverlap": {
3190
+ "anyOf": [
3191
+ {
3192
+ "type": "boolean"
3193
+ },
3194
+ {
3195
+ "const": "parity",
3196
+ "type": "string"
3197
+ },
3198
+ {
3199
+ "const": "greedy",
3200
+ "type": "string"
3201
+ }
3202
+ ],
3203
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
3204
+ },
3010
3205
  "labelPadding": {
3011
3206
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
3012
3207
  "type": "number"
3013
3208
  },
3209
+ "labelSeparation": {
3210
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
3211
+ "minimum": 0,
3212
+ "type": "number"
3213
+ },
3014
3214
  "labels": {
3015
3215
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
3016
3216
  "type": "boolean"
@@ -3151,7 +3351,7 @@
3151
3351
  "type": "number"
3152
3352
  },
3153
3353
  "values": {
3154
- "description": "Explicitly set the visible axis tick and label values.",
3354
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
3155
3355
  "items": {},
3156
3356
  "type": "array"
3157
3357
  },
@@ -3359,7 +3559,7 @@
3359
3559
  },
3360
3560
  "scales": {
3361
3561
  "additionalProperties": false,
3362
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
3562
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
3363
3563
  "properties": {
3364
3564
  "angle": {
3365
3565
  "$ref": "#/definitions/Scale"
@@ -3508,6 +3708,10 @@
3508
3708
  }
3509
3709
  ],
3510
3710
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
3711
+ },
3712
+ "zindex": {
3713
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
3714
+ "type": "number"
3511
3715
  }
3512
3716
  },
3513
3717
  "required": [
@@ -3671,7 +3875,7 @@
3671
3875
  "type": "number"
3672
3876
  },
3673
3877
  "extraValues": {
3674
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
3878
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
3675
3879
  "items": {
3676
3880
  "type": "number"
3677
3881
  },
@@ -3735,6 +3939,17 @@
3735
3939
  "description": "The color of the tick label, can be in hex color code or regular color name.",
3736
3940
  "type": "string"
3737
3941
  },
3942
+ "labelFlush": {
3943
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
3944
+ "type": [
3945
+ "boolean",
3946
+ "number"
3947
+ ]
3948
+ },
3949
+ "labelFlushOffset": {
3950
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
3951
+ "type": "number"
3952
+ },
3738
3953
  "labelFont": {
3739
3954
  "description": "The font of the tick label.",
3740
3955
  "type": "string"
@@ -3756,10 +3971,31 @@
3756
3971
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
3757
3972
  "type": "number"
3758
3973
  },
3974
+ "labelOverlap": {
3975
+ "anyOf": [
3976
+ {
3977
+ "type": "boolean"
3978
+ },
3979
+ {
3980
+ "const": "parity",
3981
+ "type": "string"
3982
+ },
3983
+ {
3984
+ "const": "greedy",
3985
+ "type": "string"
3986
+ }
3987
+ ],
3988
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
3989
+ },
3759
3990
  "labelPadding": {
3760
3991
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
3761
3992
  "type": "number"
3762
3993
  },
3994
+ "labelSeparation": {
3995
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
3996
+ "minimum": 0,
3997
+ "type": "number"
3998
+ },
3763
3999
  "labels": {
3764
4000
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
3765
4001
  "type": "boolean"
@@ -3900,7 +4136,7 @@
3900
4136
  "type": "number"
3901
4137
  },
3902
4138
  "values": {
3903
- "description": "Explicitly set the visible axis tick and label values.",
4139
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
3904
4140
  "items": {},
3905
4141
  "type": "array"
3906
4142
  },
@@ -4053,7 +4289,7 @@
4053
4289
  "type": "number"
4054
4290
  },
4055
4291
  "extraValues": {
4056
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
4292
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
4057
4293
  "items": {
4058
4294
  "type": "number"
4059
4295
  },
@@ -4117,6 +4353,17 @@
4117
4353
  "description": "The color of the tick label, can be in hex color code or regular color name.",
4118
4354
  "type": "string"
4119
4355
  },
4356
+ "labelFlush": {
4357
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
4358
+ "type": [
4359
+ "boolean",
4360
+ "number"
4361
+ ]
4362
+ },
4363
+ "labelFlushOffset": {
4364
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
4365
+ "type": "number"
4366
+ },
4120
4367
  "labelFont": {
4121
4368
  "description": "The font of the tick label.",
4122
4369
  "type": "string"
@@ -4138,10 +4385,31 @@
4138
4385
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
4139
4386
  "type": "number"
4140
4387
  },
4388
+ "labelOverlap": {
4389
+ "anyOf": [
4390
+ {
4391
+ "type": "boolean"
4392
+ },
4393
+ {
4394
+ "const": "parity",
4395
+ "type": "string"
4396
+ },
4397
+ {
4398
+ "const": "greedy",
4399
+ "type": "string"
4400
+ }
4401
+ ],
4402
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
4403
+ },
4141
4404
  "labelPadding": {
4142
4405
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
4143
4406
  "type": "number"
4144
4407
  },
4408
+ "labelSeparation": {
4409
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
4410
+ "minimum": 0,
4411
+ "type": "number"
4412
+ },
4145
4413
  "labels": {
4146
4414
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
4147
4415
  "type": "boolean"
@@ -4282,7 +4550,7 @@
4282
4550
  "type": "number"
4283
4551
  },
4284
4552
  "values": {
4285
- "description": "Explicitly set the visible axis tick and label values.",
4553
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
4286
4554
  "items": {},
4287
4555
  "type": "array"
4288
4556
  },
@@ -4490,7 +4758,7 @@
4490
4758
  },
4491
4759
  "scales": {
4492
4760
  "additionalProperties": false,
4493
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
4761
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
4494
4762
  "properties": {
4495
4763
  "angle": {
4496
4764
  "$ref": "#/definitions/Scale"
@@ -4643,6 +4911,10 @@
4643
4911
  }
4644
4912
  ],
4645
4913
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
4914
+ },
4915
+ "zindex": {
4916
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
4917
+ "type": "number"
4646
4918
  }
4647
4919
  },
4648
4920
  "required": [
@@ -4838,7 +5110,7 @@
4838
5110
  "type": "number"
4839
5111
  },
4840
5112
  "extraValues": {
4841
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
5113
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
4842
5114
  "items": {
4843
5115
  "type": "number"
4844
5116
  },
@@ -4902,6 +5174,17 @@
4902
5174
  "description": "The color of the tick label, can be in hex color code or regular color name.",
4903
5175
  "type": "string"
4904
5176
  },
5177
+ "labelFlush": {
5178
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
5179
+ "type": [
5180
+ "boolean",
5181
+ "number"
5182
+ ]
5183
+ },
5184
+ "labelFlushOffset": {
5185
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
5186
+ "type": "number"
5187
+ },
4905
5188
  "labelFont": {
4906
5189
  "description": "The font of the tick label.",
4907
5190
  "type": "string"
@@ -4923,10 +5206,31 @@
4923
5206
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
4924
5207
  "type": "number"
4925
5208
  },
5209
+ "labelOverlap": {
5210
+ "anyOf": [
5211
+ {
5212
+ "type": "boolean"
5213
+ },
5214
+ {
5215
+ "const": "parity",
5216
+ "type": "string"
5217
+ },
5218
+ {
5219
+ "const": "greedy",
5220
+ "type": "string"
5221
+ }
5222
+ ],
5223
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
5224
+ },
4926
5225
  "labelPadding": {
4927
5226
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
4928
5227
  "type": "number"
4929
5228
  },
5229
+ "labelSeparation": {
5230
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
5231
+ "minimum": 0,
5232
+ "type": "number"
5233
+ },
4930
5234
  "labels": {
4931
5235
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
4932
5236
  "type": "boolean"
@@ -5067,7 +5371,7 @@
5067
5371
  "type": "number"
5068
5372
  },
5069
5373
  "values": {
5070
- "description": "Explicitly set the visible axis tick and label values.",
5374
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
5071
5375
  "items": {},
5072
5376
  "type": "array"
5073
5377
  },
@@ -5220,7 +5524,7 @@
5220
5524
  "type": "number"
5221
5525
  },
5222
5526
  "extraValues": {
5223
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
5527
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
5224
5528
  "items": {
5225
5529
  "type": "number"
5226
5530
  },
@@ -5284,6 +5588,17 @@
5284
5588
  "description": "The color of the tick label, can be in hex color code or regular color name.",
5285
5589
  "type": "string"
5286
5590
  },
5591
+ "labelFlush": {
5592
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
5593
+ "type": [
5594
+ "boolean",
5595
+ "number"
5596
+ ]
5597
+ },
5598
+ "labelFlushOffset": {
5599
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
5600
+ "type": "number"
5601
+ },
5287
5602
  "labelFont": {
5288
5603
  "description": "The font of the tick label.",
5289
5604
  "type": "string"
@@ -5305,10 +5620,31 @@
5305
5620
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
5306
5621
  "type": "number"
5307
5622
  },
5623
+ "labelOverlap": {
5624
+ "anyOf": [
5625
+ {
5626
+ "type": "boolean"
5627
+ },
5628
+ {
5629
+ "const": "parity",
5630
+ "type": "string"
5631
+ },
5632
+ {
5633
+ "const": "greedy",
5634
+ "type": "string"
5635
+ }
5636
+ ],
5637
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
5638
+ },
5308
5639
  "labelPadding": {
5309
5640
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
5310
5641
  "type": "number"
5311
5642
  },
5643
+ "labelSeparation": {
5644
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
5645
+ "minimum": 0,
5646
+ "type": "number"
5647
+ },
5312
5648
  "labels": {
5313
5649
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
5314
5650
  "type": "boolean"
@@ -5449,7 +5785,7 @@
5449
5785
  "type": "number"
5450
5786
  },
5451
5787
  "values": {
5452
- "description": "Explicitly set the visible axis tick and label values.",
5788
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
5453
5789
  "items": {},
5454
5790
  "type": "array"
5455
5791
  },
@@ -5625,7 +5961,7 @@
5625
5961
  "$ref": "#/definitions/MarkProps"
5626
5962
  }
5627
5963
  ],
5628
- "description": "The graphical mark presenting the data objects."
5964
+ "description": "The graphical mark presenting the rows."
5629
5965
  },
5630
5966
  "name": {
5631
5967
  "description": "An explicit name used to address the view. It is recommended to keep names unique among siblings. In the App (where view state is bookmarkable), the name must be unique within its import scope for views with configurable visibility, etc.",
@@ -5668,7 +6004,7 @@
5668
6004
  },
5669
6005
  "scales": {
5670
6006
  "additionalProperties": false,
5671
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
6007
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
5672
6008
  "properties": {
5673
6009
  "angle": {
5674
6010
  "$ref": "#/definitions/Scale"
@@ -5836,6 +6172,10 @@
5836
6172
  }
5837
6173
  ],
5838
6174
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
6175
+ },
6176
+ "zindex": {
6177
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
6178
+ "type": "number"
5839
6179
  }
5840
6180
  },
5841
6181
  "required": [
@@ -6006,7 +6346,7 @@
6006
6346
  "type": "number"
6007
6347
  },
6008
6348
  "extraValues": {
6009
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
6349
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
6010
6350
  "items": {
6011
6351
  "type": "number"
6012
6352
  },
@@ -6070,6 +6410,17 @@
6070
6410
  "description": "The color of the tick label, can be in hex color code or regular color name.",
6071
6411
  "type": "string"
6072
6412
  },
6413
+ "labelFlush": {
6414
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
6415
+ "type": [
6416
+ "boolean",
6417
+ "number"
6418
+ ]
6419
+ },
6420
+ "labelFlushOffset": {
6421
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
6422
+ "type": "number"
6423
+ },
6073
6424
  "labelFont": {
6074
6425
  "description": "The font of the tick label.",
6075
6426
  "type": "string"
@@ -6091,10 +6442,31 @@
6091
6442
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
6092
6443
  "type": "number"
6093
6444
  },
6445
+ "labelOverlap": {
6446
+ "anyOf": [
6447
+ {
6448
+ "type": "boolean"
6449
+ },
6450
+ {
6451
+ "const": "parity",
6452
+ "type": "string"
6453
+ },
6454
+ {
6455
+ "const": "greedy",
6456
+ "type": "string"
6457
+ }
6458
+ ],
6459
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
6460
+ },
6094
6461
  "labelPadding": {
6095
6462
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
6096
6463
  "type": "number"
6097
6464
  },
6465
+ "labelSeparation": {
6466
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
6467
+ "minimum": 0,
6468
+ "type": "number"
6469
+ },
6098
6470
  "labels": {
6099
6471
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
6100
6472
  "type": "boolean"
@@ -6235,7 +6607,7 @@
6235
6607
  "type": "number"
6236
6608
  },
6237
6609
  "values": {
6238
- "description": "Explicitly set the visible axis tick and label values.",
6610
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
6239
6611
  "items": {},
6240
6612
  "type": "array"
6241
6613
  },
@@ -6388,7 +6760,7 @@
6388
6760
  "type": "number"
6389
6761
  },
6390
6762
  "extraValues": {
6391
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
6763
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
6392
6764
  "items": {
6393
6765
  "type": "number"
6394
6766
  },
@@ -6452,6 +6824,17 @@
6452
6824
  "description": "The color of the tick label, can be in hex color code or regular color name.",
6453
6825
  "type": "string"
6454
6826
  },
6827
+ "labelFlush": {
6828
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
6829
+ "type": [
6830
+ "boolean",
6831
+ "number"
6832
+ ]
6833
+ },
6834
+ "labelFlushOffset": {
6835
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
6836
+ "type": "number"
6837
+ },
6455
6838
  "labelFont": {
6456
6839
  "description": "The font of the tick label.",
6457
6840
  "type": "string"
@@ -6473,10 +6856,31 @@
6473
6856
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
6474
6857
  "type": "number"
6475
6858
  },
6859
+ "labelOverlap": {
6860
+ "anyOf": [
6861
+ {
6862
+ "type": "boolean"
6863
+ },
6864
+ {
6865
+ "const": "parity",
6866
+ "type": "string"
6867
+ },
6868
+ {
6869
+ "const": "greedy",
6870
+ "type": "string"
6871
+ }
6872
+ ],
6873
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
6874
+ },
6476
6875
  "labelPadding": {
6477
6876
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
6478
6877
  "type": "number"
6479
6878
  },
6879
+ "labelSeparation": {
6880
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
6881
+ "minimum": 0,
6882
+ "type": "number"
6883
+ },
6480
6884
  "labels": {
6481
6885
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
6482
6886
  "type": "boolean"
@@ -6617,7 +7021,7 @@
6617
7021
  "type": "number"
6618
7022
  },
6619
7023
  "values": {
6620
- "description": "Explicitly set the visible axis tick and label values.",
7024
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
6621
7025
  "items": {},
6622
7026
  "type": "array"
6623
7027
  },
@@ -6844,7 +7248,7 @@
6844
7248
  },
6845
7249
  "scales": {
6846
7250
  "additionalProperties": false,
6847
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
7251
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
6848
7252
  "properties": {
6849
7253
  "angle": {
6850
7254
  "$ref": "#/definitions/Scale"
@@ -7011,6 +7415,10 @@
7011
7415
  }
7012
7416
  ],
7013
7417
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
7418
+ },
7419
+ "zindex": {
7420
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
7421
+ "type": "number"
7014
7422
  }
7015
7423
  },
7016
7424
  "required": [
@@ -7181,7 +7589,7 @@
7181
7589
  "type": "number"
7182
7590
  },
7183
7591
  "extraValues": {
7184
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
7592
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
7185
7593
  "items": {
7186
7594
  "type": "number"
7187
7595
  },
@@ -7245,6 +7653,17 @@
7245
7653
  "description": "The color of the tick label, can be in hex color code or regular color name.",
7246
7654
  "type": "string"
7247
7655
  },
7656
+ "labelFlush": {
7657
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
7658
+ "type": [
7659
+ "boolean",
7660
+ "number"
7661
+ ]
7662
+ },
7663
+ "labelFlushOffset": {
7664
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
7665
+ "type": "number"
7666
+ },
7248
7667
  "labelFont": {
7249
7668
  "description": "The font of the tick label.",
7250
7669
  "type": "string"
@@ -7266,10 +7685,31 @@
7266
7685
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
7267
7686
  "type": "number"
7268
7687
  },
7688
+ "labelOverlap": {
7689
+ "anyOf": [
7690
+ {
7691
+ "type": "boolean"
7692
+ },
7693
+ {
7694
+ "const": "parity",
7695
+ "type": "string"
7696
+ },
7697
+ {
7698
+ "const": "greedy",
7699
+ "type": "string"
7700
+ }
7701
+ ],
7702
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
7703
+ },
7269
7704
  "labelPadding": {
7270
7705
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
7271
7706
  "type": "number"
7272
7707
  },
7708
+ "labelSeparation": {
7709
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
7710
+ "minimum": 0,
7711
+ "type": "number"
7712
+ },
7273
7713
  "labels": {
7274
7714
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
7275
7715
  "type": "boolean"
@@ -7410,7 +7850,7 @@
7410
7850
  "type": "number"
7411
7851
  },
7412
7852
  "values": {
7413
- "description": "Explicitly set the visible axis tick and label values.",
7853
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
7414
7854
  "items": {},
7415
7855
  "type": "array"
7416
7856
  },
@@ -7563,7 +8003,7 @@
7563
8003
  "type": "number"
7564
8004
  },
7565
8005
  "extraValues": {
7566
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
8006
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
7567
8007
  "items": {
7568
8008
  "type": "number"
7569
8009
  },
@@ -7627,6 +8067,17 @@
7627
8067
  "description": "The color of the tick label, can be in hex color code or regular color name.",
7628
8068
  "type": "string"
7629
8069
  },
8070
+ "labelFlush": {
8071
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
8072
+ "type": [
8073
+ "boolean",
8074
+ "number"
8075
+ ]
8076
+ },
8077
+ "labelFlushOffset": {
8078
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
8079
+ "type": "number"
8080
+ },
7630
8081
  "labelFont": {
7631
8082
  "description": "The font of the tick label.",
7632
8083
  "type": "string"
@@ -7648,10 +8099,31 @@
7648
8099
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
7649
8100
  "type": "number"
7650
8101
  },
8102
+ "labelOverlap": {
8103
+ "anyOf": [
8104
+ {
8105
+ "type": "boolean"
8106
+ },
8107
+ {
8108
+ "const": "parity",
8109
+ "type": "string"
8110
+ },
8111
+ {
8112
+ "const": "greedy",
8113
+ "type": "string"
8114
+ }
8115
+ ],
8116
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
8117
+ },
7651
8118
  "labelPadding": {
7652
8119
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
7653
8120
  "type": "number"
7654
8121
  },
8122
+ "labelSeparation": {
8123
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
8124
+ "minimum": 0,
8125
+ "type": "number"
8126
+ },
7655
8127
  "labels": {
7656
8128
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
7657
8129
  "type": "boolean"
@@ -7792,7 +8264,7 @@
7792
8264
  "type": "number"
7793
8265
  },
7794
8266
  "values": {
7795
- "description": "Explicitly set the visible axis tick and label values.",
8267
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
7796
8268
  "items": {},
7797
8269
  "type": "array"
7798
8270
  },
@@ -8019,7 +8491,7 @@
8019
8491
  },
8020
8492
  "scales": {
8021
8493
  "additionalProperties": false,
8022
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
8494
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
8023
8495
  "properties": {
8024
8496
  "angle": {
8025
8497
  "$ref": "#/definitions/Scale"
@@ -8190,6 +8662,10 @@
8190
8662
  }
8191
8663
  ],
8192
8664
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
8665
+ },
8666
+ "zindex": {
8667
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
8668
+ "type": "number"
8193
8669
  }
8194
8670
  },
8195
8671
  "required": [
@@ -8354,7 +8830,7 @@
8354
8830
  "type": "number"
8355
8831
  },
8356
8832
  "extraValues": {
8357
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
8833
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
8358
8834
  "items": {
8359
8835
  "type": "number"
8360
8836
  },
@@ -8418,6 +8894,17 @@
8418
8894
  "description": "The color of the tick label, can be in hex color code or regular color name.",
8419
8895
  "type": "string"
8420
8896
  },
8897
+ "labelFlush": {
8898
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
8899
+ "type": [
8900
+ "boolean",
8901
+ "number"
8902
+ ]
8903
+ },
8904
+ "labelFlushOffset": {
8905
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
8906
+ "type": "number"
8907
+ },
8421
8908
  "labelFont": {
8422
8909
  "description": "The font of the tick label.",
8423
8910
  "type": "string"
@@ -8439,10 +8926,31 @@
8439
8926
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
8440
8927
  "type": "number"
8441
8928
  },
8929
+ "labelOverlap": {
8930
+ "anyOf": [
8931
+ {
8932
+ "type": "boolean"
8933
+ },
8934
+ {
8935
+ "const": "parity",
8936
+ "type": "string"
8937
+ },
8938
+ {
8939
+ "const": "greedy",
8940
+ "type": "string"
8941
+ }
8942
+ ],
8943
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
8944
+ },
8442
8945
  "labelPadding": {
8443
8946
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
8444
8947
  "type": "number"
8445
8948
  },
8949
+ "labelSeparation": {
8950
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
8951
+ "minimum": 0,
8952
+ "type": "number"
8953
+ },
8446
8954
  "labels": {
8447
8955
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
8448
8956
  "type": "boolean"
@@ -8583,7 +9091,7 @@
8583
9091
  "type": "number"
8584
9092
  },
8585
9093
  "values": {
8586
- "description": "Explicitly set the visible axis tick and label values.",
9094
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
8587
9095
  "items": {},
8588
9096
  "type": "array"
8589
9097
  },
@@ -8736,7 +9244,7 @@
8736
9244
  "type": "number"
8737
9245
  },
8738
9246
  "extraValues": {
8739
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
9247
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
8740
9248
  "items": {
8741
9249
  "type": "number"
8742
9250
  },
@@ -8800,6 +9308,17 @@
8800
9308
  "description": "The color of the tick label, can be in hex color code or regular color name.",
8801
9309
  "type": "string"
8802
9310
  },
9311
+ "labelFlush": {
9312
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
9313
+ "type": [
9314
+ "boolean",
9315
+ "number"
9316
+ ]
9317
+ },
9318
+ "labelFlushOffset": {
9319
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
9320
+ "type": "number"
9321
+ },
8803
9322
  "labelFont": {
8804
9323
  "description": "The font of the tick label.",
8805
9324
  "type": "string"
@@ -8821,10 +9340,31 @@
8821
9340
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
8822
9341
  "type": "number"
8823
9342
  },
9343
+ "labelOverlap": {
9344
+ "anyOf": [
9345
+ {
9346
+ "type": "boolean"
9347
+ },
9348
+ {
9349
+ "const": "parity",
9350
+ "type": "string"
9351
+ },
9352
+ {
9353
+ "const": "greedy",
9354
+ "type": "string"
9355
+ }
9356
+ ],
9357
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
9358
+ },
8824
9359
  "labelPadding": {
8825
9360
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
8826
9361
  "type": "number"
8827
9362
  },
9363
+ "labelSeparation": {
9364
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
9365
+ "minimum": 0,
9366
+ "type": "number"
9367
+ },
8828
9368
  "labels": {
8829
9369
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
8830
9370
  "type": "boolean"
@@ -8965,7 +9505,7 @@
8965
9505
  "type": "number"
8966
9506
  },
8967
9507
  "values": {
8968
- "description": "Explicitly set the visible axis tick and label values.",
9508
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
8969
9509
  "items": {},
8970
9510
  "type": "array"
8971
9511
  },
@@ -9169,7 +9709,7 @@
9169
9709
  },
9170
9710
  "scales": {
9171
9711
  "additionalProperties": false,
9172
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
9712
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
9173
9713
  "properties": {
9174
9714
  "angle": {
9175
9715
  "$ref": "#/definitions/Scale"
@@ -9361,6 +9901,10 @@
9361
9901
  }
9362
9902
  ],
9363
9903
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
9904
+ },
9905
+ "zindex": {
9906
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
9907
+ "type": "number"
9364
9908
  }
9365
9909
  },
9366
9910
  "required": [
@@ -9524,7 +10068,7 @@
9524
10068
  "type": "number"
9525
10069
  },
9526
10070
  "extraValues": {
9527
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
10071
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
9528
10072
  "items": {
9529
10073
  "type": "number"
9530
10074
  },
@@ -9588,6 +10132,17 @@
9588
10132
  "description": "The color of the tick label, can be in hex color code or regular color name.",
9589
10133
  "type": "string"
9590
10134
  },
10135
+ "labelFlush": {
10136
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
10137
+ "type": [
10138
+ "boolean",
10139
+ "number"
10140
+ ]
10141
+ },
10142
+ "labelFlushOffset": {
10143
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
10144
+ "type": "number"
10145
+ },
9591
10146
  "labelFont": {
9592
10147
  "description": "The font of the tick label.",
9593
10148
  "type": "string"
@@ -9609,10 +10164,31 @@
9609
10164
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
9610
10165
  "type": "number"
9611
10166
  },
10167
+ "labelOverlap": {
10168
+ "anyOf": [
10169
+ {
10170
+ "type": "boolean"
10171
+ },
10172
+ {
10173
+ "const": "parity",
10174
+ "type": "string"
10175
+ },
10176
+ {
10177
+ "const": "greedy",
10178
+ "type": "string"
10179
+ }
10180
+ ],
10181
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
10182
+ },
9612
10183
  "labelPadding": {
9613
10184
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
9614
10185
  "type": "number"
9615
10186
  },
10187
+ "labelSeparation": {
10188
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
10189
+ "minimum": 0,
10190
+ "type": "number"
10191
+ },
9616
10192
  "labels": {
9617
10193
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
9618
10194
  "type": "boolean"
@@ -9753,7 +10329,7 @@
9753
10329
  "type": "number"
9754
10330
  },
9755
10331
  "values": {
9756
- "description": "Explicitly set the visible axis tick and label values.",
10332
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
9757
10333
  "items": {},
9758
10334
  "type": "array"
9759
10335
  },
@@ -9906,7 +10482,7 @@
9906
10482
  "type": "number"
9907
10483
  },
9908
10484
  "extraValues": {
9909
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
10485
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
9910
10486
  "items": {
9911
10487
  "type": "number"
9912
10488
  },
@@ -9970,6 +10546,17 @@
9970
10546
  "description": "The color of the tick label, can be in hex color code or regular color name.",
9971
10547
  "type": "string"
9972
10548
  },
10549
+ "labelFlush": {
10550
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
10551
+ "type": [
10552
+ "boolean",
10553
+ "number"
10554
+ ]
10555
+ },
10556
+ "labelFlushOffset": {
10557
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
10558
+ "type": "number"
10559
+ },
9973
10560
  "labelFont": {
9974
10561
  "description": "The font of the tick label.",
9975
10562
  "type": "string"
@@ -9991,10 +10578,31 @@
9991
10578
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
9992
10579
  "type": "number"
9993
10580
  },
10581
+ "labelOverlap": {
10582
+ "anyOf": [
10583
+ {
10584
+ "type": "boolean"
10585
+ },
10586
+ {
10587
+ "const": "parity",
10588
+ "type": "string"
10589
+ },
10590
+ {
10591
+ "const": "greedy",
10592
+ "type": "string"
10593
+ }
10594
+ ],
10595
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
10596
+ },
9994
10597
  "labelPadding": {
9995
10598
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
9996
10599
  "type": "number"
9997
10600
  },
10601
+ "labelSeparation": {
10602
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
10603
+ "minimum": 0,
10604
+ "type": "number"
10605
+ },
9998
10606
  "labels": {
9999
10607
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
10000
10608
  "type": "boolean"
@@ -10135,7 +10743,7 @@
10135
10743
  "type": "number"
10136
10744
  },
10137
10745
  "values": {
10138
- "description": "Explicitly set the visible axis tick and label values.",
10746
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
10139
10747
  "items": {},
10140
10748
  "type": "array"
10141
10749
  },
@@ -10352,7 +10960,7 @@
10352
10960
  },
10353
10961
  "scales": {
10354
10962
  "additionalProperties": false,
10355
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
10963
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
10356
10964
  "properties": {
10357
10965
  "angle": {
10358
10966
  "$ref": "#/definitions/Scale"
@@ -10531,6 +11139,10 @@
10531
11139
  }
10532
11140
  ],
10533
11141
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
11142
+ },
11143
+ "zindex": {
11144
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
11145
+ "type": "number"
10534
11146
  }
10535
11147
  },
10536
11148
  "required": [
@@ -10694,7 +11306,7 @@
10694
11306
  "type": "number"
10695
11307
  },
10696
11308
  "extraValues": {
10697
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
11309
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
10698
11310
  "items": {
10699
11311
  "type": "number"
10700
11312
  },
@@ -10758,6 +11370,17 @@
10758
11370
  "description": "The color of the tick label, can be in hex color code or regular color name.",
10759
11371
  "type": "string"
10760
11372
  },
11373
+ "labelFlush": {
11374
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
11375
+ "type": [
11376
+ "boolean",
11377
+ "number"
11378
+ ]
11379
+ },
11380
+ "labelFlushOffset": {
11381
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
11382
+ "type": "number"
11383
+ },
10761
11384
  "labelFont": {
10762
11385
  "description": "The font of the tick label.",
10763
11386
  "type": "string"
@@ -10779,10 +11402,31 @@
10779
11402
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
10780
11403
  "type": "number"
10781
11404
  },
11405
+ "labelOverlap": {
11406
+ "anyOf": [
11407
+ {
11408
+ "type": "boolean"
11409
+ },
11410
+ {
11411
+ "const": "parity",
11412
+ "type": "string"
11413
+ },
11414
+ {
11415
+ "const": "greedy",
11416
+ "type": "string"
11417
+ }
11418
+ ],
11419
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
11420
+ },
10782
11421
  "labelPadding": {
10783
11422
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
10784
11423
  "type": "number"
10785
11424
  },
11425
+ "labelSeparation": {
11426
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
11427
+ "minimum": 0,
11428
+ "type": "number"
11429
+ },
10786
11430
  "labels": {
10787
11431
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
10788
11432
  "type": "boolean"
@@ -10923,7 +11567,7 @@
10923
11567
  "type": "number"
10924
11568
  },
10925
11569
  "values": {
10926
- "description": "Explicitly set the visible axis tick and label values.",
11570
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
10927
11571
  "items": {},
10928
11572
  "type": "array"
10929
11573
  },
@@ -11076,7 +11720,7 @@
11076
11720
  "type": "number"
11077
11721
  },
11078
11722
  "extraValues": {
11079
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
11723
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
11080
11724
  "items": {
11081
11725
  "type": "number"
11082
11726
  },
@@ -11140,6 +11784,17 @@
11140
11784
  "description": "The color of the tick label, can be in hex color code or regular color name.",
11141
11785
  "type": "string"
11142
11786
  },
11787
+ "labelFlush": {
11788
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
11789
+ "type": [
11790
+ "boolean",
11791
+ "number"
11792
+ ]
11793
+ },
11794
+ "labelFlushOffset": {
11795
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
11796
+ "type": "number"
11797
+ },
11143
11798
  "labelFont": {
11144
11799
  "description": "The font of the tick label.",
11145
11800
  "type": "string"
@@ -11161,10 +11816,31 @@
11161
11816
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
11162
11817
  "type": "number"
11163
11818
  },
11819
+ "labelOverlap": {
11820
+ "anyOf": [
11821
+ {
11822
+ "type": "boolean"
11823
+ },
11824
+ {
11825
+ "const": "parity",
11826
+ "type": "string"
11827
+ },
11828
+ {
11829
+ "const": "greedy",
11830
+ "type": "string"
11831
+ }
11832
+ ],
11833
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
11834
+ },
11164
11835
  "labelPadding": {
11165
11836
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
11166
11837
  "type": "number"
11167
11838
  },
11839
+ "labelSeparation": {
11840
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
11841
+ "minimum": 0,
11842
+ "type": "number"
11843
+ },
11168
11844
  "labels": {
11169
11845
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
11170
11846
  "type": "boolean"
@@ -11305,7 +11981,7 @@
11305
11981
  "type": "number"
11306
11982
  },
11307
11983
  "values": {
11308
- "description": "Explicitly set the visible axis tick and label values.",
11984
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
11309
11985
  "items": {},
11310
11986
  "type": "array"
11311
11987
  },
@@ -11526,7 +12202,7 @@
11526
12202
  },
11527
12203
  "scales": {
11528
12204
  "additionalProperties": false,
11529
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
12205
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
11530
12206
  "properties": {
11531
12207
  "angle": {
11532
12208
  "$ref": "#/definitions/Scale"
@@ -11705,6 +12381,10 @@
11705
12381
  }
11706
12382
  ],
11707
12383
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
12384
+ },
12385
+ "zindex": {
12386
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
12387
+ "type": "number"
11708
12388
  }
11709
12389
  },
11710
12390
  "required": [
@@ -11869,7 +12549,7 @@
11869
12549
  "type": "number"
11870
12550
  },
11871
12551
  "extraValues": {
11872
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
12552
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
11873
12553
  "items": {
11874
12554
  "type": "number"
11875
12555
  },
@@ -11933,6 +12613,17 @@
11933
12613
  "description": "The color of the tick label, can be in hex color code or regular color name.",
11934
12614
  "type": "string"
11935
12615
  },
12616
+ "labelFlush": {
12617
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
12618
+ "type": [
12619
+ "boolean",
12620
+ "number"
12621
+ ]
12622
+ },
12623
+ "labelFlushOffset": {
12624
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
12625
+ "type": "number"
12626
+ },
11936
12627
  "labelFont": {
11937
12628
  "description": "The font of the tick label.",
11938
12629
  "type": "string"
@@ -11954,10 +12645,31 @@
11954
12645
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
11955
12646
  "type": "number"
11956
12647
  },
12648
+ "labelOverlap": {
12649
+ "anyOf": [
12650
+ {
12651
+ "type": "boolean"
12652
+ },
12653
+ {
12654
+ "const": "parity",
12655
+ "type": "string"
12656
+ },
12657
+ {
12658
+ "const": "greedy",
12659
+ "type": "string"
12660
+ }
12661
+ ],
12662
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
12663
+ },
11957
12664
  "labelPadding": {
11958
12665
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
11959
12666
  "type": "number"
11960
12667
  },
12668
+ "labelSeparation": {
12669
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
12670
+ "minimum": 0,
12671
+ "type": "number"
12672
+ },
11961
12673
  "labels": {
11962
12674
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
11963
12675
  "type": "boolean"
@@ -12098,7 +12810,7 @@
12098
12810
  "type": "number"
12099
12811
  },
12100
12812
  "values": {
12101
- "description": "Explicitly set the visible axis tick and label values.",
12813
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
12102
12814
  "items": {},
12103
12815
  "type": "array"
12104
12816
  },
@@ -12251,7 +12963,7 @@
12251
12963
  "type": "number"
12252
12964
  },
12253
12965
  "extraValues": {
12254
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
12966
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
12255
12967
  "items": {
12256
12968
  "type": "number"
12257
12969
  },
@@ -12315,6 +13027,17 @@
12315
13027
  "description": "The color of the tick label, can be in hex color code or regular color name.",
12316
13028
  "type": "string"
12317
13029
  },
13030
+ "labelFlush": {
13031
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
13032
+ "type": [
13033
+ "boolean",
13034
+ "number"
13035
+ ]
13036
+ },
13037
+ "labelFlushOffset": {
13038
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
13039
+ "type": "number"
13040
+ },
12318
13041
  "labelFont": {
12319
13042
  "description": "The font of the tick label.",
12320
13043
  "type": "string"
@@ -12336,10 +13059,31 @@
12336
13059
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
12337
13060
  "type": "number"
12338
13061
  },
13062
+ "labelOverlap": {
13063
+ "anyOf": [
13064
+ {
13065
+ "type": "boolean"
13066
+ },
13067
+ {
13068
+ "const": "parity",
13069
+ "type": "string"
13070
+ },
13071
+ {
13072
+ "const": "greedy",
13073
+ "type": "string"
13074
+ }
13075
+ ],
13076
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
13077
+ },
12339
13078
  "labelPadding": {
12340
13079
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
12341
13080
  "type": "number"
12342
13081
  },
13082
+ "labelSeparation": {
13083
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
13084
+ "minimum": 0,
13085
+ "type": "number"
13086
+ },
12343
13087
  "labels": {
12344
13088
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
12345
13089
  "type": "boolean"
@@ -12480,7 +13224,7 @@
12480
13224
  "type": "number"
12481
13225
  },
12482
13226
  "values": {
12483
- "description": "Explicitly set the visible axis tick and label values.",
13227
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
12484
13228
  "items": {},
12485
13229
  "type": "array"
12486
13230
  },
@@ -12707,7 +13451,7 @@
12707
13451
  },
12708
13452
  "scales": {
12709
13453
  "additionalProperties": false,
12710
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
13454
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
12711
13455
  "properties": {
12712
13456
  "angle": {
12713
13457
  "$ref": "#/definitions/Scale"
@@ -12890,6 +13634,10 @@
12890
13634
  }
12891
13635
  ],
12892
13636
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
13637
+ },
13638
+ "zindex": {
13639
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
13640
+ "type": "number"
12893
13641
  }
12894
13642
  },
12895
13643
  "required": [
@@ -13056,7 +13804,7 @@
13056
13804
  "type": "number"
13057
13805
  },
13058
13806
  "extraValues": {
13059
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
13807
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
13060
13808
  "items": {
13061
13809
  "type": "number"
13062
13810
  },
@@ -13120,6 +13868,17 @@
13120
13868
  "description": "The color of the tick label, can be in hex color code or regular color name.",
13121
13869
  "type": "string"
13122
13870
  },
13871
+ "labelFlush": {
13872
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
13873
+ "type": [
13874
+ "boolean",
13875
+ "number"
13876
+ ]
13877
+ },
13878
+ "labelFlushOffset": {
13879
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
13880
+ "type": "number"
13881
+ },
13123
13882
  "labelFont": {
13124
13883
  "description": "The font of the tick label.",
13125
13884
  "type": "string"
@@ -13141,10 +13900,31 @@
13141
13900
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
13142
13901
  "type": "number"
13143
13902
  },
13903
+ "labelOverlap": {
13904
+ "anyOf": [
13905
+ {
13906
+ "type": "boolean"
13907
+ },
13908
+ {
13909
+ "const": "parity",
13910
+ "type": "string"
13911
+ },
13912
+ {
13913
+ "const": "greedy",
13914
+ "type": "string"
13915
+ }
13916
+ ],
13917
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
13918
+ },
13144
13919
  "labelPadding": {
13145
13920
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
13146
13921
  "type": "number"
13147
13922
  },
13923
+ "labelSeparation": {
13924
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
13925
+ "minimum": 0,
13926
+ "type": "number"
13927
+ },
13148
13928
  "labels": {
13149
13929
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
13150
13930
  "type": "boolean"
@@ -13285,7 +14065,7 @@
13285
14065
  "type": "number"
13286
14066
  },
13287
14067
  "values": {
13288
- "description": "Explicitly set the visible axis tick and label values.",
14068
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
13289
14069
  "items": {},
13290
14070
  "type": "array"
13291
14071
  },
@@ -13438,7 +14218,7 @@
13438
14218
  "type": "number"
13439
14219
  },
13440
14220
  "extraValues": {
13441
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
14221
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
13442
14222
  "items": {
13443
14223
  "type": "number"
13444
14224
  },
@@ -13502,6 +14282,17 @@
13502
14282
  "description": "The color of the tick label, can be in hex color code or regular color name.",
13503
14283
  "type": "string"
13504
14284
  },
14285
+ "labelFlush": {
14286
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
14287
+ "type": [
14288
+ "boolean",
14289
+ "number"
14290
+ ]
14291
+ },
14292
+ "labelFlushOffset": {
14293
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
14294
+ "type": "number"
14295
+ },
13505
14296
  "labelFont": {
13506
14297
  "description": "The font of the tick label.",
13507
14298
  "type": "string"
@@ -13523,10 +14314,31 @@
13523
14314
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
13524
14315
  "type": "number"
13525
14316
  },
14317
+ "labelOverlap": {
14318
+ "anyOf": [
14319
+ {
14320
+ "type": "boolean"
14321
+ },
14322
+ {
14323
+ "const": "parity",
14324
+ "type": "string"
14325
+ },
14326
+ {
14327
+ "const": "greedy",
14328
+ "type": "string"
14329
+ }
14330
+ ],
14331
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
14332
+ },
13526
14333
  "labelPadding": {
13527
14334
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
13528
14335
  "type": "number"
13529
14336
  },
14337
+ "labelSeparation": {
14338
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
14339
+ "minimum": 0,
14340
+ "type": "number"
14341
+ },
13530
14342
  "labels": {
13531
14343
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
13532
14344
  "type": "boolean"
@@ -13667,7 +14479,7 @@
13667
14479
  "type": "number"
13668
14480
  },
13669
14481
  "values": {
13670
- "description": "Explicitly set the visible axis tick and label values.",
14482
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
13671
14483
  "items": {},
13672
14484
  "type": "array"
13673
14485
  },
@@ -13824,7 +14636,7 @@
13824
14636
  "$ref": "#/definitions/MarkProps"
13825
14637
  }
13826
14638
  ],
13827
- "description": "The graphical mark presenting the data objects."
14639
+ "description": "The graphical mark presenting the rows."
13828
14640
  },
13829
14641
  "name": {
13830
14642
  "description": "An explicit name used to address the view. It is recommended to keep names unique among siblings. In the App (where view state is bookmarkable), the name must be unique within its import scope for views with configurable visibility, etc.",
@@ -13867,7 +14679,7 @@
13867
14679
  },
13868
14680
  "scales": {
13869
14681
  "additionalProperties": false,
13870
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
14682
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
13871
14683
  "properties": {
13872
14684
  "angle": {
13873
14685
  "$ref": "#/definitions/Scale"
@@ -14017,6 +14829,10 @@
14017
14829
  }
14018
14830
  ],
14019
14831
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
14832
+ },
14833
+ "zindex": {
14834
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
14835
+ "type": "number"
14020
14836
  }
14021
14837
  },
14022
14838
  "required": [
@@ -14173,7 +14989,7 @@
14173
14989
  "type": "number"
14174
14990
  },
14175
14991
  "extraValues": {
14176
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
14992
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
14177
14993
  "items": {
14178
14994
  "type": "number"
14179
14995
  },
@@ -14237,6 +15053,17 @@
14237
15053
  "description": "The color of the tick label, can be in hex color code or regular color name.",
14238
15054
  "type": "string"
14239
15055
  },
15056
+ "labelFlush": {
15057
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
15058
+ "type": [
15059
+ "boolean",
15060
+ "number"
15061
+ ]
15062
+ },
15063
+ "labelFlushOffset": {
15064
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
15065
+ "type": "number"
15066
+ },
14240
15067
  "labelFont": {
14241
15068
  "description": "The font of the tick label.",
14242
15069
  "type": "string"
@@ -14258,10 +15085,31 @@
14258
15085
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
14259
15086
  "type": "number"
14260
15087
  },
15088
+ "labelOverlap": {
15089
+ "anyOf": [
15090
+ {
15091
+ "type": "boolean"
15092
+ },
15093
+ {
15094
+ "const": "parity",
15095
+ "type": "string"
15096
+ },
15097
+ {
15098
+ "const": "greedy",
15099
+ "type": "string"
15100
+ }
15101
+ ],
15102
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
15103
+ },
14261
15104
  "labelPadding": {
14262
15105
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
14263
15106
  "type": "number"
14264
15107
  },
15108
+ "labelSeparation": {
15109
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
15110
+ "minimum": 0,
15111
+ "type": "number"
15112
+ },
14265
15113
  "labels": {
14266
15114
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
14267
15115
  "type": "boolean"
@@ -14402,7 +15250,7 @@
14402
15250
  "type": "number"
14403
15251
  },
14404
15252
  "values": {
14405
- "description": "Explicitly set the visible axis tick and label values.",
15253
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
14406
15254
  "items": {},
14407
15255
  "type": "array"
14408
15256
  },
@@ -14555,7 +15403,7 @@
14555
15403
  "type": "number"
14556
15404
  },
14557
15405
  "extraValues": {
14558
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
15406
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
14559
15407
  "items": {
14560
15408
  "type": "number"
14561
15409
  },
@@ -14619,6 +15467,17 @@
14619
15467
  "description": "The color of the tick label, can be in hex color code or regular color name.",
14620
15468
  "type": "string"
14621
15469
  },
15470
+ "labelFlush": {
15471
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
15472
+ "type": [
15473
+ "boolean",
15474
+ "number"
15475
+ ]
15476
+ },
15477
+ "labelFlushOffset": {
15478
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
15479
+ "type": "number"
15480
+ },
14622
15481
  "labelFont": {
14623
15482
  "description": "The font of the tick label.",
14624
15483
  "type": "string"
@@ -14640,10 +15499,31 @@
14640
15499
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
14641
15500
  "type": "number"
14642
15501
  },
15502
+ "labelOverlap": {
15503
+ "anyOf": [
15504
+ {
15505
+ "type": "boolean"
15506
+ },
15507
+ {
15508
+ "const": "parity",
15509
+ "type": "string"
15510
+ },
15511
+ {
15512
+ "const": "greedy",
15513
+ "type": "string"
15514
+ }
15515
+ ],
15516
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
15517
+ },
14643
15518
  "labelPadding": {
14644
15519
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
14645
15520
  "type": "number"
14646
15521
  },
15522
+ "labelSeparation": {
15523
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
15524
+ "minimum": 0,
15525
+ "type": "number"
15526
+ },
14647
15527
  "labels": {
14648
15528
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
14649
15529
  "type": "boolean"
@@ -14784,7 +15664,7 @@
14784
15664
  "type": "number"
14785
15665
  },
14786
15666
  "values": {
14787
- "description": "Explicitly set the visible axis tick and label values.",
15667
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
14788
15668
  "items": {},
14789
15669
  "type": "array"
14790
15670
  },
@@ -14969,7 +15849,7 @@
14969
15849
  },
14970
15850
  "scales": {
14971
15851
  "additionalProperties": false,
14972
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
15852
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
14973
15853
  "properties": {
14974
15854
  "angle": {
14975
15855
  "$ref": "#/definitions/Scale"
@@ -15143,6 +16023,10 @@
15143
16023
  }
15144
16024
  ],
15145
16025
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
16026
+ },
16027
+ "zindex": {
16028
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
16029
+ "type": "number"
15146
16030
  }
15147
16031
  },
15148
16032
  "required": [
@@ -15222,7 +16106,7 @@
15222
16106
  "type": "string"
15223
16107
  }
15224
16108
  ],
15225
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
16109
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
15226
16110
  },
15227
16111
  "color": {
15228
16112
  "anyOf": [
@@ -15383,10 +16267,6 @@
15383
16267
  ],
15384
16268
  "description": "Width of the arrowhead as a multiplier of resolved `size`. Values above `1` make the arrowhead wider than the stem.\n\n__Default value:__ `3`"
15385
16269
  },
15386
- "minBufferSize": {
15387
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
15388
- "type": "number"
15389
- },
15390
16270
  "minSize": {
15391
16271
  "anyOf": [
15392
16272
  {
@@ -15620,7 +16500,7 @@
15620
16500
  "type": "string"
15621
16501
  }
15622
16502
  ],
15623
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
16503
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
15624
16504
  },
15625
16505
  "color": {
15626
16506
  "anyOf": [
@@ -15781,10 +16661,6 @@
15781
16661
  ],
15782
16662
  "description": "Width of the arrowhead as a multiplier of resolved `size`. Values above `1` make the arrowhead wider than the stem.\n\n__Default value:__ `3`"
15783
16663
  },
15784
- "minBufferSize": {
15785
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
15786
- "type": "number"
15787
- },
15788
16664
  "minSize": {
15789
16665
  "anyOf": [
15790
16666
  {
@@ -16064,7 +16940,7 @@
16064
16940
  "type": "number"
16065
16941
  },
16066
16942
  "extraValues": {
16067
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
16943
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
16068
16944
  "items": {
16069
16945
  "type": "number"
16070
16946
  },
@@ -16128,6 +17004,17 @@
16128
17004
  "description": "The color of the tick label, can be in hex color code or regular color name.",
16129
17005
  "type": "string"
16130
17006
  },
17007
+ "labelFlush": {
17008
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
17009
+ "type": [
17010
+ "boolean",
17011
+ "number"
17012
+ ]
17013
+ },
17014
+ "labelFlushOffset": {
17015
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
17016
+ "type": "number"
17017
+ },
16131
17018
  "labelFont": {
16132
17019
  "description": "The font of the tick label.",
16133
17020
  "type": "string"
@@ -16149,10 +17036,31 @@
16149
17036
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
16150
17037
  "type": "number"
16151
17038
  },
17039
+ "labelOverlap": {
17040
+ "anyOf": [
17041
+ {
17042
+ "type": "boolean"
17043
+ },
17044
+ {
17045
+ "const": "parity",
17046
+ "type": "string"
17047
+ },
17048
+ {
17049
+ "const": "greedy",
17050
+ "type": "string"
17051
+ }
17052
+ ],
17053
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
17054
+ },
16152
17055
  "labelPadding": {
16153
17056
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
16154
17057
  "type": "number"
16155
17058
  },
17059
+ "labelSeparation": {
17060
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
17061
+ "minimum": 0,
17062
+ "type": "number"
17063
+ },
16156
17064
  "labels": {
16157
17065
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
16158
17066
  "type": "boolean"
@@ -16293,7 +17201,7 @@
16293
17201
  "type": "number"
16294
17202
  },
16295
17203
  "values": {
16296
- "description": "Explicitly set the visible axis tick and label values.",
17204
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
16297
17205
  "items": {},
16298
17206
  "type": "array"
16299
17207
  },
@@ -16446,7 +17354,7 @@
16446
17354
  "type": "number"
16447
17355
  },
16448
17356
  "extraValues": {
16449
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
17357
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
16450
17358
  "items": {
16451
17359
  "type": "number"
16452
17360
  },
@@ -16510,6 +17418,17 @@
16510
17418
  "description": "The color of the tick label, can be in hex color code or regular color name.",
16511
17419
  "type": "string"
16512
17420
  },
17421
+ "labelFlush": {
17422
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
17423
+ "type": [
17424
+ "boolean",
17425
+ "number"
17426
+ ]
17427
+ },
17428
+ "labelFlushOffset": {
17429
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
17430
+ "type": "number"
17431
+ },
16513
17432
  "labelFont": {
16514
17433
  "description": "The font of the tick label.",
16515
17434
  "type": "string"
@@ -16531,10 +17450,31 @@
16531
17450
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
16532
17451
  "type": "number"
16533
17452
  },
17453
+ "labelOverlap": {
17454
+ "anyOf": [
17455
+ {
17456
+ "type": "boolean"
17457
+ },
17458
+ {
17459
+ "const": "parity",
17460
+ "type": "string"
17461
+ },
17462
+ {
17463
+ "const": "greedy",
17464
+ "type": "string"
17465
+ }
17466
+ ],
17467
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
17468
+ },
16534
17469
  "labelPadding": {
16535
17470
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
16536
17471
  "type": "number"
16537
17472
  },
17473
+ "labelSeparation": {
17474
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
17475
+ "minimum": 0,
17476
+ "type": "number"
17477
+ },
16538
17478
  "labels": {
16539
17479
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
16540
17480
  "type": "boolean"
@@ -16675,7 +17615,7 @@
16675
17615
  "type": "number"
16676
17616
  },
16677
17617
  "values": {
16678
- "description": "Explicitly set the visible axis tick and label values.",
17618
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
16679
17619
  "items": {},
16680
17620
  "type": "array"
16681
17621
  },
@@ -16704,6 +17644,116 @@
16704
17644
  ],
16705
17645
  "type": "object"
16706
17646
  },
17647
+ "AxisLabelLayoutParams": {
17648
+ "additionalProperties": false,
17649
+ "description": "Parameters for GenomeSpy's generated axis-label layout pipeline.",
17650
+ "properties": {
17651
+ "channel": {
17652
+ "$ref": "#/definitions/PrimaryPositionalChannel"
17653
+ },
17654
+ "chromLabelAlign": {
17655
+ "enum": [
17656
+ "left",
17657
+ "center",
17658
+ "right"
17659
+ ],
17660
+ "type": "string"
17661
+ },
17662
+ "chromLabelPadding": {
17663
+ "type": "number"
17664
+ },
17665
+ "chromLabelSpacing": {
17666
+ "type": "number"
17667
+ },
17668
+ "chromLabelWidth": {
17669
+ "$ref": "#/definitions/Field"
17670
+ },
17671
+ "description": {
17672
+ "description": "A description of the transform step. Can be used for documentation and agent context.",
17673
+ "type": "string"
17674
+ },
17675
+ "labelAlign": {
17676
+ "enum": [
17677
+ "left",
17678
+ "center",
17679
+ "right"
17680
+ ],
17681
+ "type": "string"
17682
+ },
17683
+ "labelAngle": {
17684
+ "type": "number"
17685
+ },
17686
+ "labelBaseline": {
17687
+ "$ref": "#/definitions/Baseline"
17688
+ },
17689
+ "labelFlush": {
17690
+ "anyOf": [
17691
+ {
17692
+ "const": false,
17693
+ "type": "boolean"
17694
+ },
17695
+ {
17696
+ "type": "number"
17697
+ }
17698
+ ]
17699
+ },
17700
+ "labelFlushOffset": {
17701
+ "type": "number"
17702
+ },
17703
+ "labelFlushZoomExtent": {
17704
+ "type": "boolean"
17705
+ },
17706
+ "labelFontSize": {
17707
+ "type": "number"
17708
+ },
17709
+ "labelOffset": {
17710
+ "type": "string"
17711
+ },
17712
+ "labelOverlap": {
17713
+ "enum": [
17714
+ false,
17715
+ "auto",
17716
+ "parity",
17717
+ "greedy"
17718
+ ],
17719
+ "type": [
17720
+ "boolean",
17721
+ "string"
17722
+ ]
17723
+ },
17724
+ "labelSeparation": {
17725
+ "type": "number"
17726
+ },
17727
+ "labelVisible": {
17728
+ "type": "string"
17729
+ },
17730
+ "labelWidth": {
17731
+ "$ref": "#/definitions/Field"
17732
+ },
17733
+ "type": {
17734
+ "const": "axisLabelLayout",
17735
+ "description": "The type of the transform to be applied",
17736
+ "type": "string"
17737
+ }
17738
+ },
17739
+ "required": [
17740
+ "channel",
17741
+ "labelAlign",
17742
+ "labelAngle",
17743
+ "labelBaseline",
17744
+ "labelFlush",
17745
+ "labelFlushOffset",
17746
+ "labelFlushZoomExtent",
17747
+ "labelFontSize",
17748
+ "labelOffset",
17749
+ "labelOverlap",
17750
+ "labelSeparation",
17751
+ "labelVisible",
17752
+ "labelWidth",
17753
+ "type"
17754
+ ],
17755
+ "type": "object"
17756
+ },
16707
17757
  "AxisOrient": {
16708
17758
  "enum": [
16709
17759
  "top",
@@ -18742,7 +19792,7 @@
18742
19792
  },
18743
19793
  "key": {
18744
19794
  "$ref": "#/definitions/KeyDef",
18745
- "description": "One or more data fields that uniquely identify data objects for stable point selections and bookmarking across sessions. Unlike `uniqueId` (an implicit surrogate key), key fields must be stable in the source data.\n\nUse a single field definition for simple keys, or an array of field definitions for composite keys. For composite keys, field order is significant."
19795
+ "description": "One or more data fields that uniquely identify rows for stable point selections and bookmarking across sessions. Unlike `uniqueId` (an implicit surrogate key), key fields must be stable in the source data.\n\nUse a single field definition for simple keys, or an array of field definitions for composite keys. For composite keys, field order is significant."
18746
19796
  },
18747
19797
  "opacity": {
18748
19798
  "$ref": "#/definitions/NumericMarkPropDef",
@@ -18754,7 +19804,7 @@
18754
19804
  },
18755
19805
  "search": {
18756
19806
  "$ref": "#/definitions/SearchDef",
18757
- "description": "One or more fields used by the App's location/search input to match data objects in this view.\n\nUse a single field definition for simple search, or an array for matching against multiple fields. A datum matches when any configured search field matches the entered term."
19807
+ "description": "One or more fields used by the App's location/search input to match rows in this view.\n\nUse a single field definition for simple search, or an array for matching against multiple fields. A row matches when any configured search field matches the entered term."
18758
19808
  },
18759
19809
  "semanticScore": {
18760
19810
  "additionalProperties": false,
@@ -19242,7 +20292,7 @@
19242
20292
  "type": "string"
19243
20293
  },
19244
20294
  "expr": {
19245
- "description": "An expression string. The data object is removed if the expression evaluates to false.",
20295
+ "description": "An expression string. The row is removed if the expression evaluates to false.",
19246
20296
  "type": "string"
19247
20297
  },
19248
20298
  "type": {
@@ -19278,6 +20328,7 @@
19278
20328
  },
19279
20329
  "push": {
19280
20330
  "const": "outer",
20331
+ "description": "Reuses the nearest same-named parameter in an ancestor scope and writes updates to it. Declare the target parameter on the ancestor first.\n\nThis is useful when interaction in a child view updates state owned by a composed view, such as a parameter that controls a shared scale.",
19281
20332
  "type": "string"
19282
20333
  },
19283
20334
  "transition": {
@@ -19808,7 +20859,7 @@
19808
20859
  },
19809
20860
  "FlattenCigarParams": {
19810
20861
  "additionalProperties": false,
19811
- "description": "Expands a read alignment into one row per CIGAR operation.\n\nThe output rows preserve the input datum fields, or only the fields listed in `copyFields` when it is defined, and add fixed CIGAR fields: `cigarOp`, `cigarLength`, `cigarStart`, `cigarEnd`, `readStart`, `readEnd`, and `cigarType`. Reference coordinates are 0-based, half-open.",
20862
+ "description": "Expands a read alignment into one row per CIGAR operation.\n\nThe output rows preserve the input row fields, or only the fields listed in `copyFields` when it is defined, and add fixed CIGAR fields: `cigarOp`, `cigarLength`, `cigarStart`, `cigarEnd`, `readStart`, `readEnd`, and `cigarType`. Reference coordinates are 0-based, half-open.",
19812
20863
  "properties": {
19813
20864
  "cigar": {
19814
20865
  "$ref": "#/definitions/Field",
@@ -19970,7 +21021,7 @@
19970
21021
  "$ref": "#/definitions/Field"
19971
21022
  }
19972
21023
  ],
19973
- "description": "The field(s) to flatten. If no field is defined, the data object itself is treated as an array to be flattened."
21024
+ "description": "The field(s) to flatten. If no field is defined, the input row itself is treated as an array to be flattened."
19974
21025
  },
19975
21026
  "index": {
19976
21027
  "description": "The output field name for the zero-based index of the array values. If unspecified, an index field is not added.",
@@ -20233,7 +21284,7 @@
20233
21284
  "type": "number"
20234
21285
  },
20235
21286
  "extraValues": {
20236
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
21287
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
20237
21288
  "items": {
20238
21289
  "type": "number"
20239
21290
  },
@@ -20297,6 +21348,17 @@
20297
21348
  "description": "The color of the tick label, can be in hex color code or regular color name.",
20298
21349
  "type": "string"
20299
21350
  },
21351
+ "labelFlush": {
21352
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
21353
+ "type": [
21354
+ "boolean",
21355
+ "number"
21356
+ ]
21357
+ },
21358
+ "labelFlushOffset": {
21359
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
21360
+ "type": "number"
21361
+ },
20300
21362
  "labelFont": {
20301
21363
  "description": "The font of the tick label.",
20302
21364
  "type": "string"
@@ -20318,10 +21380,31 @@
20318
21380
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
20319
21381
  "type": "number"
20320
21382
  },
21383
+ "labelOverlap": {
21384
+ "anyOf": [
21385
+ {
21386
+ "type": "boolean"
21387
+ },
21388
+ {
21389
+ "const": "parity",
21390
+ "type": "string"
21391
+ },
21392
+ {
21393
+ "const": "greedy",
21394
+ "type": "string"
21395
+ }
21396
+ ],
21397
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
21398
+ },
20321
21399
  "labelPadding": {
20322
21400
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
20323
21401
  "type": "number"
20324
21402
  },
21403
+ "labelSeparation": {
21404
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
21405
+ "minimum": 0,
21406
+ "type": "number"
21407
+ },
20325
21408
  "labels": {
20326
21409
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
20327
21410
  "type": "boolean"
@@ -20462,7 +21545,7 @@
20462
21545
  "type": "number"
20463
21546
  },
20464
21547
  "values": {
20465
- "description": "Explicitly set the visible axis tick and label values.",
21548
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
20466
21549
  "items": {},
20467
21550
  "type": "array"
20468
21551
  },
@@ -20771,6 +21854,10 @@
20771
21854
  "visible": {
20772
21855
  "description": "Overrides the visibility of the imported view.\n\nIf not specified, the imported specification's `visible` property is used.",
20773
21856
  "type": "boolean"
21857
+ },
21858
+ "zindex": {
21859
+ "description": "Overrides the imported view's z-order among sibling views. Higher values render later. This does not affect layout order.\n\n__Default value:__ the imported view's `zindex`, or `0`",
21860
+ "type": "number"
20774
21861
  }
20775
21862
  },
20776
21863
  "required": [
@@ -21900,7 +22987,7 @@
21900
22987
  "type": "string"
21901
22988
  }
21902
22989
  ],
21903
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
22990
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
21904
22991
  },
21905
22992
  "color": {
21906
22993
  "anyOf": [
@@ -21986,10 +23073,6 @@
21986
23073
  ],
21987
23074
  "description": "The minimum height of an `\"arc\"` shape. Makes very short links more clearly visible.\n\n**Default value:** `1.5`"
21988
23075
  },
21989
- "minBufferSize": {
21990
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
21991
- "type": "number"
21992
- },
21993
23076
  "minPickingSize": {
21994
23077
  "anyOf": [
21995
23078
  {
@@ -22237,7 +23320,7 @@
22237
23320
  "type": "string"
22238
23321
  }
22239
23322
  ],
22240
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
23323
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
22241
23324
  },
22242
23325
  "color": {
22243
23326
  "anyOf": [
@@ -22323,10 +23406,6 @@
22323
23406
  ],
22324
23407
  "description": "The minimum height of an `\"arc\"` shape. Makes very short links more clearly visible.\n\n**Default value:** `1.5`"
22325
23408
  },
22326
- "minBufferSize": {
22327
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
22328
- "type": "number"
22329
- },
22330
23409
  "minPickingSize": {
22331
23410
  "anyOf": [
22332
23411
  {
@@ -22639,7 +23718,7 @@
22639
23718
  "type": "string"
22640
23719
  }
22641
23720
  ],
22642
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
23721
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
22643
23722
  },
22644
23723
  "color": {
22645
23724
  "anyOf": [
@@ -22679,10 +23758,6 @@
22679
23758
  ],
22680
23759
  "description": "Mouse cursor shown while the pointer is over the mark. Mark cursor takes precedence over enclosing view cursors.\n\n__Default value:__ browser default"
22681
23760
  },
22682
- "minBufferSize": {
22683
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
22684
- "type": "number"
22685
- },
22686
23761
  "opacity": {
22687
23762
  "anyOf": [
22688
23763
  {
@@ -23727,6 +24802,7 @@
23727
24802
  },
23728
24803
  "push": {
23729
24804
  "const": "outer",
24805
+ "description": "Reuses the nearest same-named parameter in an ancestor scope and writes updates to it. Declare the target parameter on the ancestor first.\n\nThis is useful when interaction in a child view updates state owned by a composed view, such as a parameter that controls a shared scale.",
23730
24806
  "type": "string"
23731
24807
  },
23732
24808
  "value": {
@@ -23774,7 +24850,7 @@
23774
24850
  "type": "string"
23775
24851
  }
23776
24852
  ],
23777
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
24853
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
23778
24854
  },
23779
24855
  "color": {
23780
24856
  "anyOf": [
@@ -23876,6 +24952,7 @@
23876
24952
  "type": "boolean"
23877
24953
  },
23878
24954
  "geometricZoomBound": {
24955
+ "deprecated": "This property will be removed in GenomeSpy v2.0. Use an\nexpression-valued `size` instead.",
23879
24956
  "description": "Enables geometric zooming. The value is the base two logarithmic zoom level where the maximum point size is reached.\n\n**Default value:** `0`",
23880
24957
  "type": "number"
23881
24958
  },
@@ -23890,10 +24967,6 @@
23890
24967
  ],
23891
24968
  "description": "Should the stroke only grow inwards, e.g, the diameter/outline is not affected by the stroke width. Thus, a point that has a zero size has no visible stroke. This allows strokes to be used with geometric zoom, etc.\n\n**Default value:** `false`"
23892
24969
  },
23893
- "minBufferSize": {
23894
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
23895
- "type": "number"
23896
- },
23897
24970
  "minPickingSize": {
23898
24971
  "anyOf": [
23899
24972
  {
@@ -24120,7 +25193,7 @@
24120
25193
  "type": "string"
24121
25194
  }
24122
25195
  ],
24123
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
25196
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
24124
25197
  },
24125
25198
  "color": {
24126
25199
  "anyOf": [
@@ -24222,6 +25295,7 @@
24222
25295
  "type": "boolean"
24223
25296
  },
24224
25297
  "geometricZoomBound": {
25298
+ "deprecated": "This property will be removed in GenomeSpy v2.0. Use an\nexpression-valued `size` instead.",
24225
25299
  "description": "Enables geometric zooming. The value is the base two logarithmic zoom level where the maximum point size is reached.\n\n**Default value:** `0`",
24226
25300
  "type": "number"
24227
25301
  },
@@ -24236,10 +25310,6 @@
24236
25310
  ],
24237
25311
  "description": "Should the stroke only grow inwards, e.g, the diameter/outline is not affected by the stroke width. Thus, a point that has a zero size has no visible stroke. This allows strokes to be used with geometric zoom, etc.\n\n**Default value:** `false`"
24238
25312
  },
24239
- "minBufferSize": {
24240
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
24241
- "type": "number"
24242
- },
24243
25313
  "minPickingSize": {
24244
25314
  "anyOf": [
24245
25315
  {
@@ -24938,7 +26008,7 @@
24938
26008
  "type": "string"
24939
26009
  }
24940
26010
  ],
24941
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
26011
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
24942
26012
  },
24943
26013
  "color": {
24944
26014
  "anyOf": [
@@ -25107,10 +26177,6 @@
25107
26177
  ],
25108
26178
  "description": "A hatch pattern drawn inside the mark using the stroke width, color, and opacity. The pattern is aligned in screen space and scaled by the stroke width.\n\n**Default value:** `\"none\"`"
25109
26179
  },
25110
- "minBufferSize": {
25111
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
25112
- "type": "number"
25113
- },
25114
26180
  "minHeight": {
25115
26181
  "anyOf": [
25116
26182
  {
@@ -25377,7 +26443,7 @@
25377
26443
  "type": "string"
25378
26444
  }
25379
26445
  ],
25380
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
26446
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
25381
26447
  },
25382
26448
  "color": {
25383
26449
  "anyOf": [
@@ -25546,10 +26612,6 @@
25546
26612
  ],
25547
26613
  "description": "A hatch pattern drawn inside the mark using the stroke width, color, and opacity. The pattern is aligned in screen space and scaled by the stroke width.\n\n**Default value:** `\"none\"`"
25548
26614
  },
25549
- "minBufferSize": {
25550
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
25551
- "type": "number"
25552
- },
25553
26615
  "minHeight": {
25554
26616
  "anyOf": [
25555
26617
  {
@@ -25828,7 +26890,7 @@
25828
26890
  "type": "string"
25829
26891
  },
25830
26892
  "skipInvalidInput": {
25831
- "description": "Do not complain about invalid input. Just skip it and leave the new fields undefined on the affected datum.\n\n**Default:** `false`",
26893
+ "description": "Do not complain about invalid input. Just skip it and leave the new fields undefined on the affected row.\n\n**Default:** `false`",
25832
26894
  "type": "boolean"
25833
26895
  },
25834
26896
  "type": {
@@ -25885,7 +26947,7 @@
25885
26947
  "type": "string"
25886
26948
  },
25887
26949
  "skipRegex": {
25888
- "description": "An optional regex that matches to fields that should not be included in the new folded data objects.",
26950
+ "description": "An optional regex that matches to fields that should not be included in the new folded rows.",
25889
26951
  "type": "string"
25890
26952
  },
25891
26953
  "type": {
@@ -26141,7 +27203,7 @@
26141
27203
  "type": "string"
26142
27204
  }
26143
27205
  ],
26144
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
27206
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
26145
27207
  },
26146
27208
  "color": {
26147
27209
  "anyOf": [
@@ -26181,10 +27243,6 @@
26181
27243
  ],
26182
27244
  "description": "Mouse cursor shown while the pointer is over the mark. Mark cursor takes precedence over enclosing view cursors.\n\n__Default value:__ browser default"
26183
27245
  },
26184
- "minBufferSize": {
26185
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
26186
- "type": "number"
26187
- },
26188
27246
  "minLength": {
26189
27247
  "anyOf": [
26190
27248
  {
@@ -26383,7 +27441,7 @@
26383
27441
  "type": "string"
26384
27442
  }
26385
27443
  ],
26386
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
27444
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
26387
27445
  },
26388
27446
  "color": {
26389
27447
  "anyOf": [
@@ -26423,10 +27481,6 @@
26423
27481
  ],
26424
27482
  "description": "Mouse cursor shown while the pointer is over the mark. Mark cursor takes precedence over enclosing view cursors.\n\n__Default value:__ browser default"
26425
27483
  },
26426
- "minBufferSize": {
26427
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
26428
- "type": "number"
26429
- },
26430
27484
  "minLength": {
26431
27485
  "anyOf": [
26432
27486
  {
@@ -26844,6 +27898,7 @@
26844
27898
  },
26845
27899
  "push": {
26846
27900
  "const": "outer",
27901
+ "description": "Reuses the nearest same-named parameter in an ancestor scope and writes updates to it. Declare the target parameter on the ancestor first.\n\nThis is useful when interaction in a child view updates state owned by a composed view, such as a parameter that controls a shared scale.",
26847
27902
  "type": "string"
26848
27903
  },
26849
27904
  "ruler": {
@@ -27198,7 +28253,7 @@
27198
28253
  "type": "number"
27199
28254
  },
27200
28255
  "extraValues": {
27201
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
28256
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
27202
28257
  "items": {
27203
28258
  "type": "number"
27204
28259
  },
@@ -27262,6 +28317,17 @@
27262
28317
  "description": "The color of the tick label, can be in hex color code or regular color name.",
27263
28318
  "type": "string"
27264
28319
  },
28320
+ "labelFlush": {
28321
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
28322
+ "type": [
28323
+ "boolean",
28324
+ "number"
28325
+ ]
28326
+ },
28327
+ "labelFlushOffset": {
28328
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
28329
+ "type": "number"
28330
+ },
27265
28331
  "labelFont": {
27266
28332
  "description": "The font of the tick label.",
27267
28333
  "type": "string"
@@ -27283,10 +28349,31 @@
27283
28349
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
27284
28350
  "type": "number"
27285
28351
  },
28352
+ "labelOverlap": {
28353
+ "anyOf": [
28354
+ {
28355
+ "type": "boolean"
28356
+ },
28357
+ {
28358
+ "const": "parity",
28359
+ "type": "string"
28360
+ },
28361
+ {
28362
+ "const": "greedy",
28363
+ "type": "string"
28364
+ }
28365
+ ],
28366
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
28367
+ },
27286
28368
  "labelPadding": {
27287
28369
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
27288
28370
  "type": "number"
27289
28371
  },
28372
+ "labelSeparation": {
28373
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
28374
+ "minimum": 0,
28375
+ "type": "number"
28376
+ },
27290
28377
  "labels": {
27291
28378
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
27292
28379
  "type": "boolean"
@@ -27427,7 +28514,7 @@
27427
28514
  "type": "number"
27428
28515
  },
27429
28516
  "values": {
27430
- "description": "Explicitly set the visible axis tick and label values.",
28517
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
27431
28518
  "items": {},
27432
28519
  "type": "array"
27433
28520
  },
@@ -27580,7 +28667,7 @@
27580
28667
  "type": "number"
27581
28668
  },
27582
28669
  "extraValues": {
27583
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
28670
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
27584
28671
  "items": {
27585
28672
  "type": "number"
27586
28673
  },
@@ -27644,6 +28731,17 @@
27644
28731
  "description": "The color of the tick label, can be in hex color code or regular color name.",
27645
28732
  "type": "string"
27646
28733
  },
28734
+ "labelFlush": {
28735
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
28736
+ "type": [
28737
+ "boolean",
28738
+ "number"
28739
+ ]
28740
+ },
28741
+ "labelFlushOffset": {
28742
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
28743
+ "type": "number"
28744
+ },
27647
28745
  "labelFont": {
27648
28746
  "description": "The font of the tick label.",
27649
28747
  "type": "string"
@@ -27665,10 +28763,31 @@
27665
28763
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
27666
28764
  "type": "number"
27667
28765
  },
28766
+ "labelOverlap": {
28767
+ "anyOf": [
28768
+ {
28769
+ "type": "boolean"
28770
+ },
28771
+ {
28772
+ "const": "parity",
28773
+ "type": "string"
28774
+ },
28775
+ {
28776
+ "const": "greedy",
28777
+ "type": "string"
28778
+ }
28779
+ ],
28780
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
28781
+ },
27668
28782
  "labelPadding": {
27669
28783
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
27670
28784
  "type": "number"
27671
28785
  },
28786
+ "labelSeparation": {
28787
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
28788
+ "minimum": 0,
28789
+ "type": "number"
28790
+ },
27672
28791
  "labels": {
27673
28792
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
27674
28793
  "type": "boolean"
@@ -27809,7 +28928,7 @@
27809
28928
  "type": "number"
27810
28929
  },
27811
28930
  "values": {
27812
- "description": "Explicitly set the visible axis tick and label values.",
28931
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
27813
28932
  "items": {},
27814
28933
  "type": "array"
27815
28934
  },
@@ -28017,7 +29136,7 @@
28017
29136
  },
28018
29137
  "scales": {
28019
29138
  "additionalProperties": false,
28020
- "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error.",
29139
+ "description": "Defines properties for scale resolutions used by this view subtree.\n\nUse this when a composed view shares a scale across child views and the scale settings, such as the visible domain, belong to the composed view rather than an individual encoding. An ancestor declaration shadows the whole declaration of a descendant that targets the same resolution. Declarations in separate sibling subtrees are ambiguous and cause an error. Expression references in these scale properties use this view's parameter scope and can access parameters declared here or on ancestors.",
28021
29140
  "properties": {
28022
29141
  "angle": {
28023
29142
  "$ref": "#/definitions/Scale"
@@ -28182,6 +29301,10 @@
28182
29301
  }
28183
29302
  ],
28184
29303
  "description": "Width of the view. If a number, it is interpreted as pixels. If an expression reference is provided, it must resolve to a number or `\"container\"`. Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing) for details.\n\n**Default:** `\"container\"`"
29304
+ },
29305
+ "zindex": {
29306
+ "description": "Z-order among sibling views in a composition. Higher values render later. Views with equal values render in declaration order. This does not affect layout order.\n\n__Default value:__ `0`",
29307
+ "type": "number"
28185
29308
  }
28186
29309
  },
28187
29310
  "required": [
@@ -28287,6 +29410,9 @@
28287
29410
  {
28288
29411
  "$ref": "#/definitions/SelectionDomainRef"
28289
29412
  },
29413
+ {
29414
+ "$ref": "#/definitions/ViewportDomainRef"
29415
+ },
28290
29416
  {
28291
29417
  "$ref": "#/definitions/ExprRef"
28292
29418
  },
@@ -28294,7 +29420,7 @@
28294
29420
  "$ref": "#/definitions/DomainValueArray"
28295
29421
  }
28296
29422
  ],
28297
- "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references."
29423
+ "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references. All parameter names referenced by a scale, including selection-domain parameters, resolve from the view that owns the scale resolution. For a shared scale, declare controlling parameters on that owning composed view or an ancestor."
28298
29424
  },
28299
29425
  "domainMax": {
28300
29426
  "description": "Sets the maximum value in the scale domain, overriding the `domain` property. This property is only intended for use with scales having continuous domains.",
@@ -28401,7 +29527,7 @@
28401
29527
  "type": "string"
28402
29528
  }
28403
29529
  ],
28404
- "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
29530
+ "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
28405
29531
  },
28406
29532
  "reverse": {
28407
29533
  "description": "If true, reverses the order of the scale range.\n\n__Default value:__ `false`.",
@@ -28492,6 +29618,9 @@
28492
29618
  {
28493
29619
  "$ref": "#/definitions/SelectionDomainRef"
28494
29620
  },
29621
+ {
29622
+ "$ref": "#/definitions/ViewportDomainRef"
29623
+ },
28495
29624
  {
28496
29625
  "$ref": "#/definitions/ExprRef"
28497
29626
  },
@@ -28499,7 +29628,7 @@
28499
29628
  "$ref": "#/definitions/DomainValueArray"
28500
29629
  }
28501
29630
  ],
28502
- "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references."
29631
+ "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references. All parameter names referenced by a scale, including selection-domain parameters, resolve from the view that owns the scale resolution. For a shared scale, declare controlling parameters on that owning composed view or an ancestor."
28503
29632
  },
28504
29633
  "domainMax": {
28505
29634
  "description": "Sets the maximum value in the scale domain, overriding the `domain` property. This property is only intended for use with scales having continuous domains.",
@@ -28570,6 +29699,9 @@
28570
29699
  {
28571
29700
  "$ref": "#/definitions/SelectionDomainRef"
28572
29701
  },
29702
+ {
29703
+ "$ref": "#/definitions/ViewportDomainRef"
29704
+ },
28573
29705
  {
28574
29706
  "$ref": "#/definitions/ExprRef"
28575
29707
  },
@@ -28577,7 +29709,7 @@
28577
29709
  "$ref": "#/definitions/DomainValueArray"
28578
29710
  }
28579
29711
  ],
28580
- "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references."
29712
+ "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references. All parameter names referenced by a scale, including selection-domain parameters, resolve from the view that owns the scale resolution. For a shared scale, declare controlling parameters on that owning composed view or an ancestor."
28581
29713
  },
28582
29714
  "domainMax": {
28583
29715
  "description": "Sets the maximum value in the scale domain, overriding the `domain` property. This property is only intended for use with scales having continuous domains.",
@@ -28684,7 +29816,7 @@
28684
29816
  "type": "string"
28685
29817
  }
28686
29818
  ],
28687
- "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
29819
+ "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
28688
29820
  },
28689
29821
  "reverse": {
28690
29822
  "description": "If true, reverses the order of the scale range.\n\n__Default value:__ `false`.",
@@ -28787,6 +29919,9 @@
28787
29919
  {
28788
29920
  "$ref": "#/definitions/SelectionDomainRef"
28789
29921
  },
29922
+ {
29923
+ "$ref": "#/definitions/ViewportDomainRef"
29924
+ },
28790
29925
  {
28791
29926
  "$ref": "#/definitions/ExprRef"
28792
29927
  },
@@ -28794,7 +29929,7 @@
28794
29929
  "$ref": "#/definitions/DomainValueArray"
28795
29930
  }
28796
29931
  ],
28797
- "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references."
29932
+ "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references. All parameter names referenced by a scale, including selection-domain parameters, resolve from the view that owns the scale resolution. For a shared scale, declare controlling parameters on that owning composed view or an ancestor."
28798
29933
  },
28799
29934
  "domainMax": {
28800
29935
  "description": "Sets the maximum value in the scale domain, overriding the `domain` property. This property is only intended for use with scales having continuous domains.",
@@ -28901,7 +30036,7 @@
28901
30036
  "type": "string"
28902
30037
  }
28903
30038
  ],
28904
- "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
30039
+ "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
28905
30040
  },
28906
30041
  "reverse": {
28907
30042
  "description": "If true, reverses the order of the scale range.\n\n__Default value:__ `false`.",
@@ -29024,6 +30159,9 @@
29024
30159
  {
29025
30160
  "$ref": "#/definitions/SelectionDomainRef"
29026
30161
  },
30162
+ {
30163
+ "$ref": "#/definitions/ViewportDomainRef"
30164
+ },
29027
30165
  {
29028
30166
  "$ref": "#/definitions/ExprRef"
29029
30167
  },
@@ -29031,7 +30169,7 @@
29031
30169
  "$ref": "#/definitions/DomainValueArray"
29032
30170
  }
29033
30171
  ],
29034
- "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references."
30172
+ "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references. All parameter names referenced by a scale, including selection-domain parameters, resolve from the view that owns the scale resolution. For a shared scale, declare controlling parameters on that owning composed view or an ancestor."
29035
30173
  },
29036
30174
  "domainMax": {
29037
30175
  "description": "Sets the maximum value in the scale domain, overriding the `domain` property. This property is only intended for use with scales having continuous domains.",
@@ -29138,7 +30276,7 @@
29138
30276
  "type": "string"
29139
30277
  }
29140
30278
  ],
29141
- "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
30279
+ "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
29142
30280
  },
29143
30281
  "reverse": {
29144
30282
  "description": "If true, reverses the order of the scale range.\n\n__Default value:__ `false`.",
@@ -29238,6 +30376,9 @@
29238
30376
  {
29239
30377
  "$ref": "#/definitions/SelectionDomainRef"
29240
30378
  },
30379
+ {
30380
+ "$ref": "#/definitions/ViewportDomainRef"
30381
+ },
29241
30382
  {
29242
30383
  "$ref": "#/definitions/ExprRef"
29243
30384
  },
@@ -29245,7 +30386,7 @@
29245
30386
  "$ref": "#/definitions/DomainValueArray"
29246
30387
  }
29247
30388
  ],
29248
- "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references."
30389
+ "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references. All parameter names referenced by a scale, including selection-domain parameters, resolve from the view that owns the scale resolution. For a shared scale, declare controlling parameters on that owning composed view or an ancestor."
29249
30390
  },
29250
30391
  "domainMax": {
29251
30392
  "description": "Sets the maximum value in the scale domain, overriding the `domain` property. This property is only intended for use with scales having continuous domains.",
@@ -29352,7 +30493,7 @@
29352
30493
  "type": "string"
29353
30494
  }
29354
30495
  ],
29355
- "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
30496
+ "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
29356
30497
  },
29357
30498
  "reverse": {
29358
30499
  "description": "If true, reverses the order of the scale range.\n\n__Default value:__ `false`.",
@@ -29465,6 +30606,9 @@
29465
30606
  {
29466
30607
  "$ref": "#/definitions/SelectionDomainRef"
29467
30608
  },
30609
+ {
30610
+ "$ref": "#/definitions/ViewportDomainRef"
30611
+ },
29468
30612
  {
29469
30613
  "$ref": "#/definitions/ExprRef"
29470
30614
  },
@@ -29472,7 +30616,7 @@
29472
30616
  "$ref": "#/definitions/DomainValueArray"
29473
30617
  }
29474
30618
  ],
29475
- "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references."
30619
+ "description": "Customized domain values.\n\nFor _quantitative_ fields, `domain` can take the form of a two-element array with minimum and maximum values. [Vega-Lite piecewise scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise) can be created by providing a `domain` with more than two entries.\n\nFor _ordinal_ and _nominal_ fields, `domain` can be an array that lists valid input values.\n\nThe domain can also be defined by an expression reference that evaluates to the domain array. Array elements may also be expression references. All parameter names referenced by a scale, including selection-domain parameters, resolve from the view that owns the scale resolution. For a shared scale, declare controlling parameters on that owning composed view or an ancestor."
29476
30620
  },
29477
30621
  "domainMax": {
29478
30622
  "description": "Sets the maximum value in the scale domain, overriding the `domain` property. This property is only intended for use with scales having continuous domains.",
@@ -29579,7 +30723,7 @@
29579
30723
  "type": "string"
29580
30724
  }
29581
30725
  ],
29582
- "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
30726
+ "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
29583
30727
  },
29584
30728
  "reverse": {
29585
30729
  "description": "If true, reverses the order of the scale range.\n\n__Default value:__ `false`.",
@@ -29648,7 +30792,7 @@
29648
30792
  "type": "string"
29649
30793
  }
29650
30794
  ],
29651
- "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
30795
+ "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range from Vega-Lite](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [Vega-Lite continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [Vega-Lite piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise). Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n- For [Vega-Lite discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [Vega-Lite discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values. Array elements may also be expression references, which use the parameter scope of the view that owns the scale resolution.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [Vega-Lite size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
29652
30796
  },
29653
30797
  "reverse": {
29654
30798
  "description": "If true, reverses the order of the scale range.\n\n__Default value:__ `false`.",
@@ -29864,7 +31008,7 @@
29864
31008
  "description": "Initial configured domain for the linked scale when the linked interval selection is empty.\n\nOnly supported when the linked scale is zoomable.\n\nClearing the linked interval selection resets the domain to the normal default/data-derived domain instead of restoring `initial`."
29865
31009
  },
29866
31010
  "param": {
29867
- "description": "Name of an interval selection parameter that provides the domain.",
31011
+ "description": "Name of an interval selection parameter that provides the domain. The name resolves from the view that owns the scale resolution.",
29868
31012
  "type": "string"
29869
31013
  }
29870
31014
  },
@@ -29889,7 +31033,7 @@
29889
31033
  "type": "string"
29890
31034
  },
29891
31035
  "empty": {
29892
- "description": "If true, the filter retains all data objects when the selection is empty.\n\n**Default:** `true`",
31036
+ "description": "If true, the filter retains all rows when the selection is empty.\n\n**Default:** `true`",
29893
31037
  "type": "boolean"
29894
31038
  },
29895
31039
  "fields": {
@@ -29912,7 +31056,7 @@
29912
31056
  "type": "object"
29913
31057
  },
29914
31058
  "param": {
29915
- "description": "A selection parameter. The data object is removed if it is not part of the selection.",
31059
+ "description": "A selection parameter. The row is removed if it is not part of the selection.",
29916
31060
  "type": "string"
29917
31061
  },
29918
31062
  "type": {
@@ -29966,6 +31110,7 @@
29966
31110
  },
29967
31111
  "push": {
29968
31112
  "const": "outer",
31113
+ "description": "Reuses the nearest same-named parameter in an ancestor scope and writes updates to it. Declare the target parameter on the ancestor first.\n\nThis is useful when interaction in a child view updates state owned by a composed view, such as a parameter that controls a shared scale.",
29969
31114
  "type": "string"
29970
31115
  },
29971
31116
  "select": {
@@ -30025,7 +31170,7 @@
30025
31170
  "type": "string"
30026
31171
  }
30027
31172
  ],
30028
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
31173
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
30029
31174
  },
30030
31175
  "color": {
30031
31176
  "anyOf": [
@@ -30069,10 +31214,6 @@
30069
31214
  "description": "Whether separators extend into the plot margin (axes/padding) around the grid.\n\n__Default value:__ `true`",
30070
31215
  "type": "boolean"
30071
31216
  },
30072
- "minBufferSize": {
30073
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
30074
- "type": "number"
30075
- },
30076
31217
  "minLength": {
30077
31218
  "anyOf": [
30078
31219
  {
@@ -30429,7 +31570,7 @@
30429
31570
  },
30430
31571
  "baseField": {
30431
31572
  "$ref": "#/definitions/Field",
30432
- "description": "The field that contains the base or amino acid. Used for information content calculation when the offset is `\"information\"`. The data objects that have `null` in the baseField are considered gaps and they are taken into account when scaling the the locus' information content."
31573
+ "description": "The field that contains the base or amino acid. Used for information content calculation when the offset is `\"information\"`. Rows that have `null` in the baseField are considered gaps and they are taken into account when scaling the the locus' information content."
30433
31574
  },
30434
31575
  "cardinality": {
30435
31576
  "description": "Cardinality, e.g., the number if distinct bases or amino acids. Used for information content calculation when the offset is `\"information\"`.\n\n**Default:** `4`",
@@ -30871,7 +32012,7 @@
30871
32012
  "type": "string"
30872
32013
  }
30873
32014
  ],
30874
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
32015
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
30875
32016
  },
30876
32017
  "color": {
30877
32018
  "anyOf": [
@@ -31105,7 +32246,7 @@
31105
32246
  ]
31106
32247
  },
31107
32248
  "extraValues": {
31108
- "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed.\n\nThis property is ignored on discrete scales and when `values` is set.",
32249
+ "description": "Additional tick and label values to include alongside automatically generated ticks on continuous scales. Values outside the visible scale range are omitted and duplicates are removed. During automatic overlap removal, these labels are reduced against other explicitly specified labels but take precedence over automatically generated labels.\n\nThis property is ignored on discrete scales and when `values` is set.",
31109
32250
  "items": {
31110
32251
  "type": "number"
31111
32252
  },
@@ -31157,7 +32298,7 @@
31157
32298
  "$ref": "#/definitions/ExprRef"
31158
32299
  }
31159
32300
  ],
31160
- "description": "If true, sets the secondary positional channel that allows the text to be squeezed (see the `squeeze` property). Can be used when: 1) `\"band\"`, `\"index\"`, or `\"locus\"` scale is being used and 2) only the primary positional channel is specified.\n\n**Default value:** `false`"
32301
+ "description": "If true, sets the secondary positional channel that allows the text to be squeezed (see the `squeeze` property). Can be used when: 1) `\"band\"`, `\"index\"`, or `\"locus\"` scale is being used and 2) only the primary positional channel is specified.\n\nExpressions are evaluated when the mark is initialized and cannot change reactively.\n\n**Default value:** `false`"
31161
32302
  },
31162
32303
  "flushX": {
31163
32304
  "anyOf": [
@@ -31238,6 +32379,7 @@
31238
32379
  "description": "The reference frame for the title anchor. `\"group\"` anchors the title along the plot area. `\"bounds\"` anchors the title along the full bounds, including axes, legends, and other reserved space.\n\n__Default value:__ `\"group\"`"
31239
32380
  },
31240
32381
  "geometricZoomBound": {
32382
+ "deprecated": "This property will be removed in GenomeSpy v2.0. Use an\nexpression-valued `size` instead.",
31241
32383
  "description": "Enables geometric zooming. The value is the base two logarithmic zoom level where the maximum point size is reached.\n\n**Default value:** `0`",
31242
32384
  "type": "number"
31243
32385
  },
@@ -31482,6 +32624,17 @@
31482
32624
  }
31483
32625
  ]
31484
32626
  },
32627
+ "labelFlush": {
32628
+ "description": "Indicates whether labels near the beginning or end of the axis should be aligned flush with the scale range. A number specifies the endpoint distance threshold in pixels. `true` uses a threshold of one pixel.\n\nFlushing is supported for quantitative, index, and locus axes. By default, it is enabled for non-zoomable x axes of these types. On a zoomable x axis with a configured bounded zoom extent, ticks matching the extent boundaries are flushed while they remain visible. Other zoomable ticks and y-axis ticks are not flushed by default. Flushing supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles.",
32629
+ "type": [
32630
+ "boolean",
32631
+ "number"
32632
+ ]
32633
+ },
32634
+ "labelFlushOffset": {
32635
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
32636
+ "type": "number"
32637
+ },
31485
32638
  "labelFont": {
31486
32639
  "anyOf": [
31487
32640
  {
@@ -31547,10 +32700,31 @@
31547
32700
  "description": "Offset between legend symbols and labels in pixels.",
31548
32701
  "type": "number"
31549
32702
  },
32703
+ "labelOverlap": {
32704
+ "anyOf": [
32705
+ {
32706
+ "type": "boolean"
32707
+ },
32708
+ {
32709
+ "const": "parity",
32710
+ "type": "string"
32711
+ },
32712
+ {
32713
+ "const": "greedy",
32714
+ "type": "string"
32715
+ }
32716
+ ],
32717
+ "description": "The strategy for removing overlapping axis labels. `true` uses the `\"parity\"` strategy. `\"parity\"` removes every other label until the remaining labels no longer overlap. `\"greedy\"` keeps each label that does not overlap the previously retained label. `false` disables overlap removal.\n\nBy default, overlap removal uses `\"parity\"` for linear-like continuous scales and `\"greedy\"` for logarithmic and symlog scales. It is disabled for discrete scales. Overlap removal supports label angles that are multiples of 90 degrees. The automatic behavior is disabled at other angles."
32718
+ },
31550
32719
  "labelPadding": {
31551
32720
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
31552
32721
  "type": "number"
31553
32722
  },
32723
+ "labelSeparation": {
32724
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
32725
+ "minimum": 0,
32726
+ "type": "number"
32727
+ },
31554
32728
  "labels": {
31555
32729
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
31556
32730
  "type": "boolean"
@@ -31620,10 +32794,6 @@
31620
32794
  ],
31621
32795
  "description": "The minimum height of an `\"arc\"` shape. Makes very short links more clearly visible.\n\n**Default value:** `1.5`"
31622
32796
  },
31623
- "minBufferSize": {
31624
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
31625
- "type": "number"
31626
- },
31627
32797
  "minExtent": {
31628
32798
  "description": "The minimum extent in pixels that axis ticks and labels should use. This determines a minimum offset value for axis titles.\n\n__Default value:__ `30` for y-axis; `undefined` for x-axis.",
31629
32799
  "type": "number"
@@ -32398,7 +33568,7 @@
32398
33568
  "values": {
32399
33569
  "anyOf": [
32400
33570
  {
32401
- "description": "Explicitly set the visible axis tick and label values.",
33571
+ "description": "Explicitly set the visible axis tick and label values. During automatic overlap removal, these labels are reduced against each other but take precedence over automatically generated labels.",
32402
33572
  "items": {},
32403
33573
  "type": "array"
32404
33574
  },
@@ -32416,28 +33586,84 @@
32416
33586
  ]
32417
33587
  },
32418
33588
  "viewportEdgeFadeDistanceBottom": {
32419
- "type": "number"
33589
+ "anyOf": [
33590
+ {
33591
+ "type": "number"
33592
+ },
33593
+ {
33594
+ "$ref": "#/definitions/ExprRef"
33595
+ }
33596
+ ]
32420
33597
  },
32421
33598
  "viewportEdgeFadeDistanceLeft": {
32422
- "type": "number"
33599
+ "anyOf": [
33600
+ {
33601
+ "type": "number"
33602
+ },
33603
+ {
33604
+ "$ref": "#/definitions/ExprRef"
33605
+ }
33606
+ ]
32423
33607
  },
32424
33608
  "viewportEdgeFadeDistanceRight": {
32425
- "type": "number"
33609
+ "anyOf": [
33610
+ {
33611
+ "type": "number"
33612
+ },
33613
+ {
33614
+ "$ref": "#/definitions/ExprRef"
33615
+ }
33616
+ ]
32426
33617
  },
32427
33618
  "viewportEdgeFadeDistanceTop": {
32428
- "type": "number"
33619
+ "anyOf": [
33620
+ {
33621
+ "type": "number"
33622
+ },
33623
+ {
33624
+ "$ref": "#/definitions/ExprRef"
33625
+ }
33626
+ ]
32429
33627
  },
32430
33628
  "viewportEdgeFadeWidthBottom": {
32431
- "type": "number"
33629
+ "anyOf": [
33630
+ {
33631
+ "type": "number"
33632
+ },
33633
+ {
33634
+ "$ref": "#/definitions/ExprRef"
33635
+ }
33636
+ ]
32432
33637
  },
32433
33638
  "viewportEdgeFadeWidthLeft": {
32434
- "type": "number"
33639
+ "anyOf": [
33640
+ {
33641
+ "type": "number"
33642
+ },
33643
+ {
33644
+ "$ref": "#/definitions/ExprRef"
33645
+ }
33646
+ ]
32435
33647
  },
32436
33648
  "viewportEdgeFadeWidthRight": {
32437
- "type": "number"
33649
+ "anyOf": [
33650
+ {
33651
+ "type": "number"
33652
+ },
33653
+ {
33654
+ "$ref": "#/definitions/ExprRef"
33655
+ }
33656
+ ]
32438
33657
  },
32439
33658
  "viewportEdgeFadeWidthTop": {
32440
- "type": "number"
33659
+ "anyOf": [
33660
+ {
33661
+ "type": "number"
33662
+ },
33663
+ {
33664
+ "$ref": "#/definitions/ExprRef"
33665
+ }
33666
+ ]
32441
33667
  },
32442
33668
  "x": {
32443
33669
  "anyOf": [
@@ -32684,7 +33910,7 @@
32684
33910
  "type": "string"
32685
33911
  }
32686
33912
  ],
32687
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
33913
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
32688
33914
  },
32689
33915
  "color": {
32690
33916
  "anyOf": [
@@ -32741,7 +33967,7 @@
32741
33967
  "$ref": "#/definitions/ExprRef"
32742
33968
  }
32743
33969
  ],
32744
- "description": "If true, sets the secondary positional channel that allows the text to be squeezed (see the `squeeze` property). Can be used when: 1) `\"band\"`, `\"index\"`, or `\"locus\"` scale is being used and 2) only the primary positional channel is specified.\n\n**Default value:** `false`"
33970
+ "description": "If true, sets the secondary positional channel that allows the text to be squeezed (see the `squeeze` property). Can be used when: 1) `\"band\"`, `\"index\"`, or `\"locus\"` scale is being used and 2) only the primary positional channel is specified.\n\nExpressions are evaluated when the mark is initialized and cannot change reactively.\n\n**Default value:** `false`"
32745
33971
  },
32746
33972
  "flushX": {
32747
33973
  "anyOf": [
@@ -32788,10 +34014,6 @@
32788
34014
  ],
32789
34015
  "description": "Stretch letters so that they can be used with [sequence logos](https://en.wikipedia.org/wiki/Sequence_logo), etc..."
32790
34016
  },
32791
- "minBufferSize": {
32792
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
32793
- "type": "number"
32794
- },
32795
34017
  "opacity": {
32796
34018
  "anyOf": [
32797
34019
  {
@@ -32877,28 +34099,84 @@
32877
34099
  "description": "Tooltip handler. If `null`, no tooltip is shown. If string, specifies the [tooltip handler](https://genomespy.app/docs/api/embed-options/#custom-tooltip-handlers) to use."
32878
34100
  },
32879
34101
  "viewportEdgeFadeDistanceBottom": {
32880
- "type": "number"
34102
+ "anyOf": [
34103
+ {
34104
+ "type": "number"
34105
+ },
34106
+ {
34107
+ "$ref": "#/definitions/ExprRef"
34108
+ }
34109
+ ]
32881
34110
  },
32882
34111
  "viewportEdgeFadeDistanceLeft": {
32883
- "type": "number"
34112
+ "anyOf": [
34113
+ {
34114
+ "type": "number"
34115
+ },
34116
+ {
34117
+ "$ref": "#/definitions/ExprRef"
34118
+ }
34119
+ ]
32884
34120
  },
32885
34121
  "viewportEdgeFadeDistanceRight": {
32886
- "type": "number"
34122
+ "anyOf": [
34123
+ {
34124
+ "type": "number"
34125
+ },
34126
+ {
34127
+ "$ref": "#/definitions/ExprRef"
34128
+ }
34129
+ ]
32887
34130
  },
32888
34131
  "viewportEdgeFadeDistanceTop": {
32889
- "type": "number"
34132
+ "anyOf": [
34133
+ {
34134
+ "type": "number"
34135
+ },
34136
+ {
34137
+ "$ref": "#/definitions/ExprRef"
34138
+ }
34139
+ ]
32890
34140
  },
32891
34141
  "viewportEdgeFadeWidthBottom": {
32892
- "type": "number"
34142
+ "anyOf": [
34143
+ {
34144
+ "type": "number"
34145
+ },
34146
+ {
34147
+ "$ref": "#/definitions/ExprRef"
34148
+ }
34149
+ ]
32893
34150
  },
32894
34151
  "viewportEdgeFadeWidthLeft": {
32895
- "type": "number"
34152
+ "anyOf": [
34153
+ {
34154
+ "type": "number"
34155
+ },
34156
+ {
34157
+ "$ref": "#/definitions/ExprRef"
34158
+ }
34159
+ ]
32896
34160
  },
32897
34161
  "viewportEdgeFadeWidthRight": {
32898
- "type": "number"
34162
+ "anyOf": [
34163
+ {
34164
+ "type": "number"
34165
+ },
34166
+ {
34167
+ "$ref": "#/definitions/ExprRef"
34168
+ }
34169
+ ]
32899
34170
  },
32900
34171
  "viewportEdgeFadeWidthTop": {
32901
- "type": "number"
34172
+ "anyOf": [
34173
+ {
34174
+ "type": "number"
34175
+ },
34176
+ {
34177
+ "$ref": "#/definitions/ExprRef"
34178
+ }
34179
+ ]
32902
34180
  },
32903
34181
  "x": {
32904
34182
  "anyOf": [
@@ -33051,7 +34329,7 @@
33051
34329
  "type": "string"
33052
34330
  }
33053
34331
  ],
33054
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
34332
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
33055
34333
  },
33056
34334
  "color": {
33057
34335
  "anyOf": [
@@ -33108,7 +34386,7 @@
33108
34386
  "$ref": "#/definitions/ExprRef"
33109
34387
  }
33110
34388
  ],
33111
- "description": "If true, sets the secondary positional channel that allows the text to be squeezed (see the `squeeze` property). Can be used when: 1) `\"band\"`, `\"index\"`, or `\"locus\"` scale is being used and 2) only the primary positional channel is specified.\n\n**Default value:** `false`"
34389
+ "description": "If true, sets the secondary positional channel that allows the text to be squeezed (see the `squeeze` property). Can be used when: 1) `\"band\"`, `\"index\"`, or `\"locus\"` scale is being used and 2) only the primary positional channel is specified.\n\nExpressions are evaluated when the mark is initialized and cannot change reactively.\n\n**Default value:** `false`"
33112
34390
  },
33113
34391
  "flushX": {
33114
34392
  "anyOf": [
@@ -33155,10 +34433,6 @@
33155
34433
  ],
33156
34434
  "description": "Stretch letters so that they can be used with [sequence logos](https://en.wikipedia.org/wiki/Sequence_logo), etc..."
33157
34435
  },
33158
- "minBufferSize": {
33159
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
33160
- "type": "number"
33161
- },
33162
34436
  "opacity": {
33163
34437
  "anyOf": [
33164
34438
  {
@@ -33248,28 +34522,84 @@
33248
34522
  "type": "string"
33249
34523
  },
33250
34524
  "viewportEdgeFadeDistanceBottom": {
33251
- "type": "number"
34525
+ "anyOf": [
34526
+ {
34527
+ "type": "number"
34528
+ },
34529
+ {
34530
+ "$ref": "#/definitions/ExprRef"
34531
+ }
34532
+ ]
33252
34533
  },
33253
34534
  "viewportEdgeFadeDistanceLeft": {
33254
- "type": "number"
34535
+ "anyOf": [
34536
+ {
34537
+ "type": "number"
34538
+ },
34539
+ {
34540
+ "$ref": "#/definitions/ExprRef"
34541
+ }
34542
+ ]
33255
34543
  },
33256
34544
  "viewportEdgeFadeDistanceRight": {
33257
- "type": "number"
34545
+ "anyOf": [
34546
+ {
34547
+ "type": "number"
34548
+ },
34549
+ {
34550
+ "$ref": "#/definitions/ExprRef"
34551
+ }
34552
+ ]
33258
34553
  },
33259
34554
  "viewportEdgeFadeDistanceTop": {
33260
- "type": "number"
34555
+ "anyOf": [
34556
+ {
34557
+ "type": "number"
34558
+ },
34559
+ {
34560
+ "$ref": "#/definitions/ExprRef"
34561
+ }
34562
+ ]
33261
34563
  },
33262
34564
  "viewportEdgeFadeWidthBottom": {
33263
- "type": "number"
34565
+ "anyOf": [
34566
+ {
34567
+ "type": "number"
34568
+ },
34569
+ {
34570
+ "$ref": "#/definitions/ExprRef"
34571
+ }
34572
+ ]
33264
34573
  },
33265
34574
  "viewportEdgeFadeWidthLeft": {
33266
- "type": "number"
34575
+ "anyOf": [
34576
+ {
34577
+ "type": "number"
34578
+ },
34579
+ {
34580
+ "$ref": "#/definitions/ExprRef"
34581
+ }
34582
+ ]
33267
34583
  },
33268
34584
  "viewportEdgeFadeWidthRight": {
33269
- "type": "number"
34585
+ "anyOf": [
34586
+ {
34587
+ "type": "number"
34588
+ },
34589
+ {
34590
+ "$ref": "#/definitions/ExprRef"
34591
+ }
34592
+ ]
33270
34593
  },
33271
34594
  "viewportEdgeFadeWidthTop": {
33272
- "type": "number"
34595
+ "anyOf": [
34596
+ {
34597
+ "type": "number"
34598
+ },
34599
+ {
34600
+ "$ref": "#/definitions/ExprRef"
34601
+ }
34602
+ ]
33273
34603
  },
33274
34604
  "x": {
33275
34605
  "anyOf": [
@@ -33390,7 +34720,7 @@
33390
34720
  "type": "string"
33391
34721
  }
33392
34722
  ],
33393
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
34723
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
33394
34724
  },
33395
34725
  "color": {
33396
34726
  "anyOf": [
@@ -33430,10 +34760,6 @@
33430
34760
  ],
33431
34761
  "description": "Mouse cursor shown while the pointer is over the mark. Mark cursor takes precedence over enclosing view cursors.\n\n__Default value:__ browser default"
33432
34762
  },
33433
- "minBufferSize": {
33434
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
33435
- "type": "number"
33436
- },
33437
34763
  "minLength": {
33438
34764
  "anyOf": [
33439
34765
  {
@@ -33611,7 +34937,7 @@
33611
34937
  "type": "string"
33612
34938
  }
33613
34939
  ],
33614
- "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ the direction of zoomable positional scales"
34940
+ "description": "Controls whether the mark is clipped to the UnitView's rectangle. The values `\"x\"` and `\"y\"` clip only in the corresponding screen-space direction. Inherited clipping from parent containers still applies unless `\"never\"` is used.\n\n__Default value:__ `true` when either positional scale is zoomable; otherwise `false`"
33615
34941
  },
33616
34942
  "color": {
33617
34943
  "anyOf": [
@@ -33651,10 +34977,6 @@
33651
34977
  ],
33652
34978
  "description": "Mouse cursor shown while the pointer is over the mark. Mark cursor takes precedence over enclosing view cursors.\n\n__Default value:__ browser default"
33653
34979
  },
33654
- "minBufferSize": {
33655
- "description": "Minimum size for WebGL buffers (number of data items). Allows for using `bufferSubData()` to update graphics.\n\nThis property is intended for internal use.",
33656
- "type": "number"
33657
- },
33658
34980
  "minLength": {
33659
34981
  "anyOf": [
33660
34982
  {
@@ -34234,6 +35556,9 @@
34234
35556
  {
34235
35557
  "$ref": "#/definitions/FilterParams"
34236
35558
  },
35559
+ {
35560
+ "$ref": "#/definitions/AxisLabelLayoutParams"
35561
+ },
34237
35562
  {
34238
35563
  "$ref": "#/definitions/FilterScoredLabelsParams"
34239
35564
  },
@@ -34345,6 +35670,7 @@
34345
35670
  },
34346
35671
  "push": {
34347
35672
  "const": "outer",
35673
+ "description": "Reuses the nearest same-named parameter in an ancestor scope and writes updates to it. Declare the target parameter on the ancestor first.\n\nThis is useful when interaction in a child view updates state owned by a composed view, such as a parameter that controls a shared scale.",
34348
35674
  "type": "string"
34349
35675
  },
34350
35676
  "transition": {
@@ -35208,6 +36534,20 @@
35208
36534
  }
35209
36535
  ]
35210
36536
  },
36537
+ "ViewportDomainRef": {
36538
+ "additionalProperties": false,
36539
+ "properties": {
36540
+ "source": {
36541
+ "const": "viewport",
36542
+ "description": "Derives the domain from data in the current positional viewport.\n\nThe domain is updated shortly after navigation pauses. Normal data-derived domain options, such as `zero` and `nice`, still apply.",
36543
+ "type": "string"
36544
+ }
36545
+ },
36546
+ "required": [
36547
+ "source"
36548
+ ],
36549
+ "type": "object"
36550
+ },
35211
36551
  "WigDataFormat": {
35212
36552
  "additionalProperties": false,
35213
36553
  "properties": {