@genome-spy/core 0.75.0 → 0.76.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 (74) hide show
  1. package/dist/bundle/{esm-CgfVIRJ-.js → esm-BimDEpBb.js} +1 -1
  2. package/dist/bundle/{esm-DtE8VqAv.js → esm-Bvlm1uVk.js} +1 -1
  3. package/dist/bundle/{esm-sIoQYZ21.js → esm-CngqBe45.js} +17 -17
  4. package/dist/bundle/{esm-DQiq2Zhd.js → esm-D_euN86T.js} +43 -43
  5. package/dist/bundle/index.es.js +3253 -3137
  6. package/dist/bundle/index.js +97 -96
  7. package/dist/schema.json +352 -0
  8. package/dist/src/config/defaults/markDefaults.d.ts.map +1 -1
  9. package/dist/src/config/defaults/markDefaults.js +1 -12
  10. package/dist/src/config/defaults/scaleDefaults.d.ts.map +1 -1
  11. package/dist/src/config/defaults/scaleDefaults.js +1 -0
  12. package/dist/src/config/markConfig.d.ts.map +1 -1
  13. package/dist/src/config/markConfig.js +16 -8
  14. package/dist/src/config/themes.d.ts.map +1 -1
  15. package/dist/src/config/themes.js +15 -2
  16. package/dist/src/data/sources/lazy/registerBuiltInLazySources.js +2 -2
  17. package/dist/src/data/sources/lazy/registerCoreLazySources.d.ts +2 -0
  18. package/dist/src/data/sources/lazy/registerCoreLazySources.d.ts.map +1 -0
  19. package/dist/src/data/sources/lazy/registerCoreLazySources.js +2 -0
  20. package/dist/src/data/sources/lazy/tabixSource.d.ts +7 -0
  21. package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
  22. package/dist/src/data/sources/lazy/tabixSource.js +18 -0
  23. package/dist/src/data/sources/lazy/tabixTsvSource.d.ts +37 -0
  24. package/dist/src/data/sources/lazy/tabixTsvSource.d.ts.map +1 -0
  25. package/dist/src/data/sources/lazy/tabixTsvSource.js +163 -0
  26. package/dist/src/genomeSpyBase.d.ts.map +1 -1
  27. package/dist/src/genomeSpyBase.js +4 -1
  28. package/dist/src/gl/webGLHelper.d.ts +5 -2
  29. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  30. package/dist/src/gl/webGLHelper.js +20 -3
  31. package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +1082 -0
  32. package/dist/src/marks/link.vertex.glsl.js +1 -1
  33. package/dist/src/minimal.d.ts.map +1 -1
  34. package/dist/src/minimal.js +5 -4
  35. package/dist/src/scale/scale.js +10 -2
  36. package/dist/src/scales/domainPlanner.js +1 -1
  37. package/dist/src/scales/scaleResolution.d.ts.map +1 -1
  38. package/dist/src/scales/scaleResolution.js +9 -3
  39. package/dist/src/scales/selectionDomainUtils.d.ts +10 -0
  40. package/dist/src/scales/selectionDomainUtils.d.ts.map +1 -1
  41. package/dist/src/scales/selectionDomainUtils.js +32 -3
  42. package/dist/src/spec/channel.d.ts +30 -0
  43. package/dist/src/spec/data.d.ts +40 -0
  44. package/dist/src/spec/parameter.d.ts +6 -0
  45. package/dist/src/spec/transform.d.ts +6 -0
  46. package/dist/src/view/axisGridView.d.ts.map +1 -1
  47. package/dist/src/view/axisGridView.js +2 -1
  48. package/dist/src/view/axisView.d.ts.map +1 -1
  49. package/dist/src/view/axisView.js +2 -1
  50. package/dist/src/view/facetView.d.ts.map +1 -1
  51. package/dist/src/view/facetView.js +2 -1
  52. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  53. package/dist/src/view/gridView/gridChild.js +9 -1
  54. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  55. package/dist/src/view/gridView/gridView.js +198 -32
  56. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  57. package/dist/src/view/gridView/scrollbar.js +5 -1
  58. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  59. package/dist/src/view/gridView/selectionRect.js +5 -1
  60. package/dist/src/view/gridView/separatorView.d.ts.map +1 -1
  61. package/dist/src/view/gridView/separatorView.js +5 -1
  62. package/dist/src/view/testUtils.d.ts +30 -3
  63. package/dist/src/view/testUtils.d.ts.map +1 -1
  64. package/dist/src/view/testUtils.js +51 -2
  65. package/dist/src/view/viewSelectors.d.ts +38 -10
  66. package/dist/src/view/viewSelectors.d.ts.map +1 -1
  67. package/dist/src/view/viewSelectors.js +67 -2
  68. package/dist/src/view/viewUtilTypes.d.ts +15 -0
  69. package/dist/src/view/viewUtils.d.ts.map +1 -1
  70. package/dist/src/view/viewUtils.js +10 -0
  71. package/package.json +2 -2
  72. package/LICENSE +0 -21
  73. /package/dist/bundle/{esm-BDFRLEuD.js → esm-C49STiCR.js} +0 -0
  74. /package/dist/bundle/{esm-CGX-qz1d.js → esm-CuVa5T98.js} +0 -0
@@ -1,2 +1,2 @@
1
- const shader = "flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;flat out float vGamma;const int SHAPE_ARC=0;const int SHAPE_DOME=1;const int SHAPE_DIAGONAL=2;const int SHAPE_LINE=3;const int ORIENT_VERTICAL=0;const int ORIENT_HORIZONTAL=1;float distanceFromLine(vec2 pointOnLine1,vec2 pointOnLine2,vec2 point){vec2 a=point-pointOnLine1;vec2 b=pointOnLine2-pointOnLine1;vec2 proj=dot(a,b)/dot(b,b)*b;return length(a-proj);}bool isInsideViewport(vec2 point,float marginFactor){vec2 margin=uViewportSize*vec2(marginFactor);return point.x>=-margin.x&&point.x<=uViewportSize.x+margin.x&&point.y>=-margin.y&&point.y<=uViewportSize.y+margin.y;}void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 p1,p2,p3,p4;vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()))*uViewportSize;vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()))*uViewportSize;if(uShape<=SHAPE_DOME){if(uShape==SHAPE_DOME){vec2 height=vec2(0.0);if(uOrient==ORIENT_VERTICAL){p1=vec2(min(a.x,b.x),b.y);p4=vec2(max(a.x,b.x),b.y);height=vec2(0.0,a.y-b.y);if(uClampApex){if(p4.x>0.0){p1.x=max(p1.x,-p4.x);}if(p1.x<uViewportSize.x){p4.x=min(p4.x,2.0*uViewportSize.x-p1.x);}}}else{p1=vec2(b.x,min(a.y,b.y));p4=vec2(b.x,max(a.y,b.y));height=vec2(a.x-b.x,0.0);if(uClampApex){if(p4.y>0.0){p1.y=max(p1.y,-p4.y);}if(p1.y<uViewportSize.y){p4.y=min(p4.y,2.0*uViewportSize.y-p1.y);}}}vec2 controlOffset=height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}if(uShape==SHAPE_ARC){p1=a;p4=b;vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float chordLength=length(chordVector);if(chordLength>uMaxChordLength){if(isInsideViewport(p1,2.0)){chordLength=uMaxChordLength;p4=p1+unitChordVector*uMaxChordLength;}else if(isInsideViewport(p4,2.0)){chordLength=uMaxChordLength;p1=p4-unitChordVector*uMaxChordLength;}}float height=max(chordLength/2.0*uArcHeightFactor,uMinArcHeight);vec2 controlOffset=chordNormal*height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}}else if(uShape==SHAPE_DIAGONAL){if(uOrient==ORIENT_VERTICAL){p1=a;p2=vec2(a.x,(a.y+b.y)/2.0);p3=vec2(b.x,(a.y+b.y)/2.0);p4=b;}else{p1=a;p2=vec2((a.x+b.x)/2.0,a.y);p3=vec2((a.x+b.x)/2.0,b.y);p4=b;}}else if(uShape==SHAPE_LINE){p1=a;p2=(a+b)/2.0;p3=p2;p4=b;}vec2 strip=vec2(float(gl_VertexID/2)/float(uSegmentBreaks),float(gl_VertexID % 2)-0.5);float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);float size=getScaled_size();if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}float paddedSize=uPickingEnabled? max(size,uMinPickingSize): size+pixelSize;vNormalLengthInPixels=strip.y*paddedSize;if(uShape==SHAPE_ARC&&uArcFadingDistance[0]>0.0&&uArcFadingDistance[1]>0.0&&(!uNoFadingOnPointSelection||!isPointSelected())){float d=distanceFromLine(p1,p4,p);float distanceOpacity=smoothstep(uArcFadingDistance[1],uArcFadingDistance[0],d);opacity*=distanceOpacity;if(distanceOpacity<=0.0){vNormalLengthInPixels=0.0;}}p+=normal*vNormalLengthInPixels;gl_Position=pixelsToNdc(p);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vSize=paddedSize;setupPicking();}";
1
+ const shader = "flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;flat out float vGamma;const int SHAPE_ARC=0;const int SHAPE_DOME=1;const int SHAPE_DIAGONAL=2;const int SHAPE_LINE=3;const int ORIENT_VERTICAL=0;const int ORIENT_HORIZONTAL=1;float distanceFromLine(vec2 pointOnLine1,vec2 pointOnLine2,vec2 point){vec2 a=point-pointOnLine1;vec2 b=pointOnLine2-pointOnLine1;vec2 proj=dot(a,b)/dot(b,b)*b;return length(a-proj);}bool isInsideViewport(vec2 point,float marginFactor){vec2 margin=uViewportSize*vec2(marginFactor);return point.x>=-margin.x&&point.x<=uViewportSize.x+margin.x&&point.y>=-margin.y&&point.y<=uViewportSize.y+margin.y;}float inverseSmoothstep(float t){t=clamp(t,0.0,1.0);return 0.5-sin(asin(1.0-2.0*t)/3.0);}/***Remaps the parameter t to concentrate vertices to the part that is visible in the viewport.*This keeps the tightly bent endpoints smooth even when zooming in very close.*/float remapVisibleChordParameter(float stripT,float chordStart,float chordEnd,float viewportLength){float chordMin=min(chordStart,chordEnd);float chordMax=max(chordStart,chordEnd);float chordSpan=chordMax-chordMin;if(chordSpan<=0.0){return 0.0;}float visibleChordMin=max(chordMin,0.0);float visibleChordMax=min(chordMax,viewportLength);if(visibleChordMax<=visibleChordMin){return stripT;}float visibleTMin=inverseSmoothstep((visibleChordMin-chordMin)/chordSpan);float visibleTMax=inverseSmoothstep((visibleChordMax-chordMin)/chordSpan);float visibleTSpan=visibleTMax-visibleTMin;float offscreenTSpan=visibleTMin+(1.0-visibleTMax);if(offscreenTSpan<=0.0){return stripT;}float visibleShare=clamp(0.75+(1.0-visibleTSpan)*0.2,0.75,0.95);float offscreenShare=1.0-visibleShare;float leftShare=offscreenShare*visibleTMin/offscreenTSpan;float rightShare=offscreenShare*(1.0-visibleTMax)/offscreenTSpan;if(stripT<=leftShare){return leftShare>0.0 ? mix(0.0,visibleTMin,stripT/leftShare): visibleTMin;}float visibleStart=leftShare;float visibleEnd=visibleStart+visibleShare;if(stripT<=visibleEnd){return visibleShare>0.0? mix(visibleTMin,visibleTMax,(stripT-visibleStart)/visibleShare): visibleTMin;}return rightShare>0.0? mix(visibleTMax,1.0,(stripT-visibleEnd)/rightShare): visibleTMax;}void clampChordToViewport(inout vec2 p1,inout vec2 p4,inout float chordLength){if(chordLength>uMaxChordLength){vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);if(isInsideViewport(p1,2.0)){chordLength=uMaxChordLength;p4=p1+unitChordVector*uMaxChordLength;}else if(isInsideViewport(p4,2.0)){chordLength=uMaxChordLength;p1=p4-unitChordVector*uMaxChordLength;}}}void clampDomeApex(inout vec2 p1,inout vec2 p4,int orient){if(orient==ORIENT_VERTICAL){if(p4.x>0.0){p1.x=max(p1.x,-p4.x);}if(p1.x<uViewportSize.x){p4.x=min(p4.x,2.0*uViewportSize.x-p1.x);}}else{if(p4.y>0.0){p1.y=max(p1.y,-p4.y);}if(p1.y<uViewportSize.y){p4.y=min(p4.y,2.0*uViewportSize.y-p1.y);}}}void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 p1,p2,p3,p4;vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()))*uViewportSize;vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()))*uViewportSize;if(uShape<=SHAPE_DOME){if(uShape==SHAPE_DOME){vec2 height=vec2(0.0);if(uOrient==ORIENT_VERTICAL){p1=vec2(min(a.x,b.x),b.y);p4=vec2(max(a.x,b.x),b.y);height=vec2(0.0,a.y-b.y);float chordLength=length(p4-p1);clampChordToViewport(p1,p4,chordLength);if(uClampApex){clampDomeApex(p1,p4,ORIENT_VERTICAL);}}else{p1=vec2(b.x,min(a.y,b.y));p4=vec2(b.x,max(a.y,b.y));height=vec2(a.x-b.x,0.0);float chordLength=length(p4-p1);clampChordToViewport(p1,p4,chordLength);if(uClampApex){clampDomeApex(p1,p4,ORIENT_HORIZONTAL);}}vec2 controlOffset=height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}if(uShape==SHAPE_ARC){p1=a;p4=b;vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float chordLength=length(chordVector);clampChordToViewport(p1,p4,chordLength);float height=max(chordLength/2.0*uArcHeightFactor,uMinArcHeight);vec2 controlOffset=chordNormal*height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}}else if(uShape==SHAPE_DIAGONAL){if(uOrient==ORIENT_VERTICAL){p1=a;p2=vec2(a.x,(a.y+b.y)/2.0);p3=vec2(b.x,(a.y+b.y)/2.0);p4=b;}else{p1=a;p2=vec2((a.x+b.x)/2.0,a.y);p3=vec2((a.x+b.x)/2.0,b.y);p4=b;}}else if(uShape==SHAPE_LINE){p1=a;p2=(a+b)/2.0;p3=p2;p4=b;}vec2 strip=vec2(float(gl_VertexID/2)/float(uSegmentBreaks),float(gl_VertexID % 2)-0.5);float t=strip.x;if(uShape==SHAPE_DOME){if(uOrient==ORIENT_VERTICAL){t=remapVisibleChordParameter(strip.x,p1.x,p4.x,uViewportSize.x);}else{t=remapVisibleChordParameter(strip.x,p1.y,p4.y,uViewportSize.y);}}else if(uShape==SHAPE_ARC){if(a.y==b.y){t=remapVisibleChordParameter(strip.x,p1.x,p4.x,uViewportSize.x);}else if(a.x==b.x){t=remapVisibleChordParameter(strip.x,p1.y,p4.y,uViewportSize.y);}}vec2 p;vec2 tangent;vec2 q1=mix(p1,p2,t);vec2 q2=mix(p2,p3,t);vec2 q3=mix(p3,p4,t);vec2 r1=mix(q1,q2,t);vec2 r2=mix(q2,q3,t);p=mix(r1,r2,t);tangent=3.0*(r2-r1);tangent=normalize(tangent);vec2 normal=vec2(-tangent.y,tangent.x);float size=getScaled_size();if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}float paddedSize=uPickingEnabled? max(size,uMinPickingSize): size+pixelSize;vNormalLengthInPixels=strip.y*paddedSize;if(uShape==SHAPE_ARC&&uArcFadingDistance[0]>0.0&&uArcFadingDistance[1]>0.0&&(!uNoFadingOnPointSelection||!isPointSelected())){float d=distanceFromLine(p1,p4,p);float distanceOpacity=smoothstep(uArcFadingDistance[1],uArcFadingDistance[0],d);opacity*=distanceOpacity;if(distanceOpacity<=0.0){vNormalLengthInPixels=0.0;}}p+=normal*vNormalLengthInPixels;gl_Position=pixelsToNdc(p);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vSize=paddedSize;setupPicking();}";
2
2
  export default shader;
@@ -1 +1 @@
1
- {"version":3,"file":"minimal.d.ts","sourceRoot":"","sources":["../../src/minimal.js"],"names":[],"mappings":"AAkBA,6MAA4C;sBAPtB,oBAAoB;qBAJrB,KAAK;iBAKT,kBAAkB;oBACf,6BAA6B;yBACX,mBAAmB"}
1
+ {"version":3,"file":"minimal.d.ts","sourceRoot":"","sources":["../../src/minimal.js"],"names":[],"mappings":"AAmBA,6MAA4C;sBARtB,oBAAoB;qBAJrB,KAAK;iBAKT,kBAAkB;oBACf,6BAA6B;yBACX,mBAAmB"}
@@ -2,17 +2,18 @@
2
2
  * Lean GenomeSpy core entry point.
3
3
  *
4
4
  * Use this entry when you want the `embed` API without the default built-in
5
- * eager and lazy format registrations. Import the optional data source and
6
- * format modules you need explicitly.
5
+ * optional eager and lazy format registrations. Core axis lazy sources remain
6
+ * available.
7
7
  */
8
8
  import { html } from "lit";
9
9
 
10
- // Lean core entry point: shares the embed API, but skips built-in optional
11
- // eager and lazy format registrations.
10
+ // Lean core entry point: shares the embed API, but skips optional eager and
11
+ // lazy format registrations.
12
12
  import GenomeSpy from "./genomeSpyBase.js";
13
13
  import icon from "./img/bowtie.svg";
14
14
  import favIcon from "./img/genomespy-favicon.svg";
15
15
  import { createEmbed, loadSpec } from "./embedFactory.js";
16
+ import "./data/sources/lazy/registerCoreLazySources.js";
16
17
 
17
18
  export { GenomeSpy, html, icon, favIcon };
18
19
 
@@ -483,13 +483,21 @@ function configureRangeStep(type, _, count) {
483
483
 
484
484
  function configureScheme(type, _, count) {
485
485
  var extent = _.schemeExtent,
486
+ schemeCount = _.schemeCount,
486
487
  name,
487
488
  scheme;
488
489
 
489
490
  if (isArray(_.scheme)) {
490
491
  scheme = interpolateColors(_.scheme, _.interpolate, _.interpolateGamma);
491
492
  } else {
492
- name = _.scheme.toLowerCase();
493
+ if (isString(_.scheme)) {
494
+ name = _.scheme.toLowerCase();
495
+ } else {
496
+ name = _.scheme.name.toLowerCase();
497
+ extent = _.scheme.extent ?? extent;
498
+ schemeCount = _.scheme.count ?? schemeCount;
499
+ }
500
+
493
501
  scheme = getScheme(name);
494
502
  if (!scheme) error(`Unrecognized scheme name: ${_.scheme}`);
495
503
  }
@@ -501,7 +509,7 @@ function configureScheme(type, _, count) {
501
509
  : type === BinOrdinal
502
510
  ? count - 1
503
511
  : type === Quantile || type === Quantize
504
- ? +_.schemeCount || DEFAULT_COUNT
512
+ ? +schemeCount || DEFAULT_COUNT
505
513
  : count;
506
514
 
507
515
  // adjust and/or quantize scheme as appropriate
@@ -521,7 +521,7 @@ function resolveSelectionDomain(
521
521
  resolvedChannel
522
522
  );
523
523
  const hasInitial = domainRef.initial !== undefined;
524
- const interval = binding.selection.intervals[resolvedChannel];
524
+ const interval = binding.selection?.intervals[resolvedChannel];
525
525
  const description = paramName + "." + resolvedChannel;
526
526
  if (!interval || interval.length !== 2) {
527
527
  const initialDomain = includeSelectionInitial
@@ -1 +1 @@
1
- {"version":3,"file":"scaleResolution.d.ts","sourceRoot":"","sources":["../../../src/scales/scaleResolution.js"],"names":[],"mappings":"AAoDA;;;;;;;;GAQG;AACH;;;;;;;;;;;;;;;;;;GAkBG;AACH;IAucI;;;;;;;;OAQG;IACH,uBALa,CAAC,eACH,QAAQ,CAAC,eAAe,CAAC,YACzB,MAAM,CAAC,GACL,CAAC,CAqBb;IA5ZD;;;OAGG;IACH,sEAFW,OAAO,iBAAiB,EAAE,OAAO,EAsC3C;IAnCG,8CAAsB;IACtB,0FAA0F;IAC1F,MADW,OAAO,oBAAoB,EAAE,IAAI,CAC5B;IAEhB,iEAAiE;IACjE,MADW,MAAM,CACI;IA0EzB,2BASC;IAwBD;;;;;;;OAOG;IACH,4KAEC;IAED;;;OAGG;IACH,+KAEC;IAiCD,sCA0CC;IA4MD;;;OAGG;IACH,uBAHW,qBAAqB,GACnB,MAAM,OAAO,CAazB;IAED,gBAMC;IAoFD;;;;OAIG;IACH,0CAJW,OAAO,sBAAsB,EAAE,OAAO,aACtC,QAAQ,CAAC,OAAO,qBAAqB,EAAE,aAAa,CAAC,GACnD,MAAM,IAAI,CAkCtB;IAED;;OAEG;IACH,qCAEC;IAED,+BAiBC;IAuED;;;;;;;;;;;OAWG;IACH,0BALa;QACR,QAAQ,EAAE,OAAO,kBAAkB,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;QACnE,oBAAoB,EAAE,OAAO,CAAA;KAC9B,CAeH;IAED;;;;;;;OAOG;IACH,wBAFa,OAAO,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAShE;IAgGD;;;;;OAKG;IACH,oBAYC;IAED;;;;;OAKG;IACH,0BA0BC;IAoID;;OAEG;IACH;eA5gCkC,OAAO,kBAAkB,EAAE,KAAK;MAmhCjE;IAED;;;;;;OAMG;IACH;eA5hCkC,OAAO,kBAAkB,EAAE,KAAK;MAmiCjE;IAED;;;;OAIG;IACH;eA1iCkC,OAAO,kBAAkB,EAAE,KAAK;MAmjCjE;IAED,mBASC;IAED;;;;OAIG;IACH,+DAEC;IAED;;OAEG;IACH,oBAFa,mFAA6B,CASzC;IAED;;OAEG;IACH;;;;MAqBC;IAED;;;;OAIG;IACH,oBAEC;IAED;;OAEG;IACH,sBASC;IAED;;;;;;;OAOG;IACH,kBALW,MAAM,eACN,MAAM,OACN,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;OAMG;IACH,eAJW,mFAA6B,aAC7B,OAAO,GAAG,MAAM,iBAK1B;IAED;;;;OAIG;IACH,qBAEC;IAED;;;;;OAKG;IACH,uBAEC;IAED;;;;;;;OAOG;IACH,wBAoBC;IAED;;;;;OAKG;IACH,uBAFW,MAAM,yDAUhB;IAED;;OAEG;IACH,iBAFW,MAAM,yDAIhB;IAED;;;OAGG;IACH,qBAHW,MAAM,+CAAmB,GACvB,MAAM,CAIlB;IAED;;;OAGG;IACH,8BAHW,kFAA4B,GAC1B,MAAM,EAAE,CAOpB;;CACJ;kCAjyC+B,CAAC,SAApB,6CAAkB;;;;UAGrB,OAAO,qBAAqB,EAAE,OAAO;aACrC,CAAC;gBACD,OAAO,oBAAoB,EAAE,mBAAmB;yBAChD,OAAO;;sBApCV,+BAA+B;sBAA/B,+BAA+B;wBAA/B,+BAA+B;wBAA/B,+BAA+B;6BAA/B,+BAA+B"}
1
+ {"version":3,"file":"scaleResolution.d.ts","sourceRoot":"","sources":["../../../src/scales/scaleResolution.js"],"names":[],"mappings":"AAoDA;;;;;;;;GAQG;AACH;;;;;;;;;;;;;;;;;;GAkBG;AACH;IA6cI;;;;;;;;OAQG;IACH,uBALa,CAAC,eACH,QAAQ,CAAC,eAAe,CAAC,YACzB,MAAM,CAAC,GACL,CAAC,CAqBb;IAlaD;;;OAGG;IACH,sEAFW,OAAO,iBAAiB,EAAE,OAAO,EAsC3C;IAnCG,8CAAsB;IACtB,0FAA0F;IAC1F,MADW,OAAO,oBAAoB,EAAE,IAAI,CAC5B;IAEhB,iEAAiE;IACjE,MADW,MAAM,CACI;IA0EzB,2BASC;IAwBD;;;;;;;OAOG;IACH,4KAEC;IAED;;;OAGG;IACH,+KAEC;IAiCD,sCA6CC;IA+MD;;;OAGG;IACH,uBAHW,qBAAqB,GACnB,MAAM,OAAO,CAazB;IAED,gBAMC;IAoFD;;;;OAIG;IACH,0CAJW,OAAO,sBAAsB,EAAE,OAAO,aACtC,QAAQ,CAAC,OAAO,qBAAqB,EAAE,aAAa,CAAC,GACnD,MAAM,IAAI,CAkCtB;IAED;;OAEG;IACH,qCAEC;IAED,+BAiBC;IAuED;;;;;;;;;;;OAWG;IACH,0BALa;QACR,QAAQ,EAAE,OAAO,kBAAkB,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;QACnE,oBAAoB,EAAE,OAAO,CAAA;KAC9B,CAeH;IAED;;;;;;;OAOG;IACH,wBAFa,OAAO,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAShE;IAgGD;;;;;OAKG;IACH,oBAYC;IAED;;;;;OAKG;IACH,0BA0BC;IAoID;;OAEG;IACH;eAlhCkC,OAAO,kBAAkB,EAAE,KAAK;MAyhCjE;IAED;;;;;;OAMG;IACH;eAliCkC,OAAO,kBAAkB,EAAE,KAAK;MAyiCjE;IAED;;;;OAIG;IACH;eAhjCkC,OAAO,kBAAkB,EAAE,KAAK;MAyjCjE;IAED,mBASC;IAED;;;;OAIG;IACH,+DAEC;IAED;;OAEG;IACH,oBAFa,mFAA6B,CASzC;IAED;;OAEG;IACH;;;;MAqBC;IAED;;;;OAIG;IACH,oBAEC;IAED;;OAEG;IACH,sBASC;IAED;;;;;;;OAOG;IACH,kBALW,MAAM,eACN,MAAM,OACN,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;OAMG;IACH,eAJW,mFAA6B,aAC7B,OAAO,GAAG,MAAM,iBAK1B;IAED;;;;OAIG;IACH,qBAEC;IAED;;;;;OAKG;IACH,uBAEC;IAED;;;;;;;OAOG;IACH,wBAoBC;IAED;;;;;OAKG;IACH,uBAFW,MAAM,yDAUhB;IAED;;OAEG;IACH,iBAFW,MAAM,yDAIhB;IAED;;;OAGG;IACH,qBAHW,MAAM,+CAAmB,GACvB,MAAM,CAIlB;IAED;;;OAGG;IACH,8BAHW,kFAA4B,GAC1B,MAAM,EAAE,CAOpB;;CACJ;kCAvyC+B,CAAC,SAApB,6CAAkB;;;;UAGrB,OAAO,qBAAqB,EAAE,OAAO;aACrC,CAAC;gBACD,OAAO,oBAAoB,EAAE,mBAAmB;yBAChD,OAAO;;sBApCV,+BAA+B;sBAA/B,+BAA+B;wBAA/B,+BAA+B;wBAA/B,+BAA+B;6BAA/B,+BAA+B"}
@@ -37,8 +37,8 @@ import { resolveUrl } from "../utils/url.js";
37
37
  import { orderResolutionMembers } from "./resolutionMemberOrder.js";
38
38
  import {
39
39
  findIntervalSelectionBindingOwners,
40
+ getIntervalSelection,
40
41
  normalizeIntervalForSelection,
41
- requireIntervalSelection,
42
42
  } from "./selectionDomainUtils.js";
43
43
  import { toExternalIndexLikeInterval } from "./indexLikeDomainUtils.js";
44
44
 
@@ -324,10 +324,13 @@ export default class ScaleResolution {
324
324
  return;
325
325
  }
326
326
 
327
- const selection = requireIntervalSelection(
327
+ const selection = getIntervalSelection(
328
328
  linkInfo.runtime.getValue(linkInfo.param),
329
329
  linkInfo.param
330
330
  );
331
+ if (!selection) {
332
+ return;
333
+ }
331
334
 
332
335
  const interval = this.#normalizeDomainIntervalForLinkedSelection(
333
336
  this.getScale().domain()
@@ -412,10 +415,13 @@ export default class ScaleResolution {
412
415
  * @returns {[number, number] | null}
413
416
  */
414
417
  #getCurrentLinkedSelectionInterval(linkInfo) {
415
- const selection = requireIntervalSelection(
418
+ const selection = getIntervalSelection(
416
419
  linkInfo.runtime.getValue(linkInfo.param),
417
420
  linkInfo.param
418
421
  );
422
+ if (!selection) {
423
+ return null;
424
+ }
419
425
  const interval = selection.intervals[linkInfo.encoding];
420
426
  return interval && interval.length === 2
421
427
  ? /** @type {[number, number]} */ (interval)
@@ -10,6 +10,16 @@ export function requireParamRuntime(paramRuntime: {
10
10
  * @param {string} paramName
11
11
  */
12
12
  export function requireIntervalSelection(selection: any, paramName: string): import("../types/selectionTypes.js").IntervalSelection;
13
+ /**
14
+ * Returns an interval selection when the value exists and is of the correct
15
+ * type. Missing values are treated as empty so selection-linked domains can
16
+ * initialize before a pushed outer selection has been seeded.
17
+ *
18
+ * @param {any} selection
19
+ * @param {string} paramName
20
+ * @returns {import("../types/selectionTypes.js").IntervalSelection | undefined}
21
+ */
22
+ export function getIntervalSelection(selection: any, paramName: string): import("../types/selectionTypes.js").IntervalSelection | undefined;
13
23
  /**
14
24
  * Resolves the runtime-backed interval selection binding used by a linked
15
25
  * domain. Matching is based on the actual resolved runtime slot instead of
@@ -1 +1 @@
1
- {"version":3,"file":"selectionDomainUtils.d.ts","sourceRoot":"","sources":["../../../src/scales/selectionDomainUtils.js"],"names":[],"mappings":"AAOA;;;GAGG;AACH,kDAHW;IAAE,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAA;CAAE,aAC9C,MAAM,OAUhB;AAED;;;GAGG;AACH,oDAHW,GAAG,aACH,MAAM,0DAgBhB;AAED;;;;;;;;GAQG;AACH,sDAJW,OAAO,iBAAiB,EAAE,OAAO,aACjC,MAAM,YACN,GAAG,GAAG,GAAG;;;EAiBnB;AAED;;;;;GAKG;AACH,yDALW,OAAO,iBAAiB,EAAE,OAAO,WACjC,GAAG,aACH,MAAM,YACN,GAAG,GAAG,GAAG;UAGG,OAAO,iBAAiB,EAAE,OAAO;WAAS,OAAO,sBAAsB,EAAE,kBAAkB;IAuBjH;AAED;;;;;GAKG;AACH,yDALW,OAAO,iBAAiB,EAAE,OAAO,WACjC,GAAG,aACH,MAAM,YACN,GAAG,GAAG,GAAG,WA8CnB;AAED;;;;;GAKG;AACH,wDALW,MAAM,EAAE,cACR,MAAM,EAAE,YACR;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAsCxC"}
1
+ {"version":3,"file":"selectionDomainUtils.d.ts","sourceRoot":"","sources":["../../../src/scales/selectionDomainUtils.js"],"names":[],"mappings":"AAOA;;;GAGG;AACH,kDAHW;IAAE,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAA;CAAE,aAC9C,MAAM,OAUhB;AAED;;;GAGG;AACH,oDAHW,GAAG,aACH,MAAM,0DAgBhB;AAED;;;;;;;;GAQG;AACH,gDAJW,GAAG,aACH,MAAM,GACJ,OAAO,4BAA4B,EAAE,iBAAiB,GAAG,SAAS,CAc9E;AAED;;;;;;;;GAQG;AACH,sDAJW,OAAO,iBAAiB,EAAE,OAAO,aACjC,MAAM,YACN,GAAG,GAAG,GAAG;;;EAiBnB;AAED;;;;;GAKG;AACH,yDALW,OAAO,iBAAiB,EAAE,OAAO,WACjC,GAAG,aACH,MAAM,YACN,GAAG,GAAG,GAAG;UAQG,OAAO,iBAAiB,EAAE,OAAO;WAAS,OAAO,sBAAsB,EAAE,kBAAkB;IAuBjH;AAED;;;;;GAKG;AACH,yDALW,OAAO,iBAAiB,EAAE,OAAO,WACjC,GAAG,aACH,MAAM,YACN,GAAG,GAAG,GAAG,WA+CnB;AAED;;;;;GAKG;AACH,wDALW,MAAM,EAAE,cACR,MAAM,EAAE,YACR;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAsCxC"}
@@ -39,6 +39,29 @@ export function requireIntervalSelection(selection, paramName) {
39
39
  return selection;
40
40
  }
41
41
 
42
+ /**
43
+ * Returns an interval selection when the value exists and is of the correct
44
+ * type. Missing values are treated as empty so selection-linked domains can
45
+ * initialize before a pushed outer selection has been seeded.
46
+ *
47
+ * @param {any} selection
48
+ * @param {string} paramName
49
+ * @returns {import("../types/selectionTypes.js").IntervalSelection | undefined}
50
+ */
51
+ export function getIntervalSelection(selection, paramName) {
52
+ if (!selection) {
53
+ return;
54
+ }
55
+
56
+ if (!isIntervalSelection(selection)) {
57
+ throw new Error(
58
+ `Selection domain parameter "${paramName}" must be an interval selection.`
59
+ );
60
+ }
61
+
62
+ return selection;
63
+ }
64
+
42
65
  /**
43
66
  * Resolves the runtime-backed interval selection binding used by a linked
44
67
  * domain. Matching is based on the actual resolved runtime slot instead of
@@ -52,7 +75,7 @@ export function resolveIntervalSelectionBinding(view, paramName, encoding) {
52
75
  const runtime = view.paramRuntime.findRuntimeForParam
53
76
  ? requireParamRuntime(view.paramRuntime, paramName)
54
77
  : view.paramRuntime;
55
- const selection = requireIntervalSelection(
78
+ const selection = getIntervalSelection(
56
79
  runtime.getValue
57
80
  ? runtime.getValue(paramName)
58
81
  : view.paramRuntime.findValue(paramName),
@@ -71,7 +94,12 @@ export function resolveIntervalSelectionBinding(view, paramName, encoding) {
71
94
  * @param {string} paramName
72
95
  * @param {"x" | "y"} encoding
73
96
  */
74
- export function findIntervalSelectionBindingOwners(root, runtime, paramName, encoding) {
97
+ export function findIntervalSelectionBindingOwners(
98
+ root,
99
+ runtime,
100
+ paramName,
101
+ encoding
102
+ ) {
75
103
  /** @type {{ view: import("../view/view.js").default, param: import("../spec/parameter.js").SelectionParameter }[]} */
76
104
  const owners = [];
77
105
 
@@ -124,7 +152,8 @@ export function hasIntervalSelectionBindingInScope(
124
152
 
125
153
  seen.add(candidateView);
126
154
 
127
- const param = candidateView.paramRuntime?.paramConfigs?.get(paramName);
155
+ const param =
156
+ candidateView.paramRuntime?.paramConfigs?.get(paramName);
128
157
  if (!param || !isSelectionParameter(param)) {
129
158
  continue;
130
159
  }
@@ -99,6 +99,12 @@ export interface TypeMixins<T extends Type> {
99
99
  }
100
100
 
101
101
  export interface FieldDefBase {
102
+ /**
103
+ * A description of the encoded field. Can be used for documentation and
104
+ * to explain the meaning of the channel mapping.
105
+ */
106
+ description?: string;
107
+
102
108
  /**
103
109
  * __Required.__ A string defining the name of the field from which to pull a data value
104
110
  * or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.
@@ -169,12 +175,24 @@ export interface ValueDefBase<V extends Value = Scalar> {
169
175
  * A constant value in visual domain (e.g., `"red"` / `"#0099ff"`, values between `0` to `1` for opacity).
170
176
  */
171
177
  value: V | ExprRef;
178
+
179
+ /**
180
+ * A description of the encoded value. Can be used for documentation and
181
+ * to explain the meaning of the channel mapping.
182
+ */
183
+ description?: string;
172
184
  }
173
185
 
174
186
  export type ValueDef<V extends Value = Scalar> = ValueDefBase<V> & TitleMixins;
175
187
 
176
188
  export interface DatumDef<V extends Scalar | ExprRef = Scalar | ExprRef>
177
189
  extends Partial<TypeMixins<Type>>, BandMixins, ScaleMixins, TitleMixins {
190
+ /**
191
+ * A description of the encoded datum. Can be used for documentation and
192
+ * to explain the meaning of the channel mapping.
193
+ */
194
+ description?: string;
195
+
178
196
  /**
179
197
  * A constant value in data domain.
180
198
  */
@@ -183,6 +201,12 @@ export interface DatumDef<V extends Scalar | ExprRef = Scalar | ExprRef>
183
201
 
184
202
  export interface ExprDef
185
203
  extends Partial<TypeMixins<Type>>, BandMixins, TitleMixins {
204
+ /**
205
+ * A description of the encoded expression. Can be used for documentation
206
+ * and to explain the meaning of the channel mapping.
207
+ */
208
+ description?: string;
209
+
186
210
  /**
187
211
  * An expression. Properties of the data can be accessed through the `datum` object.
188
212
  */
@@ -332,6 +356,12 @@ export interface PositionMixins extends BandMixins {
332
356
  export type PositionFieldDefBase = ScaleFieldDef<Type>;
333
357
 
334
358
  export interface ChromPosDefBase extends BandMixins {
359
+ /**
360
+ * A description of the encoded position. Can be used for documentation and
361
+ * to explain the meaning of the channel mapping.
362
+ */
363
+ description?: string;
364
+
335
365
  /**
336
366
  * The field having the chromosome or contig.
337
367
  */
@@ -138,6 +138,12 @@ export type InlineDataset =
138
138
  | object;
139
139
 
140
140
  export interface DataBase {
141
+ /**
142
+ * A description of the data source. Can be used for documentation and to
143
+ * explain the role of the data in the visualization.
144
+ */
145
+ description?: string;
146
+
141
147
  /**
142
148
  * An object that specifies the format for parsing the data.
143
149
  */
@@ -202,6 +208,12 @@ export interface DynamicCallbackData extends DataBase {
202
208
  export type Generator = SequenceGenerator;
203
209
 
204
210
  export interface GeneratorBase {
211
+ /**
212
+ * A description of the data source. Can be used for documentation and to
213
+ * explain the role of the generated data in the visualization.
214
+ */
215
+ description?: string;
216
+
205
217
  /**
206
218
  * Provide a placeholder name and bind data at runtime.
207
219
  */
@@ -240,6 +252,12 @@ export interface SequenceParams {
240
252
  }
241
253
 
242
254
  export interface LazyData {
255
+ /**
256
+ * A description of the data source. Can be used for documentation and to
257
+ * explain the role of the lazy data in the visualization.
258
+ */
259
+ description?: string;
260
+
243
261
  lazy: LazyDataParams;
244
262
  }
245
263
 
@@ -250,6 +268,7 @@ export type LazyDataParams =
250
268
  | BigWigData
251
269
  | BigBedData
252
270
  | BamData
271
+ | TabixTsvData
253
272
  | Gff3Data
254
273
  | VcfData;
255
274
 
@@ -446,6 +465,27 @@ export interface TabixData extends DebouncedData {
446
465
  windowSize?: number;
447
466
  }
448
467
 
468
+ export interface TabixTsvData extends TabixData {
469
+ type: "tabix";
470
+
471
+ /**
472
+ * Ordered list of field names for headerless tabix TSV input.
473
+ * If omitted, the source tries to read a commented header line from the
474
+ * tabix file header or the first row of a plain TSV header.
475
+ */
476
+ columns?: string[];
477
+
478
+ /**
479
+ * Optional type parsing for TSV fields. When omitted, field types are
480
+ * inferred automatically. Set to `null` to disable spec-based type
481
+ * inference and rely on data inference, or provide a field-to-type map to
482
+ * override selected columns.
483
+ *
484
+ * __Default value:__ `"auto"`
485
+ */
486
+ parse?: Parse | null;
487
+ }
488
+
449
489
  export interface Gff3Data extends TabixData {
450
490
  type: "gff3";
451
491
  }
@@ -18,6 +18,12 @@ export interface ParameterBase {
18
18
  */
19
19
  name: string;
20
20
 
21
+ /**
22
+ * A description of the parameter. Can be used for documentation and to
23
+ * explain the meaning of the control or selection.
24
+ */
25
+ description?: string;
26
+
21
27
  push?: "outer";
22
28
  }
23
29
 
@@ -11,6 +11,12 @@ export type Field = string;
11
11
  export interface TransformParamsBase {
12
12
  /** The type of the transform to be applied */
13
13
  type: string;
14
+
15
+ /**
16
+ * A description of the transform step. Can be used for documentation
17
+ * and agent context.
18
+ */
19
+ description?: string;
14
20
  }
15
21
 
16
22
  export interface IdentifierParams extends TransformParamsBase {
@@ -1 +1 @@
1
- {"version":3,"file":"axisGridView.d.ts","sourceRoot":"","sources":["../../../src/view/axisGridView.js"],"names":[],"mappings":"AAIA;;;GAGG;AAEH;;;;;;GAMG;AACH;IACI;;;;;;;OAOG;IACH,uBAPW,IAAI,QAEJ,MAAM,WADN,OAAO,yBAAyB,EAAE,OAAO,gBAEzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,YAC3B,OAAO,WAAW,EAAE,WAAW,EAkBzC;IAHG,0CAA0B;IAK9B,kDAEC;CAKJ;gCA7CY,OAAO,oBAAoB,EAAE,wBAAwB;iCACrD,OAAO,iBAAiB,EAAE,kBAAkB;;;;mBAM5C,OAAO,WAAW,EAAE,OAAO;;;;mBAC3B,OAAO,iBAAiB,EAAE,IAAI;;;;yBAC9B,OAAO,iBAAiB,EAAE,UAAU;sBAd3B,gBAAgB"}
1
+ {"version":3,"file":"axisGridView.d.ts","sourceRoot":"","sources":["../../../src/view/axisGridView.js"],"names":[],"mappings":"AAIA;;;GAGG;AAEH;;;;;;GAMG;AACH;IACI;;;;;;;OAOG;IACH,uBAPW,IAAI,QAEJ,MAAM,WADN,OAAO,yBAAyB,EAAE,OAAO,gBAEzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,YAC3B,OAAO,WAAW,EAAE,WAAW,EAmBzC;IAJG,0CAA0B;IAM9B,kDAEC;CAKJ;gCA9CY,OAAO,oBAAoB,EAAE,wBAAwB;iCACrD,OAAO,iBAAiB,EAAE,kBAAkB;;;;mBAM5C,OAAO,WAAW,EAAE,OAAO;;;;mBAC3B,OAAO,iBAAiB,EAAE,IAAI;;;;yBAC9B,OAAO,iBAAiB,EAAE,UAAU;sBAd3B,gBAAgB"}
@@ -1,6 +1,6 @@
1
1
  import LayerView from "./layerView.js";
2
2
  import { orient2channel } from "./axisView.js";
3
- import { markViewAsNonAddressable } from "./viewSelectors.js";
3
+ import { markViewAsChrome, markViewAsNonAddressable } from "./viewSelectors.js";
4
4
 
5
5
  /**
6
6
  * @typedef {import("../spec/channel.js").PrimaryPositionalChannel} PositionalChannel
@@ -39,6 +39,7 @@ export default class AxisGridView extends LayerView {
39
39
  this.axisProps = axisProps;
40
40
 
41
41
  markViewAsNonAddressable(this, { skipSubtree: true });
42
+ markViewAsChrome(this, { skipSubtree: true });
42
43
  }
43
44
 
44
45
  getOrient() {
@@ -1 +1 @@
1
- {"version":3,"file":"axisView.d.ts","sourceRoot":"","sources":["../../../src/view/axisView.js"],"names":[],"mappings":"AAuCA;;GAEG;AACH,kIAEC;AAqhBD;;;;GAIG;AACH,wFAHW,MAAM,uCAqNhB;AAlwBD;;GAEG;AACH,8BAFU,MAAM,CAAC,OAAO,oBAAoB,EAAE,wBAAwB,EAAE,sCAAY,CAAC,CAKnF;AAEF;;GAEG;AACH,8BAFU,MAAM,uCAAa,OAAO,oBAAoB,EAAE,wBAAwB,CAAC,CAMjF;AASF;;;;;GAKG;AACH;IAeI;;;;;;;;OAQG;IAEH;;;;;;;OAOG;IACH,6DALW,MAAM,WADN,OAAO,yBAAyB,EAAE,OAAO,gBAEzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,YAC3B,OAAO,WAAW,EAAE,WAAW,EAsDzC;IARG,iFAA8B;IA8ClC,+BAEC;;CAuEJ;sBAxPqB,gBAAgB"}
1
+ {"version":3,"file":"axisView.d.ts","sourceRoot":"","sources":["../../../src/view/axisView.js"],"names":[],"mappings":"AAuCA;;GAEG;AACH,kIAEC;AAshBD;;;;GAIG;AACH,wFAHW,MAAM,uCAqNhB;AAnwBD;;GAEG;AACH,8BAFU,MAAM,CAAC,OAAO,oBAAoB,EAAE,wBAAwB,EAAE,sCAAY,CAAC,CAKnF;AAEF;;GAEG;AACH,8BAFU,MAAM,uCAAa,OAAO,oBAAoB,EAAE,wBAAwB,CAAC,CAMjF;AASF;;;;;GAKG;AACH;IAeI;;;;;;;;OAQG;IAEH;;;;;;;OAOG;IACH,6DALW,MAAM,WADN,OAAO,yBAAyB,EAAE,OAAO,gBAEzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,YAC3B,OAAO,WAAW,EAAE,WAAW,EAuDzC;IATG,iFAA8B;IA+ClC,+BAEC;;CAuEJ;sBAzPqB,gBAAgB"}
@@ -1,7 +1,7 @@
1
1
  import LayerView from "./layerView.js";
2
2
  import { FlexDimensions } from "./layout/flexLayout.js";
3
3
  import UnitView from "./unitView.js";
4
- import { markViewAsNonAddressable } from "./viewSelectors.js";
4
+ import { markViewAsChrome, markViewAsNonAddressable } from "./viewSelectors.js";
5
5
  import { getConfiguredAxisDefaults } from "../config/axisConfig.js";
6
6
 
7
7
  const CHROM_LAYER_NAME = "chromosome_ticks_and_labels";
@@ -135,6 +135,7 @@ export default class AxisView extends LayerView {
135
135
  );
136
136
 
137
137
  markViewAsNonAddressable(this, { skipSubtree: true });
138
+ markViewAsChrome(this, { skipSubtree: true });
138
139
  }
139
140
 
140
141
  async initializeChildren() {
@@ -1 +1 @@
1
- {"version":3,"file":"facetView.d.ts","sourceRoot":"","sources":["../../../src/view/facetView.js"],"names":[],"mappings":"AAoDA;;;;;;;;;;;;;;GAcG;AACH;IACI;;;;;;;OAOG;IACH;;;;;;OAMG;IACH,kBALW,OAAO,gBAAgB,EAAE,SAAS,WAClC,OAAO,gBAAgB,EAAE,WAAW,UACpC,aAAa,QACb,MAAM,EA+BhB;IA1BG,UAAgB;IAEhB,WAEC;IAED;;;;OAIG;IACH,aAFU,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAavC;IAED,oDAAoD;IACpD,kBADY,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CACa;IAajE,sBAIC;IAED;;;OAGG;IACH,qBAFW,KAAK,GAAG,QAAQ,OAwB1B;IAED,qBAyCC;IAED,qBASC;IA6BD,kDAgBC;IAOD;;;;OAIG;IACH,gBAJW,OAAO,4CAA4C,EAAE,OAAO,UAC5D,OAAO,uBAAuB,EAAE,OAAO,YACvC,OAAO,WAAW,EAAE,gBAAgB,QA2L9C;IA3KO,wBAA0B;CA4KrC;2BAlbY,QAAQ,GAAG,KAAK;;;;;;aA4CnB,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE;;;0BA3Df,oBAAoB;qBACzB,eAAe"}
1
+ {"version":3,"file":"facetView.d.ts","sourceRoot":"","sources":["../../../src/view/facetView.js"],"names":[],"mappings":"AAoDA;;;;;;;;;;;;;;GAcG;AACH;IACI;;;;;;;OAOG;IACH;;;;;;OAMG;IACH,kBALW,OAAO,gBAAgB,EAAE,SAAS,WAClC,OAAO,gBAAgB,EAAE,WAAW,UACpC,aAAa,QACb,MAAM,EAgChB;IA3BG,UAAgB;IAEhB,WAEC;IAED;;;;OAIG;IACH,aAFU,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAcvC;IAED,oDAAoD;IACpD,kBADY,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CACa;IAajE,sBAIC;IAED;;;OAGG;IACH,qBAFW,KAAK,GAAG,QAAQ,OAwB1B;IAED,qBAyCC;IAED,qBASC;IA6BD,kDAgBC;IAOD;;;;OAIG;IACH,gBAJW,OAAO,4CAA4C,EAAE,OAAO,UAC5D,OAAO,uBAAuB,EAAE,OAAO,YACvC,OAAO,WAAW,EAAE,gBAAgB,QA2L9C;IA3KO,wBAA0B;CA4KrC;2BAnbY,QAAQ,GAAG,KAAK;;;;;;aA4CnB,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE;;;0BA3Df,oBAAoB;qBACzB,eAAe"}
@@ -12,7 +12,7 @@ import coalesce from "../utils/coalesce.js";
12
12
  import { field as vegaField } from "vega-util";
13
13
  import DecoratorView from "./decoratorView.js";
14
14
  import Padding from "./layout/padding.js";
15
- import { markViewAsNonAddressable } from "./viewSelectors.js";
15
+ import { markViewAsChrome, markViewAsNonAddressable } from "./viewSelectors.js";
16
16
 
17
17
  const DEFAULT_SPACING = 20;
18
18
 
@@ -104,6 +104,7 @@ export default class FacetView extends ContainerView {
104
104
  `facetLabel-${channel}`
105
105
  );
106
106
  markViewAsNonAddressable(labelView, { skipSubtree: true });
107
+ markViewAsChrome(labelView, { skipSubtree: true });
107
108
  return [channel, labelView];
108
109
  })
109
110
  );
@@ -1 +1 @@
1
- {"version":3,"file":"gridChild.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/gridChild.js"],"names":[],"mappings":"AAo2BA;;;;;GAKG;AACH,qDALW,OAAO,yBAAyB,EAAE,uBAAuB,CAAC,MAAM,CAAC,sBACjE,OAAO,aACP,MAAM,GACJ,OAAO,yBAAyB,EAAE,WAAW,GAAG,SAAS,CAyBrE;AAcD;;;GAGG;AACH,iDAHW,OAAO,oBAAoB,EAAE,cAAc,GACzC,OAAO,oBAAoB,EAAE,QAAQ,CA6BjD;AAED;;;GAGG;AACH,uDAHW,OAAO,oBAAoB,EAAE,cAAc,GACzC,OAAO,oBAAoB,EAAE,QAAQ,CA4CjD;AAn8BD;IACI;;;;;;OAMG;IAEH;;;;OAIG;IACH,kBAJW,OAAO,YAAY,EAAE,OAAO,gBAC5B,OAAO,qBAAqB,EAAE,OAAO,UACrC,MAAM,EAmHhB;IAhHG,gGAAgC;IAChC,0EAAgB;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,qBAAqB;IACrB,kBADW,MAAM,CACQ;IAEzB,iCAAiC;IACjC,wBADW,MAAM,GAAG,SAAS,CACU;IAEvC,qBAAqB;IACrB,aADW,MAAM,CACG;IAEpB,wBAAwB;IACxB,QADW,SAAS,CACQ;IAwhBhC,6GAiBC;IAED;;OAEG;IACH,4BA2LC;IAED;;OAEG;IACH,yBAWC;IAED,uBAqBC;IAED,iCAEC;;CACJ;qBAj1BoB,gBAAgB;qBANK,gBAAgB;yBADjC,oBAAoB;sBASvB,gBAAgB;0BACoB,oBAAoB;sBALxD,wBAAwB;oBAF1B,sBAAsB"}
1
+ {"version":3,"file":"gridChild.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/gridChild.js"],"names":[],"mappings":"AA42BA;;;;;GAKG;AACH,qDALW,OAAO,yBAAyB,EAAE,uBAAuB,CAAC,MAAM,CAAC,sBACjE,OAAO,aACP,MAAM,GACJ,OAAO,yBAAyB,EAAE,WAAW,GAAG,SAAS,CAyBrE;AAcD;;;GAGG;AACH,iDAHW,OAAO,oBAAoB,EAAE,cAAc,GACzC,OAAO,oBAAoB,EAAE,QAAQ,CA6BjD;AAED;;;GAGG;AACH,uDAHW,OAAO,oBAAoB,EAAE,cAAc,GACzC,OAAO,oBAAoB,EAAE,QAAQ,CA4CjD;AAx8BD;IACI;;;;;;OAMG;IAEH;;;;OAIG;IACH,kBAJW,OAAO,YAAY,EAAE,OAAO,gBAC5B,OAAO,qBAAqB,EAAE,OAAO,UACrC,MAAM,EAwHhB;IArHG,gGAAgC;IAChC,0EAAgB;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,qBAAqB;IACrB,kBADW,MAAM,CACQ;IAEzB,iCAAiC;IACjC,wBADW,MAAM,GAAG,SAAS,CACU;IAEvC,qBAAqB;IACrB,aADW,MAAM,CACG;IAEpB,wBAAwB;IACxB,QADW,SAAS,CACQ;IA6hBhC,6GAiBC;IAED;;OAEG;IACH,4BA2LC;IAED;;OAEG;IACH,yBAWC;IAED,uBAqBC;IAED,iCAEC;;CACJ;qBAz1BoB,gBAAgB;qBANK,gBAAgB;yBADjC,oBAAoB;sBAYvB,gBAAgB;0BACoB,oBAAoB;sBARxD,wBAAwB;oBAF1B,sBAAsB"}
@@ -16,7 +16,10 @@ import Point from "../layout/point.js";
16
16
  import Rectangle from "../layout/rectangle.js";
17
17
  import createTitle, { resolveTitleSpec } from "../title.js";
18
18
  import UnitView from "../unitView.js";
19
- import { markViewAsNonAddressable } from "../viewSelectors.js";
19
+ import {
20
+ markViewAsChrome,
21
+ markViewAsNonAddressable,
22
+ } from "../viewSelectors.js";
20
23
  import Scrollbar from "./scrollbar.js";
21
24
  import SelectionRect, { INTERVAL_DRAG_ACTIVE_PARAM } from "./selectionRect.js";
22
25
  import { normalizeIntervalForSelection } from "../../scales/selectionDomainUtils.js";
@@ -101,6 +104,7 @@ export default class GridChild {
101
104
  markViewAsNonAddressable(this.background, {
102
105
  skipSubtree: true,
103
106
  });
107
+ markViewAsChrome(this.background, { skipSubtree: true });
104
108
  }
105
109
 
106
110
  const backgroundStrokeSpec = createBackgroundStroke(viewBackground);
@@ -118,6 +122,9 @@ export default class GridChild {
118
122
  markViewAsNonAddressable(this.backgroundStroke, {
119
123
  skipSubtree: true,
120
124
  });
125
+ markViewAsChrome(this.backgroundStroke, {
126
+ skipSubtree: true,
127
+ });
121
128
  }
122
129
 
123
130
  const titleSpec = resolveTitleSpec(
@@ -139,6 +146,7 @@ export default class GridChild {
139
146
  );
140
147
  this.title = unitView;
141
148
  markViewAsNonAddressable(this.title, { skipSubtree: true });
149
+ markViewAsChrome(this.title, { skipSubtree: true });
142
150
  }
143
151
  }
144
152
 
@@ -1 +1 @@
1
- {"version":3,"file":"gridView.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/gridView.js"],"names":[],"mappings":"AAmmCA;;GAEG;AACH,sHAUC;AA4DD;;;;;GAKG;AACH,4CAJW,OAAO,wBAAwB,EAAE,OAAO,UACxC,OAAO,oBAAoB,EAAE,UAAU,YACvC,QAAQ,aAmBlB;AAtpCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,8BAH2D,KAAK,SAAnD,OAAQ,oBAAoB,EAAE,aAAc;IA6CrD;;;;;;;;;OASG;IACH,kBARW,KAAK,WACL,OAAO,4BAA4B,EAAE,OAAO,gBAC5C,aAAa,yFAEb,MAAM,WACN,MAAM,YACN,OAAO,YAAY,EAAE,WAAW,EAyC1C;IAtBG,uBAA0B;IAwB9B;;OAEG;IACH,6FAEC;IAED;;;;;;OAMG;IACH,4FAFa,SAAS,CAIrB;IAED;;;;;;;OAOG;IACH,oGAHW,MAAM,GACJ,SAAS,CASrB;IAED;;;;;OAKG;IACH,iGAQC;IAED;;;;;OAKG;IACH,qBAFW,MAAM,QAUhB;IAeD;;OAEG;IACH,mBAFW,qEAAM,QAWhB;IAYD;;OAEG;IACH,sFAEC;IAED,yBAEC;IAED;;OAEG;IACH,sCAKC;IAED;;;;OAIG;IACH,gCAqCC;;CA6xBJ;qBAtlC0D,gBAAgB;sBADrD,wBAAwB;0BAEpB,qBAAqB;sBAQzB,gBAAgB"}
1
+ {"version":3,"file":"gridView.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/gridView.js"],"names":[],"mappings":"AAywCA;;GAEG;AACH,sHAUC;AA4DD;;;;;GAKG;AACH,4CAJW,OAAO,wBAAwB,EAAE,OAAO,UACxC,OAAO,oBAAoB,EAAE,UAAU,YACvC,QAAQ,aAmBlB;AA3zCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,8BAH2D,KAAK,SAAnD,OAAQ,oBAAoB,EAAE,aAAc;IA6CrD;;;;;;;;;OASG;IACH,kBARW,KAAK,WACL,OAAO,4BAA4B,EAAE,OAAO,gBAC5C,aAAa,yFAEb,MAAM,WACN,MAAM,YACN,OAAO,YAAY,EAAE,WAAW,EAyC1C;IAtBG,uBAA0B;IAwB9B;;OAEG;IACH,6FAEC;IAED;;;;;;OAMG;IACH,4FAFa,SAAS,CAIrB;IAED;;;;;;;OAOG;IACH,oGAHW,MAAM,GACJ,SAAS,CASrB;IAED;;;;;OAKG;IACH,iGAQC;IAED;;;;;OAKG;IACH,qBAFW,MAAM,QAUhB;IAeD;;OAEG;IACH,mBAFW,qEAAM,QAWhB;IAYD;;OAEG;IACH,sFAEC;IAED,yBAEC;IAED;;OAEG;IACH,sCAKC;IAED;;;;OAIG;IACH,gCAqCC;;CAu4BJ;qBAjsC0D,gBAAgB;sBADrD,wBAAwB;0BAEpB,qBAAqB;sBAQzB,gBAAgB"}