@genome-spy/core 0.44.0 → 0.46.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 (129) hide show
  1. package/dist/bundle/{index-lmJu1tfP.js → index-BtRKzKhM.js} +6 -6
  2. package/dist/bundle/{index--cKb-dKG.js → index-BwFvhduA.js} +5 -5
  3. package/dist/bundle/{index-1QVesMzU.js → index-C8lYPtq_.js} +1 -1
  4. package/dist/bundle/{index-Pv3tKJ1W.js → index-CkI3Kd2P.js} +3 -3
  5. package/dist/bundle/{index-Y-LdHNIz.js → index-CmBp-spD.js} +1 -1
  6. package/dist/bundle/{index-z4Cs62EO.js → index-Dixm7K89.js} +4 -4
  7. package/dist/bundle/{index-noY1e-G6.js → index-Sk-Wtwdn.js} +5 -5
  8. package/dist/bundle/{index-UyrC0vvF.js → index-Z7JiNsFI.js} +4 -4
  9. package/dist/bundle/{index-LD6yPc3X.js → index-mihmTLo-.js} +1 -1
  10. package/dist/bundle/index.es.js +6339 -5615
  11. package/dist/bundle/index.js +222 -150
  12. package/dist/bundle/{long-Veu0zKh9.js → long-CYrAUkxh.js} +2 -2
  13. package/dist/bundle/{remoteFile-Ur-gRKsH.js → remoteFile-1_eCK3VV.js} +1 -1
  14. package/dist/schema.json +481 -90
  15. package/dist/src/data/collector.d.ts +1 -0
  16. package/dist/src/data/collector.d.ts.map +1 -1
  17. package/dist/src/data/collector.js +23 -5
  18. package/dist/src/data/flow.test.js +4 -0
  19. package/dist/src/data/flowNode.d.ts +10 -8
  20. package/dist/src/data/flowNode.d.ts.map +1 -1
  21. package/dist/src/data/flowNode.js +25 -15
  22. package/dist/src/data/flowOptimizer.test.js +12 -3
  23. package/dist/src/data/sources/dataSource.d.ts +17 -0
  24. package/dist/src/data/sources/dataSource.d.ts.map +1 -1
  25. package/dist/src/data/sources/dataSource.js +34 -0
  26. package/dist/src/data/sources/dataUtils.d.ts.map +1 -1
  27. package/dist/src/data/sources/dataUtils.js +3 -1
  28. package/dist/src/data/sources/inlineSource.js +1 -1
  29. package/dist/src/data/sources/lazy/bigBedSource.d.ts +1 -1
  30. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  31. package/dist/src/data/sources/lazy/bigBedSource.js +58 -20
  32. package/dist/src/data/sources/lazy/bigWigSource.d.ts +0 -1
  33. package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
  34. package/dist/src/data/sources/lazy/bigWigSource.js +58 -19
  35. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +0 -8
  36. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  37. package/dist/src/data/sources/lazy/singleAxisLazySource.js +1 -15
  38. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts +6 -2
  39. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  40. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +41 -23
  41. package/dist/src/data/sources/namedSource.js +1 -1
  42. package/dist/src/data/sources/sequenceSource.d.ts.map +1 -1
  43. package/dist/src/data/sources/sequenceSource.js +16 -6
  44. package/dist/src/data/sources/sequenceSource.test.js +23 -5
  45. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  46. package/dist/src/data/sources/urlSource.js +24 -7
  47. package/dist/src/data/transforms/aggregate.d.ts.map +1 -1
  48. package/dist/src/data/transforms/aggregate.js +5 -2
  49. package/dist/src/data/transforms/filter.d.ts +2 -2
  50. package/dist/src/data/transforms/filter.d.ts.map +1 -1
  51. package/dist/src/data/transforms/filter.js +3 -6
  52. package/dist/src/data/transforms/filter.test.js +6 -0
  53. package/dist/src/data/transforms/formula.d.ts +2 -2
  54. package/dist/src/data/transforms/formula.d.ts.map +1 -1
  55. package/dist/src/data/transforms/formula.js +3 -3
  56. package/dist/src/data/transforms/formula.test.js +7 -1
  57. package/dist/src/encoder/encoder.d.ts +2 -4
  58. package/dist/src/encoder/encoder.d.ts.map +1 -1
  59. package/dist/src/encoder/encoder.js +8 -8
  60. package/dist/src/encoder/encoder.test.js +3 -0
  61. package/dist/src/genomeSpy.d.ts +12 -7
  62. package/dist/src/genomeSpy.d.ts.map +1 -1
  63. package/dist/src/genomeSpy.js +132 -139
  64. package/dist/src/gl/glslScaleGenerator.js +1 -1
  65. package/dist/src/index.d.ts +1 -1
  66. package/dist/src/index.d.ts.map +1 -1
  67. package/dist/src/index.js +1 -1
  68. package/dist/src/marks/mark.d.ts +8 -5
  69. package/dist/src/marks/mark.d.ts.map +1 -1
  70. package/dist/src/marks/mark.js +67 -12
  71. package/dist/src/marks/point.common.glsl.js +1 -1
  72. package/dist/src/marks/point.d.ts +1 -4
  73. package/dist/src/marks/point.d.ts.map +1 -1
  74. package/dist/src/marks/point.js +31 -23
  75. package/dist/src/marks/point.vertex.glsl.js +1 -1
  76. package/dist/src/marks/text.d.ts.map +1 -1
  77. package/dist/src/marks/text.js +15 -7
  78. package/dist/src/spec/data.d.ts +11 -10
  79. package/dist/src/spec/mark.d.ts +11 -21
  80. package/dist/src/spec/parameter.d.ts +11 -7
  81. package/dist/src/spec/root.d.ts +0 -8
  82. package/dist/src/spec/title.d.ts +5 -4
  83. package/dist/src/spec/view.d.ts +64 -6
  84. package/dist/src/styles/genome-spy.css.d.ts +1 -1
  85. package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
  86. package/dist/src/styles/genome-spy.css.js +56 -5
  87. package/dist/src/styles/genome-spy.scss +68 -10
  88. package/dist/src/styles/update.sh +6 -0
  89. package/dist/src/tooltip/dataTooltipHandler.js +1 -1
  90. package/dist/src/tooltip/refseqGeneTooltipHandler.js +1 -1
  91. package/dist/src/tooltip/tooltipHandler.d.ts +1 -1
  92. package/dist/src/tooltip/tooltipHandler.d.ts.map +1 -1
  93. package/dist/src/tooltip/tooltipHandler.ts +1 -1
  94. package/dist/src/types/embedApi.d.ts +6 -0
  95. package/dist/src/types/viewContext.d.ts +11 -5
  96. package/dist/src/utils/debounce.d.ts +2 -2
  97. package/dist/src/utils/debounce.d.ts.map +1 -1
  98. package/dist/src/utils/debounce.js +5 -2
  99. package/dist/src/utils/expression.d.ts +2 -2
  100. package/dist/src/utils/expression.d.ts.map +1 -1
  101. package/dist/src/utils/expression.js +2 -2
  102. package/dist/src/utils/formatObject.d.ts +2 -2
  103. package/dist/src/utils/formatObject.d.ts.map +1 -1
  104. package/dist/src/utils/formatObject.js +2 -2
  105. package/dist/src/utils/inputBinding.d.ts +5 -0
  106. package/dist/src/utils/inputBinding.d.ts.map +1 -0
  107. package/dist/src/utils/inputBinding.js +115 -0
  108. package/dist/src/utils/ui/tooltip.js +1 -1
  109. package/dist/src/view/paramMediator.d.ts +109 -0
  110. package/dist/src/view/paramMediator.d.ts.map +1 -0
  111. package/dist/src/view/paramMediator.js +338 -0
  112. package/dist/src/view/paramMediator.test.js +224 -0
  113. package/dist/src/view/scaleResolution.d.ts.map +1 -1
  114. package/dist/src/view/scaleResolution.js +11 -6
  115. package/dist/src/view/view.d.ts +4 -1
  116. package/dist/src/view/view.d.ts.map +1 -1
  117. package/dist/src/view/view.js +19 -5
  118. package/dist/src/view/viewFactory.d.ts +4 -1
  119. package/dist/src/view/viewFactory.d.ts.map +1 -1
  120. package/dist/src/view/viewFactory.js +86 -13
  121. package/dist/src/view/viewUtils.d.ts +7 -8
  122. package/dist/src/view/viewUtils.d.ts.map +1 -1
  123. package/dist/src/view/viewUtils.js +30 -34
  124. package/package.json +16 -17
  125. package/dist/src/paramBroker.d.ts +0 -46
  126. package/dist/src/paramBroker.d.ts.map +0 -1
  127. package/dist/src/paramBroker.js +0 -118
  128. /package/dist/bundle/{__vite-browser-external-ENoMJThg.js → __vite-browser-external-C--ziKoh.js} +0 -0
  129. /package/dist/bundle/{_commonjsHelpers-QtkX90xp.js → _commonjsHelpers-BIiJCwQW.js} +0 -0
package/dist/schema.json CHANGED
@@ -314,8 +314,15 @@
314
314
  "description": "Which channel's scale domain to monitor.\n\n__Default value:__ `\"x\"`"
315
315
  },
316
316
  "debounce": {
317
- "description": "Debounce time for data updates, in milliseconds. Debouncing prevents excessive data updates when the user is zooming or panning around.\n\n__Default value:__ `200`",
318
- "type": "number"
317
+ "anyOf": [
318
+ {
319
+ "type": "number"
320
+ },
321
+ {
322
+ "$ref": "#/definitions/ExprRef"
323
+ }
324
+ ],
325
+ "description": "Debounce time for data updates, in milliseconds. Debouncing prevents excessive data updates when the user is zooming or panning around.\n\n__Default value:__ `200`"
319
326
  },
320
327
  "debounceMode": {
321
328
  "description": "The debounce mode for data updates. If set to `\"domain\"`, domain change events (panning and zooming) will be debounced. If set to `\"window\"`, the data fetches initiated by the changes to the visible window (or tile) will be debounced. If your data is small, the `\"window\"` is better as it will start fetching data while the user is still panning around, resulting in a shorter perceived latency.\n\n__Default value:__ `\"window\"`",
@@ -365,8 +372,15 @@
365
372
  "description": "Which channel's scale domain to monitor.\n\n__Default value:__ `\"x\"`"
366
373
  },
367
374
  "debounce": {
368
- "description": "Debounce time for data updates, in milliseconds. Debouncing prevents excessive data updates when the user is zooming or panning around.\n\n__Default value:__ `200`",
369
- "type": "number"
375
+ "anyOf": [
376
+ {
377
+ "type": "number"
378
+ },
379
+ {
380
+ "$ref": "#/definitions/ExprRef"
381
+ }
382
+ ],
383
+ "description": "Debounce time for data updates, in milliseconds. Debouncing prevents excessive data updates when the user is zooming or panning around.\n\n__Default value:__ `200`"
370
384
  },
371
385
  "debounceMode": {
372
386
  "description": "The debounce mode for data updates. If set to `\"domain\"`, domain change events (panning and zooming) will be debounced. If set to `\"window\"`, the data fetches initiated by the changes to the visible window (or tile) will be debounced. If your data is small, the `\"window\"` is better as it will start fetching data while the user is still panning around, resulting in a shorter perceived latency.\n\n__Default value:__ `\"window\"`",
@@ -381,12 +395,26 @@
381
395
  "type": "string"
382
396
  },
383
397
  "url": {
384
- "description": "URL of the BigBed file.",
385
- "type": "string"
398
+ "anyOf": [
399
+ {
400
+ "type": "string"
401
+ },
402
+ {
403
+ "$ref": "#/definitions/ExprRef"
404
+ }
405
+ ],
406
+ "description": "URL of the BigBed file."
386
407
  },
387
408
  "windowSize": {
388
- "description": "Size of each chunk when fetching the BigBed file. Data is only fetched when the length of the visible domain smaller than the window size.\n\n__Default value:__ `1000000`",
389
- "type": "number"
409
+ "anyOf": [
410
+ {
411
+ "type": "number"
412
+ },
413
+ {
414
+ "$ref": "#/definitions/ExprRef"
415
+ }
416
+ ],
417
+ "description": "Size of each chunk when fetching the BigBed file. Data is only fetched when the length of the visible domain smaller than the window size.\n\n__Default value:__ `1000000`"
390
418
  }
391
419
  },
392
420
  "required": [
@@ -403,8 +431,15 @@
403
431
  "description": "Which channel's scale domain to monitor.\n\n__Default value:__ `\"x\"`"
404
432
  },
405
433
  "debounce": {
406
- "description": "Debounce time for data updates, in milliseconds. Debouncing prevents excessive data updates when the user is zooming or panning around.\n\n__Default value:__ `200`",
407
- "type": "number"
434
+ "anyOf": [
435
+ {
436
+ "type": "number"
437
+ },
438
+ {
439
+ "$ref": "#/definitions/ExprRef"
440
+ }
441
+ ],
442
+ "description": "Debounce time for data updates, in milliseconds. Debouncing prevents excessive data updates when the user is zooming or panning around.\n\n__Default value:__ `200`"
408
443
  },
409
444
  "debounceMode": {
410
445
  "description": "The debounce mode for data updates. If set to `\"domain\"`, domain change events (panning and zooming) will be debounced. If set to `\"window\"`, the data fetches initiated by the changes to the visible window (or tile) will be debounced. If your data is small, the `\"window\"` is better as it will start fetching data while the user is still panning around, resulting in a shorter perceived latency.\n\n__Default value:__ `\"window\"`",
@@ -415,16 +450,30 @@
415
450
  "type": "string"
416
451
  },
417
452
  "pixelsPerBin": {
418
- "description": "The approximate minimum width of each data bin, in pixels.\n\n__Default value:__ `2`",
419
- "type": "number"
453
+ "anyOf": [
454
+ {
455
+ "type": "number"
456
+ },
457
+ {
458
+ "$ref": "#/definitions/ExprRef"
459
+ }
460
+ ],
461
+ "description": "The approximate minimum width of each data bin, in pixels.\n\n__Default value:__ `2`"
420
462
  },
421
463
  "type": {
422
464
  "const": "bigwig",
423
465
  "type": "string"
424
466
  },
425
467
  "url": {
426
- "description": "URL of the BigWig file.",
427
- "type": "string"
468
+ "anyOf": [
469
+ {
470
+ "type": "string"
471
+ },
472
+ {
473
+ "$ref": "#/definitions/ExprRef"
474
+ }
475
+ ],
476
+ "description": "URL of the BigWig file."
428
477
  }
429
478
  },
430
479
  "required": [
@@ -440,9 +489,9 @@
440
489
  "description": "If defined, delays event handling until the specified milliseconds have elapsed since the last event was fired.",
441
490
  "type": "number"
442
491
  },
443
- "element": {
444
- "$ref": "#/definitions/Element",
445
- "description": "An optional CSS selector string indicating the parent element to which the input element should be added. By default, all input elements are added within the parent container of the Vega view."
492
+ "description": {
493
+ "description": "An optional description or help text that is shown below the input element.",
494
+ "type": "string"
446
495
  },
447
496
  "input": {
448
497
  "const": "checkbox",
@@ -465,9 +514,9 @@
465
514
  "description": "If defined, delays event handling until the specified milliseconds have elapsed since the last event was fired.",
466
515
  "type": "number"
467
516
  },
468
- "element": {
469
- "$ref": "#/definitions/Element",
470
- "description": "An optional CSS selector string indicating the parent element to which the input element should be added. By default, all input elements are added within the parent container of the Vega view."
517
+ "description": {
518
+ "description": "An optional description or help text that is shown below the input element.",
519
+ "type": "string"
471
520
  },
472
521
  "input": {
473
522
  "enum": [
@@ -506,9 +555,9 @@
506
555
  "description": "If defined, delays event handling until the specified milliseconds have elapsed since the last event was fired.",
507
556
  "type": "number"
508
557
  },
509
- "element": {
510
- "$ref": "#/definitions/Element",
511
- "description": "An optional CSS selector string indicating the parent element to which the input element should be added. By default, all input elements are added within the parent container of the Vega view."
558
+ "description": {
559
+ "description": "An optional description or help text that is shown below the input element.",
560
+ "type": "string"
512
561
  },
513
562
  "input": {
514
563
  "const": "range",
@@ -766,12 +815,15 @@
766
815
  "additionalProperties": false,
767
816
  "properties": {
768
817
  "baseUrl": {
818
+ "description": "Optional base URL for constructing request URLs. When set, all views deeper in the hierarchy inherit this base URL, using it for importing loading data and importing specifications.",
769
819
  "type": "string"
770
820
  },
771
821
  "columns": {
822
+ "description": "The number of columns in the grid.",
772
823
  "type": "number"
773
824
  },
774
825
  "concat": {
826
+ "description": "Specifies views that will be concatenated into a grid that wraps when the specified number of columns are used.",
775
827
  "items": {
776
828
  "anyOf": [
777
829
  {
@@ -837,6 +889,13 @@
837
889
  "$ref": "#/definitions/PaddingConfig",
838
890
  "description": "Padding in pixels.\n\n**Default:* `0`"
839
891
  },
892
+ "params": {
893
+ "description": "Dynamic variables that parameterize a visualization.",
894
+ "items": {
895
+ "$ref": "#/definitions/VariableParameter"
896
+ },
897
+ "type": "array"
898
+ },
840
899
  "resolve": {
841
900
  "additionalProperties": false,
842
901
  "properties": {
@@ -866,8 +925,16 @@
866
925
  "type": "object"
867
926
  },
868
927
  "spacing": {
928
+ "description": "The gap between the views, in pixels.",
869
929
  "type": "number"
870
930
  },
931
+ "templates": {
932
+ "additionalProperties": {
933
+ "$ref": "#/definitions/ViewSpec"
934
+ },
935
+ "description": "Templates that can be reused within the view specification by importing them with the template key.",
936
+ "type": "object"
937
+ },
871
938
  "title": {
872
939
  "anyOf": [
873
940
  {
@@ -1157,9 +1224,6 @@
1157
1224
  ],
1158
1225
  "type": "object"
1159
1226
  },
1160
- "Element": {
1161
- "type": "string"
1162
- },
1163
1227
  "Encoding": {
1164
1228
  "additionalProperties": false,
1165
1229
  "properties": {
@@ -2206,8 +2270,15 @@
2206
2270
  "description": "Which channel's scale domain to monitor.\n\n__Default value:__ `\"x\"`"
2207
2271
  },
2208
2272
  "debounce": {
2209
- "description": "Debounce time for data updates, in milliseconds. Debouncing prevents excessive data updates when the user is zooming or panning around.\n\n__Default value:__ `200`",
2210
- "type": "number"
2273
+ "anyOf": [
2274
+ {
2275
+ "type": "number"
2276
+ },
2277
+ {
2278
+ "$ref": "#/definitions/ExprRef"
2279
+ }
2280
+ ],
2281
+ "description": "Debounce time for data updates, in milliseconds. Debouncing prevents excessive data updates when the user is zooming or panning around.\n\n__Default value:__ `200`"
2211
2282
  },
2212
2283
  "debounceMode": {
2213
2284
  "description": "The debounce mode for data updates. If set to `\"domain\"`, domain change events (panning and zooming) will be debounced. If set to `\"window\"`, the data fetches initiated by the changes to the visible window (or tile) will be debounced. If your data is small, the `\"window\"` is better as it will start fetching data while the user is still panning around, resulting in a shorter perceived latency.\n\n__Default value:__ `\"window\"`",
@@ -2244,6 +2315,7 @@
2244
2315
  "additionalProperties": false,
2245
2316
  "properties": {
2246
2317
  "baseUrl": {
2318
+ "description": "Optional base URL for constructing request URLs. When set, all views deeper in the hierarchy inherit this base URL, using it for importing loading data and importing specifications.",
2247
2319
  "type": "string"
2248
2320
  },
2249
2321
  "configurableVisibility": {
@@ -2271,6 +2343,7 @@
2271
2343
  "$ref": "#/definitions/Encoding"
2272
2344
  },
2273
2345
  "hconcat": {
2346
+ "description": "Specifies views that will be concatenated horizontally.",
2274
2347
  "items": {
2275
2348
  "anyOf": [
2276
2349
  {
@@ -2312,6 +2385,13 @@
2312
2385
  "$ref": "#/definitions/PaddingConfig",
2313
2386
  "description": "Padding in pixels.\n\n**Default:* `0`"
2314
2387
  },
2388
+ "params": {
2389
+ "description": "Dynamic variables that parameterize a visualization.",
2390
+ "items": {
2391
+ "$ref": "#/definitions/VariableParameter"
2392
+ },
2393
+ "type": "array"
2394
+ },
2315
2395
  "resolve": {
2316
2396
  "additionalProperties": false,
2317
2397
  "properties": {
@@ -2341,8 +2421,16 @@
2341
2421
  "type": "object"
2342
2422
  },
2343
2423
  "spacing": {
2424
+ "description": "The gap between the views, in pixels.",
2344
2425
  "type": "number"
2345
2426
  },
2427
+ "templates": {
2428
+ "additionalProperties": {
2429
+ "$ref": "#/definitions/ViewSpec"
2430
+ },
2431
+ "description": "Templates that can be reused within the view specification by importing them with the template key.",
2432
+ "type": "object"
2433
+ },
2346
2434
  "title": {
2347
2435
  "anyOf": [
2348
2436
  {
@@ -2450,26 +2538,37 @@
2450
2538
  ],
2451
2539
  "type": "object"
2452
2540
  },
2453
- "ImportConfig": {
2541
+ "ImportSpec": {
2454
2542
  "additionalProperties": false,
2455
2543
  "properties": {
2544
+ "import": {
2545
+ "anyOf": [
2546
+ {
2547
+ "$ref": "#/definitions/UrlImport"
2548
+ },
2549
+ {
2550
+ "$ref": "#/definitions/TemplateImport"
2551
+ }
2552
+ ],
2553
+ "description": "The method to import a specification."
2554
+ },
2456
2555
  "name": {
2556
+ "description": "The name given to the imported view. This property overrides the name specified in the imported specification.",
2457
2557
  "type": "string"
2458
2558
  },
2459
2559
  "params": {
2460
- "type": "object"
2461
- },
2462
- "url": {
2463
- "type": "string"
2464
- }
2465
- },
2466
- "type": "object"
2467
- },
2468
- "ImportSpec": {
2469
- "additionalProperties": false,
2470
- "properties": {
2471
- "import": {
2472
- "$ref": "#/definitions/ImportConfig"
2560
+ "anyOf": [
2561
+ {
2562
+ "items": {
2563
+ "$ref": "#/definitions/VariableParameter"
2564
+ },
2565
+ "type": "array"
2566
+ },
2567
+ {
2568
+ "type": "object"
2569
+ }
2570
+ ],
2571
+ "description": "Dynamic variables that parameterize a visualization. Parameters defined here override the parameters defined in the imported specification."
2473
2572
  }
2474
2573
  },
2475
2574
  "required": [
@@ -2485,8 +2584,15 @@
2485
2584
  "description": "Which channel's scale domain to monitor.\n\n__Default value:__ `\"x\"`"
2486
2585
  },
2487
2586
  "debounce": {
2488
- "description": "Debounce time for data updates, in milliseconds. Debouncing prevents excessive data updates when the user is zooming or panning around.\n\n__Default value:__ `200`",
2489
- "type": "number"
2587
+ "anyOf": [
2588
+ {
2589
+ "type": "number"
2590
+ },
2591
+ {
2592
+ "$ref": "#/definitions/ExprRef"
2593
+ }
2594
+ ],
2595
+ "description": "Debounce time for data updates, in milliseconds. Debouncing prevents excessive data updates when the user is zooming or panning around.\n\n__Default value:__ `200`"
2490
2596
  },
2491
2597
  "debounceMode": {
2492
2598
  "description": "The debounce mode for data updates. If set to `\"domain\"`, domain change events (panning and zooming) will be debounced. If set to `\"window\"`, the data fetches initiated by the changes to the visible window (or tile) will be debounced. If your data is small, the `\"window\"` is better as it will start fetching data while the user is still panning around, resulting in a shorter perceived latency.\n\n__Default value:__ `\"window\"`",
@@ -2617,6 +2723,7 @@
2617
2723
  "type": "array"
2618
2724
  },
2619
2725
  "baseUrl": {
2726
+ "description": "Optional base URL for constructing request URLs. When set, all views deeper in the hierarchy inherit this base URL, using it for importing loading data and importing specifications.",
2620
2727
  "type": "string"
2621
2728
  },
2622
2729
  "configurableVisibility": {
@@ -2669,6 +2776,9 @@
2669
2776
  },
2670
2777
  {
2671
2778
  "$ref": "#/definitions/UnitSpec"
2779
+ },
2780
+ {
2781
+ "$ref": "#/definitions/ImportSpec"
2672
2782
  }
2673
2783
  ]
2674
2784
  },
@@ -2685,6 +2795,13 @@
2685
2795
  "$ref": "#/definitions/PaddingConfig",
2686
2796
  "description": "Padding in pixels.\n\n**Default:* `0`"
2687
2797
  },
2798
+ "params": {
2799
+ "description": "Dynamic variables that parameterize a visualization.",
2800
+ "items": {
2801
+ "$ref": "#/definitions/VariableParameter"
2802
+ },
2803
+ "type": "array"
2804
+ },
2688
2805
  "resolve": {
2689
2806
  "additionalProperties": false,
2690
2807
  "properties": {
@@ -2713,6 +2830,13 @@
2713
2830
  },
2714
2831
  "type": "object"
2715
2832
  },
2833
+ "templates": {
2834
+ "additionalProperties": {
2835
+ "$ref": "#/definitions/ViewSpec"
2836
+ },
2837
+ "description": "Templates that can be reused within the view specification by importing them with the template key.",
2838
+ "type": "object"
2839
+ },
2716
2840
  "title": {
2717
2841
  "anyOf": [
2718
2842
  {
@@ -3059,8 +3183,15 @@
3059
3183
  "description": "The fill color"
3060
3184
  },
3061
3185
  "fillGradientStrength": {
3062
- "description": "Gradient strength controls the amount of the gradient eye-candy effect in the fill color. Valid values are between 0 and 1.\n\n**Default value:** `0`",
3063
- "type": "number"
3186
+ "anyOf": [
3187
+ {
3188
+ "type": "number"
3189
+ },
3190
+ {
3191
+ "$ref": "#/definitions/ExprRef"
3192
+ }
3193
+ ],
3194
+ "description": "Gradient strength controls the amount of the gradient eye-candy effect in the fill color. Valid values are between 0 and 1.\n\n**Default value:** `0`"
3064
3195
  },
3065
3196
  "fillOpacity": {
3066
3197
  "anyOf": [
@@ -3078,16 +3209,37 @@
3078
3209
  "type": "boolean"
3079
3210
  },
3080
3211
  "fitToBand": {
3081
- "description": "If true, sets the secondary positional channel that allows the text to be squeezed (see the `squeeze` property). Can be used when: 1) `\"band\"`, `\"index\"`, or `\"locus\"` scale is being used and 2) only the primary positional channel is specified.\n\n**Default value:** `false`",
3082
- "type": "boolean"
3212
+ "anyOf": [
3213
+ {
3214
+ "type": "boolean"
3215
+ },
3216
+ {
3217
+ "$ref": "#/definitions/ExprRef"
3218
+ }
3219
+ ],
3220
+ "description": "If true, sets the secondary positional channel that allows the text to be squeezed (see the `squeeze` property). Can be used when: 1) `\"band\"`, `\"index\"`, or `\"locus\"` scale is being used and 2) only the primary positional channel is specified.\n\n**Default value:** `false`"
3083
3221
  },
3084
3222
  "flushX": {
3085
- "description": "If true, the text is kept inside the viewport when the range of `x` and `x2` intersect the viewport.",
3086
- "type": "boolean"
3223
+ "anyOf": [
3224
+ {
3225
+ "type": "boolean"
3226
+ },
3227
+ {
3228
+ "$ref": "#/definitions/ExprRef"
3229
+ }
3230
+ ],
3231
+ "description": "If true, the text is kept inside the viewport when the range of `x` and `x2` intersect the viewport."
3087
3232
  },
3088
3233
  "flushY": {
3089
- "description": "If true, the text is kept inside the viewport when the range of `y` and `y2` intersect the viewport.",
3090
- "type": "boolean"
3234
+ "anyOf": [
3235
+ {
3236
+ "type": "boolean"
3237
+ },
3238
+ {
3239
+ "$ref": "#/definitions/ExprRef"
3240
+ }
3241
+ ],
3242
+ "description": "If true, the text is kept inside the viewport when the range of `y` and `y2` intersect the viewport."
3091
3243
  },
3092
3244
  "font": {
3093
3245
  "description": "The font typeface. GenomeSpy uses [SDF](https://github.com/Chlumsky/msdfgen) versions of [Google Fonts](https://fonts.google.com/). Check their availability at the [A-Frame Fonts](https://github.com/etiennepinchon/aframe-fonts/tree/master/fonts) repository. System fonts are **not** supported.\n\n**Default value:** `\"Lato\"`",
@@ -3106,8 +3258,15 @@
3106
3258
  "type": "number"
3107
3259
  },
3108
3260
  "inwardStroke": {
3109
- "description": "Should the stroke only grow inwards, e.g, the diameter/outline is not affected by the stroke width. Thus, a point that has a zero size has no visible stroke. This allows strokes to be used with geometric zoom, etc.\n\n**Default value:** `false`",
3110
- "type": "boolean"
3261
+ "anyOf": [
3262
+ {
3263
+ "type": "boolean"
3264
+ },
3265
+ {
3266
+ "$ref": "#/definitions/ExprRef"
3267
+ }
3268
+ ],
3269
+ "description": "Should the stroke only grow inwards, e.g, the diameter/outline is not affected by the stroke width. Thus, a point that has a zero size has no visible stroke. This allows strokes to be used with geometric zoom, etc.\n\n**Default value:** `false`"
3111
3270
  },
3112
3271
  "linkShape": {
3113
3272
  "anyOf": [
@@ -3134,8 +3293,15 @@
3134
3293
  "description": "The shape of the link path. Either `\"arc\"`, `\"diagonal\"`, `\"line\"`, or `\"dome\"`.\n\n**Default value:** `\"arc\"`"
3135
3294
  },
3136
3295
  "logoLetters": {
3137
- "description": "Stretch letters so that they can be used with [sequence logos](https://en.wikipedia.org/wiki/Sequence_logo), etc...",
3138
- "type": "boolean"
3296
+ "anyOf": [
3297
+ {
3298
+ "type": "boolean"
3299
+ },
3300
+ {
3301
+ "$ref": "#/definitions/ExprRef"
3302
+ }
3303
+ ],
3304
+ "description": "Stretch letters so that they can be used with [sequence logos](https://en.wikipedia.org/wiki/Sequence_logo), etc..."
3139
3305
  },
3140
3306
  "maxChordLength": {
3141
3307
  "anyOf": [
@@ -3245,24 +3411,41 @@
3245
3411
  "description": "The orientation of the link path. Either `\"vertical\"` or `\"horizontal\"`. Only applies to diagonal links.\n\n**Default value:** `\"vertical\"`"
3246
3412
  },
3247
3413
  "paddingX": {
3248
- "description": "The horizontal padding, in pixels, when the `x2` channel is used for ranged text.\n\n**Default value:** `0`",
3249
- "type": "number"
3414
+ "anyOf": [
3415
+ {
3416
+ "type": "number"
3417
+ },
3418
+ {
3419
+ "$ref": "#/definitions/ExprRef"
3420
+ }
3421
+ ],
3422
+ "description": "The horizontal padding, in pixels, when the `x2` channel is used for ranged text.\n\n**Default value:** `0`"
3250
3423
  },
3251
3424
  "paddingY": {
3252
- "description": "The vertical padding, in pixels, when the `y2` channel is used for ranged text.\n\n**Default value:** `0`",
3253
- "type": "number"
3254
- },
3255
- "sampleFacetPadding": {
3256
- "description": "Padding between sample facet's upper/lower edge and the maximum point size. This property controls how tightly points are squeezed when facet's height is smaller than the maximum point size. The unit is a proportion of facet's height. The value must be between `0` and `0.5`. This property has no effect when sample faceting is not used.\n\n**Default value:** `0.1`",
3257
- "type": "number"
3425
+ "anyOf": [
3426
+ {
3427
+ "type": "number"
3428
+ },
3429
+ {
3430
+ "$ref": "#/definitions/ExprRef"
3431
+ }
3432
+ ],
3433
+ "description": "The vertical padding, in pixels, when the `y2` channel is used for ranged text.\n\n**Default value:** `0`"
3258
3434
  },
3259
3435
  "segments": {
3260
3436
  "description": "The number of segments in the bézier curve. Affects the rendering quality and performance. Use a higher value for a smoother curve.\n\n**Default value:* `101`",
3261
3437
  "type": "number"
3262
3438
  },
3263
3439
  "semanticZoomFraction": {
3264
- "description": "TODO\n\n**Default value:** `0.02`",
3265
- "type": "number"
3440
+ "anyOf": [
3441
+ {
3442
+ "type": "number"
3443
+ },
3444
+ {
3445
+ "$ref": "#/definitions/ExprRef"
3446
+ }
3447
+ ],
3448
+ "description": "TODO\n\n**Default value:** `0.02`"
3266
3449
  },
3267
3450
  "shape": {
3268
3451
  "description": "One of `\"circle\"`, `\"square\"`, `\"cross\"`, `\"diamond\"`, `\"triangle-up\"`, `\"triangle-down\"`, `\"triangle-right\"`, or `\"triangle-left\"`.\n\n**Default value:** `\"circle\"`",
@@ -3280,8 +3463,15 @@
3280
3463
  "description": "The font size in pixels.\n\n**Default value:** `11`"
3281
3464
  },
3282
3465
  "squeeze": {
3283
- "description": "If the `squeeze` property is true and secondary positional channels (`x2` and/or `y2`) are used, the text is scaled to fit mark's width and/or height.\n\n**Default value:** `true`",
3284
- "type": "boolean"
3466
+ "anyOf": [
3467
+ {
3468
+ "type": "boolean"
3469
+ },
3470
+ {
3471
+ "$ref": "#/definitions/ExprRef"
3472
+ }
3473
+ ],
3474
+ "description": "If the `squeeze` property is true and secondary positional channels (`x2` and/or `y2`) are used, the text is scaled to fit mark's width and/or height.\n\n**Default value:** `true`"
3285
3475
  },
3286
3476
  "stroke": {
3287
3477
  "anyOf": [
@@ -3348,7 +3538,14 @@
3348
3538
  "description": "The stroke width in pixels."
3349
3539
  },
3350
3540
  "text": {
3351
- "$ref": "#/definitions/Scalar",
3541
+ "anyOf": [
3542
+ {
3543
+ "$ref": "#/definitions/Scalar"
3544
+ },
3545
+ {
3546
+ "$ref": "#/definitions/ExprRef"
3547
+ }
3548
+ ],
3352
3549
  "description": "The text to display. The format of numeric data can be customized by setting a [format specifier](https://github.com/d3/d3-format#locale_format) to channel definition's `format` property.\n\n**Default value:** `\"\"`"
3353
3550
  },
3354
3551
  "tooltip": {
@@ -4342,6 +4539,7 @@
4342
4539
  "type": "string"
4343
4540
  },
4344
4541
  "baseUrl": {
4542
+ "description": "Optional base URL for constructing request URLs. When set, all views deeper in the hierarchy inherit this base URL, using it for importing loading data and importing specifications.",
4345
4543
  "type": "string"
4346
4544
  },
4347
4545
  "configurableVisibility": {
@@ -4419,7 +4617,7 @@
4419
4617
  "description": "Padding in pixels.\n\n**Default:* `0`"
4420
4618
  },
4421
4619
  "params": {
4422
- "description": "Dynamic variables that parameterize a visualization.\n\nFor now, these are only supported in mark properties, i.e., they are not supported in the filter and formula transforms (yet).",
4620
+ "description": "Dynamic variables that parameterize a visualization.",
4423
4621
  "items": {
4424
4622
  "$ref": "#/definitions/VariableParameter"
4425
4623
  },
@@ -4453,6 +4651,13 @@
4453
4651
  },
4454
4652
  "type": "object"
4455
4653
  },
4654
+ "templates": {
4655
+ "additionalProperties": {
4656
+ "$ref": "#/definitions/ViewSpec"
4657
+ },
4658
+ "description": "Templates that can be reused within the view specification by importing them with the template key.",
4659
+ "type": "object"
4660
+ },
4456
4661
  "title": {
4457
4662
  "anyOf": [
4458
4663
  {
@@ -4554,6 +4759,7 @@
4554
4759
  "type": "string"
4555
4760
  },
4556
4761
  "baseUrl": {
4762
+ "description": "Optional base URL for constructing request URLs. When set, all views deeper in the hierarchy inherit this base URL, using it for importing loading data and importing specifications.",
4557
4763
  "type": "string"
4558
4764
  },
4559
4765
  "configurableVisibility": {
@@ -4617,6 +4823,9 @@
4617
4823
  },
4618
4824
  {
4619
4825
  "$ref": "#/definitions/UnitSpec"
4826
+ },
4827
+ {
4828
+ "$ref": "#/definitions/ImportSpec"
4620
4829
  }
4621
4830
  ]
4622
4831
  },
@@ -4634,7 +4843,7 @@
4634
4843
  "description": "Padding in pixels.\n\n**Default:* `0`"
4635
4844
  },
4636
4845
  "params": {
4637
- "description": "Dynamic variables that parameterize a visualization.\n\nFor now, these are only supported in mark properties, i.e., they are not supported in the filter and formula transforms (yet).",
4846
+ "description": "Dynamic variables that parameterize a visualization.",
4638
4847
  "items": {
4639
4848
  "$ref": "#/definitions/VariableParameter"
4640
4849
  },
@@ -4668,6 +4877,13 @@
4668
4877
  },
4669
4878
  "type": "object"
4670
4879
  },
4880
+ "templates": {
4881
+ "additionalProperties": {
4882
+ "$ref": "#/definitions/ViewSpec"
4883
+ },
4884
+ "description": "Templates that can be reused within the view specification by importing them with the template key.",
4885
+ "type": "object"
4886
+ },
4671
4887
  "title": {
4672
4888
  "anyOf": [
4673
4889
  {
@@ -4756,6 +4972,7 @@
4756
4972
  "type": "string"
4757
4973
  },
4758
4974
  "baseUrl": {
4975
+ "description": "Optional base URL for constructing request URLs. When set, all views deeper in the hierarchy inherit this base URL, using it for importing loading data and importing specifications.",
4759
4976
  "type": "string"
4760
4977
  },
4761
4978
  "configurableVisibility": {
@@ -4823,7 +5040,7 @@
4823
5040
  "description": "Padding in pixels.\n\n**Default:* `0`"
4824
5041
  },
4825
5042
  "params": {
4826
- "description": "Dynamic variables that parameterize a visualization.\n\nFor now, these are only supported in mark properties, i.e., they are not supported in the filter and formula transforms (yet).",
5043
+ "description": "Dynamic variables that parameterize a visualization.",
4827
5044
  "items": {
4828
5045
  "$ref": "#/definitions/VariableParameter"
4829
5046
  },
@@ -4858,8 +5075,16 @@
4858
5075
  "type": "object"
4859
5076
  },
4860
5077
  "spacing": {
5078
+ "description": "The gap between the views, in pixels.",
4861
5079
  "type": "number"
4862
5080
  },
5081
+ "templates": {
5082
+ "additionalProperties": {
5083
+ "$ref": "#/definitions/ViewSpec"
5084
+ },
5085
+ "description": "Templates that can be reused within the view specification by importing them with the template key.",
5086
+ "type": "object"
5087
+ },
4863
5088
  "title": {
4864
5089
  "anyOf": [
4865
5090
  {
@@ -4877,6 +5102,7 @@
4877
5102
  "type": "array"
4878
5103
  },
4879
5104
  "vconcat": {
5105
+ "description": "Specifies views that will be concatenated vertically.",
4880
5106
  "items": {
4881
5107
  "anyOf": [
4882
5108
  {
@@ -4958,6 +5184,7 @@
4958
5184
  "type": "string"
4959
5185
  },
4960
5186
  "baseUrl": {
5187
+ "description": "Optional base URL for constructing request URLs. When set, all views deeper in the hierarchy inherit this base URL, using it for importing loading data and importing specifications.",
4961
5188
  "type": "string"
4962
5189
  },
4963
5190
  "configurableVisibility": {
@@ -4996,6 +5223,7 @@
4996
5223
  "$ref": "#/definitions/GenomeConfig"
4997
5224
  },
4998
5225
  "hconcat": {
5226
+ "description": "Specifies views that will be concatenated horizontally.",
4999
5227
  "items": {
5000
5228
  "anyOf": [
5001
5229
  {
@@ -5038,7 +5266,7 @@
5038
5266
  "description": "Padding in pixels.\n\n**Default:* `0`"
5039
5267
  },
5040
5268
  "params": {
5041
- "description": "Dynamic variables that parameterize a visualization.\n\nFor now, these are only supported in mark properties, i.e., they are not supported in the filter and formula transforms (yet).",
5269
+ "description": "Dynamic variables that parameterize a visualization.",
5042
5270
  "items": {
5043
5271
  "$ref": "#/definitions/VariableParameter"
5044
5272
  },
@@ -5073,8 +5301,16 @@
5073
5301
  "type": "object"
5074
5302
  },
5075
5303
  "spacing": {
5304
+ "description": "The gap between the views, in pixels.",
5076
5305
  "type": "number"
5077
5306
  },
5307
+ "templates": {
5308
+ "additionalProperties": {
5309
+ "$ref": "#/definitions/ViewSpec"
5310
+ },
5311
+ "description": "Templates that can be reused within the view specification by importing them with the template key.",
5312
+ "type": "object"
5313
+ },
5078
5314
  "title": {
5079
5315
  "anyOf": [
5080
5316
  {
@@ -5160,12 +5396,15 @@
5160
5396
  "type": "string"
5161
5397
  },
5162
5398
  "baseUrl": {
5399
+ "description": "Optional base URL for constructing request URLs. When set, all views deeper in the hierarchy inherit this base URL, using it for importing loading data and importing specifications.",
5163
5400
  "type": "string"
5164
5401
  },
5165
5402
  "columns": {
5403
+ "description": "The number of columns in the grid.",
5166
5404
  "type": "number"
5167
5405
  },
5168
5406
  "concat": {
5407
+ "description": "Specifies views that will be concatenated into a grid that wraps when the specified number of columns are used.",
5169
5408
  "items": {
5170
5409
  "anyOf": [
5171
5410
  {
@@ -5243,7 +5482,7 @@
5243
5482
  "description": "Padding in pixels.\n\n**Default:* `0`"
5244
5483
  },
5245
5484
  "params": {
5246
- "description": "Dynamic variables that parameterize a visualization.\n\nFor now, these are only supported in mark properties, i.e., they are not supported in the filter and formula transforms (yet).",
5485
+ "description": "Dynamic variables that parameterize a visualization.",
5247
5486
  "items": {
5248
5487
  "$ref": "#/definitions/VariableParameter"
5249
5488
  },
@@ -5278,8 +5517,16 @@
5278
5517
  "type": "object"
5279
5518
  },
5280
5519
  "spacing": {
5520
+ "description": "The gap between the views, in pixels.",
5281
5521
  "type": "number"
5282
5522
  },
5523
+ "templates": {
5524
+ "additionalProperties": {
5525
+ "$ref": "#/definitions/ViewSpec"
5526
+ },
5527
+ "description": "Templates that can be reused within the view specification by importing them with the template key.",
5528
+ "type": "object"
5529
+ },
5283
5530
  "title": {
5284
5531
  "anyOf": [
5285
5532
  {
@@ -5366,6 +5613,7 @@
5366
5613
  "type": "string"
5367
5614
  },
5368
5615
  "baseUrl": {
5616
+ "description": "Optional base URL for constructing request URLs. When set, all views deeper in the hierarchy inherit this base URL, using it for importing loading data and importing specifications.",
5369
5617
  "type": "string"
5370
5618
  },
5371
5619
  "configurableVisibility": {
@@ -5433,7 +5681,7 @@
5433
5681
  "description": "Padding in pixels.\n\n**Default:* `0`"
5434
5682
  },
5435
5683
  "params": {
5436
- "description": "Dynamic variables that parameterize a visualization.\n\nFor now, these are only supported in mark properties, i.e., they are not supported in the filter and formula transforms (yet).",
5684
+ "description": "Dynamic variables that parameterize a visualization.",
5437
5685
  "items": {
5438
5686
  "$ref": "#/definitions/VariableParameter"
5439
5687
  },
@@ -5485,6 +5733,13 @@
5485
5733
  "stickySummaries": {
5486
5734
  "type": "boolean"
5487
5735
  },
5736
+ "templates": {
5737
+ "additionalProperties": {
5738
+ "$ref": "#/definitions/ViewSpec"
5739
+ },
5740
+ "description": "Templates that can be reused within the view specification by importing them with the template key.",
5741
+ "type": "object"
5742
+ },
5488
5743
  "title": {
5489
5744
  "anyOf": [
5490
5745
  {
@@ -5691,6 +5946,7 @@
5691
5946
  "description": "A view specification for a SampleView. This is only functional in the GenomeSpy app.",
5692
5947
  "properties": {
5693
5948
  "baseUrl": {
5949
+ "description": "Optional base URL for constructing request URLs. When set, all views deeper in the hierarchy inherit this base URL, using it for importing loading data and importing specifications.",
5694
5950
  "type": "string"
5695
5951
  },
5696
5952
  "configurableVisibility": {
@@ -5746,6 +6002,13 @@
5746
6002
  "$ref": "#/definitions/PaddingConfig",
5747
6003
  "description": "Padding in pixels.\n\n**Default:* `0`"
5748
6004
  },
6005
+ "params": {
6006
+ "description": "Dynamic variables that parameterize a visualization.",
6007
+ "items": {
6008
+ "$ref": "#/definitions/VariableParameter"
6009
+ },
6010
+ "type": "array"
6011
+ },
5749
6012
  "resolve": {
5750
6013
  "additionalProperties": false,
5751
6014
  "properties": {
@@ -5792,6 +6055,13 @@
5792
6055
  "stickySummaries": {
5793
6056
  "type": "boolean"
5794
6057
  },
6058
+ "templates": {
6059
+ "additionalProperties": {
6060
+ "$ref": "#/definitions/ViewSpec"
6061
+ },
6062
+ "description": "Templates that can be reused within the view specification by importing them with the template key.",
6063
+ "type": "object"
6064
+ },
5795
6065
  "title": {
5796
6066
  "anyOf": [
5797
6067
  {
@@ -6226,20 +6496,48 @@
6226
6496
  "additionalProperties": false,
6227
6497
  "properties": {
6228
6498
  "as": {
6229
- "$ref": "#/definitions/FieldName",
6499
+ "anyOf": [
6500
+ {
6501
+ "$ref": "#/definitions/FieldName"
6502
+ },
6503
+ {
6504
+ "$ref": "#/definitions/ExprRef"
6505
+ }
6506
+ ],
6230
6507
  "description": "The name of the generated sequence field.\n\n__Default value:__ `\"data\"`"
6231
6508
  },
6232
6509
  "start": {
6233
- "description": "The starting value of the sequence (inclusive).",
6234
- "type": "number"
6510
+ "anyOf": [
6511
+ {
6512
+ "type": "number"
6513
+ },
6514
+ {
6515
+ "$ref": "#/definitions/ExprRef"
6516
+ }
6517
+ ],
6518
+ "description": "The starting value of the sequence (inclusive)."
6235
6519
  },
6236
6520
  "step": {
6237
- "description": "The step value between sequence entries.\n\n__Default value:__ `1`",
6238
- "type": "number"
6521
+ "anyOf": [
6522
+ {
6523
+ "type": "number"
6524
+ },
6525
+ {
6526
+ "$ref": "#/definitions/ExprRef"
6527
+ }
6528
+ ],
6529
+ "description": "The step value between sequence entries.\n\n__Default value:__ `1`"
6239
6530
  },
6240
6531
  "stop": {
6241
- "description": "The ending value of the sequence (exclusive).",
6242
- "type": "number"
6532
+ "anyOf": [
6533
+ {
6534
+ "type": "number"
6535
+ },
6536
+ {
6537
+ "$ref": "#/definitions/ExprRef"
6538
+ }
6539
+ ],
6540
+ "description": "The ending value of the sequence (exclusive)."
6243
6541
  }
6244
6542
  },
6245
6543
  "required": [
@@ -6389,6 +6687,19 @@
6389
6687
  },
6390
6688
  "type": "object"
6391
6689
  },
6690
+ "TemplateImport": {
6691
+ "additionalProperties": false,
6692
+ "properties": {
6693
+ "template": {
6694
+ "description": "Imports a specification from the current view hierarchy, searching first in the current view, then ascending through ancestors.",
6695
+ "type": "string"
6696
+ }
6697
+ },
6698
+ "required": [
6699
+ "template"
6700
+ ],
6701
+ "type": "object"
6702
+ },
6392
6703
  "TextDef<string>": {
6393
6704
  "anyOf": [
6394
6705
  {
@@ -6414,16 +6725,30 @@
6414
6725
  "description": "The anchor position for placing the title and subtitle text. One of `\"start\"`, `\"middle\"`, or `\"end\"`. For example, with an orientation of top these anchor positions map to a left-, center-, or right-aligned title."
6415
6726
  },
6416
6727
  "angle": {
6417
- "description": "Angle in degrees of title and subtitle text.",
6418
- "type": "number"
6728
+ "anyOf": [
6729
+ {
6730
+ "type": "number"
6731
+ },
6732
+ {
6733
+ "$ref": "#/definitions/ExprRef"
6734
+ }
6735
+ ],
6736
+ "description": "Angle in degrees of title and subtitle text."
6419
6737
  },
6420
6738
  "baseline": {
6421
6739
  "$ref": "#/definitions/Baseline",
6422
6740
  "description": "Vertical text baseline for title and subtitle text. One of `\"alphabetic\"` (default), `\"top\"`, `\"middle\"`, or `\"bottom\"`."
6423
6741
  },
6424
6742
  "color": {
6425
- "description": "Text color for title text.",
6426
- "type": "string"
6743
+ "anyOf": [
6744
+ {
6745
+ "type": "string"
6746
+ },
6747
+ {
6748
+ "$ref": "#/definitions/ExprRef"
6749
+ }
6750
+ ],
6751
+ "description": "Text color for title text."
6427
6752
  },
6428
6753
  "dx": {
6429
6754
  "description": "Delta offset for title and subtitle text x-coordinate.",
@@ -6438,9 +6763,16 @@
6438
6763
  "type": "string"
6439
6764
  },
6440
6765
  "fontSize": {
6766
+ "anyOf": [
6767
+ {
6768
+ "type": "number"
6769
+ },
6770
+ {
6771
+ "$ref": "#/definitions/ExprRef"
6772
+ }
6773
+ ],
6441
6774
  "description": "Font size in pixels for title text.",
6442
- "minimum": 0,
6443
- "type": "number"
6775
+ "minimum": 0
6444
6776
  },
6445
6777
  "fontStyle": {
6446
6778
  "$ref": "#/definitions/FontStyle",
@@ -6467,8 +6799,15 @@
6467
6799
  "type": "string"
6468
6800
  },
6469
6801
  "text": {
6470
- "description": "The title text.",
6471
- "type": "string"
6802
+ "anyOf": [
6803
+ {
6804
+ "type": "string"
6805
+ },
6806
+ {
6807
+ "$ref": "#/definitions/ExprRef"
6808
+ }
6809
+ ],
6810
+ "description": "The title text."
6472
6811
  }
6473
6812
  },
6474
6813
  "required": [
@@ -6613,6 +6952,7 @@
6613
6952
  "type": "array"
6614
6953
  },
6615
6954
  "baseUrl": {
6955
+ "description": "Optional base URL for constructing request URLs. When set, all views deeper in the hierarchy inherit this base URL, using it for importing loading data and importing specifications.",
6616
6956
  "type": "string"
6617
6957
  },
6618
6958
  "configurableVisibility": {
@@ -6678,6 +7018,13 @@
6678
7018
  "$ref": "#/definitions/PaddingConfig",
6679
7019
  "description": "Padding in pixels.\n\n**Default:* `0`"
6680
7020
  },
7021
+ "params": {
7022
+ "description": "Dynamic variables that parameterize a visualization.",
7023
+ "items": {
7024
+ "$ref": "#/definitions/VariableParameter"
7025
+ },
7026
+ "type": "array"
7027
+ },
6681
7028
  "resolve": {
6682
7029
  "additionalProperties": false,
6683
7030
  "properties": {
@@ -6706,6 +7053,13 @@
6706
7053
  },
6707
7054
  "type": "object"
6708
7055
  },
7056
+ "templates": {
7057
+ "additionalProperties": {
7058
+ "$ref": "#/definitions/ViewSpec"
7059
+ },
7060
+ "description": "Templates that can be reused within the view specification by importing them with the template key.",
7061
+ "type": "object"
7062
+ },
6709
7063
  "title": {
6710
7064
  "anyOf": [
6711
7065
  {
@@ -6804,6 +7158,9 @@
6804
7158
  "type": "string"
6805
7159
  },
6806
7160
  "type": "array"
7161
+ },
7162
+ {
7163
+ "$ref": "#/definitions/ExprRef"
6807
7164
  }
6808
7165
  ],
6809
7166
  "description": "An URL or an array of URLs from which to load the data set. Use the `format.type` property to ensure the loaded data is correctly parsed."
@@ -6814,10 +7171,24 @@
6814
7171
  ],
6815
7172
  "type": "object"
6816
7173
  },
7174
+ "UrlImport": {
7175
+ "additionalProperties": false,
7176
+ "properties": {
7177
+ "url": {
7178
+ "description": "Imports a specification from the specified URL.",
7179
+ "type": "string"
7180
+ }
7181
+ },
7182
+ "required": [
7183
+ "url"
7184
+ ],
7185
+ "type": "object"
7186
+ },
6817
7187
  "VConcatSpec": {
6818
7188
  "additionalProperties": false,
6819
7189
  "properties": {
6820
7190
  "baseUrl": {
7191
+ "description": "Optional base URL for constructing request URLs. When set, all views deeper in the hierarchy inherit this base URL, using it for importing loading data and importing specifications.",
6821
7192
  "type": "string"
6822
7193
  },
6823
7194
  "configurableVisibility": {
@@ -6873,6 +7244,13 @@
6873
7244
  "$ref": "#/definitions/PaddingConfig",
6874
7245
  "description": "Padding in pixels.\n\n**Default:* `0`"
6875
7246
  },
7247
+ "params": {
7248
+ "description": "Dynamic variables that parameterize a visualization.",
7249
+ "items": {
7250
+ "$ref": "#/definitions/VariableParameter"
7251
+ },
7252
+ "type": "array"
7253
+ },
6876
7254
  "resolve": {
6877
7255
  "additionalProperties": false,
6878
7256
  "properties": {
@@ -6902,8 +7280,16 @@
6902
7280
  "type": "object"
6903
7281
  },
6904
7282
  "spacing": {
7283
+ "description": "The gap between the views, in pixels.",
6905
7284
  "type": "number"
6906
7285
  },
7286
+ "templates": {
7287
+ "additionalProperties": {
7288
+ "$ref": "#/definitions/ViewSpec"
7289
+ },
7290
+ "description": "Templates that can be reused within the view specification by importing them with the template key.",
7291
+ "type": "object"
7292
+ },
6907
7293
  "title": {
6908
7294
  "anyOf": [
6909
7295
  {
@@ -6921,6 +7307,7 @@
6921
7307
  "type": "array"
6922
7308
  },
6923
7309
  "vconcat": {
7310
+ "description": "Specifies views that will be concatenated vertically.",
6924
7311
  "items": {
6925
7312
  "anyOf": [
6926
7313
  {
@@ -7055,6 +7442,10 @@
7055
7442
  "$ref": "#/definitions/Binding",
7056
7443
  "description": "Binds the parameter to an external input element such as a slider, selection list or radio button group."
7057
7444
  },
7445
+ "expr": {
7446
+ "description": "An expression for the value of the parameter. This expression may include other parameters, in which case the parameter will automatically update in response to upstream parameter changes.",
7447
+ "type": "string"
7448
+ },
7058
7449
  "name": {
7059
7450
  "description": "A unique name for the variable parameter. Parameter names should be valid JavaScript identifiers: they should contain only alphanumeric characters (or \"$\", or \"_\") and may not start with a digit. Reserved keywords that may not be used as parameter names are: \"datum\".",
7060
7451
  "type": "string"