@genome-spy/app 0.84.0 → 0.85.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 (42) hide show
  1. package/dist/{agentApi-DHXYZVvQ.js → agentApi-Cz0hCnVp.js} +5790 -5190
  2. package/dist/agentApi.es.js +3117 -2793
  3. package/dist/agentShared.es.js +8 -8
  4. package/dist/arrayUtils-LJpQOu-U.js +2175 -0
  5. package/dist/canvas2d-DoAXEiF9.js +309 -0
  6. package/dist/canvas2d-f5jl4A5D.js +310 -0
  7. package/dist/canvasSizeHelper-7h_8rOcx.js +56 -0
  8. package/dist/clipOptions-gqdb3fvW.js +43 -0
  9. package/dist/{clipOptions-Dqco1p8b.js → color-W5zffv-z.js} +1 -43
  10. package/dist/{debug-aHQsa6hU.js → debug-BvCZWumf.js} +2 -2
  11. package/dist/{debug-D6FqxKEj.js → debug-CgDtmspT.js} +2 -2
  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/{framebufferReadback-CC0D6Haw.js → framebufferReadback-CCLOjStu.js} +26 -25
  17. package/dist/{framebufferReadback-Bje9lHb7.js → framebufferReadback-THWwFqs8.js} +14 -13
  18. package/dist/index.es.js +541 -538
  19. package/dist/index.js +560 -554
  20. package/dist/nativeText-DMO8gLt7.js +806 -0
  21. package/dist/nativeText-m5AUINMq.js +806 -0
  22. package/dist/paramUtils-BYI4rwyL.js +2195 -0
  23. package/dist/schema.json +1488 -88
  24. package/dist/style.css +1 -1
  25. package/dist/svg-CCu8kYy2.js +1158 -0
  26. package/dist/svg-yFj875aX.js +1158 -0
  27. package/dist/{svgNumber-C6aRPc8Z.js → svgNumber-DNxESJQB.js} +1 -1
  28. package/dist/{twgl-full.module-BNEMlXRV.js → twgl-full.module-DB2UdP1k.js} +1 -1
  29. package/dist/{viewIdentityRegistry-AEQpJTDm.js → viewIdentityRegistry-BUdkK9zT.js} +1 -1
  30. package/dist/{viewIdentityRegistry-Dl7rR4Ay.js → viewIdentityRegistry-D3oPbN4O.js} +1 -1
  31. package/dist/viewSelectors-DGCspRN3.js +4198 -0
  32. package/dist/viewSelectors-U5oLCLHV.js +4195 -0
  33. package/dist/{viewUtils-DMNiWslc.js → viewUtils-Dg4RA40Q.js} +2384 -2109
  34. package/dist/warning-CpIIpk8e.js +7 -0
  35. package/dist/warning-DRGdb6BF.js +59 -0
  36. package/dist/{raster-BofBWXbe.js → webgl-Ci6ZhCCf.js} +4 -4
  37. package/dist/{raster-9uKYMjHZ.js → webgl-Dpz8a3TI.js} +3 -3
  38. package/package.json +5 -5
  39. package/dist/svg-CvsT1Y2V.js +0 -1793
  40. package/dist/svg-DRgWfcsL.js +0 -1793
  41. package/dist/viewSelectors-BhW4mTR1.js +0 -6386
  42. package/dist/viewSelectors-Bwzj10Qz.js +0 -6363
package/dist/schema.json CHANGED
@@ -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
  },
@@ -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
  },
@@ -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
  },
@@ -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
  },
@@ -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
  },
@@ -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
  },
@@ -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
  },
@@ -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
  },
@@ -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
  },
@@ -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
  },
@@ -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
  },
@@ -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
  },
@@ -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
  },
@@ -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": [
@@ -16064,7 +16948,7 @@
16064
16948
  "type": "number"
16065
16949
  },
16066
16950
  "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.",
16951
+ "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
16952
  "items": {
16069
16953
  "type": "number"
16070
16954
  },
@@ -16128,6 +17012,17 @@
16128
17012
  "description": "The color of the tick label, can be in hex color code or regular color name.",
16129
17013
  "type": "string"
16130
17014
  },
17015
+ "labelFlush": {
17016
+ "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.",
17017
+ "type": [
17018
+ "boolean",
17019
+ "number"
17020
+ ]
17021
+ },
17022
+ "labelFlushOffset": {
17023
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
17024
+ "type": "number"
17025
+ },
16131
17026
  "labelFont": {
16132
17027
  "description": "The font of the tick label.",
16133
17028
  "type": "string"
@@ -16149,10 +17044,31 @@
16149
17044
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
16150
17045
  "type": "number"
16151
17046
  },
17047
+ "labelOverlap": {
17048
+ "anyOf": [
17049
+ {
17050
+ "type": "boolean"
17051
+ },
17052
+ {
17053
+ "const": "parity",
17054
+ "type": "string"
17055
+ },
17056
+ {
17057
+ "const": "greedy",
17058
+ "type": "string"
17059
+ }
17060
+ ],
17061
+ "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."
17062
+ },
16152
17063
  "labelPadding": {
16153
17064
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
16154
17065
  "type": "number"
16155
17066
  },
17067
+ "labelSeparation": {
17068
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
17069
+ "minimum": 0,
17070
+ "type": "number"
17071
+ },
16156
17072
  "labels": {
16157
17073
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
16158
17074
  "type": "boolean"
@@ -16293,7 +17209,7 @@
16293
17209
  "type": "number"
16294
17210
  },
16295
17211
  "values": {
16296
- "description": "Explicitly set the visible axis tick and label values.",
17212
+ "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
17213
  "items": {},
16298
17214
  "type": "array"
16299
17215
  },
@@ -16446,7 +17362,7 @@
16446
17362
  "type": "number"
16447
17363
  },
16448
17364
  "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.",
17365
+ "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
17366
  "items": {
16451
17367
  "type": "number"
16452
17368
  },
@@ -16510,6 +17426,17 @@
16510
17426
  "description": "The color of the tick label, can be in hex color code or regular color name.",
16511
17427
  "type": "string"
16512
17428
  },
17429
+ "labelFlush": {
17430
+ "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.",
17431
+ "type": [
17432
+ "boolean",
17433
+ "number"
17434
+ ]
17435
+ },
17436
+ "labelFlushOffset": {
17437
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
17438
+ "type": "number"
17439
+ },
16513
17440
  "labelFont": {
16514
17441
  "description": "The font of the tick label.",
16515
17442
  "type": "string"
@@ -16531,10 +17458,31 @@
16531
17458
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
16532
17459
  "type": "number"
16533
17460
  },
17461
+ "labelOverlap": {
17462
+ "anyOf": [
17463
+ {
17464
+ "type": "boolean"
17465
+ },
17466
+ {
17467
+ "const": "parity",
17468
+ "type": "string"
17469
+ },
17470
+ {
17471
+ "const": "greedy",
17472
+ "type": "string"
17473
+ }
17474
+ ],
17475
+ "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."
17476
+ },
16534
17477
  "labelPadding": {
16535
17478
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
16536
17479
  "type": "number"
16537
17480
  },
17481
+ "labelSeparation": {
17482
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
17483
+ "minimum": 0,
17484
+ "type": "number"
17485
+ },
16538
17486
  "labels": {
16539
17487
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
16540
17488
  "type": "boolean"
@@ -16675,7 +17623,7 @@
16675
17623
  "type": "number"
16676
17624
  },
16677
17625
  "values": {
16678
- "description": "Explicitly set the visible axis tick and label values.",
17626
+ "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
17627
  "items": {},
16680
17628
  "type": "array"
16681
17629
  },
@@ -16704,6 +17652,116 @@
16704
17652
  ],
16705
17653
  "type": "object"
16706
17654
  },
17655
+ "AxisLabelLayoutParams": {
17656
+ "additionalProperties": false,
17657
+ "description": "Parameters for GenomeSpy's generated axis-label layout pipeline.",
17658
+ "properties": {
17659
+ "channel": {
17660
+ "$ref": "#/definitions/PrimaryPositionalChannel"
17661
+ },
17662
+ "chromLabelAlign": {
17663
+ "enum": [
17664
+ "left",
17665
+ "center",
17666
+ "right"
17667
+ ],
17668
+ "type": "string"
17669
+ },
17670
+ "chromLabelPadding": {
17671
+ "type": "number"
17672
+ },
17673
+ "chromLabelSpacing": {
17674
+ "type": "number"
17675
+ },
17676
+ "chromLabelWidth": {
17677
+ "$ref": "#/definitions/Field"
17678
+ },
17679
+ "description": {
17680
+ "description": "A description of the transform step. Can be used for documentation and agent context.",
17681
+ "type": "string"
17682
+ },
17683
+ "labelAlign": {
17684
+ "enum": [
17685
+ "left",
17686
+ "center",
17687
+ "right"
17688
+ ],
17689
+ "type": "string"
17690
+ },
17691
+ "labelAngle": {
17692
+ "type": "number"
17693
+ },
17694
+ "labelBaseline": {
17695
+ "$ref": "#/definitions/Baseline"
17696
+ },
17697
+ "labelFlush": {
17698
+ "anyOf": [
17699
+ {
17700
+ "const": false,
17701
+ "type": "boolean"
17702
+ },
17703
+ {
17704
+ "type": "number"
17705
+ }
17706
+ ]
17707
+ },
17708
+ "labelFlushOffset": {
17709
+ "type": "number"
17710
+ },
17711
+ "labelFlushZoomExtent": {
17712
+ "type": "boolean"
17713
+ },
17714
+ "labelFontSize": {
17715
+ "type": "number"
17716
+ },
17717
+ "labelOffset": {
17718
+ "type": "string"
17719
+ },
17720
+ "labelOverlap": {
17721
+ "enum": [
17722
+ false,
17723
+ "auto",
17724
+ "parity",
17725
+ "greedy"
17726
+ ],
17727
+ "type": [
17728
+ "boolean",
17729
+ "string"
17730
+ ]
17731
+ },
17732
+ "labelSeparation": {
17733
+ "type": "number"
17734
+ },
17735
+ "labelVisible": {
17736
+ "type": "string"
17737
+ },
17738
+ "labelWidth": {
17739
+ "$ref": "#/definitions/Field"
17740
+ },
17741
+ "type": {
17742
+ "const": "axisLabelLayout",
17743
+ "description": "The type of the transform to be applied",
17744
+ "type": "string"
17745
+ }
17746
+ },
17747
+ "required": [
17748
+ "channel",
17749
+ "labelAlign",
17750
+ "labelAngle",
17751
+ "labelBaseline",
17752
+ "labelFlush",
17753
+ "labelFlushOffset",
17754
+ "labelFlushZoomExtent",
17755
+ "labelFontSize",
17756
+ "labelOffset",
17757
+ "labelOverlap",
17758
+ "labelSeparation",
17759
+ "labelVisible",
17760
+ "labelWidth",
17761
+ "type"
17762
+ ],
17763
+ "type": "object"
17764
+ },
16707
17765
  "AxisOrient": {
16708
17766
  "enum": [
16709
17767
  "top",
@@ -20233,7 +21291,7 @@
20233
21291
  "type": "number"
20234
21292
  },
20235
21293
  "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.",
21294
+ "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
21295
  "items": {
20238
21296
  "type": "number"
20239
21297
  },
@@ -20297,6 +21355,17 @@
20297
21355
  "description": "The color of the tick label, can be in hex color code or regular color name.",
20298
21356
  "type": "string"
20299
21357
  },
21358
+ "labelFlush": {
21359
+ "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.",
21360
+ "type": [
21361
+ "boolean",
21362
+ "number"
21363
+ ]
21364
+ },
21365
+ "labelFlushOffset": {
21366
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
21367
+ "type": "number"
21368
+ },
20300
21369
  "labelFont": {
20301
21370
  "description": "The font of the tick label.",
20302
21371
  "type": "string"
@@ -20318,10 +21387,31 @@
20318
21387
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
20319
21388
  "type": "number"
20320
21389
  },
21390
+ "labelOverlap": {
21391
+ "anyOf": [
21392
+ {
21393
+ "type": "boolean"
21394
+ },
21395
+ {
21396
+ "const": "parity",
21397
+ "type": "string"
21398
+ },
21399
+ {
21400
+ "const": "greedy",
21401
+ "type": "string"
21402
+ }
21403
+ ],
21404
+ "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."
21405
+ },
20321
21406
  "labelPadding": {
20322
21407
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
20323
21408
  "type": "number"
20324
21409
  },
21410
+ "labelSeparation": {
21411
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
21412
+ "minimum": 0,
21413
+ "type": "number"
21414
+ },
20325
21415
  "labels": {
20326
21416
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
20327
21417
  "type": "boolean"
@@ -20462,7 +21552,7 @@
20462
21552
  "type": "number"
20463
21553
  },
20464
21554
  "values": {
20465
- "description": "Explicitly set the visible axis tick and label values.",
21555
+ "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
21556
  "items": {},
20467
21557
  "type": "array"
20468
21558
  },
@@ -20771,6 +21861,10 @@
20771
21861
  "visible": {
20772
21862
  "description": "Overrides the visibility of the imported view.\n\nIf not specified, the imported specification's `visible` property is used.",
20773
21863
  "type": "boolean"
21864
+ },
21865
+ "zindex": {
21866
+ "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`",
21867
+ "type": "number"
20774
21868
  }
20775
21869
  },
20776
21870
  "required": [
@@ -27198,7 +28292,7 @@
27198
28292
  "type": "number"
27199
28293
  },
27200
28294
  "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.",
28295
+ "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
28296
  "items": {
27203
28297
  "type": "number"
27204
28298
  },
@@ -27262,6 +28356,17 @@
27262
28356
  "description": "The color of the tick label, can be in hex color code or regular color name.",
27263
28357
  "type": "string"
27264
28358
  },
28359
+ "labelFlush": {
28360
+ "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.",
28361
+ "type": [
28362
+ "boolean",
28363
+ "number"
28364
+ ]
28365
+ },
28366
+ "labelFlushOffset": {
28367
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
28368
+ "type": "number"
28369
+ },
27265
28370
  "labelFont": {
27266
28371
  "description": "The font of the tick label.",
27267
28372
  "type": "string"
@@ -27283,10 +28388,31 @@
27283
28388
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
27284
28389
  "type": "number"
27285
28390
  },
28391
+ "labelOverlap": {
28392
+ "anyOf": [
28393
+ {
28394
+ "type": "boolean"
28395
+ },
28396
+ {
28397
+ "const": "parity",
28398
+ "type": "string"
28399
+ },
28400
+ {
28401
+ "const": "greedy",
28402
+ "type": "string"
28403
+ }
28404
+ ],
28405
+ "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."
28406
+ },
27286
28407
  "labelPadding": {
27287
28408
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
27288
28409
  "type": "number"
27289
28410
  },
28411
+ "labelSeparation": {
28412
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
28413
+ "minimum": 0,
28414
+ "type": "number"
28415
+ },
27290
28416
  "labels": {
27291
28417
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
27292
28418
  "type": "boolean"
@@ -27427,7 +28553,7 @@
27427
28553
  "type": "number"
27428
28554
  },
27429
28555
  "values": {
27430
- "description": "Explicitly set the visible axis tick and label values.",
28556
+ "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
28557
  "items": {},
27432
28558
  "type": "array"
27433
28559
  },
@@ -27580,7 +28706,7 @@
27580
28706
  "type": "number"
27581
28707
  },
27582
28708
  "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.",
28709
+ "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
28710
  "items": {
27585
28711
  "type": "number"
27586
28712
  },
@@ -27644,6 +28770,17 @@
27644
28770
  "description": "The color of the tick label, can be in hex color code or regular color name.",
27645
28771
  "type": "string"
27646
28772
  },
28773
+ "labelFlush": {
28774
+ "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.",
28775
+ "type": [
28776
+ "boolean",
28777
+ "number"
28778
+ ]
28779
+ },
28780
+ "labelFlushOffset": {
28781
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
28782
+ "type": "number"
28783
+ },
27647
28784
  "labelFont": {
27648
28785
  "description": "The font of the tick label.",
27649
28786
  "type": "string"
@@ -27665,10 +28802,31 @@
27665
28802
  "description": "Maximum allowed pixel width of axis tick labels.\n\n__Default value:__ `180`",
27666
28803
  "type": "number"
27667
28804
  },
28805
+ "labelOverlap": {
28806
+ "anyOf": [
28807
+ {
28808
+ "type": "boolean"
28809
+ },
28810
+ {
28811
+ "const": "parity",
28812
+ "type": "string"
28813
+ },
28814
+ {
28815
+ "const": "greedy",
28816
+ "type": "string"
28817
+ }
28818
+ ],
28819
+ "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."
28820
+ },
27668
28821
  "labelPadding": {
27669
28822
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
27670
28823
  "type": "number"
27671
28824
  },
28825
+ "labelSeparation": {
28826
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
28827
+ "minimum": 0,
28828
+ "type": "number"
28829
+ },
27672
28830
  "labels": {
27673
28831
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
27674
28832
  "type": "boolean"
@@ -27809,7 +28967,7 @@
27809
28967
  "type": "number"
27810
28968
  },
27811
28969
  "values": {
27812
- "description": "Explicitly set the visible axis tick and label values.",
28970
+ "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
28971
  "items": {},
27814
28972
  "type": "array"
27815
28973
  },
@@ -28182,6 +29340,10 @@
28182
29340
  }
28183
29341
  ],
28184
29342
  "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\"`"
29343
+ },
29344
+ "zindex": {
29345
+ "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`",
29346
+ "type": "number"
28185
29347
  }
28186
29348
  },
28187
29349
  "required": [
@@ -28287,6 +29449,9 @@
28287
29449
  {
28288
29450
  "$ref": "#/definitions/SelectionDomainRef"
28289
29451
  },
29452
+ {
29453
+ "$ref": "#/definitions/ViewportDomainRef"
29454
+ },
28290
29455
  {
28291
29456
  "$ref": "#/definitions/ExprRef"
28292
29457
  },
@@ -28492,6 +29657,9 @@
28492
29657
  {
28493
29658
  "$ref": "#/definitions/SelectionDomainRef"
28494
29659
  },
29660
+ {
29661
+ "$ref": "#/definitions/ViewportDomainRef"
29662
+ },
28495
29663
  {
28496
29664
  "$ref": "#/definitions/ExprRef"
28497
29665
  },
@@ -28570,6 +29738,9 @@
28570
29738
  {
28571
29739
  "$ref": "#/definitions/SelectionDomainRef"
28572
29740
  },
29741
+ {
29742
+ "$ref": "#/definitions/ViewportDomainRef"
29743
+ },
28573
29744
  {
28574
29745
  "$ref": "#/definitions/ExprRef"
28575
29746
  },
@@ -28787,6 +29958,9 @@
28787
29958
  {
28788
29959
  "$ref": "#/definitions/SelectionDomainRef"
28789
29960
  },
29961
+ {
29962
+ "$ref": "#/definitions/ViewportDomainRef"
29963
+ },
28790
29964
  {
28791
29965
  "$ref": "#/definitions/ExprRef"
28792
29966
  },
@@ -29024,6 +30198,9 @@
29024
30198
  {
29025
30199
  "$ref": "#/definitions/SelectionDomainRef"
29026
30200
  },
30201
+ {
30202
+ "$ref": "#/definitions/ViewportDomainRef"
30203
+ },
29027
30204
  {
29028
30205
  "$ref": "#/definitions/ExprRef"
29029
30206
  },
@@ -29238,6 +30415,9 @@
29238
30415
  {
29239
30416
  "$ref": "#/definitions/SelectionDomainRef"
29240
30417
  },
30418
+ {
30419
+ "$ref": "#/definitions/ViewportDomainRef"
30420
+ },
29241
30421
  {
29242
30422
  "$ref": "#/definitions/ExprRef"
29243
30423
  },
@@ -29465,6 +30645,9 @@
29465
30645
  {
29466
30646
  "$ref": "#/definitions/SelectionDomainRef"
29467
30647
  },
30648
+ {
30649
+ "$ref": "#/definitions/ViewportDomainRef"
30650
+ },
29468
30651
  {
29469
30652
  "$ref": "#/definitions/ExprRef"
29470
30653
  },
@@ -31105,7 +32288,7 @@
31105
32288
  ]
31106
32289
  },
31107
32290
  "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.",
32291
+ "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
32292
  "items": {
31110
32293
  "type": "number"
31111
32294
  },
@@ -31482,6 +32665,17 @@
31482
32665
  }
31483
32666
  ]
31484
32667
  },
32668
+ "labelFlush": {
32669
+ "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.",
32670
+ "type": [
32671
+ "boolean",
32672
+ "number"
32673
+ ]
32674
+ },
32675
+ "labelFlushOffset": {
32676
+ "description": "The number of pixels by which to move flush-adjusted labels outward from the axis range.\n\n__Default value:__ `0`",
32677
+ "type": "number"
32678
+ },
31485
32679
  "labelFont": {
31486
32680
  "anyOf": [
31487
32681
  {
@@ -31547,10 +32741,31 @@
31547
32741
  "description": "Offset between legend symbols and labels in pixels.",
31548
32742
  "type": "number"
31549
32743
  },
32744
+ "labelOverlap": {
32745
+ "anyOf": [
32746
+ {
32747
+ "type": "boolean"
32748
+ },
32749
+ {
32750
+ "const": "parity",
32751
+ "type": "string"
32752
+ },
32753
+ {
32754
+ "const": "greedy",
32755
+ "type": "string"
32756
+ }
32757
+ ],
32758
+ "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."
32759
+ },
31550
32760
  "labelPadding": {
31551
32761
  "description": "The padding, in pixels, between axis and text labels.\n\n__Default value:__ `2`",
31552
32762
  "type": "number"
31553
32763
  },
32764
+ "labelSeparation": {
32765
+ "description": "The minimum separation, in pixels, between retained axis labels.\n\n__Default value:__ `2`",
32766
+ "minimum": 0,
32767
+ "type": "number"
32768
+ },
31554
32769
  "labels": {
31555
32770
  "description": "A boolean flag indicating if labels should be included as part of the axis.\n\n__Default value:__ `true`.",
31556
32771
  "type": "boolean"
@@ -32398,7 +33613,7 @@
32398
33613
  "values": {
32399
33614
  "anyOf": [
32400
33615
  {
32401
- "description": "Explicitly set the visible axis tick and label values.",
33616
+ "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
33617
  "items": {},
32403
33618
  "type": "array"
32404
33619
  },
@@ -32416,28 +33631,84 @@
32416
33631
  ]
32417
33632
  },
32418
33633
  "viewportEdgeFadeDistanceBottom": {
32419
- "type": "number"
33634
+ "anyOf": [
33635
+ {
33636
+ "type": "number"
33637
+ },
33638
+ {
33639
+ "$ref": "#/definitions/ExprRef"
33640
+ }
33641
+ ]
32420
33642
  },
32421
33643
  "viewportEdgeFadeDistanceLeft": {
32422
- "type": "number"
33644
+ "anyOf": [
33645
+ {
33646
+ "type": "number"
33647
+ },
33648
+ {
33649
+ "$ref": "#/definitions/ExprRef"
33650
+ }
33651
+ ]
32423
33652
  },
32424
33653
  "viewportEdgeFadeDistanceRight": {
32425
- "type": "number"
33654
+ "anyOf": [
33655
+ {
33656
+ "type": "number"
33657
+ },
33658
+ {
33659
+ "$ref": "#/definitions/ExprRef"
33660
+ }
33661
+ ]
32426
33662
  },
32427
33663
  "viewportEdgeFadeDistanceTop": {
32428
- "type": "number"
33664
+ "anyOf": [
33665
+ {
33666
+ "type": "number"
33667
+ },
33668
+ {
33669
+ "$ref": "#/definitions/ExprRef"
33670
+ }
33671
+ ]
32429
33672
  },
32430
33673
  "viewportEdgeFadeWidthBottom": {
32431
- "type": "number"
33674
+ "anyOf": [
33675
+ {
33676
+ "type": "number"
33677
+ },
33678
+ {
33679
+ "$ref": "#/definitions/ExprRef"
33680
+ }
33681
+ ]
32432
33682
  },
32433
33683
  "viewportEdgeFadeWidthLeft": {
32434
- "type": "number"
33684
+ "anyOf": [
33685
+ {
33686
+ "type": "number"
33687
+ },
33688
+ {
33689
+ "$ref": "#/definitions/ExprRef"
33690
+ }
33691
+ ]
32435
33692
  },
32436
33693
  "viewportEdgeFadeWidthRight": {
32437
- "type": "number"
33694
+ "anyOf": [
33695
+ {
33696
+ "type": "number"
33697
+ },
33698
+ {
33699
+ "$ref": "#/definitions/ExprRef"
33700
+ }
33701
+ ]
32438
33702
  },
32439
33703
  "viewportEdgeFadeWidthTop": {
32440
- "type": "number"
33704
+ "anyOf": [
33705
+ {
33706
+ "type": "number"
33707
+ },
33708
+ {
33709
+ "$ref": "#/definitions/ExprRef"
33710
+ }
33711
+ ]
32441
33712
  },
32442
33713
  "x": {
32443
33714
  "anyOf": [
@@ -32877,28 +34148,84 @@
32877
34148
  "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
34149
  },
32879
34150
  "viewportEdgeFadeDistanceBottom": {
32880
- "type": "number"
34151
+ "anyOf": [
34152
+ {
34153
+ "type": "number"
34154
+ },
34155
+ {
34156
+ "$ref": "#/definitions/ExprRef"
34157
+ }
34158
+ ]
32881
34159
  },
32882
34160
  "viewportEdgeFadeDistanceLeft": {
32883
- "type": "number"
34161
+ "anyOf": [
34162
+ {
34163
+ "type": "number"
34164
+ },
34165
+ {
34166
+ "$ref": "#/definitions/ExprRef"
34167
+ }
34168
+ ]
32884
34169
  },
32885
34170
  "viewportEdgeFadeDistanceRight": {
32886
- "type": "number"
34171
+ "anyOf": [
34172
+ {
34173
+ "type": "number"
34174
+ },
34175
+ {
34176
+ "$ref": "#/definitions/ExprRef"
34177
+ }
34178
+ ]
32887
34179
  },
32888
34180
  "viewportEdgeFadeDistanceTop": {
32889
- "type": "number"
34181
+ "anyOf": [
34182
+ {
34183
+ "type": "number"
34184
+ },
34185
+ {
34186
+ "$ref": "#/definitions/ExprRef"
34187
+ }
34188
+ ]
32890
34189
  },
32891
34190
  "viewportEdgeFadeWidthBottom": {
32892
- "type": "number"
34191
+ "anyOf": [
34192
+ {
34193
+ "type": "number"
34194
+ },
34195
+ {
34196
+ "$ref": "#/definitions/ExprRef"
34197
+ }
34198
+ ]
32893
34199
  },
32894
34200
  "viewportEdgeFadeWidthLeft": {
32895
- "type": "number"
34201
+ "anyOf": [
34202
+ {
34203
+ "type": "number"
34204
+ },
34205
+ {
34206
+ "$ref": "#/definitions/ExprRef"
34207
+ }
34208
+ ]
32896
34209
  },
32897
34210
  "viewportEdgeFadeWidthRight": {
32898
- "type": "number"
34211
+ "anyOf": [
34212
+ {
34213
+ "type": "number"
34214
+ },
34215
+ {
34216
+ "$ref": "#/definitions/ExprRef"
34217
+ }
34218
+ ]
32899
34219
  },
32900
34220
  "viewportEdgeFadeWidthTop": {
32901
- "type": "number"
34221
+ "anyOf": [
34222
+ {
34223
+ "type": "number"
34224
+ },
34225
+ {
34226
+ "$ref": "#/definitions/ExprRef"
34227
+ }
34228
+ ]
32902
34229
  },
32903
34230
  "x": {
32904
34231
  "anyOf": [
@@ -33248,28 +34575,84 @@
33248
34575
  "type": "string"
33249
34576
  },
33250
34577
  "viewportEdgeFadeDistanceBottom": {
33251
- "type": "number"
34578
+ "anyOf": [
34579
+ {
34580
+ "type": "number"
34581
+ },
34582
+ {
34583
+ "$ref": "#/definitions/ExprRef"
34584
+ }
34585
+ ]
33252
34586
  },
33253
34587
  "viewportEdgeFadeDistanceLeft": {
33254
- "type": "number"
34588
+ "anyOf": [
34589
+ {
34590
+ "type": "number"
34591
+ },
34592
+ {
34593
+ "$ref": "#/definitions/ExprRef"
34594
+ }
34595
+ ]
33255
34596
  },
33256
34597
  "viewportEdgeFadeDistanceRight": {
33257
- "type": "number"
34598
+ "anyOf": [
34599
+ {
34600
+ "type": "number"
34601
+ },
34602
+ {
34603
+ "$ref": "#/definitions/ExprRef"
34604
+ }
34605
+ ]
33258
34606
  },
33259
34607
  "viewportEdgeFadeDistanceTop": {
33260
- "type": "number"
34608
+ "anyOf": [
34609
+ {
34610
+ "type": "number"
34611
+ },
34612
+ {
34613
+ "$ref": "#/definitions/ExprRef"
34614
+ }
34615
+ ]
33261
34616
  },
33262
34617
  "viewportEdgeFadeWidthBottom": {
33263
- "type": "number"
34618
+ "anyOf": [
34619
+ {
34620
+ "type": "number"
34621
+ },
34622
+ {
34623
+ "$ref": "#/definitions/ExprRef"
34624
+ }
34625
+ ]
33264
34626
  },
33265
34627
  "viewportEdgeFadeWidthLeft": {
33266
- "type": "number"
34628
+ "anyOf": [
34629
+ {
34630
+ "type": "number"
34631
+ },
34632
+ {
34633
+ "$ref": "#/definitions/ExprRef"
34634
+ }
34635
+ ]
33267
34636
  },
33268
34637
  "viewportEdgeFadeWidthRight": {
33269
- "type": "number"
34638
+ "anyOf": [
34639
+ {
34640
+ "type": "number"
34641
+ },
34642
+ {
34643
+ "$ref": "#/definitions/ExprRef"
34644
+ }
34645
+ ]
33270
34646
  },
33271
34647
  "viewportEdgeFadeWidthTop": {
33272
- "type": "number"
34648
+ "anyOf": [
34649
+ {
34650
+ "type": "number"
34651
+ },
34652
+ {
34653
+ "$ref": "#/definitions/ExprRef"
34654
+ }
34655
+ ]
33273
34656
  },
33274
34657
  "x": {
33275
34658
  "anyOf": [
@@ -34234,6 +35617,9 @@
34234
35617
  {
34235
35618
  "$ref": "#/definitions/FilterParams"
34236
35619
  },
35620
+ {
35621
+ "$ref": "#/definitions/AxisLabelLayoutParams"
35622
+ },
34237
35623
  {
34238
35624
  "$ref": "#/definitions/FilterScoredLabelsParams"
34239
35625
  },
@@ -35208,6 +36594,20 @@
35208
36594
  }
35209
36595
  ]
35210
36596
  },
36597
+ "ViewportDomainRef": {
36598
+ "additionalProperties": false,
36599
+ "properties": {
36600
+ "source": {
36601
+ "const": "viewport",
36602
+ "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.",
36603
+ "type": "string"
36604
+ }
36605
+ },
36606
+ "required": [
36607
+ "source"
36608
+ ],
36609
+ "type": "object"
36610
+ },
35211
36611
  "WigDataFormat": {
35212
36612
  "additionalProperties": false,
35213
36613
  "properties": {