@genome-spy/core 0.64.0 → 0.66.1

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 (285) hide show
  1. package/dist/bundle/{index-CCJIjehY.js → AbortablePromiseCache-CcuMrnn7.js} +22 -91
  2. package/dist/bundle/browser-BRemItdO.js +138 -0
  3. package/dist/bundle/index-BatuyGAI.js +271 -0
  4. package/dist/bundle/index-ByuE8dvu.js +332 -0
  5. package/dist/bundle/index-Cq3QFUxX.js +1781 -0
  6. package/dist/bundle/{index-C08YCM2T.js → index-D-w7Mmt9.js} +246 -126
  7. package/dist/bundle/index-D28m8tSW.js +1607 -0
  8. package/dist/bundle/index-D74H8TTz.js +508 -0
  9. package/dist/bundle/index-DbJ0oeYM.js +631 -0
  10. package/dist/bundle/index.es.js +15034 -13842
  11. package/dist/bundle/index.js +223 -237
  12. package/dist/bundle/inflate-GtwLkvSP.js +1048 -0
  13. package/dist/bundle/unzip-NywezaRR.js +1492 -0
  14. package/dist/schema.json +22 -4
  15. package/dist/src/config/scaleDefaults.d.ts +8 -0
  16. package/dist/src/config/scaleDefaults.d.ts.map +1 -0
  17. package/dist/src/config/scaleDefaults.js +45 -0
  18. package/dist/src/data/collector.d.ts +7 -2
  19. package/dist/src/data/collector.d.ts.map +1 -1
  20. package/dist/src/data/collector.js +13 -2
  21. package/dist/src/data/dataFlow.d.ts +20 -42
  22. package/dist/src/data/dataFlow.d.ts.map +1 -1
  23. package/dist/src/data/dataFlow.js +57 -80
  24. package/dist/src/data/flowHandle.d.ts +15 -0
  25. package/dist/src/data/flowHandle.d.ts.map +1 -0
  26. package/dist/src/data/flowHandle.js +13 -0
  27. package/dist/src/data/flowInit.d.ts +85 -0
  28. package/dist/src/data/flowInit.d.ts.map +1 -0
  29. package/dist/src/data/flowInit.js +238 -0
  30. package/dist/src/data/flowInit.test.d.ts +2 -0
  31. package/dist/src/data/flowInit.test.d.ts.map +1 -0
  32. package/dist/src/data/flowOptimizer.d.ts +6 -4
  33. package/dist/src/data/flowOptimizer.d.ts.map +1 -1
  34. package/dist/src/data/flowOptimizer.js +29 -14
  35. package/dist/src/data/sources/lazy/axisTickSource.js +1 -1
  36. package/dist/src/data/sources/lazy/bamSource.js +1 -1
  37. package/dist/src/data/sources/lazy/bigBedSource.js +1 -1
  38. package/dist/src/data/sources/lazy/bigWigSource.js +1 -1
  39. package/dist/src/data/sources/lazy/gff3Source.d.ts +2 -6
  40. package/dist/src/data/sources/lazy/gff3Source.d.ts.map +1 -1
  41. package/dist/src/data/sources/lazy/gff3Source.js +4 -8
  42. package/dist/src/data/sources/lazy/indexedFastaSource.d.ts.map +1 -1
  43. package/dist/src/data/sources/lazy/indexedFastaSource.js +17 -17
  44. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +1 -1
  45. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  46. package/dist/src/data/sources/lazy/singleAxisLazySource.js +10 -3
  47. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  48. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +5 -1
  49. package/dist/src/data/sources/lazy/tabixSource.js +1 -1
  50. package/dist/src/data/transforms/filterScoredLabels.d.ts +1 -1
  51. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  52. package/dist/src/data/transforms/filterScoredLabels.js +1 -1
  53. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts.map +1 -1
  54. package/dist/src/data/transforms/linearizeGenomicCoordinate.js +2 -1
  55. package/dist/src/encoder/encoder.d.ts +1 -1
  56. package/dist/src/encoder/encoder.d.ts.map +1 -1
  57. package/dist/src/encoder/encoder.js +1 -1
  58. package/dist/src/genome/scaleLocus.d.ts +39 -0
  59. package/dist/src/genome/scaleLocus.d.ts.map +1 -1
  60. package/dist/src/genome/scaleLocus.js +76 -0
  61. package/dist/src/genomeSpy/canvasExport.d.ts +19 -0
  62. package/dist/src/genomeSpy/canvasExport.d.ts.map +1 -0
  63. package/dist/src/genomeSpy/canvasExport.js +66 -0
  64. package/dist/src/genomeSpy/containerUi.d.ts +17 -0
  65. package/dist/src/genomeSpy/containerUi.d.ts.map +1 -0
  66. package/dist/src/genomeSpy/containerUi.js +78 -0
  67. package/dist/src/genomeSpy/eventListenerRegistry.d.ts +19 -0
  68. package/dist/src/genomeSpy/eventListenerRegistry.d.ts.map +1 -0
  69. package/dist/src/genomeSpy/eventListenerRegistry.js +38 -0
  70. package/dist/src/genomeSpy/inputBindingManager.d.ts +14 -0
  71. package/dist/src/genomeSpy/inputBindingManager.d.ts.map +1 -0
  72. package/dist/src/genomeSpy/inputBindingManager.js +63 -0
  73. package/dist/src/genomeSpy/interactionController.d.ts +40 -0
  74. package/dist/src/genomeSpy/interactionController.d.ts.map +1 -0
  75. package/dist/src/genomeSpy/interactionController.js +371 -0
  76. package/dist/src/genomeSpy/keyboardListenerManager.d.ts +10 -0
  77. package/dist/src/genomeSpy/keyboardListenerManager.d.ts.map +1 -0
  78. package/dist/src/genomeSpy/keyboardListenerManager.js +31 -0
  79. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts +15 -0
  80. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts.map +1 -0
  81. package/dist/src/genomeSpy/loadingIndicatorManager.js +92 -0
  82. package/dist/src/genomeSpy/renderCoordinator.d.ts +22 -0
  83. package/dist/src/genomeSpy/renderCoordinator.d.ts.map +1 -0
  84. package/dist/src/genomeSpy/renderCoordinator.js +118 -0
  85. package/dist/src/genomeSpy/viewContextFactory.d.ts +18 -0
  86. package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -0
  87. package/dist/src/genomeSpy/viewContextFactory.js +79 -0
  88. package/dist/src/genomeSpy/viewDataInit.d.ts +12 -0
  89. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -0
  90. package/dist/src/genomeSpy/viewDataInit.js +41 -0
  91. package/dist/src/genomeSpy/viewHierarchyConfig.d.ts +14 -0
  92. package/dist/src/genomeSpy/viewHierarchyConfig.d.ts.map +1 -0
  93. package/dist/src/genomeSpy/viewHierarchyConfig.js +24 -0
  94. package/dist/src/genomeSpy/viewHighlight.d.ts +5 -0
  95. package/dist/src/genomeSpy/viewHighlight.d.ts.map +1 -0
  96. package/dist/src/genomeSpy/viewHighlight.js +30 -0
  97. package/dist/src/genomeSpy.d.ts +17 -72
  98. package/dist/src/genomeSpy.d.ts.map +1 -1
  99. package/dist/src/genomeSpy.js +180 -789
  100. package/dist/src/gl/glslScaleGenerator.d.ts +1 -1
  101. package/dist/src/gl/webGLHelper.d.ts +2 -2
  102. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  103. package/dist/src/gl/webGLHelper.js +4 -4
  104. package/dist/src/index.d.ts.map +1 -1
  105. package/dist/src/index.js +2 -12
  106. package/dist/src/marks/mark.d.ts +1 -0
  107. package/dist/src/marks/mark.d.ts.map +1 -1
  108. package/dist/src/marks/mark.js +26 -3
  109. package/dist/src/{view → scales}/axisResolution.d.ts +12 -14
  110. package/dist/src/scales/axisResolution.d.ts.map +1 -0
  111. package/dist/src/{view → scales}/axisResolution.js +38 -12
  112. package/dist/src/scales/axisResolution.test.d.ts.map +1 -0
  113. package/dist/src/scales/scaleDomainAggregator.d.ts +57 -0
  114. package/dist/src/scales/scaleDomainAggregator.d.ts.map +1 -0
  115. package/dist/src/scales/scaleDomainAggregator.js +162 -0
  116. package/dist/src/scales/scaleDomainAggregator.test.d.ts +2 -0
  117. package/dist/src/scales/scaleDomainAggregator.test.d.ts.map +1 -0
  118. package/dist/src/scales/scaleInstanceManager.d.ts +40 -0
  119. package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -0
  120. package/dist/src/scales/scaleInstanceManager.js +313 -0
  121. package/dist/src/scales/scaleInstanceManager.test.d.ts +2 -0
  122. package/dist/src/scales/scaleInstanceManager.test.d.ts.map +1 -0
  123. package/dist/src/scales/scaleInteractionController.d.ts +73 -0
  124. package/dist/src/scales/scaleInteractionController.d.ts.map +1 -0
  125. package/dist/src/scales/scaleInteractionController.js +336 -0
  126. package/dist/src/scales/scaleInteractionController.test.d.ts +2 -0
  127. package/dist/src/scales/scaleInteractionController.test.d.ts.map +1 -0
  128. package/dist/src/scales/scalePropsResolver.d.ts +23 -0
  129. package/dist/src/scales/scalePropsResolver.d.ts.map +1 -0
  130. package/dist/src/scales/scalePropsResolver.js +74 -0
  131. package/dist/src/{view → scales}/scaleResolution.d.ts +53 -31
  132. package/dist/src/scales/scaleResolution.d.ts.map +1 -0
  133. package/dist/src/scales/scaleResolution.js +658 -0
  134. package/dist/src/scales/scaleResolution.test.d.ts.map +1 -0
  135. package/dist/src/scales/scaleResolutionConstants.d.ts +6 -0
  136. package/dist/src/scales/scaleResolutionConstants.d.ts.map +1 -0
  137. package/dist/src/scales/scaleResolutionConstants.js +5 -0
  138. package/dist/src/scales/scaleRules.d.ts +16 -0
  139. package/dist/src/scales/scaleRules.d.ts.map +1 -0
  140. package/dist/src/scales/scaleRules.js +103 -0
  141. package/dist/src/scales/scaleRules.test.d.ts +2 -0
  142. package/dist/src/scales/scaleRules.test.d.ts.map +1 -0
  143. package/dist/src/spec/channel.d.ts +13 -18
  144. package/dist/src/spec/sampleView.d.ts +3 -2
  145. package/dist/src/spec/scale.d.ts +6 -0
  146. package/dist/src/types/embedApi.d.ts +5 -0
  147. package/dist/src/types/scaleResolutionApi.d.ts +1 -1
  148. package/dist/src/types/viewContext.d.ts +1 -1
  149. package/dist/src/view/concatView.d.ts +18 -0
  150. package/dist/src/view/concatView.d.ts.map +1 -1
  151. package/dist/src/view/concatView.js +73 -0
  152. package/dist/src/view/concatView.test.d.ts +2 -0
  153. package/dist/src/view/concatView.test.d.ts.map +1 -0
  154. package/dist/src/view/containerMutationHelper.d.ts +74 -0
  155. package/dist/src/view/containerMutationHelper.d.ts.map +1 -0
  156. package/dist/src/view/containerMutationHelper.js +114 -0
  157. package/dist/src/view/containerView.d.ts +0 -7
  158. package/dist/src/view/containerView.d.ts.map +1 -1
  159. package/dist/src/view/containerView.js +0 -10
  160. package/dist/src/view/facetView.d.ts.map +1 -1
  161. package/dist/src/view/facetView.js +0 -14
  162. package/dist/src/view/flowBuilder.d.ts +2 -2
  163. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  164. package/dist/src/view/flowBuilder.js +21 -4
  165. package/dist/src/view/gridView/gridChild.d.ts +11 -0
  166. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  167. package/dist/src/view/gridView/gridChild.js +32 -6
  168. package/dist/src/view/gridView/gridView.d.ts +39 -1
  169. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  170. package/dist/src/view/gridView/gridView.js +113 -42
  171. package/dist/src/view/gridView/gridView.test.d.ts +2 -0
  172. package/dist/src/view/gridView/gridView.test.d.ts.map +1 -0
  173. package/dist/src/view/gridView/scrollbar.d.ts +39 -8
  174. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  175. package/dist/src/view/gridView/scrollbar.js +184 -69
  176. package/dist/src/view/gridView/selectionRect.d.ts +8 -4
  177. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  178. package/dist/src/view/gridView/selectionRect.js +28 -3
  179. package/dist/src/view/gridView/selectionRect.test.d.ts +2 -0
  180. package/dist/src/view/gridView/selectionRect.test.d.ts.map +1 -0
  181. package/dist/src/view/layerView.d.ts +14 -0
  182. package/dist/src/view/layerView.d.ts.map +1 -1
  183. package/dist/src/view/layerView.js +66 -0
  184. package/dist/src/view/layerView.test.d.ts +2 -0
  185. package/dist/src/view/layerView.test.d.ts.map +1 -0
  186. package/dist/src/view/paramMediator.d.ts +2 -1
  187. package/dist/src/view/paramMediator.d.ts.map +1 -1
  188. package/dist/src/view/paramMediator.js +13 -1
  189. package/dist/src/view/testUtils.d.ts.map +1 -1
  190. package/dist/src/view/testUtils.js +18 -5
  191. package/dist/src/view/unitView.d.ts.map +1 -1
  192. package/dist/src/view/unitView.js +52 -12
  193. package/dist/src/view/view.d.ts +23 -7
  194. package/dist/src/view/view.d.ts.map +1 -1
  195. package/dist/src/view/view.js +61 -5
  196. package/dist/src/view/viewDispose.test.d.ts +2 -0
  197. package/dist/src/view/viewDispose.test.d.ts.map +1 -0
  198. package/dist/src/view/viewUtils.d.ts +4 -4
  199. package/dist/src/view/viewUtils.d.ts.map +1 -1
  200. package/dist/src/view/viewUtils.js +19 -15
  201. package/dist/src/view/viewUtils.test.d.ts +2 -0
  202. package/dist/src/view/viewUtils.test.d.ts.map +1 -0
  203. package/package.json +10 -10
  204. package/dist/bundle/__vite-browser-external-C--ziKoh.js +0 -8
  205. package/dist/bundle/_commonjsHelpers-DjF3Plf2.js +0 -26
  206. package/dist/bundle/index-5ajWdKly.js +0 -1319
  207. package/dist/bundle/index-B03-Om4z.js +0 -274
  208. package/dist/bundle/index-BftNdA0O.js +0 -27
  209. package/dist/bundle/index-Bg7C4Xat.js +0 -2750
  210. package/dist/bundle/index-C3QR8Lv6.js +0 -2131
  211. package/dist/bundle/index-DTcHjAHp.js +0 -505
  212. package/dist/bundle/index-DnIkxb0L.js +0 -1025
  213. package/dist/bundle/index-Ww3TAo6_.js +0 -71
  214. package/dist/bundle/index-g8iXgW0W.js +0 -651
  215. package/dist/bundle/long-B-FASCSo.js +0 -2387
  216. package/dist/bundle/remoteFile-BuaqFGWk.js +0 -94
  217. package/dist/src/data/collector.test.js +0 -138
  218. package/dist/src/data/dataFlow.test.js +0 -5
  219. package/dist/src/data/flow.test.js +0 -81
  220. package/dist/src/data/flowNode.test.js +0 -50
  221. package/dist/src/data/flowOptimizer.test.js +0 -204
  222. package/dist/src/data/formats/fasta.test.js +0 -27
  223. package/dist/src/data/sources/inlineSource.test.js +0 -63
  224. package/dist/src/data/sources/sequenceSource.test.js +0 -81
  225. package/dist/src/data/transforms/aggregate.test.js +0 -134
  226. package/dist/src/data/transforms/clone.test.js +0 -11
  227. package/dist/src/data/transforms/coverage.test.js +0 -238
  228. package/dist/src/data/transforms/filter.test.js +0 -20
  229. package/dist/src/data/transforms/flatten.test.js +0 -96
  230. package/dist/src/data/transforms/flattenDelimited.test.js +0 -90
  231. package/dist/src/data/transforms/flattenSequence.test.js +0 -34
  232. package/dist/src/data/transforms/formula.test.js +0 -25
  233. package/dist/src/data/transforms/identifier.test.js +0 -92
  234. package/dist/src/data/transforms/pileup.test.js +0 -70
  235. package/dist/src/data/transforms/project.test.js +0 -32
  236. package/dist/src/data/transforms/regexExtract.test.js +0 -70
  237. package/dist/src/data/transforms/regexFold.test.js +0 -201
  238. package/dist/src/data/transforms/sample.test.js +0 -38
  239. package/dist/src/data/transforms/stack.test.js +0 -91
  240. package/dist/src/encoder/accessor.test.js +0 -162
  241. package/dist/src/encoder/encoder.test.js +0 -105
  242. package/dist/src/genome/genome.test.js +0 -268
  243. package/dist/src/genome/genomes.test.js +0 -8
  244. package/dist/src/genome/scaleIndex.test.js +0 -78
  245. package/dist/src/genome/scaleLocus.test.js +0 -4
  246. package/dist/src/scale/scale.test.js +0 -326
  247. package/dist/src/scale/ticks.test.js +0 -46
  248. package/dist/src/selection/selection.test.js +0 -14
  249. package/dist/src/utils/addBaseUrl.test.js +0 -30
  250. package/dist/src/utils/binnedIndex.test.js +0 -201
  251. package/dist/src/utils/cloner.test.js +0 -35
  252. package/dist/src/utils/coalesce.test.js +0 -16
  253. package/dist/src/utils/concatIterables.test.js +0 -8
  254. package/dist/src/utils/domainArray.test.js +0 -130
  255. package/dist/src/utils/indexer.test.js +0 -49
  256. package/dist/src/utils/interactionEvent.test.js +0 -35
  257. package/dist/src/utils/iterateNestedMaps.test.js +0 -33
  258. package/dist/src/utils/kWayMerge.test.js +0 -30
  259. package/dist/src/utils/mergeObjects.test.js +0 -42
  260. package/dist/src/utils/numberExtractor.test.js +0 -6
  261. package/dist/src/utils/propertyCacher.test.js +0 -89
  262. package/dist/src/utils/propertyCoalescer.test.js +0 -25
  263. package/dist/src/utils/radixSort.test.js +0 -51
  264. package/dist/src/utils/reservationMap.test.js +0 -20
  265. package/dist/src/utils/ringBuffer.test.js +0 -39
  266. package/dist/src/utils/topK.test.js +0 -54
  267. package/dist/src/utils/trees.test.js +0 -135
  268. package/dist/src/utils/url.test.js +0 -28
  269. package/dist/src/utils/variableTools.test.js +0 -13
  270. package/dist/src/view/axisResolution.d.ts.map +0 -1
  271. package/dist/src/view/axisResolution.test.d.ts.map +0 -1
  272. package/dist/src/view/axisResolution.test.js +0 -206
  273. package/dist/src/view/flowBuilder.test.js +0 -125
  274. package/dist/src/view/layout/flexLayout.test.js +0 -323
  275. package/dist/src/view/layout/grid.test.js +0 -71
  276. package/dist/src/view/layout/rectangle.test.js +0 -192
  277. package/dist/src/view/paramMediator.test.js +0 -260
  278. package/dist/src/view/scaleResolution.d.ts.map +0 -1
  279. package/dist/src/view/scaleResolution.js +0 -1049
  280. package/dist/src/view/scaleResolution.test.d.ts.map +0 -1
  281. package/dist/src/view/scaleResolution.test.js +0 -645
  282. package/dist/src/view/view.test.js +0 -245
  283. package/dist/src/view/viewFactory.test.js +0 -25
  284. /package/dist/src/{view → scales}/axisResolution.test.d.ts +0 -0
  285. /package/dist/src/{view → scales}/scaleResolution.test.d.ts +0 -0
@@ -24,7 +24,7 @@ import { nodesToTreesWithAccessor, visitTree } from "../utils/trees.js";
24
24
 
25
25
  /**
26
26
  * @param {View} root
27
- * @param {DataFlow<View>} [existingFlow] Add data flow
27
+ * @param {DataFlow} [existingFlow] Add data flow
28
28
  * graphs to an existing DataFlow object.
29
29
  */
30
30
  export function buildDataFlow(root, existingFlow) {
@@ -41,7 +41,7 @@ export function buildDataFlow(root, existingFlow) {
41
41
  /** @type {FlowNode} */
42
42
  let currentNode;
43
43
 
44
- /** @type {DataFlow<View>} */
44
+ /** @type {DataFlow} */
45
45
  const dataFlow = existingFlow ?? new DataFlow();
46
46
 
47
47
  /** @type {(function():void)[]} */
@@ -122,6 +122,15 @@ export function buildDataFlow(root, existingFlow) {
122
122
  /** @param {View} view */
123
123
  const processView = (view) => {
124
124
  if (view.spec.data) {
125
+ const previousDataSource = view.flowHandle?.dataSource;
126
+ if (
127
+ previousDataSource &&
128
+ previousDataSource.view === view &&
129
+ !previousDataSource.identifier
130
+ ) {
131
+ dataFlow.removeDataSource(previousDataSource);
132
+ }
133
+
125
134
  const dataSource = isNamedData(view.spec.data)
126
135
  ? new NamedSource(
127
136
  view.spec.data,
@@ -132,7 +141,9 @@ export function buildDataFlow(root, existingFlow) {
132
141
 
133
142
  currentNode = dataSource;
134
143
  nodeStack.push(dataSource);
135
- dataFlow.addDataSource(dataSource, view);
144
+ dataFlow.addDataSource(dataSource);
145
+ view.flowHandle ??= {};
146
+ view.flowHandle.dataSource = dataSource;
136
147
  }
137
148
 
138
149
  if (view.spec.transform) {
@@ -186,7 +197,13 @@ export function buildDataFlow(root, existingFlow) {
186
197
  });
187
198
 
188
199
  appendNode(collector);
189
- dataFlow.addCollector(collector, view);
200
+ const previousCollector = view.flowHandle?.collector;
201
+ if (previousCollector) {
202
+ dataFlow.removeCollector(previousCollector);
203
+ }
204
+ dataFlow.addCollector(collector);
205
+ view.flowHandle ??= {};
206
+ view.flowHandle.collector = collector;
190
207
  }
191
208
  };
192
209
 
@@ -9,6 +9,13 @@ export function createBackground(viewBackground: import("../../spec/view.js").Vi
9
9
  */
10
10
  export function createBackgroundStroke(viewBackground: import("../../spec/view.js").ViewBackground): import("../../spec/view.js").UnitSpec;
11
11
  export default class GridChild {
12
+ /**
13
+ * Users guide:
14
+ * - GridChild is owned by GridView and is not meant to be instantiated or
15
+ * managed directly by callers.
16
+ * - Use GridView/ConcatView APIs for insertion/removal so decorations and
17
+ * dataflow are kept in sync.
18
+ */
12
19
  /**
13
20
  * @param {import("../view.js").default} view
14
21
  * @param {import("../containerView.js").default} layoutParent
@@ -39,6 +46,10 @@ export default class GridChild {
39
46
  * Create view decorations, grid lines, axes, etc.
40
47
  */
41
48
  createAxes(): Promise<void>;
49
+ /**
50
+ * Disposes axis and gridline views so axes can be recreated safely.
51
+ */
52
+ disposeAxisViews(): void;
42
53
  getOverhang(): Padding;
43
54
  getOverhangAndPadding(): Padding;
44
55
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"gridChild.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/gridChild.js"],"names":[],"mappings":"AAkqBA;;;GAGG;AACH,iDAHW,OAAO,oBAAoB,EAAE,cAAc,GACzC,OAAO,oBAAoB,EAAE,QAAQ,CA8BjD;AAED;;;GAGG;AACH,uDAHW,OAAO,oBAAoB,EAAE,cAAc,GACzC,OAAO,oBAAoB,EAAE,QAAQ,CA6CjD;AAhuBD;IACI;;;;OAIG;IACH,kBAJW,OAAO,YAAY,EAAE,OAAO,gBAC5B,OAAO,qBAAqB,EAAE,OAAO,UACrC,MAAM,EAyFhB;IAtFG,oDAAgC;IAChC,mCAAgB;IAChB,eAAoB;IAEpB,uBAAuB;IACvB,YADW,QAAQ,CACQ;IAE3B,uBAAuB;IACvB,kBADW,QAAQ,CACc;IAEjC,sFAAsF;IACtF,MADW,OAAO,CAAC,MAAM,CAAC,OAAO,oBAAoB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAC/D;IAEd,+FAA+F;IAC/F,WADW,OAAO,CAAC,MAAM,CAAC,OAAO,oBAAoB,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAC9D;IAEnB,mFAAmF;IACnF,YADW,OAAO,CAAC,MAAM,CAAC,OAAO,gBAAgB,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,CAC3D;IAEpB,4BAA4B;IAC5B,eADW,aAAa,CACM;IAE9B,uBAAuB;IACvB,OADW,QAAQ,CACG;IAEtB,wBAAwB;IACxB,QADW,SAAS,CACQ;IAoZhC,sEAiBC;IAED;;OAEG;IACH,4BAsKC;IAED,uBAqBC;IAED,iCAEC;;CACJ;qBAjpBoB,gBAAgB;qBANK,gBAAgB;yBADjC,oBAAoB;sBAQvB,gBAAgB;0BACZ,oBAAoB;sBAJxB,wBAAwB;oBAF1B,sBAAsB"}
1
+ {"version":3,"file":"gridChild.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/gridChild.js"],"names":[],"mappings":"AA4rBA;;;GAGG;AACH,iDAHW,OAAO,oBAAoB,EAAE,cAAc,GACzC,OAAO,oBAAoB,EAAE,QAAQ,CA8BjD;AAED;;;GAGG;AACH,uDAHW,OAAO,oBAAoB,EAAE,cAAc,GACzC,OAAO,oBAAoB,EAAE,QAAQ,CA6CjD;AA1vBD;IACI;;;;;;OAMG;IAEH;;;;OAIG;IACH,kBAJW,OAAO,YAAY,EAAE,OAAO,gBAC5B,OAAO,qBAAqB,EAAE,OAAO,UACrC,MAAM,EAyFhB;IAtFG,oDAAgC;IAChC,mCAAgB;IAChB,eAAoB;IAEpB,uBAAuB;IACvB,YADW,QAAQ,CACQ;IAE3B,uBAAuB;IACvB,kBADW,QAAQ,CACc;IAEjC,sFAAsF;IACtF,MADW,OAAO,CAAC,MAAM,CAAC,OAAO,oBAAoB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAC/D;IAEd,+FAA+F;IAC/F,WADW,OAAO,CAAC,MAAM,CAAC,OAAO,oBAAoB,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAC9D;IAEnB,mFAAmF;IACnF,YADW,OAAO,CAAC,MAAM,CAAC,OAAO,gBAAgB,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,CAC3D;IAEpB,4BAA4B;IAC5B,eADW,aAAa,CACM;IAE9B,uBAAuB;IACvB,OADW,QAAQ,CACG;IAEtB,wBAAwB;IACxB,QADW,SAAS,CACQ;IAoZhC,sEAiBC;IAED;;OAEG;IACH,4BAwKC;IAED;;OAEG;IACH,yBAWC;IAED,uBAqBC;IAED,iCAEC;;CACJ;qBA3qBoB,gBAAgB;qBANK,gBAAgB;yBADjC,oBAAoB;sBAQvB,gBAAgB;0BACZ,oBAAoB;sBAJxB,wBAAwB;oBAF1B,sBAAsB"}
@@ -18,6 +18,14 @@ import Scrollbar from "./scrollbar.js";
18
18
  import SelectionRect from "./selectionRect.js";
19
19
 
20
20
  export default class GridChild {
21
+ /**
22
+ * Users guide:
23
+ * - GridChild is owned by GridView and is not meant to be instantiated or
24
+ * managed directly by callers.
25
+ * - Use GridView/ConcatView APIs for insertion/removal so decorations and
26
+ * dataflow are kept in sync.
27
+ */
28
+
21
29
  /**
22
30
  * @param {import("../view.js").default} view
23
31
  * @param {import("../containerView.js").default} layoutParent
@@ -137,7 +145,7 @@ export default class GridChild {
137
145
  const scaleResolutions = Object.fromEntries(
138
146
  channels.map((channel) => {
139
147
  const resolution = this.view.getScaleResolution(channel);
140
- const scale = resolution?.scale;
148
+ const scale = resolution?.getScale();
141
149
 
142
150
  if (!scale || !isContinuous(scale.type)) {
143
151
  throw new Error(
@@ -214,7 +222,7 @@ export default class GridChild {
214
222
  const np = view.coords.normalizePoint(point.x, point.y, true);
215
223
 
216
224
  for (const channel of channels) {
217
- const scale = scaleResolutions[channel].scale;
225
+ const scale = scaleResolutions[channel].getScale();
218
226
  // @ts-ignore
219
227
  const val = scale.invert(channel == "x" ? np.x : np.y);
220
228
  inverted[channel] =
@@ -243,7 +251,7 @@ export default class GridChild {
243
251
  /** @type {number} */ val
244
252
  ) => {
245
253
  if (val == null) return null;
246
- return scaleResolutions[channel].scale(val);
254
+ return scaleResolutions[channel].getScale()(val);
247
255
  };
248
256
  const px = getCoord("x", xVal) ?? i;
249
257
  const py = getCoord("y", yVal) ?? i;
@@ -477,10 +485,12 @@ export default class GridChild {
477
485
  * Create view decorations, grid lines, axes, etc.
478
486
  */
479
487
  async createAxes() {
488
+ this.disposeAxisViews();
489
+
480
490
  const { view, axes, gridLines } = this;
481
491
 
482
492
  /**
483
- * @param {import("../axisResolution.js").default} r
493
+ * @param {import("../../scales/axisResolution.js").default} r
484
494
  * @param {import("../../spec/channel.js").PrimaryPositionalChannel} channel
485
495
  */
486
496
  const getAxisPropsWithDefaults = (r, channel) => {
@@ -521,7 +531,7 @@ export default class GridChild {
521
531
  };
522
532
 
523
533
  /**
524
- * @param {import("../axisResolution.js").default} r
534
+ * @param {import("../../scales/axisResolution.js").default} r
525
535
  * @param {import("../../spec/channel.js").PrimaryPositionalChannel} channel
526
536
  * @param {import("../view.js").default} axisParent
527
537
  */
@@ -548,7 +558,7 @@ export default class GridChild {
548
558
  };
549
559
 
550
560
  /**
551
- * @param {import("../axisResolution.js").default} r
561
+ * @param {import("../../scales/axisResolution.js").default} r
552
562
  * @param {import("../../spec/channel.js").PrimaryPositionalChannel} channel
553
563
  * @param {import("../view.js").default} axisParent
554
564
  */
@@ -644,6 +654,22 @@ export default class GridChild {
644
654
  );
645
655
  }
646
656
 
657
+ /**
658
+ * Disposes axis and gridline views so axes can be recreated safely.
659
+ */
660
+ disposeAxisViews() {
661
+ for (const axisView of Object.values(this.axes)) {
662
+ axisView.disposeSubtree();
663
+ }
664
+
665
+ for (const gridView of Object.values(this.gridLines)) {
666
+ gridView.disposeSubtree();
667
+ }
668
+
669
+ this.axes = {};
670
+ this.gridLines = {};
671
+ }
672
+
647
673
  getOverhang() {
648
674
  const calculate = (
649
675
  /** @type {import("../../spec/axis.js").AxisOrient} */ orient
@@ -43,6 +43,37 @@ export default class GridView extends ContainerView {
43
43
  * @param {View} view
44
44
  */
45
45
  appendChild(view: import("../view.js").default): void;
46
+ /**
47
+ * Appends a child view without initializing dataflow or axes.
48
+ * Intended for ConcatView when building the initial hierarchy.
49
+ *
50
+ * @param {View} view
51
+ * @returns {GridChild}
52
+ */
53
+ appendChildView(view: import("../view.js").default): GridChild;
54
+ /**
55
+ * Inserts a child view without initializing dataflow or axes.
56
+ * Callers should create axes, initialize subtree data, and request layout.
57
+ *
58
+ * @param {View} view
59
+ * @param {number} index
60
+ * @returns {GridChild}
61
+ */
62
+ insertChildViewAt(view: import("../view.js").default, index: number): GridChild;
63
+ /**
64
+ * Removes a child by instance and disposes its subtree.
65
+ * Callers should sync shared axes and request layout.
66
+ *
67
+ * @param {View} view
68
+ */
69
+ removeChildView(view: import("../view.js").default): void;
70
+ /**
71
+ * Removes a child by index and disposes its subtree.
72
+ * Callers should sync shared axes and request layout.
73
+ *
74
+ * @param {number} index
75
+ */
76
+ removeChildAt(index: number): void;
46
77
  /**
47
78
  * @param {View[]} views
48
79
  */
@@ -55,10 +86,17 @@ export default class GridView extends ContainerView {
55
86
  /**
56
87
  * @protected
57
88
  */
58
- protected createAxes(): Promise<void[]>;
89
+ protected createAxes(): Promise<void>;
90
+ /**
91
+ * Recreates shared axes based on current axis resolutions.
92
+ *
93
+ * This is used after dynamic child insert/remove to keep shared axes in sync.
94
+ */
95
+ syncSharedAxes(): Promise<void>;
59
96
  #private;
60
97
  }
61
98
  import AxisView from "../axisView.js";
62
99
  import Rectangle from "../layout/rectangle.js";
63
100
  import ContainerView from "../containerView.js";
101
+ import GridChild from "./gridChild.js";
64
102
  //# sourceMappingURL=gridView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gridView.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/gridView.js"],"names":[],"mappings":"AAqyBA;;GAEG;AACH,+EAUC;AAED;;;;;GAKG;AACH,4CAJW,OAAO,wBAAwB,EAAE,OAAO,UACxC,OAAO,oBAAoB,EAAE,UAAU,YACvC,QAAQ,aAmBlB;AAxzBD;;;;;;;;;;;;;;;GAeG;AACH;IA6BI;;;;;;;;;OASG;IACH,kBARW,OAAO,oBAAoB,EAAE,aAAa,WAC1C,OAAO,4BAA4B,EAAE,OAAO,gBAC5C,aAAa,kDAEb,MAAM,WACN,MAAM,YACN,OAAO,YAAY,EAAE,WAAW,EAoB1C;IARG,iDAAgB;IAOhB,uBAA0B;IAG9B;;OAEG;IACH,sDAIC;IAeD;;OAEG;IACH,mBAFW,8BAAM,QAOhB;IAqBD;;OAEG;IACH,+CAEC;IAED,yBAEC;IAED;;OAEG;IACH,wCAmCC;;CAwkBJ;qBA9vB0D,gBAAgB;sBADrD,wBAAwB;0BAEpB,qBAAqB"}
1
+ {"version":3,"file":"gridView.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/gridView.js"],"names":[],"mappings":"AA42BA;;GAEG;AACH,+EAUC;AAED;;;;;GAKG;AACH,4CAJW,OAAO,wBAAwB,EAAE,OAAO,UACxC,OAAO,oBAAoB,EAAE,UAAU,YACvC,QAAQ,aAmBlB;AA/3BD;;;;;;;;;;;;;;;GAeG;AACH;IAoCI;;;;;;;;;OASG;IACH,kBARW,OAAO,oBAAoB,EAAE,aAAa,WAC1C,OAAO,4BAA4B,EAAE,OAAO,gBAC5C,aAAa,kDAEb,MAAM,WACN,MAAM,YACN,OAAO,YAAY,EAAE,WAAW,EAoB1C;IARG,iDAAgB;IAOhB,uBAA0B;IAG9B;;OAEG;IACH,sDAEC;IAED;;;;;;OAMG;IACH,qDAFa,SAAS,CAIrB;IAED;;;;;;;OAOG;IACH,6DAHW,MAAM,GACJ,SAAS,CAQrB;IAED;;;;;OAKG;IACH,0DAQC;IAED;;;;;OAKG;IACH,qBAFW,MAAM,QAShB;IAeD;;OAEG;IACH,mBAFW,8BAAM,QAUhB;IAYD;;OAEG;IACH,+CAEC;IAED,yBAEC;IAED;;OAEG;IACH,sCAKC;IAED;;;;OAIG;IACH,gCAqCC;;CAwkBJ;qBAr0B0D,gBAAgB;sBADrD,wBAAwB;0BAEpB,qBAAqB;sBAIzB,gBAAgB"}
@@ -34,6 +34,13 @@ import GridChild from "./gridChild.js";
34
34
  * - And later on, brushing, legend(?)
35
35
  */
36
36
  export default class GridView extends ContainerView {
37
+ /**
38
+ * Users guide:
39
+ * - GridView owns GridChild instances and manages decorations and shared axes.
40
+ * - Use ConcatView helpers for dynamic insertion/removal so dataflow and axes
41
+ * lifecycle stays consistent.
42
+ */
43
+
37
44
  /**
38
45
  * @typedef {"row" | "column"} Direction
39
46
  * @typedef {"horizontal" | "vertical"} ScrollDirection
@@ -96,9 +103,65 @@ export default class GridView extends ContainerView {
96
103
  * @param {View} view
97
104
  */
98
105
  appendChild(view) {
106
+ this.appendChildView(view);
107
+ }
108
+
109
+ /**
110
+ * Appends a child view without initializing dataflow or axes.
111
+ * Intended for ConcatView when building the initial hierarchy.
112
+ *
113
+ * @param {View} view
114
+ * @returns {GridChild}
115
+ */
116
+ appendChildView(view) {
117
+ return this.insertChildViewAt(view, this.#children.length);
118
+ }
119
+
120
+ /**
121
+ * Inserts a child view without initializing dataflow or axes.
122
+ * Callers should create axes, initialize subtree data, and request layout.
123
+ *
124
+ * @param {View} view
125
+ * @param {number} index
126
+ * @returns {GridChild}
127
+ */
128
+ insertChildViewAt(view, index) {
99
129
  view.layoutParent ??= this;
100
- this.#children.push(new GridChild(view, this, this.#childSerial));
130
+ const gridChild = new GridChild(view, this, this.#childSerial);
101
131
  this.#childSerial++;
132
+ this.#children.splice(index, 0, gridChild);
133
+ return gridChild;
134
+ }
135
+
136
+ /**
137
+ * Removes a child by instance and disposes its subtree.
138
+ * Callers should sync shared axes and request layout.
139
+ *
140
+ * @param {View} view
141
+ */
142
+ removeChildView(view) {
143
+ const index = this.#children.findIndex(
144
+ (gridChild) => gridChild.view === view
145
+ );
146
+ if (index < 0) {
147
+ throw new Error("Not my child view!");
148
+ }
149
+ this.removeChildAt(index);
150
+ }
151
+
152
+ /**
153
+ * Removes a child by index and disposes its subtree.
154
+ * Callers should sync shared axes and request layout.
155
+ *
156
+ * @param {number} index
157
+ */
158
+ removeChildAt(index) {
159
+ const gridChild = this.#children[index];
160
+ if (!gridChild) {
161
+ throw new Error("Child index out of range!");
162
+ }
163
+ this.#disposeGridChild(gridChild);
164
+ this.#children.splice(index, 1);
102
165
  }
103
166
 
104
167
  get #visibleChildren() {
@@ -118,6 +181,9 @@ export default class GridView extends ContainerView {
118
181
  * @param {View[]} views
119
182
  */
120
183
  setChildren(views) {
184
+ for (const gridChild of this.#children) {
185
+ this.#disposeGridChild(gridChild);
186
+ }
121
187
  this.#children = [];
122
188
  for (const view of views) {
123
189
  this.appendChild(view);
@@ -125,21 +191,12 @@ export default class GridView extends ContainerView {
125
191
  }
126
192
 
127
193
  /**
128
- * @param {View} child
129
- * @param {View} replacement
194
+ * @param {GridChild} gridChild
130
195
  */
131
- replaceChild(child, replacement) {
132
- const i = this.#children.findIndex(
133
- (gridChild) => gridChild.view == child
134
- );
135
- if (i >= 0) {
136
- this.#children[i] = new GridChild(
137
- replacement,
138
- this,
139
- this.#childSerial
140
- );
141
- } else {
142
- throw new Error("Not my child view!");
196
+ #disposeGridChild(gridChild) {
197
+ gridChild.disposeAxisViews();
198
+ for (const view of gridChild.getChildren()) {
199
+ view.disposeSubtree();
143
200
  }
144
201
  }
145
202
 
@@ -158,40 +215,54 @@ export default class GridView extends ContainerView {
158
215
  * @protected
159
216
  */
160
217
  async createAxes() {
218
+ await this.syncSharedAxes();
219
+ await Promise.all(
220
+ this.#children.map((gridChild) => gridChild.createAxes())
221
+ );
222
+ }
223
+
224
+ /**
225
+ * Recreates shared axes based on current axis resolutions.
226
+ *
227
+ * This is used after dynamic child insert/remove to keep shared axes in sync.
228
+ */
229
+ async syncSharedAxes() {
230
+ for (const axisView of Object.values(this.#sharedAxes)) {
231
+ axisView.disposeSubtree();
232
+ }
233
+ this.#sharedAxes = {};
234
+
161
235
  /** @type {Promise<void>[]} */
162
236
  const promises = [];
163
237
 
164
- // Axis ticks, labels, etc. They should be created only if this view has caught
165
- // the scale resolution for the channel.
166
238
  for (const channel of primaryPositionalChannels) {
167
239
  const r = this.resolutions.axis[channel];
168
- if (r) {
169
- const props = r.getAxisProps();
170
- if (props) {
171
- const propsWithDefaults = {
172
- title: r.getTitle(),
173
- orient: CHANNEL_ORIENTS[channel][0],
174
- ...props,
175
- };
176
- // TODO: Validate that channel and orient are compatible
177
- const v = new AxisView(
178
- propsWithDefaults,
179
- r.scaleResolution.type,
180
- this.context,
181
- this,
182
- this
183
- );
184
- promises.push(v.initializeChildren());
185
- this.#sharedAxes[channel] = v;
186
- }
240
+ if (!r) {
241
+ continue;
187
242
  }
243
+
244
+ const props = r.getAxisProps();
245
+ if (!props) {
246
+ continue;
247
+ }
248
+
249
+ const propsWithDefaults = {
250
+ title: r.getTitle(),
251
+ orient: CHANNEL_ORIENTS[channel][0],
252
+ ...props,
253
+ };
254
+ const axisView = new AxisView(
255
+ propsWithDefaults,
256
+ r.scaleResolution.type,
257
+ this.context,
258
+ this,
259
+ this
260
+ );
261
+ promises.push(axisView.initializeChildren());
262
+ this.#sharedAxes[channel] = axisView;
188
263
  }
189
264
 
190
- // Create view decorations, grid lines, and independent axes for each child
191
- return Promise.all([
192
- ...promises,
193
- ...this.#children.map((gridChild) => gridChild.createAxes()),
194
- ]);
265
+ await Promise.all(promises);
195
266
  }
196
267
 
197
268
  /**
@@ -784,7 +855,7 @@ export default class GridView extends ContainerView {
784
855
  * @returns
785
856
  */
786
857
  function getZoomableResolutions(view) {
787
- /** @type {Record<import("../../spec/channel.js").PrimaryPositionalChannel, Set<import("../scaleResolution.js").default>>} */
858
+ /** @type {Record<import("../../spec/channel.js").PrimaryPositionalChannel, Set<import("../../scales/scaleResolution.js").default>>} */
788
859
  const resolutions = {
789
860
  x: new Set(),
790
861
  y: new Set(),
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=gridView.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gridView.test.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/gridView.test.js"],"names":[],"mappings":""}
@@ -1,31 +1,62 @@
1
1
  /**
2
+ * This class represents a scrollbar thumb that can be used within a grid view
3
+ * to provide scrolling functionality for overflowing content.
4
+ *
2
5
  * @typedef {"horizontal" | "vertical"} ScrollDirection
3
6
  */
4
7
  export default class Scrollbar extends UnitView {
5
8
  /**
6
9
  * @param {import("./gridChild.js").default} gridChild
7
10
  * @param {ScrollDirection} scrollDirection
11
+ * @param {{ onViewportOffsetChange?: (offset: number) => void }} [options]
12
+ */
13
+ constructor(gridChild: import("./gridChild.js").default, scrollDirection: ScrollDirection, options?: {
14
+ onViewportOffsetChange?: (offset: number) => void;
15
+ });
16
+ /**
17
+ * The actual state of the scrollbar.
18
+ *
19
+ * It's better to keep track of the viewport offset rather than the
20
+ * scrollbar offset because the former is more stable when the
21
+ * viewport size changes.
8
22
  */
9
- constructor(gridChild: import("./gridChild.js").default, scrollDirection: ScrollDirection);
10
23
  viewportOffset: number;
11
24
  config: {
12
25
  scrollbarSize: number;
13
26
  scrollbarPadding: number;
14
- };
15
- interpolateViewportOffset: ((target: {
16
- x: number;
17
- }) => void) & {
18
- stop: () => void;
27
+ scrollbarMinLength: number;
19
28
  };
20
29
  get scrollOffset(): number;
21
30
  /**
31
+ * @param {number} value
32
+ * @param {{ notify?: boolean, syncSmoother?: boolean }} [options]
33
+ */
34
+ setViewportOffset(value: number, { notify, syncSmoother }?: {
35
+ notify?: boolean;
36
+ syncSmoother?: boolean;
37
+ }): void;
38
+ /**
39
+ * Updates the scrollbar with the latest viewport and content rectangles.
40
+ *
41
+ * Viewport coords are flattened to stay stable between layout passes, while
42
+ * content coords may be dynamic (e.g., peek transitions) and are evaluated
43
+ * on demand via accessors.
22
44
  *
23
45
  * @param {Rectangle} viewportCoords
24
- * @param {Rectangle} coords
46
+ * @param {Rectangle} contentCoords
25
47
  */
26
- updateScrollbar(viewportCoords: Rectangle, coords: Rectangle): void;
48
+ updateScrollbar(viewportCoords: Rectangle, contentCoords: Rectangle): void;
49
+ interpolateViewportOffset: ((target: {
50
+ x: number;
51
+ }) => void) & {
52
+ stop: () => void;
53
+ };
27
54
  #private;
28
55
  }
56
+ /**
57
+ * This class represents a scrollbar thumb that can be used within a grid view
58
+ * to provide scrolling functionality for overflowing content.
59
+ */
29
60
  export type ScrollDirection = "horizontal" | "vertical";
30
61
  import UnitView from "../unitView.js";
31
62
  import Rectangle from "../layout/rectangle.js";
@@ -1 +1 @@
1
- {"version":3,"file":"scrollbar.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/scrollbar.js"],"names":[],"mappings":"AAKA;;GAEG;AACH;IAeI;;;OAGG;IACH,uBAHW,OAAO,gBAAgB,EAAE,OAAO,mBAChC,eAAe,EA2FzB;IA/FD,uBAAmB;IAsCf;;;MAAoB;IAIpB;;;;MAQC;IA+CL,2BAKC;IAWD;;;;OAIG;IACH,gCAHW,SAAS,UACT,SAAS,QA8CnB;;CACJ;8BAlLY,YAAY,GAAG,UAAU;qBAHjB,gBAAgB;sBADf,wBAAwB"}
1
+ {"version":3,"file":"scrollbar.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/scrollbar.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH;IAwBI;;;;OAIG;IACH,uBAJW,OAAO,gBAAgB,EAAE,OAAO,mBAChC,eAAe,YACf;QAAE,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,EAwH/D;IAvID;;;;;;OAMG;IACH,uBAAmB;IAiDf;;;;MAAoB;IAiFxB,2BAEC;IAED;;;OAGG;IACH,yBAHW,MAAM,6BACN;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,QAYtD;IAqFD;;;;;;;;;OASG;IACH,gCAHW,SAAS,iBACT,SAAS,QASnB;IAMG;;;;MAWC;;CAER;;;;;8BAlSY,YAAY,GAAG,UAAU;qBANjB,gBAAgB;sBADf,wBAAwB"}