@genome-spy/core 0.48.2 → 0.50.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 (244) hide show
  1. package/dist/bundle/index.es.js +7434 -7107
  2. package/dist/bundle/index.js +116 -103
  3. package/dist/schema.json +3975 -2819
  4. package/dist/src/data/collector.test.d.ts +2 -0
  5. package/dist/src/data/collector.test.d.ts.map +1 -0
  6. package/dist/src/data/dataFlow.test.d.ts +2 -0
  7. package/dist/src/data/dataFlow.test.d.ts.map +1 -0
  8. package/dist/src/data/flow.test.d.ts +2 -0
  9. package/dist/src/data/flow.test.d.ts.map +1 -0
  10. package/dist/src/data/flow.test.js +19 -14
  11. package/dist/src/data/flowNode.test.d.ts +2 -0
  12. package/dist/src/data/flowNode.test.d.ts.map +1 -0
  13. package/dist/src/data/flowOptimizer.test.d.ts +2 -0
  14. package/dist/src/data/flowOptimizer.test.d.ts.map +1 -0
  15. package/dist/src/data/flowOptimizer.test.js +9 -10
  16. package/dist/src/data/formats/fasta.test.d.ts +2 -0
  17. package/dist/src/data/formats/fasta.test.d.ts.map +1 -0
  18. package/dist/src/data/sources/inlineSource.test.d.ts +2 -0
  19. package/dist/src/data/sources/inlineSource.test.d.ts.map +1 -0
  20. package/dist/src/data/sources/inlineSource.test.js +23 -16
  21. package/dist/src/data/sources/sequenceSource.test.d.ts +2 -0
  22. package/dist/src/data/sources/sequenceSource.test.d.ts.map +1 -0
  23. package/dist/src/data/sources/sequenceSource.test.js +59 -42
  24. package/dist/src/data/transforms/clone.test.d.ts +2 -0
  25. package/dist/src/data/transforms/clone.test.d.ts.map +1 -0
  26. package/dist/src/data/transforms/coverage.test.d.ts +2 -0
  27. package/dist/src/data/transforms/coverage.test.d.ts.map +1 -0
  28. package/dist/src/data/transforms/coverage.test.js +1 -1
  29. package/dist/src/data/transforms/filter.d.ts +10 -0
  30. package/dist/src/data/transforms/filter.d.ts.map +1 -1
  31. package/dist/src/data/transforms/filter.js +30 -1
  32. package/dist/src/data/transforms/filter.test.d.ts +2 -0
  33. package/dist/src/data/transforms/filter.test.d.ts.map +1 -0
  34. package/dist/src/data/transforms/flatten.test.d.ts +2 -0
  35. package/dist/src/data/transforms/flatten.test.d.ts.map +1 -0
  36. package/dist/src/data/transforms/flatten.test.js +10 -7
  37. package/dist/src/data/transforms/flattenDelimited.test.d.ts +2 -0
  38. package/dist/src/data/transforms/flattenDelimited.test.d.ts.map +1 -0
  39. package/dist/src/data/transforms/flattenDelimited.test.js +16 -13
  40. package/dist/src/data/transforms/flattenSequence.test.d.ts +2 -0
  41. package/dist/src/data/transforms/flattenSequence.test.d.ts.map +1 -0
  42. package/dist/src/data/transforms/flattenSequence.test.js +1 -1
  43. package/dist/src/data/transforms/formula.test.d.ts +2 -0
  44. package/dist/src/data/transforms/formula.test.d.ts.map +1 -0
  45. package/dist/src/data/transforms/formula.test.js +1 -1
  46. package/dist/src/data/transforms/identifier.test.d.ts +2 -0
  47. package/dist/src/data/transforms/identifier.test.d.ts.map +1 -0
  48. package/dist/src/data/transforms/pileup.test.d.ts +2 -0
  49. package/dist/src/data/transforms/pileup.test.d.ts.map +1 -0
  50. package/dist/src/data/transforms/project.test.d.ts +2 -0
  51. package/dist/src/data/transforms/project.test.d.ts.map +1 -0
  52. package/dist/src/data/transforms/project.test.js +1 -1
  53. package/dist/src/data/transforms/regexExtract.test.d.ts +2 -0
  54. package/dist/src/data/transforms/regexExtract.test.d.ts.map +1 -0
  55. package/dist/src/data/transforms/regexExtract.test.js +6 -3
  56. package/dist/src/data/transforms/regexFold.test.d.ts +2 -0
  57. package/dist/src/data/transforms/regexFold.test.d.ts.map +1 -0
  58. package/dist/src/data/transforms/sample.test.d.ts +2 -0
  59. package/dist/src/data/transforms/sample.test.d.ts.map +1 -0
  60. package/dist/src/data/transforms/stack.test.d.ts +2 -0
  61. package/dist/src/data/transforms/stack.test.d.ts.map +1 -0
  62. package/dist/src/data/transforms/stack.test.js +8 -8
  63. package/dist/src/encoder/accessor.d.ts +17 -14
  64. package/dist/src/encoder/accessor.d.ts.map +1 -1
  65. package/dist/src/encoder/accessor.js +127 -56
  66. package/dist/src/encoder/accessor.test.d.ts +2 -0
  67. package/dist/src/encoder/accessor.test.d.ts.map +1 -0
  68. package/dist/src/encoder/accessor.test.js +145 -31
  69. package/dist/src/encoder/encoder.d.ts +26 -13
  70. package/dist/src/encoder/encoder.d.ts.map +1 -1
  71. package/dist/src/encoder/encoder.js +98 -114
  72. package/dist/src/encoder/encoder.test.d.ts +2 -0
  73. package/dist/src/encoder/encoder.test.d.ts.map +1 -0
  74. package/dist/src/encoder/encoder.test.js +85 -82
  75. package/dist/src/fonts/bmFontManager.d.ts.map +1 -1
  76. package/dist/src/fonts/bmFontManager.js +10 -4
  77. package/dist/src/genome/genome.test.d.ts +2 -0
  78. package/dist/src/genome/genome.test.d.ts.map +1 -0
  79. package/dist/src/genome/scaleIndex.test.d.ts +2 -0
  80. package/dist/src/genome/scaleIndex.test.d.ts.map +1 -0
  81. package/dist/src/genome/scaleLocus.test.d.ts +2 -0
  82. package/dist/src/genome/scaleLocus.test.d.ts.map +1 -0
  83. package/dist/src/genomeSpy.d.ts +3 -2
  84. package/dist/src/genomeSpy.d.ts.map +1 -1
  85. package/dist/src/genomeSpy.js +15 -6
  86. package/dist/src/gl/dataToVertices.d.ts +6 -8
  87. package/dist/src/gl/dataToVertices.d.ts.map +1 -1
  88. package/dist/src/gl/dataToVertices.js +42 -33
  89. package/dist/src/gl/glslScaleGenerator.d.ts +84 -15
  90. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  91. package/dist/src/gl/glslScaleGenerator.js +260 -73
  92. package/dist/src/gl/includes/common.glsl.js +1 -1
  93. package/dist/src/marks/link.common.glsl.js +1 -1
  94. package/dist/src/marks/link.d.ts +8 -1
  95. package/dist/src/marks/link.d.ts.map +1 -1
  96. package/dist/src/marks/link.fragment.glsl.js +1 -1
  97. package/dist/src/marks/link.js +47 -31
  98. package/dist/src/marks/link.vertex.glsl.js +1 -1
  99. package/dist/src/marks/mark.d.ts +24 -25
  100. package/dist/src/marks/mark.d.ts.map +1 -1
  101. package/dist/src/marks/mark.js +246 -118
  102. package/dist/src/marks/markUtils.d.ts +25 -0
  103. package/dist/src/marks/markUtils.d.ts.map +1 -1
  104. package/dist/src/marks/markUtils.js +41 -1
  105. package/dist/src/marks/point.common.glsl.js +1 -1
  106. package/dist/src/marks/point.d.ts +8 -1
  107. package/dist/src/marks/point.d.ts.map +1 -1
  108. package/dist/src/marks/point.js +34 -25
  109. package/dist/src/marks/point.vertex.glsl.js +1 -1
  110. package/dist/src/marks/rect.d.ts +8 -1
  111. package/dist/src/marks/rect.d.ts.map +1 -1
  112. package/dist/src/marks/rect.js +28 -23
  113. package/dist/src/marks/rule.d.ts +8 -1
  114. package/dist/src/marks/rule.d.ts.map +1 -1
  115. package/dist/src/marks/rule.js +23 -16
  116. package/dist/src/marks/text.d.ts +10 -1
  117. package/dist/src/marks/text.d.ts.map +1 -1
  118. package/dist/src/marks/text.fragment.glsl.js +1 -1
  119. package/dist/src/marks/text.js +53 -47
  120. package/dist/src/marks/text.vertex.glsl.js +1 -1
  121. package/dist/src/scale/scale.test.d.ts +2 -0
  122. package/dist/src/scale/scale.test.d.ts.map +1 -0
  123. package/dist/src/scale/scale.test.js +2 -0
  124. package/dist/src/scale/ticks.test.d.ts +2 -0
  125. package/dist/src/scale/ticks.test.d.ts.map +1 -0
  126. package/dist/src/scale/ticks.test.js +6 -0
  127. package/dist/src/selection/selection.d.ts +39 -0
  128. package/dist/src/selection/selection.d.ts.map +1 -0
  129. package/dist/src/selection/selection.js +78 -0
  130. package/dist/src/spec/channel.d.ts +150 -83
  131. package/dist/src/spec/mark.d.ts +133 -78
  132. package/dist/src/spec/parameter.d.ts +112 -3
  133. package/dist/src/spec/root.d.ts +0 -1
  134. package/dist/src/spec/transform.d.ts +19 -1
  135. package/dist/src/spec/view.d.ts +5 -10
  136. package/dist/src/tooltip/dataTooltipHandler.d.ts +1 -1
  137. package/dist/src/tooltip/dataTooltipHandler.d.ts.map +1 -1
  138. package/dist/src/tooltip/dataTooltipHandler.js +1 -1
  139. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts +1 -1
  140. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts.map +1 -1
  141. package/dist/src/types/encoder.d.ts +80 -26
  142. package/dist/src/types/rendering.d.ts +1 -0
  143. package/dist/src/types/selectionTypes.d.ts +44 -0
  144. package/dist/src/types/viewContext.d.ts +1 -4
  145. package/dist/src/utils/addBaseUrl.test.d.ts +2 -0
  146. package/dist/src/utils/addBaseUrl.test.d.ts.map +1 -0
  147. package/dist/src/utils/binnedIndex.test.d.ts +2 -0
  148. package/dist/src/utils/binnedIndex.test.d.ts.map +1 -0
  149. package/dist/src/utils/cloner.test.d.ts +2 -0
  150. package/dist/src/utils/cloner.test.d.ts.map +1 -0
  151. package/dist/src/utils/coalesce.test.d.ts +2 -0
  152. package/dist/src/utils/coalesce.test.d.ts.map +1 -0
  153. package/dist/src/utils/concatIterables.test.d.ts +2 -0
  154. package/dist/src/utils/concatIterables.test.d.ts.map +1 -0
  155. package/dist/src/utils/domainArray.test.d.ts +2 -0
  156. package/dist/src/utils/domainArray.test.d.ts.map +1 -0
  157. package/dist/src/utils/expression.d.ts +2 -2
  158. package/dist/src/utils/expression.d.ts.map +1 -1
  159. package/dist/src/utils/expression.js +11 -2
  160. package/dist/src/utils/indexer.test.d.ts +2 -0
  161. package/dist/src/utils/indexer.test.d.ts.map +1 -0
  162. package/dist/src/utils/inputBinding.d.ts.map +1 -1
  163. package/dist/src/utils/inputBinding.js +4 -0
  164. package/dist/src/utils/iterateNestedMaps.test.d.ts +2 -0
  165. package/dist/src/utils/iterateNestedMaps.test.d.ts.map +1 -0
  166. package/dist/src/utils/kWayMerge.test.d.ts +2 -0
  167. package/dist/src/utils/kWayMerge.test.d.ts.map +1 -0
  168. package/dist/src/utils/mergeObjects.test.d.ts +2 -0
  169. package/dist/src/utils/mergeObjects.test.d.ts.map +1 -0
  170. package/dist/src/utils/numberExtractor.test.d.ts +2 -0
  171. package/dist/src/utils/numberExtractor.test.d.ts.map +1 -0
  172. package/dist/src/utils/propertyCacher.test.d.ts +2 -0
  173. package/dist/src/utils/propertyCacher.test.d.ts.map +1 -0
  174. package/dist/src/utils/propertyCoalescer.test.d.ts +2 -0
  175. package/dist/src/utils/propertyCoalescer.test.d.ts.map +1 -0
  176. package/dist/src/utils/propertyCoalescer.test.js +3 -0
  177. package/dist/src/utils/radixSort.test.d.ts +2 -0
  178. package/dist/src/utils/radixSort.test.d.ts.map +1 -0
  179. package/dist/src/utils/reservationMap.test.d.ts +2 -0
  180. package/dist/src/utils/reservationMap.test.d.ts.map +1 -0
  181. package/dist/src/utils/ringBuffer.test.d.ts +2 -0
  182. package/dist/src/utils/ringBuffer.test.d.ts.map +1 -0
  183. package/dist/src/utils/topK.test.d.ts +2 -0
  184. package/dist/src/utils/topK.test.d.ts.map +1 -0
  185. package/dist/src/utils/trees.test.d.ts +2 -0
  186. package/dist/src/utils/trees.test.d.ts.map +1 -0
  187. package/dist/src/utils/trees.test.js +8 -3
  188. package/dist/src/utils/variableTools.test.d.ts +2 -0
  189. package/dist/src/utils/variableTools.test.d.ts.map +1 -0
  190. package/dist/src/view/axisResolution.d.ts +19 -6
  191. package/dist/src/view/axisResolution.d.ts.map +1 -1
  192. package/dist/src/view/axisResolution.js +16 -7
  193. package/dist/src/view/axisResolution.test.d.ts +2 -0
  194. package/dist/src/view/axisResolution.test.d.ts.map +1 -0
  195. package/dist/src/view/axisResolution.test.js +16 -11
  196. package/dist/src/view/axisView.js +2 -2
  197. package/dist/src/view/facetView.d.ts +1 -1
  198. package/dist/src/view/facetView.d.ts.map +1 -1
  199. package/dist/src/view/flowBuilder.d.ts +1 -1
  200. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  201. package/dist/src/view/flowBuilder.js +34 -5
  202. package/dist/src/view/flowBuilder.test.d.ts +2 -0
  203. package/dist/src/view/flowBuilder.test.d.ts.map +1 -0
  204. package/dist/src/view/flowBuilder.test.js +1 -1
  205. package/dist/src/view/gridView.d.ts +0 -6
  206. package/dist/src/view/gridView.d.ts.map +1 -1
  207. package/dist/src/view/gridView.js +1 -1
  208. package/dist/src/view/layerView.d.ts +0 -6
  209. package/dist/src/view/layerView.d.ts.map +1 -1
  210. package/dist/src/view/layout/flexLayout.test.d.ts +2 -0
  211. package/dist/src/view/layout/flexLayout.test.d.ts.map +1 -0
  212. package/dist/src/view/layout/grid.test.d.ts +2 -0
  213. package/dist/src/view/layout/grid.test.d.ts.map +1 -0
  214. package/dist/src/view/layout/rectangle.test.d.ts +2 -0
  215. package/dist/src/view/layout/rectangle.test.d.ts.map +1 -0
  216. package/dist/src/view/paramMediator.d.ts +39 -5
  217. package/dist/src/view/paramMediator.d.ts.map +1 -1
  218. package/dist/src/view/paramMediator.js +120 -9
  219. package/dist/src/view/paramMediator.test.d.ts +2 -0
  220. package/dist/src/view/paramMediator.test.d.ts.map +1 -0
  221. package/dist/src/view/paramMediator.test.js +37 -1
  222. package/dist/src/view/scaleResolution.d.ts +17 -15
  223. package/dist/src/view/scaleResolution.d.ts.map +1 -1
  224. package/dist/src/view/scaleResolution.js +70 -68
  225. package/dist/src/view/scaleResolution.test.d.ts +2 -0
  226. package/dist/src/view/scaleResolution.test.d.ts.map +1 -0
  227. package/dist/src/view/scaleResolution.test.js +2 -0
  228. package/dist/src/view/testUtils.d.ts.map +1 -1
  229. package/dist/src/view/testUtils.js +15 -3
  230. package/dist/src/view/unitView.d.ts +8 -20
  231. package/dist/src/view/unitView.d.ts.map +1 -1
  232. package/dist/src/view/unitView.js +100 -102
  233. package/dist/src/view/view.d.ts +1 -1
  234. package/dist/src/view/view.d.ts.map +1 -1
  235. package/dist/src/view/view.test.d.ts +2 -0
  236. package/dist/src/view/view.test.d.ts.map +1 -0
  237. package/dist/src/view/view.test.js +73 -55
  238. package/dist/src/view/viewFactory.test.d.ts +2 -0
  239. package/dist/src/view/viewFactory.test.d.ts.map +1 -0
  240. package/dist/src/view/viewFactory.test.js +2 -2
  241. package/dist/src/view/viewUtils.d.ts +1 -1
  242. package/dist/src/view/viewUtils.d.ts.map +1 -1
  243. package/dist/src/view/zoom.js +2 -2
  244. package/package.json +5 -2
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scaleIndex.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaleIndex.test.d.ts","sourceRoot":"","sources":["../../../src/genome/scaleIndex.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scaleLocus.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaleLocus.test.d.ts","sourceRoot":"","sources":["../../../src/genome/scaleLocus.test.js"],"names":[],"mappings":""}
@@ -18,7 +18,6 @@ export default class GenomeSpy {
18
18
  _destructionCallbacks: (() => void)[];
19
19
  /** Root level configuration object */
20
20
  spec: import("./spec/root.js").RootSpec;
21
- accessorFactory: AccessorFactory;
22
21
  viewFactory: ViewFactory;
23
22
  /** @type {(function(string):object[])[]} */
24
23
  namedDataProviders: ((arg0: string) => object[])[];
@@ -83,6 +82,8 @@ export default class GenomeSpy {
83
82
  * @type {HTMLElement}
84
83
  */
85
84
  _inputBindingContainer: HTMLElement;
85
+ /** @type {Point} */
86
+ _mouseDownCoords: Point;
86
87
  /**
87
88
  *
88
89
  * @param {(name: string) => any[]} provider
@@ -151,12 +152,12 @@ export default class GenomeSpy {
151
152
  * Events that are broadcasted to all views.
152
153
  */
153
154
  export type BroadcastEventType = "dataFlowBuilt" | "dataLoaded" | "layout" | "layoutComputed";
154
- import AccessorFactory from "./encoder/accessor.js";
155
155
  import { ViewFactory } from "./view/viewFactory.js";
156
156
  import Animator from "./utils/animator.js";
157
157
  import GenomeStore from "./genome/genomeStore.js";
158
158
  import BufferedViewRenderingContext from "./view/renderingContext/bufferedViewRenderingContext.js";
159
159
  import Inertia from "./utils/inertia.js";
160
+ import Point from "./view/layout/point.js";
160
161
  import WebGLHelper from "./gl/webGLHelper.js";
161
162
  import Tooltip from "./utils/ui/tooltip.js";
162
163
  import UnitView from "./view/unitView.js";
@@ -1 +1 @@
1
- {"version":3,"file":"genomeSpy.d.ts","sourceRoot":"","sources":["../../src/genomeSpy.js"],"names":[],"mappings":"AA+CA;IACI;;;;;OAKG;IAEH;;;;;OAKG;IACH,uBAJW,WAAW,qDAEX,OAAO,qBAAqB,EAAE,YAAY,EA2FpD;IAxFG,uBAA0B;IAC1B,oDAAsB;IAItB,6BAA6B;IAC7B,uBADW,CAAC,MAAM,IAAI,CAAC,EAAE,CACM;IAE/B,sCAAsC;IACtC,wCAAgB;IAEhB,iCAA4C;IAC5C,yBAAoC;IAEpC,4CAA4C;IAC5C,oBADW,QAAU,MAAM,KAAE,MAAM,EAAE,CAAC,EAAE,CACZ;IAE5B,mBAAoD;IAEpD,0BAA0B;IAC1B,aADW,WAAW,CACM;IAE5B;;;;;OAKG;IACH,qEAF0B,OAAO,CAE8B;IAE/D,2CAA2C;IAC3C,mBADW,4BAA4B,CACL;IAClC,2CAA2C;IAC3C,iBADW,4BAA4B,CACP;IAEhC,oDAAoD;IACpD,6BAAgC;IAEhC;;;OAGG;IACH,eAFU;QAAE,IAAI,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,oBAAoB,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAEpF;IAE9B,uBAA+C;IAE/C;;;OAGG;IACH,oBAFU,IAAI,MAAM,EAAE,QAAU,aAAa,KAAE,IAAI,CAAC,EAAE,CAAC,CAEpB;IAEnC;;;;;;OAMG;IACH,yCAFkC,GAAG,KAAK,IAAI,GAEd;IAEhC;;;OAGG;IACH,kDAFkC,GAAG,KAAK,IAAI,GAEL;IAEzC,oFAAoF;IACpF,iBADW,OAAO,MAAM,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC,CAK9E;IAED,mBAAmB;IACnB,2CAAyB;IAEzB;;;;OAIG;IACH;gBAF8B,OAAO,wBAAwB,EAAE,iBAAiB;iBAAW,MAAM;OAEnE;IAE9B;;OAEG;IACH,wBAFU,WAAW,CAEkB;IA2C3C;;;OAGG;IACH,2CAFkB,MAAM,KAAK,GAAG,EAAE,QAIjC;IAED;;OAEG;IACH,+BAFW,MAAM,YAShB;IAED;;;;OAIG;IACH,sBAHW,MAAM,QACN,GAAG,EAAE,QAaf;IAED;;;;;OAKG;IACH,gBAHW,kBAAkB,YAClB,GAAG,QAQb;IAED;;;OAGG;IACH,iCAqDC;IA0DG,uBAQC;IAGD,mCAGE;IAOF,sCAEE;IAGF,iBAAyC;IAW7C;;OAEG;IACH,gBAuBC;IAED,sCA8MC;IAED;;;OAGG;IACH,UAFa,QAAQ,OAAO,CAAC,CA6B5B;IAED,4BAqJC;IA9He,iCAAoC;IAgIpD;;;OAGG;IACH,kBAHW,MAAM,KACN,MAAM,QAqEhB;IAED;;;;;;;OAOG;IACH,oDAHuB,QAAQ,MAAM,GAAG,WAAW,GAAG,OAAO,KAAK,EAAE,cAAc,CAAC,QAYlF;IAED,sBA6CC;IAED,kBAIC;IAED,iCAOC;IAED,iCASC;IAED,qFAWC;;CACJ;;;;iCAv7BY,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,gBAAgB;4BAlC7C,uBAAuB;4BA2BP,uBAAuB;qBAZ9C,qBAAqB;wBAIlB,yBAAyB;yCARR,yDAAyD;oBAYvD,oBAAoB;wBAdvC,qBAAqB;oBAXzB,uBAAuB;qBAStB,oBAAoB"}
1
+ {"version":3,"file":"genomeSpy.d.ts","sourceRoot":"","sources":["../../src/genomeSpy.js"],"names":[],"mappings":"AA8CA;IACI;;;;;OAKG;IAEH;;;;;OAKG;IACH,uBAJW,WAAW,qDAEX,OAAO,qBAAqB,EAAE,YAAY,EA6FpD;IA1FG,uBAA0B;IAC1B,oDAAsB;IAItB,6BAA6B;IAC7B,uBADW,CAAC,MAAM,IAAI,CAAC,EAAE,CACM;IAE/B,sCAAsC;IACtC,wCAAgB;IAEhB,yBAAoC;IAEpC,4CAA4C;IAC5C,oBADW,QAAU,MAAM,KAAE,MAAM,EAAE,CAAC,EAAE,CACZ;IAE5B,mBAAoD;IAEpD,0BAA0B;IAC1B,aADW,WAAW,CACM;IAE5B;;;;;OAKG;IACH,qEAF0B,OAAO,CAE8B;IAE/D,2CAA2C;IAC3C,mBADW,4BAA4B,CACL;IAClC,2CAA2C;IAC3C,iBADW,4BAA4B,CACP;IAEhC,oDAAoD;IACpD,6BAAgC;IAEhC;;;OAGG;IACH,eAFU;QAAE,IAAI,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,oBAAoB,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAEpF;IAE9B,uBAA+C;IAE/C;;;OAGG;IACH,oBAFU,IAAI,MAAM,EAAE,QAAU,aAAa,KAAE,IAAI,CAAC,EAAE,CAAC,CAEpB;IAEnC;;;;;;OAMG;IACH,yCAFkC,GAAG,KAAK,IAAI,GAEd;IAEhC;;;OAGG;IACH,kDAFkC,GAAG,KAAK,IAAI,GAEL;IAEzC,oFAAoF;IACpF,iBADW,OAAO,MAAM,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC,CAK9E;IAED,mBAAmB;IACnB,2CAAyB;IAEzB;;;;OAIG;IACH;gBAF8B,OAAO,wBAAwB,EAAE,iBAAiB;iBAAW,MAAM;OAEnE;IAE9B;;OAEG;IACH,wBAFU,WAAW,CAEkB;IAEvC,oBAAoB;IACpB,kBADW,KAAK,CACiB;IA2CrC;;;OAGG;IACH,2CAFkB,MAAM,KAAK,GAAG,EAAE,QAIjC;IAED;;OAEG;IACH,+BAFW,MAAM,YAShB;IAED;;;;OAIG;IACH,sBAHW,MAAM,QACN,GAAG,EAAE,QAaf;IAED;;;;;OAKG;IACH,gBAHW,kBAAkB,YAClB,GAAG,QAQb;IAED;;;OAGG;IACH,iCAqDC;IA0DG,uBAQC;IAGD,mCAGE;IAOF,sCAEE;IAGF,iBAAyC;IAW7C;;OAEG;IACH,gBAuBC;IAED,sCA6MC;IAED;;;OAGG;IACH,UAFa,QAAQ,OAAO,CAAC,CA6B5B;IAED,4BA8JC;IAvIe,iCAAoC;IAyIpD;;;OAGG;IACH,kBAHW,MAAM,KACN,MAAM,QAqEhB;IAED;;;;;;;OAOG;IACH,oDAHuB,QAAQ,MAAM,GAAG,WAAW,GAAG,OAAO,KAAK,EAAE,cAAc,CAAC,QAYlF;IAED,sBA6CC;IAED,kBAIC;IAED,iCAOC;IAED,iCASC;IAED,qFAWC;;CACJ;;;;iCAj8BY,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,gBAAgB;4BAP7B,uBAAuB;qBAZ9C,qBAAqB;wBAIlB,yBAAyB;yCARR,yDAAyD;oBAYvD,oBAAoB;kBAT7C,wBAAwB;wBALlB,qBAAqB;oBAVzB,uBAAuB;qBAQtB,oBAAoB"}
@@ -6,7 +6,6 @@ import SPINNER from "./img/90-ring-with-bg.svg";
6
6
  import css from "./styles/genome-spy.css.js";
7
7
  import Tooltip from "./utils/ui/tooltip.js";
8
8
 
9
- import AccessorFactory from "./encoder/accessor.js";
10
9
  import {
11
10
  checkForDuplicateScaleNames,
12
11
  setImplicitScaleNames,
@@ -71,7 +70,6 @@ export default class GenomeSpy {
71
70
  /** Root level configuration object */
72
71
  this.spec = spec;
73
72
 
74
- this.accessorFactory = new AccessorFactory();
75
73
  this.viewFactory = new ViewFactory();
76
74
 
77
75
  /** @type {(function(string):object[])[]} */
@@ -148,6 +146,9 @@ export default class GenomeSpy {
148
146
  * @type {HTMLElement}
149
147
  */
150
148
  this._inputBindingContainer = undefined;
149
+
150
+ /** @type {Point} */
151
+ this._mouseDownCoords = undefined;
151
152
  }
152
153
 
153
154
  get #canvasWrapper() {
@@ -434,7 +435,6 @@ export default class GenomeSpy {
434
435
  /** @type {import("./types/viewContext.js").default} */
435
436
  const context = {
436
437
  dataFlow: new DataFlow(),
437
- accessorFactory: this.accessorFactory,
438
438
  glHelper: this._glHelper,
439
439
  animator: this.animator,
440
440
  genomeStore: this.genomeStore,
@@ -785,7 +785,14 @@ export default class GenomeSpy {
785
785
  ?.forEach((listener) => listener(e));
786
786
  }
787
787
 
788
- dispatchEvent(event);
788
+ if (
789
+ event.type != "click" ||
790
+ // Suppress click events if the mouse has been dragged
791
+ this._mouseDownCoords?.subtract(Point.fromMouseEvent(event))
792
+ .length < 3
793
+ ) {
794
+ dispatchEvent(event);
795
+ }
789
796
  }
790
797
  };
791
798
 
@@ -799,7 +806,9 @@ export default class GenomeSpy {
799
806
  "contextmenu",
800
807
  ].forEach((type) => canvas.addEventListener(type, listener));
801
808
 
802
- canvas.addEventListener("mousedown", () => {
809
+ canvas.addEventListener("mousedown", (/** @type {MouseEvent} */ e) => {
810
+ this._mouseDownCoords = Point.fromMouseEvent(e);
811
+
803
812
  document.addEventListener(
804
813
  "mouseup",
805
814
  () => this.tooltip.popEnabledState(),
@@ -972,7 +981,7 @@ export default class GenomeSpy {
972
981
  /** @type {UnitView[]} */
973
982
  const views = [];
974
983
  this.viewRoot.visit((view) => {
975
- if (view instanceof UnitView && view.getAccessor("search")) {
984
+ if (view instanceof UnitView && view.getDataAccessor("search")) {
976
985
  views.push(view);
977
986
  }
978
987
  });
@@ -11,20 +11,18 @@ export class GeometryBuilder {
11
11
  */
12
12
  /**
13
13
  * @param {object} object
14
- * @param {Record<string, Encoder>} object.encoders
14
+ * @param {Record<import("../spec/channel.js").Channel, Encoder>} object.encoders
15
15
  * @param {string[]} [object.attributes]
16
16
  * @param {number} [object.numVertices] If the number of data items is known, a
17
17
  * preallocated TypedArray is used
18
18
  */
19
19
  constructor({ encoders, numVertices, attributes }: {
20
- encoders: Record<string, import("../types/encoder.js").Encoder>;
20
+ encoders: Record<import("../spec/channel.js").Channel, import("../types/encoder.js").Encoder>;
21
21
  attributes?: string[];
22
22
  numVertices?: number;
23
23
  });
24
- encoders: Record<string, import("../types/encoder.js").Encoder>;
25
- variableEncoders: {
26
- [k: string]: import("../types/encoder.js").Encoder;
27
- };
24
+ encoders: Record<import("../spec/channel.js").Channel, import("../types/encoder.js").Encoder>;
25
+ variableEncoders: Record<import("../spec/channel.js").Channel, import("../types/encoder.js").Encoder>;
28
26
  allocatedVertices: number;
29
27
  variableBuilder: ArrayBuilder;
30
28
  lastOffset: number;
@@ -59,8 +57,8 @@ export class GeometryBuilder {
59
57
  */
60
58
  addToXIndex(datum: import("../data/flowNode.js").Datum): void;
61
59
  xIndexer: {
62
- (datum: any, startVertexIndex: number, endVertexIndex: number): void;
63
- getIndex: () => import("../utils/binnedIndex.js").Lookup; /** @param {Encoder} encoder */
60
+ (datum: import("../data/flowNode.js").Datum, startVertexIndex: number, endVertexIndex: number): void;
61
+ getIndex: () => import("../utils/binnedIndex.js").Lookup;
64
62
  };
65
63
  toArrays(): {
66
64
  /** @type {Record<string, {data: Uint16Array | Int16Array | Uint32Array | Int32Array | Float32Array, numComponents: number, divisor?: number}>} */
@@ -1 +1 @@
1
- {"version":3,"file":"dataToVertices.d.ts","sourceRoot":"","sources":["../../../src/gl/dataToVertices.js"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH;IACI;;;OAGG;IAEH;;;;;;OAMG;IACH;;qBAJW,MAAM,EAAE;sBACR,MAAM;OAgFhB;IA5EG,gEAAwB;IAGxB;;MAKC;IAQD,0BAAoC;IAEpC,8BAAoD;IAsDpD,mBAAmB;IAEnB,yFAAyF;IACzF,UADW,IAAI,GAAG,EAAE,UAAU,CAAC,CACkB;IAGrD;;;;OAIG;IACH,mBAFW,GAAG,QAcb;IAED;;OAEG;IACH,oBAFW,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,QAM5B;IAED;;;OAGG;IACH,cAHW,GAAG,QACH,MAAM,EAAE,kCAYlB;IAED;;;;OAIG;IACH,sBAJW,OAAO,qBAAqB,EAAE,IAAI,OAClC,MAAM,OACN,MAAM,QA+DhB;IAED;;;;;OAKG;IACH,mBAFW,OAAO,qBAAqB,EAAE,KAAK,QAI7C;IA/DO;;kEAcJ,+BAA+B;MAdF;IAiEjC;QAEQ,kJAAkJ;gBAAvI,OAAO,MAAM,EAAE;YAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAC,CAAC;QAE9I,8BAA8B;;QAE9B,8CAA8C;;;MAIrD;CACJ;AAED;IACI;;;;;;OAMG;IACH;;oBAHW,MAAM,EAAE;mBACR,MAAM;OA+BhB;IAnBG,qBAkBW;CA8BlB;AAED;IACI;;;;;;;;;OASG;IACH;;oBANW,MAAM,EAAE;gCACR,MAAM;uBAEN,MAAM,EAAE;mBACR,MAAM;OAwBhB;IARG,uBAAgC;IAEhC,8BAA8D;IAE9D,6CAA+D;IAC/D,4CAA6D;CA6CpE;AAED;IACI;;;;;;OAMG;IACH;;oBAHW,MAAM,EAAE;mBACR,MAAM;OAShB;CACJ;AAED;IACI;;;;;OAKG;IACH;;oBAHW,MAAM,EAAE;mBACR,MAAM;OAShB;CAYJ;AAED;IACI;;;;;;;;;OASG;IACH;;oBANW,MAAM,EAAE;qBACR,OAAO,2BAA2B,EAAE,aAAa;oBACjD,OAAO,MAAM,EAAE,GAAG,CAAC;wBACnB,MAAM;sBACN,OAAO;OA8CjB;IA/BG,4DAA2B;IAC3B,2DAA0B;IAE1B,gCAA4B;IAQ5B,qCAAqC;IACrC,sBADmB,GAAG,KAAK,MAAM,CAMf;IAElB,oDAGC;IACD,qDAGC;IAED,8CAAiE;CAgJxE;;;;;;;;YA1mBS,MAAM;;;;WACN,MAAM;YACN,OAAO,yBAAyB,EAAE,MAAM;;yBAjBzB,mBAAmB"}
1
+ {"version":3,"file":"dataToVertices.d.ts","sourceRoot":"","sources":["../../../src/gl/dataToVertices.js"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH;IACI;;;OAGG;IAEH;;;;;;OAMG;IACH;;qBAJW,MAAM,EAAE;sBACR,MAAM;OAyFhB;IArFG,8FAAwB;IAIxB,sGAQK;IAQL,0BAAoC;IAEpC,8BAAoD;IA2DpD,mBAAmB;IAEnB,yFAAyF;IACzF,UADW,IAAI,GAAG,EAAE,UAAU,CAAC,CACkB;IAGrD;;;;OAIG;IACH,mBAFW,GAAG,QAcb;IAED;;OAEG;IACH,oBAFW,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,QAM5B;IAED;;;OAGG;IACH,cAHW,GAAG,QACH,MAAM,EAAE,kCAYlB;IAED;;;;OAIG;IACH,sBAJW,OAAO,qBAAqB,EAAE,IAAI,OAClC,MAAM,OACN,MAAM,QAgEhB;IAED;;;;;OAKG;IACH,mBAFW,OAAO,qBAAqB,EAAE,KAAK,QAI7C;IAhEO;;;MAAyB;IAkEjC;QAEQ,kJAAkJ;gBAAvI,OAAO,MAAM,EAAE;YAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAC,CAAC;QAE9I,8BAA8B;;QAE9B,8CAA8C;;;MAIrD;CACJ;AAED;IACI;;;;;;OAMG;IACH;;oBAHW,MAAM,EAAE;mBACR,MAAM;OA+BhB;IAnBG,qBAkBW;CA8BlB;AAED;IACI;;;;;;;;;OASG;IACH;;oBANW,MAAM,EAAE;gCACR,MAAM;uBAEN,MAAM,EAAE;mBACR,MAAM;OAwBhB;IARG,uBAAgC;IAEhC,8BAA8D;IAE9D,6CAA+D;IAC/D,4CAA6D;CA6CpE;AAED;IACI;;;;;;OAMG;IACH;;oBAHW,MAAM,EAAE;mBACR,MAAM;OAShB;CACJ;AAED;IACI;;;;;OAKG;IACH;;oBAHW,MAAM,EAAE;mBACR,MAAM;OAShB;CAYJ;AAED;IACI;;;;;;;;;OASG;IACH;;oBANW,MAAM,EAAE;qBACR,OAAO,2BAA2B,EAAE,aAAa;oBACjD,OAAO,MAAM,EAAE,GAAG,CAAC;wBACnB,MAAM;sBACN,OAAO;OA6CjB;IA9BG,4DAA2B;IAC3B,2DAA0B;IAE1B,gCAA4B;IAO5B,qCAAqC;IACrC,sBADmB,GAAG,KAAK,MAAM,CAMf;IAElB,oDAGC;IACD,qDAGC;IAED,8CAAiE;CAgJxE;;;;;;;;YAnnBS,MAAM;;;;WACN,MAAM;YACN,OAAO,yBAAyB,EAAE,MAAM;;yBAjBzB,mBAAmB"}
@@ -7,12 +7,12 @@ import { createBinningRangeIndexer } from "../utils/binnedIndex.js";
7
7
  import { isValueDef } from "../encoder/encoder.js";
8
8
  import {
9
9
  dedupeEncodingFields,
10
- isHighPrecisionScale,
11
- isLargeGenome,
10
+ getAttributeAndArrayTypes,
12
11
  makeAttributeName,
13
12
  splitLargeHighPrecision,
14
13
  } from "./glslScaleGenerator.js";
15
- import { isContinuous, isDiscrete } from "vega-scale";
14
+ import { isContinuous } from "vega-scale";
15
+ import createIndexer from "../utils/indexer.js";
16
16
 
17
17
  /**
18
18
  * @typedef {object} RangeEntry Represents a location of a vertex subset
@@ -28,7 +28,7 @@ export class GeometryBuilder {
28
28
 
29
29
  /**
30
30
  * @param {object} object
31
- * @param {Record<string, Encoder>} object.encoders
31
+ * @param {Record<import("../spec/channel.js").Channel, Encoder>} object.encoders
32
32
  * @param {string[]} [object.attributes]
33
33
  * @param {number} [object.numVertices] If the number of data items is known, a
34
34
  * preallocated TypedArray is used
@@ -37,12 +37,16 @@ export class GeometryBuilder {
37
37
  this.encoders = encoders;
38
38
 
39
39
  // Encoders for variable channels
40
- this.variableEncoders = Object.fromEntries(
41
- Object.entries(encoders).filter(
42
- ([channel, e]) =>
43
- attributes.includes(channel) && e && e.scale && !e.constant
44
- )
45
- );
40
+
41
+ this.variableEncoders =
42
+ /** @type {Record<import("../spec/channel.js").Channel, Encoder>} */ (
43
+ Object.fromEntries(
44
+ Object.entries(encoders).filter(
45
+ ([channel, e]) =>
46
+ attributes.includes(channel) && e && !e.constant
47
+ )
48
+ )
49
+ );
46
50
 
47
51
  const dedupedEncodingFields = [
48
52
  ...dedupeEncodingFields(encoders).entries(),
@@ -56,6 +60,11 @@ export class GeometryBuilder {
56
60
 
57
61
  // Create converters and updaters for all variable channels.
58
62
  for (const [channel, ce] of Object.entries(this.variableEncoders)) {
63
+ const accessor = ce.dataAccessor;
64
+ if (!accessor) {
65
+ continue;
66
+ }
67
+
59
68
  // Only add the first of the shared channels as all the rest are same
60
69
  // For example, if both x and x2 are using the same field, only x is
61
70
  // added to the array builder with the name "x_x2".
@@ -66,13 +75,19 @@ export class GeometryBuilder {
66
75
  continue;
67
76
  }
68
77
 
69
- const accessor = ce.accessor;
78
+ const numberAccessor = accessor.asNumberAccessor();
79
+ const scale = ce.scale;
70
80
 
71
- const hp = isHighPrecisionScale(ce.scale.type);
72
- const largeHp = hp && isLargeGenome(ce.scale.domain());
81
+ const { largeHp, arrayConstructor, discrete, numComponents } =
82
+ getAttributeAndArrayTypes(scale, channel);
73
83
  const largeHpArray = [0, 0];
74
84
 
75
- const indexer = ce.indexer;
85
+ /** @type {ReturnType<typeof createIndexer>} */
86
+ let indexer;
87
+ if (scale && discrete && "domain" in scale) {
88
+ indexer = createIndexer();
89
+ indexer.addAll(scale.domain());
90
+ }
76
91
 
77
92
  /**
78
93
  * Discrete variables both numeric and strings must be "indexed",
@@ -84,8 +99,9 @@ export class GeometryBuilder {
84
99
  const f = indexer
85
100
  ? (d) => indexer(accessor(d))
86
101
  : largeHp
87
- ? (d) => splitLargeHighPrecision(accessor(d), largeHpArray)
88
- : accessor;
102
+ ? (d) =>
103
+ splitLargeHighPrecision(numberAccessor(d), largeHpArray)
104
+ : numberAccessor;
89
105
 
90
106
  const attributeName = sharedChannels
91
107
  ? makeAttributeName(sharedChannels)
@@ -93,16 +109,9 @@ export class GeometryBuilder {
93
109
 
94
110
  this.variableBuilder.addConverter(attributeName, {
95
111
  f,
96
- numComponents: largeHp ? 2 : 1,
112
+ numComponents,
97
113
  arrayReference: largeHp ? largeHpArray : undefined,
98
- targetArrayType:
99
- channel == "uniqueId"
100
- ? Uint32Array
101
- : isDiscrete(ce.scale.type)
102
- ? Uint16Array
103
- : hp
104
- ? Uint32Array
105
- : Float32Array,
114
+ targetArrayType: arrayConstructor,
106
115
  });
107
116
  }
108
117
 
@@ -190,9 +199,10 @@ export class GeometryBuilder {
190
199
  const xe = getContinuousEncoder(this.variableEncoders.x);
191
200
  const x2e = getContinuousEncoder(this.variableEncoders.x2);
192
201
 
193
- if (xe) {
194
- const xa = xe.accessor;
195
- const x2a = x2e ? x2e.accessor : xa;
202
+ // Only index variable data
203
+ if (xe && !xe.constant && (!x2e || !x2e.constant)) {
204
+ const xa = xe.dataAccessor.asNumberAccessor();
205
+ const x2a = x2e ? x2e.dataAccessor.asNumberAccessor() : xa;
196
206
 
197
207
  /** @type {[number, number]} */
198
208
  const dataDomain = [xa(data[lo]), x2a(data[hi - 1])];
@@ -469,10 +479,9 @@ export class TextVertexBuilder extends GeometryBuilder {
469
479
 
470
480
  const e = encoders;
471
481
 
472
- const channelDef =
473
- /** @type {import("../spec/channel.js").TextDef<string>} */ (
474
- e.text.channelDef
475
- );
482
+ const channelDef = /** @type {import("../spec/channel.js").TextDef} */ (
483
+ e.text.channelDef
484
+ );
476
485
  /** @type {(value: any) => string} */
477
486
  this.numberFormat =
478
487
  !isValueDef(channelDef) &&
@@ -522,7 +531,7 @@ export class TextVertexBuilder extends GeometryBuilder {
522
531
  // alphabetic
523
532
  }
524
533
 
525
- const accessor = this.encoders.text.accessor || this.encoders.text; // accessor or constant value
534
+ const accessor = this.encoders.text; // accessor or constant value
526
535
 
527
536
  const vertexCoord = [0, 0];
528
537
  this.updateVertexCoord(vertexCoord);
@@ -1,41 +1,92 @@
1
1
  /// <reference types="external-typings/internmap.js" />
2
+ /**
3
+ *
4
+ * @param {Channel} channel
5
+ * @param {number} conditionNumber
6
+ * @returns {string}
7
+ */
8
+ export function makeAccessorFunctionName(channel: Channel, conditionNumber: number): string;
9
+ /**
10
+ * @typedef {object} AccessorParts
11
+ * @prop {Channel} channel
12
+ * @prop {string} accessorGlsl
13
+ * @prop {string} accessorFunctionName
14
+ * @prop {string} [attributeName]
15
+ * @prop {string} [attributeGlsl]
16
+ * @prop {string} [uniformName]
17
+ * @prop {string} [uniformGlsl]
18
+ * @prop {(x: any) => any} [adjuster]
19
+ */
2
20
  /**
3
21
  * Generates GLSL code for a constant value.
4
22
  *
5
23
  * @param {Channel} channel
24
+ * @param {number} conditionNumber
6
25
  * @param {number | number[] | string | boolean} value
26
+ * @returns {AccessorParts}
7
27
  */
8
- export function generateConstantValueGlsl(channel: Channel, value: number | number[] | string | boolean): string;
28
+ export function generateConstantValueGlsl(channel: Channel, conditionNumber: number, value: number | number[] | string | boolean): AccessorParts;
9
29
  /**
10
30
  * Generates GLSL code for a dynamic, parameter-driven values. These are mainly
11
31
  * used as dynamic mark properties that map to encoding channels.
12
32
  *
13
33
  * @param {Channel} channel
34
+ * @param {number} conditionNumber
35
+ * @returns {AccessorParts}
14
36
  */
15
- export function generateDynamicValueGlslAndUniform(channel: Channel): {
16
- channel: import("../spec/channel.js").Channel;
17
- uniformName: string;
18
- uniformGlsl: string;
19
- scaleGlsl: string;
20
- adjuster: (x: any) => any;
21
- };
37
+ export function generateDynamicValueGlslAndUniform(channel: Channel, conditionNumber: number): AccessorParts;
38
+ /**
39
+ * @param {Channel} channel
40
+ * @param {any} scale
41
+ * @param {number} conditionNumber
42
+ * @param {Channel[]} [sharedQuantitativeChannels] Channels that share the same quantitative field
43
+ * @returns {AccessorParts}
44
+ */
45
+ export function generateDataGlsl(channel: Channel, scale: any, conditionNumber: number, sharedQuantitativeChannels?: Channel[]): AccessorParts;
46
+ /**
47
+ * @param {Channel} channel
48
+ * @param {any} scale
49
+ * @param {number} conditionNumber
50
+ * @returns {AccessorParts}
51
+ */
52
+ export function generateDatumGlslAndUniform(channel: Channel, scale: any, conditionNumber: number): AccessorParts;
22
53
  /**
23
54
  *
24
55
  * @param {Channel} channel
25
- * @param {import("../view/scaleResolution.js").default} scaleResolution TODO: typing
56
+ * @param {any} scale
26
57
  * @param {import("../spec/channel.js").ChannelDef} channelDef
27
- * @param {Channel[]} [sharedQuantitativeChannels] Channels that share the same quantitative field
28
58
  */
29
- export function generateScaleGlsl(channel: Channel, scaleResolution: import("../view/scaleResolution.js").default, channelDef: import("../spec/channel.js").ChannelDef, sharedQuantitativeChannels?: Channel[]): {
30
- attributeName: string;
31
- attributeGlsl: string;
32
- markUniformGlsl: string;
59
+ export function generateScaleGlsl(channel: Channel, scale: any, channelDef: import("../spec/channel.js").ChannelDef): {
33
60
  glsl: string;
34
61
  domainUniformName: string;
35
62
  domainUniform: string;
36
- rangeName: string;
63
+ rangeUniformName: string;
37
64
  rangeUniform: string;
38
65
  };
66
+ /**
67
+ *
68
+ * @param {Channel} channel
69
+ * @param {import("../types/encoder.js").Accessor[]} accessors
70
+ */
71
+ export function generateConditionalEncoderGlsl(channel: Channel, accessors: import("../types/encoder.js").Accessor[]): string;
72
+ /**
73
+ * @param {Channel} channel
74
+ */
75
+ export function getScaledDataTypeForChannel(channel: Channel): "float" | "vec3" | "uint";
76
+ /**
77
+ *
78
+ * @param {import("../types/encoder.js").VegaScale} scale
79
+ * @param {import("../spec/channel.js").Channel} channel
80
+ */
81
+ export function getAttributeAndArrayTypes(scale: import("../types/encoder.js").VegaScale, channel: import("../spec/channel.js").Channel): {
82
+ attributeType: string;
83
+ arrayConstructor: Uint32ArrayConstructor | Uint16ArrayConstructor | Float32ArrayConstructor;
84
+ } & {
85
+ numComponents: number;
86
+ discrete: boolean;
87
+ hp: boolean;
88
+ largeHp: boolean;
89
+ };
39
90
  /**
40
91
  * True if scale needs more than 24 bits (float32) of precision.
41
92
  *
@@ -76,14 +127,32 @@ export function dedupeEncodingFields(encoders: Partial<Record<import("../spec/ch
76
127
  * @param {import("../spec/channel.js").Channel | import("../spec/channel.js").Channel[]} channel
77
128
  */
78
129
  export function makeAttributeName(channel: import("../spec/channel.js").Channel | import("../spec/channel.js").Channel[]): string;
130
+ /**
131
+ * @param {string[]} conditions
132
+ * @param {string[]} statements
133
+ * @returns {string}
134
+ */
135
+ export function ifElseGlsl(conditions: string[], statements: string[]): string;
79
136
  export const ATTRIBUTE_PREFIX: "attr_";
80
137
  export const DOMAIN_PREFIX: "uDomain_";
81
138
  export const RANGE_PREFIX: "range_";
139
+ export const ACCESSOR_FUNCTION_PREFIX: "accessor_";
82
140
  export const SCALE_FUNCTION_PREFIX: "scale_";
83
141
  export const SCALED_FUNCTION_PREFIX: "getScaled_";
84
142
  export const RANGE_TEXTURE_PREFIX: "uRangeTexture_";
143
+ export const PARAM_PREFIX: "uParam_";
85
144
  export function getRangeForGlsl(scale: any, channel: Channel): number[];
86
145
  export type Channel = import("../spec/channel.js").Channel;
146
+ export type AccessorParts = {
147
+ channel: Channel;
148
+ accessorGlsl: string;
149
+ accessorFunctionName: string;
150
+ attributeName?: string;
151
+ attributeGlsl?: string;
152
+ uniformName?: string;
153
+ uniformGlsl?: string;
154
+ adjuster?: (x: any) => any;
155
+ };
87
156
  /**
88
157
  * Turns a number or number array to float or vec[234] string.
89
158
  */
@@ -1 +1 @@
1
- {"version":3,"file":"glslScaleGenerator.d.ts","sourceRoot":"","sources":["../../../src/gl/glslScaleGenerator.js"],"names":[],"mappings":";AAqDA;;;;;GAKG;AACH,mDAHW,OAAO,SACP,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,UAoC9C;AAED;;;;;GAKG;AACH,4DAFW,OAAO;;;;;kBAIC,GAAG,KAAK,GAAG;EA0B7B;AAED;;;;;;GAMG;AAEH,2CANW,OAAO,mBACP,OAAO,4BAA4B,EAAE,OAAO,cAC5C,OAAO,oBAAoB,EAAE,UAAU,+BACvC,OAAO,EAAE;;;;;;;;;EAiTnB;AAgHD;;;;GAIG;AACH,2CAFW,MAAM,WAIhB;AAED;;;;GAIG;AACH,sCAFW,MAAM,EAAE,WAIlB;AAMD;;;GAGG;AACH,sCAHW,MAAM,QACN,MAAM,EAAE,YAYlB;AAED;;;GAGG;AACH,2CAHW,MAAM,QACN,MAAM,EAAE,YAUlB;AAYD;;GAEG;AACH,qDAFW,MAAM,EAAE,YAIlB;AAED;;GAEG;AAEH;;;;;GAKG;AACH,+CAFW,QAAQ,OAAO,OAAO,oBAAoB,EAAE,OAAO,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAAC,+DA4BtG;AAED;;GAEG;AACH,2CAFW,OAAO,oBAAoB,EAAE,OAAO,GAAG,OAAO,oBAAoB,EAAE,OAAO,EAAE,UAIvF;AAloBD,uCAAwC;AACxC,uCAAwC;AACxC,oCAAqC;AACrC,6CAA8C;AAC9C,kDAAmD;AACnD,oDAAqD;AA6oB9C,uCAJI,GAAG,WACH,OAAO,GACL,MAAM,EAAE,CAQF;sBA7oBN,OAAO,oBAAoB,EAAE,OAAO;;;;8BAubpC,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE;;;;uBAsJhD,CAAC,MAAM,EAAE,OAAO,CAAC;0BA5lBJ,WAAW"}
1
+ {"version":3,"file":"glslScaleGenerator.d.ts","sourceRoot":"","sources":["../../../src/gl/glslScaleGenerator.js"],"names":[],"mappings":";AAqDA;;;;;GAKG;AACH,kDAJW,OAAO,mBACP,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;;;;;;GAUG;AAEH;;;;;;;GAOG;AACH,mDALW,OAAO,mBACP,MAAM,SACN,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,GAClC,aAAa,CA4CzB;AAED;;;;;;;GAOG;AACH,4DAJW,OAAO,mBACP,MAAM,GACJ,aAAa,CAkCzB;AAED;;;;;;GAMG;AACH,0CANW,OAAO,SACP,GAAG,mBACH,MAAM,+BACN,OAAO,EAAE,GACP,aAAa,CA+BzB;AACD;;;;;GAKG;AACH,qDALW,OAAO,SACP,GAAG,mBACH,MAAM,GACJ,aAAa,CAyBzB;AAED;;;;;GAKG;AAEH,2CALW,OAAO,SACP,GAAG,cACH,OAAO,oBAAoB,EAAE,UAAU;;;;;;EAwQjD;AAED;;;;GAIG;AACH,wDAHW,OAAO,aACP,OAAO,qBAAqB,EAAE,QAAQ,EAAE,UAuClD;AAmED;;GAEG;AACH,qDAFW,OAAO,6BAQjB;AA+CD;;;;GAIG;AACH,iDAHW,OAAO,qBAAqB,EAAE,SAAS,WACvC,OAAO,oBAAoB,EAAE,OAAO;mBAQjB,MAAM;sBAAoB,sBAAsB,GAAG,sBAAsB,GAAG,uBAAuB;;;;;;EAkBhI;AAED;;;;GAIG;AACH,2CAFW,MAAM,WAIhB;AAED;;;;GAIG;AACH,sCAFW,MAAM,EAAE,WAIlB;AAMD;;;GAGG;AACH,sCAHW,MAAM,QACN,MAAM,EAAE,YAYlB;AAED;;;GAGG;AACH,2CAHW,MAAM,QACN,MAAM,EAAE,YAUlB;AAYD;;GAEG;AACH,qDAFW,MAAM,EAAE,YAIlB;AAED;;GAEG;AAEH;;;;;GAKG;AACH,+CAFW,QAAQ,OAAO,OAAO,oBAAoB,EAAE,OAAO,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAAC,+DA4BtG;AAED;;GAEG;AACH,2CAFW,OAAO,oBAAoB,EAAE,OAAO,GAAG,OAAO,oBAAoB,EAAE,OAAO,EAAE,UAIvF;AAwBD;;;;GAIG;AACH,uCAJW,MAAM,EAAE,cACR,MAAM,EAAE,GACN,MAAM,CAgClB;AAr1BD,uCAAwC;AACxC,uCAAwC;AACxC,oCAAqC;AACrC,mDAAoD;AACpD,6CAA8C;AAC9C,kDAAmD;AACnD,oDAAqD;AACrD,qCAAsC;AAmyB/B,uCAJI,GAAG,WACH,OAAO,GACL,MAAM,EAAE,CAQF;sBAnyBN,OAAO,oBAAoB,EAAE,OAAO;;aA+BvC,OAAO;kBACP,MAAM;0BACN,MAAM;oBACN,MAAM;oBACN,MAAM;kBACN,MAAM;kBACN,MAAM;mBACF,GAAG,KAAK,GAAG;;;;;8BA6fZ,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE;;;;uBAgMhD,CAAC,MAAM,EAAE,OAAO,CAAC;0BApvBJ,WAAW"}