@genome-spy/core 0.14.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 (226) hide show
  1. package/dist/index.js +224 -0
  2. package/dist/style.css +1 -0
  3. package/package.json +54 -0
  4. package/src/data/collector.js +178 -0
  5. package/src/data/collector.test.js +82 -0
  6. package/src/data/dataFlow.js +109 -0
  7. package/src/data/dataFlow.test.js +3 -0
  8. package/src/data/facetNode.js +17 -0
  9. package/src/data/flow.test.js +71 -0
  10. package/src/data/flowBatch.d.ts +40 -0
  11. package/src/data/flowNode.js +283 -0
  12. package/src/data/flowNode.test.js +49 -0
  13. package/src/data/flowOptimizer.js +117 -0
  14. package/src/data/flowOptimizer.test.js +192 -0
  15. package/src/data/flowTestUtils.js +63 -0
  16. package/src/data/formats/fasta.js +32 -0
  17. package/src/data/formats/fasta.test.js +26 -0
  18. package/src/data/sources/dataSource.js +22 -0
  19. package/src/data/sources/dataSourceFactory.js +24 -0
  20. package/src/data/sources/dataUtils.js +31 -0
  21. package/src/data/sources/dynamicCallbackSource.js +56 -0
  22. package/src/data/sources/dynamicSource.js +36 -0
  23. package/src/data/sources/inlineSource.js +69 -0
  24. package/src/data/sources/inlineSource.test.js +55 -0
  25. package/src/data/sources/namedSource.js +74 -0
  26. package/src/data/sources/sequenceSource.js +46 -0
  27. package/src/data/sources/sequenceSource.test.js +45 -0
  28. package/src/data/sources/urlSource.js +74 -0
  29. package/src/data/transforms/aggregate.js +69 -0
  30. package/src/data/transforms/clone.js +40 -0
  31. package/src/data/transforms/clone.test.js +10 -0
  32. package/src/data/transforms/coverage.js +187 -0
  33. package/src/data/transforms/coverage.test.js +122 -0
  34. package/src/data/transforms/filter.js +37 -0
  35. package/src/data/transforms/filter.test.js +17 -0
  36. package/src/data/transforms/filterScoredLabels.js +134 -0
  37. package/src/data/transforms/flattenCompressedExons.js +57 -0
  38. package/src/data/transforms/flattenDelimited.js +68 -0
  39. package/src/data/transforms/flattenDelimited.test.js +86 -0
  40. package/src/data/transforms/flattenSequence.js +39 -0
  41. package/src/data/transforms/flattenSequence.test.js +33 -0
  42. package/src/data/transforms/formula.js +39 -0
  43. package/src/data/transforms/formula.test.js +18 -0
  44. package/src/data/transforms/identifier.js +108 -0
  45. package/src/data/transforms/identifier.test.js +82 -0
  46. package/src/data/transforms/linearizeGenomicCoordinate.js +101 -0
  47. package/src/data/transforms/measureText.js +44 -0
  48. package/src/data/transforms/pileup.js +128 -0
  49. package/src/data/transforms/pileup.test.js +69 -0
  50. package/src/data/transforms/project.js +41 -0
  51. package/src/data/transforms/project.test.js +31 -0
  52. package/src/data/transforms/regexExtract.js +61 -0
  53. package/src/data/transforms/regexExtract.test.js +66 -0
  54. package/src/data/transforms/regexFold.js +141 -0
  55. package/src/data/transforms/regexFold.test.js +159 -0
  56. package/src/data/transforms/sample.js +101 -0
  57. package/src/data/transforms/sample.test.js +37 -0
  58. package/src/data/transforms/stack.js +137 -0
  59. package/src/data/transforms/stack.test.js +90 -0
  60. package/src/data/transforms/transformFactory.js +60 -0
  61. package/src/encoder/accessor.js +82 -0
  62. package/src/encoder/accessor.test.js +46 -0
  63. package/src/encoder/encoder.js +369 -0
  64. package/src/encoder/encoder.test.js +97 -0
  65. package/src/fonts/Lato-Regular.json +1267 -0
  66. package/src/fonts/Lato-Regular.png +0 -0
  67. package/src/fonts/OFL.txt +93 -0
  68. package/src/fonts/README.md +3 -0
  69. package/src/fonts/bmFont.d.ts +58 -0
  70. package/src/fonts/bmFontManager.js +357 -0
  71. package/src/fonts/bmFontMetrics.js +108 -0
  72. package/src/genome/genome.js +305 -0
  73. package/src/genome/genome.test.js +152 -0
  74. package/src/genome/genomeStore.js +54 -0
  75. package/src/genome/locusFormat.js +31 -0
  76. package/src/genome/scaleIndex.js +199 -0
  77. package/src/genome/scaleIndex.test.js +61 -0
  78. package/src/genome/scaleLocus.js +112 -0
  79. package/src/genome/scaleLocus.test.js +3 -0
  80. package/src/genomeSpy.js +753 -0
  81. package/src/gl/arrayBuilder.js +199 -0
  82. package/src/gl/dataToVertices.js +621 -0
  83. package/src/gl/includes/common.glsl +63 -0
  84. package/src/gl/includes/fp64-arithmetic.glsl +187 -0
  85. package/src/gl/includes/fp64-utils.js +132 -0
  86. package/src/gl/includes/picking.fragment.glsl +3 -0
  87. package/src/gl/includes/picking.vertex.glsl +29 -0
  88. package/src/gl/includes/sampleFacet.glsl +107 -0
  89. package/src/gl/includes/scales.glsl +79 -0
  90. package/src/gl/includes/scales_fp64.glsl +30 -0
  91. package/src/gl/link.fragment.glsl +18 -0
  92. package/src/gl/link.vertex.glsl +111 -0
  93. package/src/gl/point.fragment.glsl +123 -0
  94. package/src/gl/point.vertex.glsl +128 -0
  95. package/src/gl/rect.fragment.glsl +51 -0
  96. package/src/gl/rect.vertex.glsl +114 -0
  97. package/src/gl/rule.fragment.glsl +52 -0
  98. package/src/gl/rule.vertex.glsl +89 -0
  99. package/src/gl/text.fragment.glsl +31 -0
  100. package/src/gl/text.vertex.glsl +246 -0
  101. package/src/gl/webGLHelper.js +490 -0
  102. package/src/img/bowtie.svg +1 -0
  103. package/src/img/genomespy-favicon.svg +34 -0
  104. package/src/index.html +11 -0
  105. package/src/index.js +151 -0
  106. package/src/marks/link.js +189 -0
  107. package/src/marks/mark.js +867 -0
  108. package/src/marks/markUtils.js +109 -0
  109. package/src/marks/pointMark.js +279 -0
  110. package/src/marks/rectMark.js +236 -0
  111. package/src/marks/rule.js +231 -0
  112. package/src/marks/text.js +274 -0
  113. package/src/options.d.ts +9 -0
  114. package/src/scale/colorUtils.js +184 -0
  115. package/src/scale/glslScaleGenerator.js +462 -0
  116. package/src/scale/scale.js +441 -0
  117. package/src/scale/scale.test.js +323 -0
  118. package/src/scale/ticks.js +198 -0
  119. package/src/scale/ticks.test.js +39 -0
  120. package/src/singlePageApp.js +13 -0
  121. package/src/spec/axis.d.ts +296 -0
  122. package/src/spec/channel.d.ts +127 -0
  123. package/src/spec/data.d.ts +185 -0
  124. package/src/spec/font.d.ts +15 -0
  125. package/src/spec/genome.d.ts +35 -0
  126. package/src/spec/mark.d.ts +432 -0
  127. package/src/spec/root.d.ts +22 -0
  128. package/src/spec/scale.d.ts +265 -0
  129. package/src/spec/tooltip.d.ts +9 -0
  130. package/src/spec/transform.d.ts +479 -0
  131. package/src/spec/view.d.ts +215 -0
  132. package/src/styles/genome-spy.scss +153 -0
  133. package/src/tooltip/dataTooltipHandler.js +59 -0
  134. package/src/tooltip/refseqGeneTooltipHandler.js +77 -0
  135. package/src/tooltip/tooltipHandler.ts +12 -0
  136. package/src/types/filetypes.d.ts +4 -0
  137. package/src/types/flatqueue.d.ts +53 -0
  138. package/src/types/glsl.d.ts +4 -0
  139. package/src/types/object.d.ts +21 -0
  140. package/src/types/vega-scale.d.ts +60 -0
  141. package/src/utils/animator.js +83 -0
  142. package/src/utils/arrayUtils.js +55 -0
  143. package/src/utils/binnedRangeIndex.js +83 -0
  144. package/src/utils/clamp.js +8 -0
  145. package/src/utils/cloner.js +32 -0
  146. package/src/utils/cloner.test.js +23 -0
  147. package/src/utils/coalesce.js +11 -0
  148. package/src/utils/coalesce.test.js +15 -0
  149. package/src/utils/concatIterables.js +26 -0
  150. package/src/utils/concatIterables.test.js +7 -0
  151. package/src/utils/debounce.js +37 -0
  152. package/src/utils/domainArray.js +224 -0
  153. package/src/utils/domainArray.test.js +129 -0
  154. package/src/utils/eerp.js +13 -0
  155. package/src/utils/expression.js +32 -0
  156. package/src/utils/field.js +28 -0
  157. package/src/utils/fisheye.js +60 -0
  158. package/src/utils/formatObject.js +31 -0
  159. package/src/utils/html.js +23 -0
  160. package/src/utils/html.test.js +13 -0
  161. package/src/utils/indexer.js +43 -0
  162. package/src/utils/indexer.test.js +46 -0
  163. package/src/utils/inertia.js +124 -0
  164. package/src/utils/interactionEvent.js +33 -0
  165. package/src/utils/iterateNestedMaps.js +21 -0
  166. package/src/utils/iterateNestedMaps.test.js +32 -0
  167. package/src/utils/kWayMerge.js +42 -0
  168. package/src/utils/kWayMerge.test.js +25 -0
  169. package/src/utils/layout/flexLayout.js +336 -0
  170. package/src/utils/layout/flexLayout.test.js +296 -0
  171. package/src/utils/layout/padding.js +107 -0
  172. package/src/utils/layout/point.js +23 -0
  173. package/src/utils/layout/rectangle.js +282 -0
  174. package/src/utils/layout/rectangle.test.js +171 -0
  175. package/src/utils/mergeObjects.js +99 -0
  176. package/src/utils/mergeObjects.test.js +41 -0
  177. package/src/utils/numberExtractor.js +24 -0
  178. package/src/utils/numberExtractor.test.js +5 -0
  179. package/src/utils/point.js +14 -0
  180. package/src/utils/propertyCacher.js +70 -0
  181. package/src/utils/propertyCacher.test.js +84 -0
  182. package/src/utils/propertyCoalescer.js +37 -0
  183. package/src/utils/propertyCoalescer.test.js +21 -0
  184. package/src/utils/reservationMap.js +103 -0
  185. package/src/utils/reservationMap.test.js +19 -0
  186. package/src/utils/scaleNull.js +19 -0
  187. package/src/utils/setOperations.js +75 -0
  188. package/src/utils/smoothstep.js +10 -0
  189. package/src/utils/throttle.js +34 -0
  190. package/src/utils/topK.js +76 -0
  191. package/src/utils/topK.test.js +63 -0
  192. package/src/utils/transition.js +74 -0
  193. package/src/utils/ui/tooltip.js +189 -0
  194. package/src/utils/url.js +22 -0
  195. package/src/utils/variableTools.js +24 -0
  196. package/src/utils/variableTools.test.js +12 -0
  197. package/src/view/axisResolution.js +135 -0
  198. package/src/view/axisResolution.test.js +200 -0
  199. package/src/view/axisView.js +746 -0
  200. package/src/view/channel.js +5 -0
  201. package/src/view/concatView.js +296 -0
  202. package/src/view/containerView.js +141 -0
  203. package/src/view/decoratorView.js +510 -0
  204. package/src/view/facetView.js +488 -0
  205. package/src/view/flowBuilder.js +362 -0
  206. package/src/view/flowBuilder.test.js +124 -0
  207. package/src/view/importView.js +19 -0
  208. package/src/view/layerView.js +60 -0
  209. package/src/view/rendering.d.ts +44 -0
  210. package/src/view/renderingContext/compositeViewRenderingContext.js +51 -0
  211. package/src/view/renderingContext/deferredViewRenderingContext.js +174 -0
  212. package/src/view/renderingContext/layoutRecorderViewRenderingContext.js +128 -0
  213. package/src/view/renderingContext/simpleViewRenderingContext.js +62 -0
  214. package/src/view/renderingContext/svgViewRenderingContext.js +121 -0
  215. package/src/view/renderingContext/viewRenderingContext.js +41 -0
  216. package/src/view/scaleResolution.js +756 -0
  217. package/src/view/scaleResolution.test.js +571 -0
  218. package/src/view/scaleResolutionApi.d.ts +40 -0
  219. package/src/view/testUtils.js +48 -0
  220. package/src/view/unitView.js +368 -0
  221. package/src/view/view.js +589 -0
  222. package/src/view/view.test.js +213 -0
  223. package/src/view/viewContext.d.ts +57 -0
  224. package/src/view/viewFactory.js +179 -0
  225. package/src/view/viewFactory.test.js +16 -0
  226. package/src/view/viewUtils.js +420 -0
@@ -0,0 +1,432 @@
1
+ import { Scalar } from "./channel";
2
+ import { Align, Baseline, FontStyle, FontWeight } from "./font";
3
+ import { Tooltip } from "./tooltip";
4
+
5
+ export type MarkType = "rect" | "point" | "rule" | "text" | "link";
6
+
7
+ export interface FillAndStrokeProps {
8
+ fill?: string;
9
+ fillOpacity?: number;
10
+
11
+ stroke?: string;
12
+ strokeOpacity?: number;
13
+ }
14
+
15
+ export interface SecondaryPositionProps {
16
+ x2?: number;
17
+ y2?: number;
18
+ }
19
+
20
+ export interface AngleProps {
21
+ /**
22
+ * The rotation angle in degrees.
23
+ *
24
+ * **Default value:** `0`
25
+ */
26
+ angle?: number;
27
+ }
28
+
29
+ /**
30
+ * Specifies how mark should be faded at the viewport edges.
31
+ * This is mainly used to make axis labels pretty.
32
+ */
33
+ export interface ViewportEdgeFadeProps {
34
+ viewportEdgeFadeWidthTop?: number;
35
+ viewportEdgeFadeWidthRight?: number;
36
+ viewportEdgeFadeWidthBottom?: number;
37
+ viewportEdgeFadeWidthLeft?: number;
38
+
39
+ viewportEdgeFadeDistanceTop?: number;
40
+ viewportEdgeFadeDistanceRight?: number;
41
+ viewportEdgeFadeDistanceBottom?: number;
42
+ viewportEdgeFadeDistanceLeft?: number;
43
+ }
44
+
45
+ export interface RectProps extends SecondaryPositionProps {
46
+ /**
47
+ * Clamps the minimum size-dependent opacity. The property does not affect the
48
+ * `opacity` channel. Valid values are between `0` and `1`.
49
+ *
50
+ * When a rectangle would be smaller than what is specified in `minHeight` and
51
+ * `minWidth`, it is faded out proportionally. Example: a rectangle would be
52
+ * rendered as one pixel wide, but `minWidth` clamps it to five pixels. The
53
+ * rectangle is actually rendered as five pixels wide, but its opacity is
54
+ * multiplied by 0.2. With this setting, you can limit the factor to, for
55
+ * example, 0.5 to keep the rectangles more clearly visible.
56
+ *
57
+ * **Default value:** `0`
58
+ */
59
+ // TODO: Rename to minCompensatedOpacity or something like that
60
+ minOpacity?: number;
61
+
62
+ /**
63
+ * The minimum width of a rectangle in pixels. The property clamps rectangles'
64
+ * widths when the viewport is zoomed out.
65
+ *
66
+ * This property also reduces flickering of very narrow rectangles when zooming.
67
+ * The value should generally be at least one.
68
+ *
69
+ * **Default value:** `1`
70
+ */
71
+ minWidth?: number;
72
+
73
+ /**
74
+ * The minimum height of a rectangle in pixels. The property clamps rectangles' heights.
75
+ *
76
+ * **Default value:** `0`
77
+ */
78
+ minHeight?: number;
79
+
80
+ /**
81
+ * Radius of the rounded corners.
82
+ *
83
+ * **Default value:** `0`
84
+ */
85
+ cornerRadius?: number;
86
+
87
+ /**
88
+ * Radius of the top left rounded corner. Has higher precedence than `cornerRadius`.
89
+ *
90
+ * **Default value:** (None)
91
+ */
92
+ cornerRadiusTopLeft?: number;
93
+
94
+ /**
95
+ * Radius of the top right rounded corner. Has higher precedence than `cornerRadius`.
96
+ *
97
+ * **Default value:** (None)
98
+ */
99
+ cornerRadiusTopRight?: number;
100
+
101
+ /**
102
+ * Radius of the bottom left rounded corner. Has higher precedence than `cornerRadius`.
103
+ *
104
+ * **Default value:** (None)
105
+ */
106
+ cornerRadiusBottomLeft?: number;
107
+
108
+ /**
109
+ * Radius of the bottom right rounded corner. Has higher precedence than `cornerRadius`.
110
+ *
111
+ * **Default value:** (None)
112
+ */
113
+ cornerRadiusBottomRight?: number;
114
+ }
115
+
116
+ export interface RuleProps extends SecondaryPositionProps {
117
+ /**
118
+ * The minimum length of the rule in pixels. Use this property to ensure that
119
+ * very short ranged rules remain visible even when the user zooms out.
120
+ *
121
+ * **Default value:** `0`
122
+ */
123
+ minLength?: number;
124
+
125
+ /**
126
+ * An array of of alternating stroke and gap lengths or `null` for solid strokes.
127
+ *
128
+ * **Default value:** `null`
129
+ */
130
+ strokeDash?: number[];
131
+
132
+ /**
133
+ * An offset for the stroke dash pattern.
134
+ *
135
+ * **Default value:** `0`
136
+ */
137
+ strokeDashOffset?: number;
138
+
139
+ /**
140
+ * The style of stroke ends. Available choices: `"butt"`, `"round`", and `"square"`.
141
+ *
142
+ * **Default value:** `"butt"`
143
+ */
144
+ strokeCap?: "butt" | "square" | "round";
145
+ }
146
+
147
+ export interface TextProps
148
+ extends SecondaryPositionProps,
149
+ AngleProps,
150
+ ViewportEdgeFadeProps {
151
+ /**
152
+ * The text to display. The format of numeric data can be customized by
153
+ * setting a [format specifier](https://github.com/d3/d3-format#locale_format)
154
+ * to channel definition's `format` property.
155
+ *
156
+ * **Default value:** `""`
157
+ */
158
+ text?: Scalar;
159
+
160
+ /**
161
+ * The font size in pixels.
162
+ *
163
+ * **Default value:** `11`
164
+ */
165
+ size?: number;
166
+
167
+ /**
168
+ * The font typeface. GenomeSpy uses [SDF](https://github.com/Chlumsky/msdfgen)
169
+ * versions of [Google Fonts](https://fonts.google.com/). Check their
170
+ * availability at the [A-Frame
171
+ * Fonts](https://github.com/etiennepinchon/aframe-fonts/tree/master/fonts)
172
+ * repository. System fonts are **not** supported.
173
+ *
174
+ * **Default value:** `"Lato"`
175
+ */
176
+ font?: string;
177
+
178
+ /**
179
+ * The font style. Valid values: `"normal"` and `"italic"`.
180
+ *
181
+ * **Default value:** `"normal"`
182
+ */
183
+ fontStyle?: FontStyle;
184
+
185
+ /**
186
+ * The font weight. The following strings and numbers are valid values:
187
+ * `"thin"` (`100`), `"light"` (`300`), `"regular"` (`400`),
188
+ * `"normal"` (`400`), `"medium"` (`500`), `"bold"` (`700`),
189
+ * `"black"` (`900`)
190
+ *
191
+ * **Default value:** `"regular"`
192
+ */
193
+ fontWeight?: FontWeight;
194
+
195
+ /**
196
+ * The horizontal alignment of the text. One of `"left"`, `"center"`, or `"right"`.
197
+ *
198
+ * **Default value:** `"left"`
199
+ */
200
+ align?: Align;
201
+
202
+ /**
203
+ * The vertical alignment of the text. One of `"top"`, `"middle"`, `"bottom"`.
204
+ *
205
+ * **Default value:** `"bottom"`
206
+ */
207
+ baseline?: Baseline;
208
+
209
+ /**
210
+ * The horizontal offset between the text and its anchor point, in pixels.
211
+ * Applied after the rotation by `angle`.
212
+ */
213
+ dx?: number;
214
+
215
+ /**
216
+ * The vertical offset between the text and its anchor point, in pixels.
217
+ * Applied after the rotation by `angle`.
218
+ */
219
+ dy?: number;
220
+
221
+ /**
222
+ * If true, sets the secondary positional channel that allows the text to be squeezed
223
+ * (see the `squeeze` property).
224
+ * Can be used when:
225
+ * 1) `"band"`, `"index"`, or `"locus"` scale is being used and
226
+ * 2) only the primary positional channel is specified.
227
+ *
228
+ * **Default value:** `false`
229
+ */
230
+ fitToBand?: boolean;
231
+
232
+ /**
233
+ * The horizontal padding, in pixels, when the `x2` channel is used for ranged text.
234
+ *
235
+ * **Default value:** `0`
236
+ */
237
+ paddingX?: number;
238
+
239
+ /**
240
+ * The vertical padding, in pixels, when the `y2` channel is used for ranged text.
241
+ *
242
+ * **Default value:** `0`
243
+ */
244
+ paddingY?: number;
245
+
246
+ /**
247
+ * If true, the text is kept inside the viewport when the range of `x` and `x2`
248
+ * intersect the viewport.
249
+ */
250
+ flushX?: boolean;
251
+
252
+ /**
253
+ * If true, the text is kept inside the viewport when the range of `y` and `y2`
254
+ * intersect the viewport.
255
+ */
256
+ flushY?: boolean;
257
+
258
+ /**
259
+ * If the `squeeze` property is true and secondary positional channels (`x2` and/or `y2`)
260
+ * are used, the text is scaled to fit mark's width and/or height.
261
+ *
262
+ * **Default value:** `true`
263
+ */
264
+ squeeze?: boolean;
265
+
266
+ /**
267
+ * Stretch letters so that they can be used with [sequence logos](https://en.wikipedia.org/wiki/Sequence_logo), etc...
268
+ */
269
+ logoLetters?: boolean;
270
+ }
271
+
272
+ export interface PointProps extends AngleProps {
273
+ /**
274
+ * One of `"circle"`, `"square"`, `"cross"`, `"diamond"`, `"triangle-up"`,
275
+ * `"triangle-down"`, `"triangle-right"`, or `"triangle-left"`.
276
+ *
277
+ * **Default value:** `"circle"`
278
+ */
279
+ shape?: string;
280
+
281
+ /**
282
+ * Should the stroke only grow inwards, e.g, the diameter/outline is not affected by the stroke width.
283
+ * Thus, a point that has a zero size has no visible stroke. This allows strokes to be used with
284
+ * geometric zoom, etc.
285
+ *
286
+ * **Default value:** `false`
287
+ */
288
+ inwardStroke?: boolean;
289
+
290
+ /**
291
+ * Gradient strength controls the amount of the gradient eye-candy effect in the fill color.
292
+ * Valid values are between 0 and 1.
293
+ *
294
+ * **Default value:** `0`
295
+ */
296
+ fillGradientStrength?: number;
297
+
298
+ /**
299
+ * Padding between sample facet's upper/lower edge and the maximum point size. This property
300
+ * controls how tightly points are squeezed when facet's height is smaller than the maximum
301
+ * point size. The unit is a proportion of facet's height. The value must be between `0`
302
+ * and `0.5`. This property has no effect when sample faceting is not used.
303
+ *
304
+ * **Default value:** `0.1`
305
+ */
306
+ sampleFacetPadding?: number;
307
+
308
+ /**
309
+ * TODO
310
+ *
311
+ * **Default value:** `0.02`
312
+ */
313
+ semanticZoomFraction?: number;
314
+
315
+ /**
316
+ * Enables geometric zooming. The value is the base two logarithmic zoom level where the maximum
317
+ * point size is reached.
318
+ *
319
+ * **Default value:** `0`
320
+ */
321
+ geometricZoomBound?: number;
322
+ }
323
+
324
+ export interface LinkProps extends SecondaryPositionProps {
325
+ /**
326
+ * The number of segments in the bézier curve. Affects the rendering quality and performance.
327
+ * Use a higher value for a smoother curve.
328
+ *
329
+ * **Default value:* `101`
330
+ */
331
+ segments?: number;
332
+
333
+ /**
334
+ * Scaling factor of the arc's sagitta. The default value `1.0` produces roughly circular arcs.
335
+ *
336
+ * **Default value:** `1.0`
337
+ */
338
+ sagittaScaleFactor?: number;
339
+
340
+ /**
341
+ * Minimum length of the arc's sagitta. Makes very short links more clearly visible.
342
+ *
343
+ * **Default value:** `1.5`
344
+ */
345
+ minSagittaLength?: number;
346
+
347
+ /**
348
+ * TODO
349
+ */
350
+ color2?: string;
351
+
352
+ /**
353
+ * TODO
354
+ */
355
+ size2?: number;
356
+ }
357
+
358
+ // TODO: Mark-specific configs
359
+ export interface MarkConfig
360
+ extends PointProps,
361
+ RectProps,
362
+ TextProps,
363
+ RuleProps,
364
+ LinkProps,
365
+ FillAndStrokeProps {
366
+ // Channels.
367
+ x?: number;
368
+ y?: number;
369
+ color?: string;
370
+ opacity?: number;
371
+ size?: number;
372
+
373
+ /**
374
+ * Whether the `color` represents the `fill` color (`true`) or the `stroke` color (`false`).
375
+ */
376
+ filled?: boolean;
377
+
378
+ /**
379
+ * If true, the mark is clipped to the UnitView's rectangle. By default, clipping
380
+ * is enabled for marks that have zoomable positional scales.
381
+ */
382
+ clip?: boolean;
383
+
384
+ /**
385
+ * Offsets of the `x` and `x2` coordinates in pixels. The offset is applied
386
+ * after the viewport scaling and translation.
387
+ *
388
+ * **Default value:** `0`
389
+ */
390
+ xOffset?: number;
391
+
392
+ /**
393
+ * Offsets of the `y` and `y2` coordinates in pixels. The offset is applied
394
+ * after the viewport scaling and translation.
395
+ *
396
+ * **Default value:** `0`
397
+ */
398
+ yOffset?: number;
399
+
400
+ /**
401
+ * TODO
402
+ */
403
+ tooltip?: Tooltip;
404
+
405
+ /**
406
+ * The stroke width in pixels.
407
+ */
408
+ strokeWidth?: number;
409
+
410
+ // TODO: get rid of this
411
+ dynamicData?: boolean;
412
+
413
+ /**
414
+ * Minimum size for WebGL buffers (number of data items).
415
+ * Allows for using `bufferSubData()` to update graphics.
416
+ *
417
+ * This property is intended for internal use.
418
+ */
419
+ minBufferSize?: number;
420
+
421
+ /**
422
+ * Builds and index for efficient rendering of subsets of the data.
423
+ * The data must be sorted by the x coordinate.
424
+ *
425
+ * TODO: This should be enabled automatically if the data are sorted.
426
+ */
427
+ buildIndex?: boolean;
428
+ }
429
+
430
+ export interface MarkConfigAndType extends MarkConfig {
431
+ type: MarkType;
432
+ }
@@ -0,0 +1,22 @@
1
+ import { GenomeConfig } from "./genome";
2
+ import { ViewSpec } from "./view";
3
+
4
+ export interface RootConfig {
5
+ genome?: GenomeConfig;
6
+
7
+ /**
8
+ * A unique identifier that is used in storing state bookmarks to browser's
9
+ * IndexedDB. This is needed to make distinction between visualizations that
10
+ * are served from the same origin, i.e., the same host and port.
11
+ */
12
+ specId?: string;
13
+
14
+ baseUrl?: string;
15
+
16
+ /**
17
+ * https://vega.github.io/vega-lite/docs/data.html#datasets
18
+ */
19
+ datasets?: Record<string, any[]>;
20
+ }
21
+
22
+ export type RootSpec = ViewSpec & RootConfig;