@genome-spy/core 0.43.3 → 0.45.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 (124) hide show
  1. package/dist/bundle/index.es.js +5231 -4324
  2. package/dist/bundle/index.js +197 -85
  3. package/dist/schema.json +723 -104
  4. package/dist/src/data/collector.d.ts.map +1 -1
  5. package/dist/src/data/collector.js +4 -2
  6. package/dist/src/data/flowOptimizer.test.js +12 -3
  7. package/dist/src/data/sources/dataUtils.d.ts.map +1 -1
  8. package/dist/src/data/sources/dataUtils.js +3 -1
  9. package/dist/src/data/sources/lazy/axisTickSource.d.ts +1 -1
  10. package/dist/src/data/sources/lazy/axisTickSource.d.ts.map +1 -1
  11. package/dist/src/data/sources/lazy/axisTickSource.js +2 -2
  12. package/dist/src/data/sources/lazy/bigBedSource.d.ts +1 -1
  13. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  14. package/dist/src/data/sources/lazy/bigBedSource.js +52 -20
  15. package/dist/src/data/sources/lazy/bigWigSource.d.ts +6 -1
  16. package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
  17. package/dist/src/data/sources/lazy/bigWigSource.js +33 -9
  18. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +1 -1
  19. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  20. package/dist/src/data/sources/lazy/singleAxisLazySource.js +1 -3
  21. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts +13 -14
  22. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  23. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +70 -48
  24. package/dist/src/data/sources/sequenceSource.d.ts.map +1 -1
  25. package/dist/src/data/sources/sequenceSource.js +14 -5
  26. package/dist/src/data/sources/sequenceSource.test.js +23 -5
  27. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  28. package/dist/src/data/sources/urlSource.js +15 -2
  29. package/dist/src/data/transforms/aggregate.d.ts.map +1 -1
  30. package/dist/src/data/transforms/aggregate.js +5 -2
  31. package/dist/src/data/transforms/filterScoredLabels.js +1 -1
  32. package/dist/src/encoder/encoder.d.ts +2 -4
  33. package/dist/src/encoder/encoder.d.ts.map +1 -1
  34. package/dist/src/encoder/encoder.js +20 -10
  35. package/dist/src/encoder/encoder.test.js +3 -0
  36. package/dist/src/genomeSpy.d.ts +8 -5
  37. package/dist/src/genomeSpy.d.ts.map +1 -1
  38. package/dist/src/genomeSpy.js +121 -42
  39. package/dist/src/gl/glslScaleGenerator.d.ts +23 -3
  40. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  41. package/dist/src/gl/glslScaleGenerator.js +137 -42
  42. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  43. package/dist/src/gl/webGLHelper.js +5 -7
  44. package/dist/src/index.d.ts +1 -1
  45. package/dist/src/index.d.ts.map +1 -1
  46. package/dist/src/index.js +1 -1
  47. package/dist/src/marks/link.common.glsl.js +2 -0
  48. package/dist/src/marks/link.d.ts.map +1 -1
  49. package/dist/src/marks/link.js +19 -9
  50. package/dist/src/marks/link.vertex.glsl.js +1 -1
  51. package/dist/src/marks/mark.d.ts +25 -20
  52. package/dist/src/marks/mark.d.ts.map +1 -1
  53. package/dist/src/marks/mark.js +234 -129
  54. package/dist/src/marks/point.common.glsl.js +1 -1
  55. package/dist/src/marks/point.d.ts +1 -4
  56. package/dist/src/marks/point.d.ts.map +1 -1
  57. package/dist/src/marks/point.js +31 -23
  58. package/dist/src/marks/point.vertex.glsl.js +1 -1
  59. package/dist/src/marks/rect.common.glsl.js +2 -0
  60. package/dist/src/marks/rect.d.ts.map +1 -1
  61. package/dist/src/marks/rect.js +12 -12
  62. package/dist/src/marks/rect.vertex.glsl.js +1 -1
  63. package/dist/src/marks/rule.common.glsl.js +1 -1
  64. package/dist/src/marks/rule.js +2 -2
  65. package/dist/src/marks/text.common.glsl.js +1 -1
  66. package/dist/src/marks/text.d.ts.map +1 -1
  67. package/dist/src/marks/text.js +17 -9
  68. package/dist/src/spec/channel.d.ts +4 -3
  69. package/dist/src/spec/data.d.ts +11 -10
  70. package/dist/src/spec/mark.d.ts +28 -46
  71. package/dist/src/spec/parameter.d.ts +127 -0
  72. package/dist/src/spec/root.d.ts +1 -0
  73. package/dist/src/spec/scale.d.ts +2 -1
  74. package/dist/src/spec/title.d.ts +5 -4
  75. package/dist/src/spec/view.d.ts +20 -5
  76. package/dist/src/styles/genome-spy.css.d.ts +1 -1
  77. package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
  78. package/dist/src/styles/genome-spy.css.js +52 -5
  79. package/dist/src/styles/genome-spy.scss +63 -10
  80. package/dist/src/styles/update.sh +6 -0
  81. package/dist/src/tooltip/dataTooltipHandler.js +1 -1
  82. package/dist/src/tooltip/refseqGeneTooltipHandler.js +1 -1
  83. package/dist/src/tooltip/tooltipHandler.d.ts +1 -1
  84. package/dist/src/tooltip/tooltipHandler.d.ts.map +1 -1
  85. package/dist/src/tooltip/tooltipHandler.ts +1 -1
  86. package/dist/src/types/embedApi.d.ts +6 -0
  87. package/dist/src/types/scaleResolutionApi.d.ts +7 -3
  88. package/dist/src/types/viewContext.d.ts +2 -3
  89. package/dist/src/utils/debounce.d.ts +2 -2
  90. package/dist/src/utils/debounce.d.ts.map +1 -1
  91. package/dist/src/utils/debounce.js +5 -2
  92. package/dist/src/utils/expression.d.ts +2 -2
  93. package/dist/src/utils/expression.d.ts.map +1 -1
  94. package/dist/src/utils/expression.js +3 -3
  95. package/dist/src/utils/formatObject.d.ts +2 -2
  96. package/dist/src/utils/formatObject.d.ts.map +1 -1
  97. package/dist/src/utils/formatObject.js +2 -2
  98. package/dist/src/utils/inputBinding.d.ts +5 -0
  99. package/dist/src/utils/inputBinding.d.ts.map +1 -0
  100. package/dist/src/utils/inputBinding.js +115 -0
  101. package/dist/src/utils/ui/tooltip.js +1 -1
  102. package/dist/src/view/axisView.js +3 -3
  103. package/dist/src/view/paramMediator.d.ts +108 -0
  104. package/dist/src/view/paramMediator.d.ts.map +1 -0
  105. package/dist/src/view/paramMediator.js +337 -0
  106. package/dist/src/view/paramMediator.test.js +211 -0
  107. package/dist/src/view/scaleResolution.d.ts +8 -18
  108. package/dist/src/view/scaleResolution.d.ts.map +1 -1
  109. package/dist/src/view/scaleResolution.js +225 -126
  110. package/dist/src/view/scaleResolution.test.js +7 -7
  111. package/dist/src/view/unitView.d.ts.map +1 -1
  112. package/dist/src/view/unitView.js +10 -3
  113. package/dist/src/view/view.d.ts +4 -1
  114. package/dist/src/view/view.d.ts.map +1 -1
  115. package/dist/src/view/view.js +21 -7
  116. package/dist/src/view/viewFactory.d.ts.map +1 -1
  117. package/dist/src/view/viewFactory.js +45 -0
  118. package/dist/src/view/viewUtils.d.ts +5 -1
  119. package/dist/src/view/viewUtils.d.ts.map +1 -1
  120. package/dist/src/view/viewUtils.js +9 -4
  121. package/package.json +16 -17
  122. package/dist/src/paramBroker.d.ts +0 -30
  123. package/dist/src/paramBroker.d.ts.map +0 -1
  124. package/dist/src/paramBroker.js +0 -102
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": [
@@ -433,6 +482,122 @@
433
482
  ],
434
483
  "type": "object"
435
484
  },
485
+ "BindCheckbox": {
486
+ "additionalProperties": false,
487
+ "properties": {
488
+ "debounce": {
489
+ "description": "If defined, delays event handling until the specified milliseconds have elapsed since the last event was fired.",
490
+ "type": "number"
491
+ },
492
+ "description": {
493
+ "description": "An optional description or help text that is shown below the input element.",
494
+ "type": "string"
495
+ },
496
+ "input": {
497
+ "const": "checkbox",
498
+ "type": "string"
499
+ },
500
+ "name": {
501
+ "description": "By default, the parameter name is used to label input elements. This `name` property can be used instead to specify a custom label for the bound parameter.",
502
+ "type": "string"
503
+ }
504
+ },
505
+ "required": [
506
+ "input"
507
+ ],
508
+ "type": "object"
509
+ },
510
+ "BindRadioSelect": {
511
+ "additionalProperties": false,
512
+ "properties": {
513
+ "debounce": {
514
+ "description": "If defined, delays event handling until the specified milliseconds have elapsed since the last event was fired.",
515
+ "type": "number"
516
+ },
517
+ "description": {
518
+ "description": "An optional description or help text that is shown below the input element.",
519
+ "type": "string"
520
+ },
521
+ "input": {
522
+ "enum": [
523
+ "radio",
524
+ "select"
525
+ ],
526
+ "type": "string"
527
+ },
528
+ "labels": {
529
+ "description": "An array of label strings to represent the `options` values. If unspecified, the `options` value will be coerced to a string and used as the label.",
530
+ "items": {
531
+ "type": "string"
532
+ },
533
+ "type": "array"
534
+ },
535
+ "name": {
536
+ "description": "By default, the parameter name is used to label input elements. This `name` property can be used instead to specify a custom label for the bound parameter.",
537
+ "type": "string"
538
+ },
539
+ "options": {
540
+ "description": "An array of options to select from.",
541
+ "items": {},
542
+ "type": "array"
543
+ }
544
+ },
545
+ "required": [
546
+ "input",
547
+ "options"
548
+ ],
549
+ "type": "object"
550
+ },
551
+ "BindRange": {
552
+ "additionalProperties": false,
553
+ "properties": {
554
+ "debounce": {
555
+ "description": "If defined, delays event handling until the specified milliseconds have elapsed since the last event was fired.",
556
+ "type": "number"
557
+ },
558
+ "description": {
559
+ "description": "An optional description or help text that is shown below the input element.",
560
+ "type": "string"
561
+ },
562
+ "input": {
563
+ "const": "range",
564
+ "type": "string"
565
+ },
566
+ "max": {
567
+ "description": "Sets the maximum slider value. Defaults to the larger of the signal value and `100`.",
568
+ "type": "number"
569
+ },
570
+ "min": {
571
+ "description": "Sets the minimum slider value. Defaults to the smaller of the signal value and `0`.",
572
+ "type": "number"
573
+ },
574
+ "name": {
575
+ "description": "By default, the parameter name is used to label input elements. This `name` property can be used instead to specify a custom label for the bound parameter.",
576
+ "type": "string"
577
+ },
578
+ "step": {
579
+ "description": "Sets the minimum slider increment. If undefined, the step size will be automatically determined based on the `min` and `max` values.",
580
+ "type": "number"
581
+ }
582
+ },
583
+ "required": [
584
+ "input"
585
+ ],
586
+ "type": "object"
587
+ },
588
+ "Binding": {
589
+ "anyOf": [
590
+ {
591
+ "$ref": "#/definitions/BindCheckbox"
592
+ },
593
+ {
594
+ "$ref": "#/definitions/BindRadioSelect"
595
+ },
596
+ {
597
+ "$ref": "#/definitions/BindRange"
598
+ }
599
+ ]
600
+ },
436
601
  "ChannelWithScale": {
437
602
  "anyOf": [
438
603
  {
@@ -721,6 +886,13 @@
721
886
  "$ref": "#/definitions/PaddingConfig",
722
887
  "description": "Padding in pixels.\n\n**Default:* `0`"
723
888
  },
889
+ "params": {
890
+ "description": "Dynamic variables that parameterize a visualization.",
891
+ "items": {
892
+ "$ref": "#/definitions/VariableParameter"
893
+ },
894
+ "type": "array"
895
+ },
724
896
  "resolve": {
725
897
  "additionalProperties": false,
726
898
  "properties": {
@@ -1267,7 +1439,14 @@
1267
1439
  "type": "boolean"
1268
1440
  },
1269
1441
  "datum": {
1270
- "$ref": "#/definitions/Scalar",
1442
+ "anyOf": [
1443
+ {
1444
+ "$ref": "#/definitions/Scalar"
1445
+ },
1446
+ {
1447
+ "$ref": "#/definitions/ExprRef"
1448
+ }
1449
+ ],
1271
1450
  "description": "A constant value in data domain."
1272
1451
  },
1273
1452
  "resolutionChannel": {
@@ -1354,8 +1533,15 @@
1354
1533
  ]
1355
1534
  },
1356
1535
  "value": {
1357
- "description": "A constant value in visual domain (e.g., `\"red\"` / `\"#0099ff\"`, values between `0` to `1` for opacity).",
1358
- "type": "number"
1536
+ "anyOf": [
1537
+ {
1538
+ "type": "number"
1539
+ },
1540
+ {
1541
+ "$ref": "#/definitions/ExprRef"
1542
+ }
1543
+ ],
1544
+ "description": "A constant value in visual domain (e.g., `\"red\"` / `\"#0099ff\"`, values between `0` to `1` for opacity)."
1359
1545
  }
1360
1546
  },
1361
1547
  "required": [
@@ -2073,8 +2259,15 @@
2073
2259
  "description": "Which channel's scale domain to monitor.\n\n__Default value:__ `\"x\"`"
2074
2260
  },
2075
2261
  "debounce": {
2076
- "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`",
2077
- "type": "number"
2262
+ "anyOf": [
2263
+ {
2264
+ "type": "number"
2265
+ },
2266
+ {
2267
+ "$ref": "#/definitions/ExprRef"
2268
+ }
2269
+ ],
2270
+ "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`"
2078
2271
  },
2079
2272
  "debounceMode": {
2080
2273
  "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\"`",
@@ -2179,6 +2372,13 @@
2179
2372
  "$ref": "#/definitions/PaddingConfig",
2180
2373
  "description": "Padding in pixels.\n\n**Default:* `0`"
2181
2374
  },
2375
+ "params": {
2376
+ "description": "Dynamic variables that parameterize a visualization.",
2377
+ "items": {
2378
+ "$ref": "#/definitions/VariableParameter"
2379
+ },
2380
+ "type": "array"
2381
+ },
2182
2382
  "resolve": {
2183
2383
  "additionalProperties": false,
2184
2384
  "properties": {
@@ -2317,14 +2517,26 @@
2317
2517
  ],
2318
2518
  "type": "object"
2319
2519
  },
2320
- "ImportConfig": {
2520
+ "ImportParams": {
2321
2521
  "additionalProperties": false,
2322
2522
  "properties": {
2323
2523
  "name": {
2524
+ "description": "Name for the imported view. Overrides the name defined in the imported spec.",
2324
2525
  "type": "string"
2325
2526
  },
2326
2527
  "params": {
2327
- "type": "object"
2528
+ "anyOf": [
2529
+ {
2530
+ "items": {
2531
+ "$ref": "#/definitions/VariableParameter"
2532
+ },
2533
+ "type": "array"
2534
+ },
2535
+ {
2536
+ "type": "object"
2537
+ }
2538
+ ],
2539
+ "description": "Dynamic variables that parameterize a visualization. Parameters defined here override the parameters defined in the imported spec."
2328
2540
  },
2329
2541
  "url": {
2330
2542
  "type": "string"
@@ -2336,7 +2548,7 @@
2336
2548
  "additionalProperties": false,
2337
2549
  "properties": {
2338
2550
  "import": {
2339
- "$ref": "#/definitions/ImportConfig"
2551
+ "$ref": "#/definitions/ImportParams"
2340
2552
  }
2341
2553
  },
2342
2554
  "required": [
@@ -2352,8 +2564,15 @@
2352
2564
  "description": "Which channel's scale domain to monitor.\n\n__Default value:__ `\"x\"`"
2353
2565
  },
2354
2566
  "debounce": {
2355
- "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`",
2356
- "type": "number"
2567
+ "anyOf": [
2568
+ {
2569
+ "type": "number"
2570
+ },
2571
+ {
2572
+ "$ref": "#/definitions/ExprRef"
2573
+ }
2574
+ ],
2575
+ "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`"
2357
2576
  },
2358
2577
  "debounceMode": {
2359
2578
  "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\"`",
@@ -2552,6 +2771,13 @@
2552
2771
  "$ref": "#/definitions/PaddingConfig",
2553
2772
  "description": "Padding in pixels.\n\n**Default:* `0`"
2554
2773
  },
2774
+ "params": {
2775
+ "description": "Dynamic variables that parameterize a visualization.",
2776
+ "items": {
2777
+ "$ref": "#/definitions/VariableParameter"
2778
+ },
2779
+ "type": "array"
2780
+ },
2555
2781
  "resolve": {
2556
2782
  "additionalProperties": false,
2557
2783
  "properties": {
@@ -2773,8 +2999,15 @@
2773
2999
  "description": "The horizontal alignment of the text. One of `\"left\"`, `\"center\"`, or `\"right\"`.\n\n**Default value:** `\"left\"`"
2774
3000
  },
2775
3001
  "angle": {
2776
- "description": "The rotation angle in degrees.\n\n**Default value:** `0`",
2777
- "type": "number"
3002
+ "anyOf": [
3003
+ {
3004
+ "type": "number"
3005
+ },
3006
+ {
3007
+ "$ref": "#/definitions/ExprRef"
3008
+ }
3009
+ ],
3010
+ "description": "The rotation angle in degrees.\n\n**Default value:** `0`"
2778
3011
  },
2779
3012
  "arcFadingDistance": {
2780
3013
  "anyOf": [
@@ -2835,7 +3068,14 @@
2835
3068
  "description": "If true, the mark is clipped to the UnitView's rectangle. By default, clipping is enabled for marks that have zoomable positional scales."
2836
3069
  },
2837
3070
  "color": {
2838
- "type": "string"
3071
+ "anyOf": [
3072
+ {
3073
+ "type": "string"
3074
+ },
3075
+ {
3076
+ "$ref": "#/definitions/ExprRef"
3077
+ }
3078
+ ]
2839
3079
  },
2840
3080
  "cornerRadius": {
2841
3081
  "anyOf": [
@@ -2901,32 +3141,74 @@
2901
3141
  "type": "number"
2902
3142
  },
2903
3143
  "fill": {
2904
- "description": "The fill color",
2905
- "type": "string"
3144
+ "anyOf": [
3145
+ {
3146
+ "type": "string"
3147
+ },
3148
+ {
3149
+ "$ref": "#/definitions/ExprRef"
3150
+ }
3151
+ ],
3152
+ "description": "The fill color"
2906
3153
  },
2907
3154
  "fillGradientStrength": {
2908
- "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`",
2909
- "type": "number"
3155
+ "anyOf": [
3156
+ {
3157
+ "type": "number"
3158
+ },
3159
+ {
3160
+ "$ref": "#/definitions/ExprRef"
3161
+ }
3162
+ ],
3163
+ "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`"
2910
3164
  },
2911
3165
  "fillOpacity": {
2912
- "description": "The fill opacity. Value between [0, 1].",
2913
- "type": "number"
3166
+ "anyOf": [
3167
+ {
3168
+ "type": "number"
3169
+ },
3170
+ {
3171
+ "$ref": "#/definitions/ExprRef"
3172
+ }
3173
+ ],
3174
+ "description": "The fill opacity. Value between [0, 1]."
2914
3175
  },
2915
3176
  "filled": {
2916
3177
  "description": "Whether the `color` represents the `fill` color (`true`) or the `stroke` color (`false`).",
2917
3178
  "type": "boolean"
2918
3179
  },
2919
3180
  "fitToBand": {
2920
- "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`",
2921
- "type": "boolean"
3181
+ "anyOf": [
3182
+ {
3183
+ "type": "boolean"
3184
+ },
3185
+ {
3186
+ "$ref": "#/definitions/ExprRef"
3187
+ }
3188
+ ],
3189
+ "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`"
2922
3190
  },
2923
3191
  "flushX": {
2924
- "description": "If true, the text is kept inside the viewport when the range of `x` and `x2` intersect the viewport.",
2925
- "type": "boolean"
3192
+ "anyOf": [
3193
+ {
3194
+ "type": "boolean"
3195
+ },
3196
+ {
3197
+ "$ref": "#/definitions/ExprRef"
3198
+ }
3199
+ ],
3200
+ "description": "If true, the text is kept inside the viewport when the range of `x` and `x2` intersect the viewport."
2926
3201
  },
2927
3202
  "flushY": {
2928
- "description": "If true, the text is kept inside the viewport when the range of `y` and `y2` intersect the viewport.",
2929
- "type": "boolean"
3203
+ "anyOf": [
3204
+ {
3205
+ "type": "boolean"
3206
+ },
3207
+ {
3208
+ "$ref": "#/definitions/ExprRef"
3209
+ }
3210
+ ],
3211
+ "description": "If true, the text is kept inside the viewport when the range of `y` and `y2` intersect the viewport."
2930
3212
  },
2931
3213
  "font": {
2932
3214
  "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\"`",
@@ -2945,8 +3227,15 @@
2945
3227
  "type": "number"
2946
3228
  },
2947
3229
  "inwardStroke": {
2948
- "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`",
2949
- "type": "boolean"
3230
+ "anyOf": [
3231
+ {
3232
+ "type": "boolean"
3233
+ },
3234
+ {
3235
+ "$ref": "#/definitions/ExprRef"
3236
+ }
3237
+ ],
3238
+ "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`"
2950
3239
  },
2951
3240
  "linkShape": {
2952
3241
  "anyOf": [
@@ -2973,8 +3262,15 @@
2973
3262
  "description": "The shape of the link path. Either `\"arc\"`, `\"diagonal\"`, `\"line\"`, or `\"dome\"`.\n\n**Default value:** `\"arc\"`"
2974
3263
  },
2975
3264
  "logoLetters": {
2976
- "description": "Stretch letters so that they can be used with [sequence logos](https://en.wikipedia.org/wiki/Sequence_logo), etc...",
2977
- "type": "boolean"
3265
+ "anyOf": [
3266
+ {
3267
+ "type": "boolean"
3268
+ },
3269
+ {
3270
+ "$ref": "#/definitions/ExprRef"
3271
+ }
3272
+ ],
3273
+ "description": "Stretch letters so that they can be used with [sequence logos](https://en.wikipedia.org/wiki/Sequence_logo), etc..."
2978
3274
  },
2979
3275
  "maxChordLength": {
2980
3276
  "anyOf": [
@@ -3058,7 +3354,14 @@
3058
3354
  "description": "The minimum width of a rectangle in pixels. The property clamps rectangles' widths when the viewport is zoomed out.\n\nThis property also reduces flickering of very narrow rectangles when zooming. The value should generally be at least one.\n\n**Default value:** `1`"
3059
3355
  },
3060
3356
  "opacity": {
3061
- "type": "number"
3357
+ "anyOf": [
3358
+ {
3359
+ "type": "number"
3360
+ },
3361
+ {
3362
+ "$ref": "#/definitions/ExprRef"
3363
+ }
3364
+ ]
3062
3365
  },
3063
3366
  "orient": {
3064
3367
  "anyOf": [
@@ -3077,40 +3380,78 @@
3077
3380
  "description": "The orientation of the link path. Either `\"vertical\"` or `\"horizontal\"`. Only applies to diagonal links.\n\n**Default value:** `\"vertical\"`"
3078
3381
  },
3079
3382
  "paddingX": {
3080
- "description": "The horizontal padding, in pixels, when the `x2` channel is used for ranged text.\n\n**Default value:** `0`",
3081
- "type": "number"
3383
+ "anyOf": [
3384
+ {
3385
+ "type": "number"
3386
+ },
3387
+ {
3388
+ "$ref": "#/definitions/ExprRef"
3389
+ }
3390
+ ],
3391
+ "description": "The horizontal padding, in pixels, when the `x2` channel is used for ranged text.\n\n**Default value:** `0`"
3082
3392
  },
3083
3393
  "paddingY": {
3084
- "description": "The vertical padding, in pixels, when the `y2` channel is used for ranged text.\n\n**Default value:** `0`",
3085
- "type": "number"
3086
- },
3087
- "sampleFacetPadding": {
3088
- "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`",
3089
- "type": "number"
3394
+ "anyOf": [
3395
+ {
3396
+ "type": "number"
3397
+ },
3398
+ {
3399
+ "$ref": "#/definitions/ExprRef"
3400
+ }
3401
+ ],
3402
+ "description": "The vertical padding, in pixels, when the `y2` channel is used for ranged text.\n\n**Default value:** `0`"
3090
3403
  },
3091
3404
  "segments": {
3092
3405
  "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`",
3093
3406
  "type": "number"
3094
3407
  },
3095
3408
  "semanticZoomFraction": {
3096
- "description": "TODO\n\n**Default value:** `0.02`",
3097
- "type": "number"
3409
+ "anyOf": [
3410
+ {
3411
+ "type": "number"
3412
+ },
3413
+ {
3414
+ "$ref": "#/definitions/ExprRef"
3415
+ }
3416
+ ],
3417
+ "description": "TODO\n\n**Default value:** `0.02`"
3098
3418
  },
3099
3419
  "shape": {
3100
3420
  "description": "One of `\"circle\"`, `\"square\"`, `\"cross\"`, `\"diamond\"`, `\"triangle-up\"`, `\"triangle-down\"`, `\"triangle-right\"`, or `\"triangle-left\"`.\n\n**Default value:** `\"circle\"`",
3101
3421
  "type": "string"
3102
3422
  },
3103
3423
  "size": {
3104
- "description": "The font size in pixels.\n\n**Default value:** `11`",
3105
- "type": "number"
3424
+ "anyOf": [
3425
+ {
3426
+ "type": "number"
3427
+ },
3428
+ {
3429
+ "$ref": "#/definitions/ExprRef"
3430
+ }
3431
+ ],
3432
+ "description": "The font size in pixels.\n\n**Default value:** `11`"
3106
3433
  },
3107
3434
  "squeeze": {
3108
- "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`",
3109
- "type": "boolean"
3435
+ "anyOf": [
3436
+ {
3437
+ "type": "boolean"
3438
+ },
3439
+ {
3440
+ "$ref": "#/definitions/ExprRef"
3441
+ }
3442
+ ],
3443
+ "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`"
3110
3444
  },
3111
3445
  "stroke": {
3112
- "description": "The stroke color",
3113
- "type": "string"
3446
+ "anyOf": [
3447
+ {
3448
+ "type": "string"
3449
+ },
3450
+ {
3451
+ "$ref": "#/definitions/ExprRef"
3452
+ }
3453
+ ],
3454
+ "description": "The stroke color"
3114
3455
  },
3115
3456
  "strokeCap": {
3116
3457
  "anyOf": [
@@ -3144,15 +3485,36 @@
3144
3485
  "type": "number"
3145
3486
  },
3146
3487
  "strokeOpacity": {
3147
- "description": "The stroke opacity. Value between [0, 1].",
3148
- "type": "number"
3488
+ "anyOf": [
3489
+ {
3490
+ "type": "number"
3491
+ },
3492
+ {
3493
+ "$ref": "#/definitions/ExprRef"
3494
+ }
3495
+ ],
3496
+ "description": "The stroke opacity. Value between [0, 1]."
3149
3497
  },
3150
3498
  "strokeWidth": {
3151
- "description": "The stroke width in pixels.",
3152
- "type": "number"
3499
+ "anyOf": [
3500
+ {
3501
+ "type": "number"
3502
+ },
3503
+ {
3504
+ "$ref": "#/definitions/ExprRef"
3505
+ }
3506
+ ],
3507
+ "description": "The stroke width in pixels."
3153
3508
  },
3154
3509
  "text": {
3155
- "$ref": "#/definitions/Scalar",
3510
+ "anyOf": [
3511
+ {
3512
+ "$ref": "#/definitions/Scalar"
3513
+ },
3514
+ {
3515
+ "$ref": "#/definitions/ExprRef"
3516
+ }
3517
+ ],
3156
3518
  "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:** `\"\"`"
3157
3519
  },
3158
3520
  "tooltip": {
@@ -3187,20 +3549,48 @@
3187
3549
  "type": "number"
3188
3550
  },
3189
3551
  "x": {
3190
- "type": "number"
3552
+ "anyOf": [
3553
+ {
3554
+ "type": "number"
3555
+ },
3556
+ {
3557
+ "$ref": "#/definitions/ExprRef"
3558
+ }
3559
+ ]
3191
3560
  },
3192
3561
  "x2": {
3193
- "type": "number"
3562
+ "anyOf": [
3563
+ {
3564
+ "type": "number"
3565
+ },
3566
+ {
3567
+ "$ref": "#/definitions/ExprRef"
3568
+ }
3569
+ ]
3194
3570
  },
3195
3571
  "xOffset": {
3196
3572
  "description": "Offsets of the `x` and `x2` coordinates in pixels. The offset is applied after the viewport scaling and translation.\n\n**Default value:** `0`",
3197
3573
  "type": "number"
3198
3574
  },
3199
3575
  "y": {
3200
- "type": "number"
3576
+ "anyOf": [
3577
+ {
3578
+ "type": "number"
3579
+ },
3580
+ {
3581
+ "$ref": "#/definitions/ExprRef"
3582
+ }
3583
+ ]
3201
3584
  },
3202
3585
  "y2": {
3203
- "type": "number"
3586
+ "anyOf": [
3587
+ {
3588
+ "type": "number"
3589
+ },
3590
+ {
3591
+ "$ref": "#/definitions/ExprRef"
3592
+ }
3593
+ ]
3204
3594
  },
3205
3595
  "yOffset": {
3206
3596
  "description": "Offsets of the `y` and `y2` coordinates in pixels. The offset is applied after the viewport scaling and translation.\n\n**Default value:** `0`",
@@ -3216,7 +3606,14 @@
3216
3606
  "additionalProperties": false,
3217
3607
  "properties": {
3218
3608
  "datum": {
3219
- "$ref": "#/definitions/Scalar",
3609
+ "anyOf": [
3610
+ {
3611
+ "$ref": "#/definitions/Scalar"
3612
+ },
3613
+ {
3614
+ "$ref": "#/definitions/ExprRef"
3615
+ }
3616
+ ],
3220
3617
  "description": "A constant value in data domain."
3221
3618
  },
3222
3619
  "resolutionChannel": {
@@ -3254,7 +3651,14 @@
3254
3651
  "additionalProperties": false,
3255
3652
  "properties": {
3256
3653
  "datum": {
3257
- "$ref": "#/definitions/Scalar",
3654
+ "anyOf": [
3655
+ {
3656
+ "$ref": "#/definitions/Scalar"
3657
+ },
3658
+ {
3659
+ "$ref": "#/definitions/ExprRef"
3660
+ }
3661
+ ],
3258
3662
  "description": "A constant value in data domain."
3259
3663
  },
3260
3664
  "resolutionChannel": {
@@ -3710,7 +4114,14 @@
3710
4114
  "type": "number"
3711
4115
  },
3712
4116
  "datum": {
3713
- "$ref": "#/definitions/Scalar",
4117
+ "anyOf": [
4118
+ {
4119
+ "$ref": "#/definitions/Scalar"
4120
+ },
4121
+ {
4122
+ "$ref": "#/definitions/ExprRef"
4123
+ }
4124
+ ],
3714
4125
  "description": "A constant value in data domain."
3715
4126
  },
3716
4127
  "title": {
@@ -3768,7 +4179,14 @@
3768
4179
  "type": "number"
3769
4180
  },
3770
4181
  "datum": {
3771
- "$ref": "#/definitions/Scalar",
4182
+ "anyOf": [
4183
+ {
4184
+ "$ref": "#/definitions/Scalar"
4185
+ },
4186
+ {
4187
+ "$ref": "#/definitions/ExprRef"
4188
+ }
4189
+ ],
3772
4190
  "description": "A constant value in data domain."
3773
4191
  },
3774
4192
  "resolutionChannel": {
@@ -4166,6 +4584,13 @@
4166
4584
  "$ref": "#/definitions/PaddingConfig",
4167
4585
  "description": "Padding in pixels.\n\n**Default:* `0`"
4168
4586
  },
4587
+ "params": {
4588
+ "description": "Dynamic variables that parameterize a visualization.",
4589
+ "items": {
4590
+ "$ref": "#/definitions/VariableParameter"
4591
+ },
4592
+ "type": "array"
4593
+ },
4169
4594
  "resolve": {
4170
4595
  "additionalProperties": false,
4171
4596
  "properties": {
@@ -4374,6 +4799,13 @@
4374
4799
  "$ref": "#/definitions/PaddingConfig",
4375
4800
  "description": "Padding in pixels.\n\n**Default:* `0`"
4376
4801
  },
4802
+ "params": {
4803
+ "description": "Dynamic variables that parameterize a visualization.",
4804
+ "items": {
4805
+ "$ref": "#/definitions/VariableParameter"
4806
+ },
4807
+ "type": "array"
4808
+ },
4377
4809
  "resolve": {
4378
4810
  "additionalProperties": false,
4379
4811
  "properties": {
@@ -4556,6 +4988,13 @@
4556
4988
  "$ref": "#/definitions/PaddingConfig",
4557
4989
  "description": "Padding in pixels.\n\n**Default:* `0`"
4558
4990
  },
4991
+ "params": {
4992
+ "description": "Dynamic variables that parameterize a visualization.",
4993
+ "items": {
4994
+ "$ref": "#/definitions/VariableParameter"
4995
+ },
4996
+ "type": "array"
4997
+ },
4559
4998
  "resolve": {
4560
4999
  "additionalProperties": false,
4561
5000
  "properties": {
@@ -4764,6 +5203,13 @@
4764
5203
  "$ref": "#/definitions/PaddingConfig",
4765
5204
  "description": "Padding in pixels.\n\n**Default:* `0`"
4766
5205
  },
5206
+ "params": {
5207
+ "description": "Dynamic variables that parameterize a visualization.",
5208
+ "items": {
5209
+ "$ref": "#/definitions/VariableParameter"
5210
+ },
5211
+ "type": "array"
5212
+ },
4767
5213
  "resolve": {
4768
5214
  "additionalProperties": false,
4769
5215
  "properties": {
@@ -4962,6 +5408,13 @@
4962
5408
  "$ref": "#/definitions/PaddingConfig",
4963
5409
  "description": "Padding in pixels.\n\n**Default:* `0`"
4964
5410
  },
5411
+ "params": {
5412
+ "description": "Dynamic variables that parameterize a visualization.",
5413
+ "items": {
5414
+ "$ref": "#/definitions/VariableParameter"
5415
+ },
5416
+ "type": "array"
5417
+ },
4965
5418
  "resolve": {
4966
5419
  "additionalProperties": false,
4967
5420
  "properties": {
@@ -5145,6 +5598,13 @@
5145
5598
  "$ref": "#/definitions/PaddingConfig",
5146
5599
  "description": "Padding in pixels.\n\n**Default:* `0`"
5147
5600
  },
5601
+ "params": {
5602
+ "description": "Dynamic variables that parameterize a visualization.",
5603
+ "items": {
5604
+ "$ref": "#/definitions/VariableParameter"
5605
+ },
5606
+ "type": "array"
5607
+ },
5148
5608
  "resolve": {
5149
5609
  "additionalProperties": false,
5150
5610
  "properties": {
@@ -5452,6 +5912,13 @@
5452
5912
  "$ref": "#/definitions/PaddingConfig",
5453
5913
  "description": "Padding in pixels.\n\n**Default:* `0`"
5454
5914
  },
5915
+ "params": {
5916
+ "description": "Dynamic variables that parameterize a visualization.",
5917
+ "items": {
5918
+ "$ref": "#/definitions/VariableParameter"
5919
+ },
5920
+ "type": "array"
5921
+ },
5455
5922
  "resolve": {
5456
5923
  "additionalProperties": false,
5457
5924
  "properties": {
@@ -5731,6 +6198,12 @@
5731
6198
  },
5732
6199
  {
5733
6200
  "type": "string"
6201
+ },
6202
+ {
6203
+ "items": {
6204
+ "$ref": "#/definitions/ExprRef"
6205
+ },
6206
+ "type": "array"
5734
6207
  }
5735
6208
  ],
5736
6209
  "description": "The range of the scale. One of:\n\n- A string indicating a [pre-defined named scale range](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\"symbol\"`, or `\"diverging\"`).\n\n- For [continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating minimum and maximum values, or an array with more than two entries for specifying a [piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise).\n\n- For [discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values.\n\n__Notes:__\n\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\n\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`)."
@@ -5926,20 +6399,48 @@
5926
6399
  "additionalProperties": false,
5927
6400
  "properties": {
5928
6401
  "as": {
5929
- "$ref": "#/definitions/FieldName",
6402
+ "anyOf": [
6403
+ {
6404
+ "$ref": "#/definitions/FieldName"
6405
+ },
6406
+ {
6407
+ "$ref": "#/definitions/ExprRef"
6408
+ }
6409
+ ],
5930
6410
  "description": "The name of the generated sequence field.\n\n__Default value:__ `\"data\"`"
5931
6411
  },
5932
6412
  "start": {
5933
- "description": "The starting value of the sequence (inclusive).",
5934
- "type": "number"
6413
+ "anyOf": [
6414
+ {
6415
+ "type": "number"
6416
+ },
6417
+ {
6418
+ "$ref": "#/definitions/ExprRef"
6419
+ }
6420
+ ],
6421
+ "description": "The starting value of the sequence (inclusive)."
5935
6422
  },
5936
6423
  "step": {
5937
- "description": "The step value between sequence entries.\n\n__Default value:__ `1`",
5938
- "type": "number"
6424
+ "anyOf": [
6425
+ {
6426
+ "type": "number"
6427
+ },
6428
+ {
6429
+ "$ref": "#/definitions/ExprRef"
6430
+ }
6431
+ ],
6432
+ "description": "The step value between sequence entries.\n\n__Default value:__ `1`"
5939
6433
  },
5940
6434
  "stop": {
5941
- "description": "The ending value of the sequence (exclusive).",
5942
- "type": "number"
6435
+ "anyOf": [
6436
+ {
6437
+ "type": "number"
6438
+ },
6439
+ {
6440
+ "$ref": "#/definitions/ExprRef"
6441
+ }
6442
+ ],
6443
+ "description": "The ending value of the sequence (exclusive)."
5943
6444
  }
5944
6445
  },
5945
6446
  "required": [
@@ -6044,7 +6545,14 @@
6044
6545
  "additionalProperties": false,
6045
6546
  "properties": {
6046
6547
  "datum": {
6047
- "$ref": "#/definitions/Scalar",
6548
+ "anyOf": [
6549
+ {
6550
+ "$ref": "#/definitions/Scalar"
6551
+ },
6552
+ {
6553
+ "$ref": "#/definitions/ExprRef"
6554
+ }
6555
+ ],
6048
6556
  "description": "A constant value in data domain."
6049
6557
  },
6050
6558
  "format": {
@@ -6107,16 +6615,30 @@
6107
6615
  "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."
6108
6616
  },
6109
6617
  "angle": {
6110
- "description": "Angle in degrees of title and subtitle text.",
6111
- "type": "number"
6618
+ "anyOf": [
6619
+ {
6620
+ "type": "number"
6621
+ },
6622
+ {
6623
+ "$ref": "#/definitions/ExprRef"
6624
+ }
6625
+ ],
6626
+ "description": "Angle in degrees of title and subtitle text."
6112
6627
  },
6113
6628
  "baseline": {
6114
6629
  "$ref": "#/definitions/Baseline",
6115
6630
  "description": "Vertical text baseline for title and subtitle text. One of `\"alphabetic\"` (default), `\"top\"`, `\"middle\"`, or `\"bottom\"`."
6116
6631
  },
6117
6632
  "color": {
6118
- "description": "Text color for title text.",
6119
- "type": "string"
6633
+ "anyOf": [
6634
+ {
6635
+ "type": "string"
6636
+ },
6637
+ {
6638
+ "$ref": "#/definitions/ExprRef"
6639
+ }
6640
+ ],
6641
+ "description": "Text color for title text."
6120
6642
  },
6121
6643
  "dx": {
6122
6644
  "description": "Delta offset for title and subtitle text x-coordinate.",
@@ -6131,9 +6653,16 @@
6131
6653
  "type": "string"
6132
6654
  },
6133
6655
  "fontSize": {
6656
+ "anyOf": [
6657
+ {
6658
+ "type": "number"
6659
+ },
6660
+ {
6661
+ "$ref": "#/definitions/ExprRef"
6662
+ }
6663
+ ],
6134
6664
  "description": "Font size in pixels for title text.",
6135
- "minimum": 0,
6136
- "type": "number"
6665
+ "minimum": 0
6137
6666
  },
6138
6667
  "fontStyle": {
6139
6668
  "$ref": "#/definitions/FontStyle",
@@ -6160,8 +6689,15 @@
6160
6689
  "type": "string"
6161
6690
  },
6162
6691
  "text": {
6163
- "description": "The title text.",
6164
- "type": "string"
6692
+ "anyOf": [
6693
+ {
6694
+ "type": "string"
6695
+ },
6696
+ {
6697
+ "$ref": "#/definitions/ExprRef"
6698
+ }
6699
+ ],
6700
+ "description": "The title text."
6165
6701
  }
6166
6702
  },
6167
6703
  "required": [
@@ -6371,6 +6907,13 @@
6371
6907
  "$ref": "#/definitions/PaddingConfig",
6372
6908
  "description": "Padding in pixels.\n\n**Default:* `0`"
6373
6909
  },
6910
+ "params": {
6911
+ "description": "Dynamic variables that parameterize a visualization.",
6912
+ "items": {
6913
+ "$ref": "#/definitions/VariableParameter"
6914
+ },
6915
+ "type": "array"
6916
+ },
6374
6917
  "resolve": {
6375
6918
  "additionalProperties": false,
6376
6919
  "properties": {
@@ -6497,6 +7040,9 @@
6497
7040
  "type": "string"
6498
7041
  },
6499
7042
  "type": "array"
7043
+ },
7044
+ {
7045
+ "$ref": "#/definitions/ExprRef"
6500
7046
  }
6501
7047
  ],
6502
7048
  "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."
@@ -6566,6 +7112,13 @@
6566
7112
  "$ref": "#/definitions/PaddingConfig",
6567
7113
  "description": "Padding in pixels.\n\n**Default:* `0`"
6568
7114
  },
7115
+ "params": {
7116
+ "description": "Dynamic variables that parameterize a visualization.",
7117
+ "items": {
7118
+ "$ref": "#/definitions/VariableParameter"
7119
+ },
7120
+ "type": "array"
7121
+ },
6569
7122
  "resolve": {
6570
7123
  "additionalProperties": false,
6571
7124
  "properties": {
@@ -6695,11 +7248,18 @@
6695
7248
  ]
6696
7249
  },
6697
7250
  "value": {
6698
- "description": "A constant value in visual domain (e.g., `\"red\"` / `\"#0099ff\"`, values between `0` to `1` for opacity).",
6699
- "type": [
6700
- "string",
6701
- "null"
6702
- ]
7251
+ "anyOf": [
7252
+ {
7253
+ "type": "string"
7254
+ },
7255
+ {
7256
+ "type": "null"
7257
+ },
7258
+ {
7259
+ "$ref": "#/definitions/ExprRef"
7260
+ }
7261
+ ],
7262
+ "description": "A constant value in visual domain (e.g., `\"red\"` / `\"#0099ff\"`, values between `0` to `1` for opacity)."
6703
7263
  }
6704
7264
  },
6705
7265
  "required": [
@@ -6718,8 +7278,15 @@
6718
7278
  ]
6719
7279
  },
6720
7280
  "value": {
6721
- "description": "A constant value in visual domain (e.g., `\"red\"` / `\"#0099ff\"`, values between `0` to `1` for opacity).",
6722
- "type": "number"
7281
+ "anyOf": [
7282
+ {
7283
+ "type": "number"
7284
+ },
7285
+ {
7286
+ "$ref": "#/definitions/ExprRef"
7287
+ }
7288
+ ],
7289
+ "description": "A constant value in visual domain (e.g., `\"red\"` / `\"#0099ff\"`, values between `0` to `1` for opacity)."
6723
7290
  }
6724
7291
  },
6725
7292
  "required": [
@@ -6727,24 +7294,76 @@
6727
7294
  ],
6728
7295
  "type": "object"
6729
7296
  },
7297
+ "VariableParameter": {
7298
+ "additionalProperties": false,
7299
+ "properties": {
7300
+ "bind": {
7301
+ "$ref": "#/definitions/Binding",
7302
+ "description": "Binds the parameter to an external input element such as a slider, selection list or radio button group."
7303
+ },
7304
+ "expr": {
7305
+ "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.",
7306
+ "type": "string"
7307
+ },
7308
+ "name": {
7309
+ "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\".",
7310
+ "type": "string"
7311
+ },
7312
+ "value": {
7313
+ "description": "The [initial value](http://vega.github.io/vega-lite/docs/value.html) of the parameter.\n\n__Default value:__ `undefined`"
7314
+ }
7315
+ },
7316
+ "required": [
7317
+ "name"
7318
+ ],
7319
+ "type": "object"
7320
+ },
6730
7321
  "ViewBackground": {
6731
7322
  "additionalProperties": false,
6732
7323
  "properties": {
6733
7324
  "fill": {
6734
- "description": "The fill color",
6735
- "type": "string"
7325
+ "anyOf": [
7326
+ {
7327
+ "type": "string"
7328
+ },
7329
+ {
7330
+ "$ref": "#/definitions/ExprRef"
7331
+ }
7332
+ ],
7333
+ "description": "The fill color"
6736
7334
  },
6737
7335
  "fillOpacity": {
6738
- "description": "The fill opacity. Value between [0, 1].",
6739
- "type": "number"
7336
+ "anyOf": [
7337
+ {
7338
+ "type": "number"
7339
+ },
7340
+ {
7341
+ "$ref": "#/definitions/ExprRef"
7342
+ }
7343
+ ],
7344
+ "description": "The fill opacity. Value between [0, 1]."
6740
7345
  },
6741
7346
  "stroke": {
6742
- "description": "The stroke color",
6743
- "type": "string"
7347
+ "anyOf": [
7348
+ {
7349
+ "type": "string"
7350
+ },
7351
+ {
7352
+ "$ref": "#/definitions/ExprRef"
7353
+ }
7354
+ ],
7355
+ "description": "The stroke color"
6744
7356
  },
6745
7357
  "strokeOpacity": {
6746
- "description": "The stroke opacity. Value between [0, 1].",
6747
- "type": "number"
7358
+ "anyOf": [
7359
+ {
7360
+ "type": "number"
7361
+ },
7362
+ {
7363
+ "$ref": "#/definitions/ExprRef"
7364
+ }
7365
+ ],
7366
+ "description": "The stroke opacity. Value between [0, 1]."
6748
7367
  },
6749
7368
  "strokeWidth": {
6750
7369
  "type": "number"