@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.
- package/dist/bundle/{esm-CgfVIRJ-.js → esm-BimDEpBb.js} +1 -1
- package/dist/bundle/{esm-DtE8VqAv.js → esm-Bvlm1uVk.js} +1 -1
- package/dist/bundle/{esm-sIoQYZ21.js → esm-CngqBe45.js} +17 -17
- package/dist/bundle/{esm-DQiq2Zhd.js → esm-D_euN86T.js} +43 -43
- package/dist/bundle/index.es.js +3253 -3137
- package/dist/bundle/index.js +97 -96
- package/dist/schema.json +352 -0
- package/dist/src/config/defaults/markDefaults.d.ts.map +1 -1
- package/dist/src/config/defaults/markDefaults.js +1 -12
- package/dist/src/config/defaults/scaleDefaults.d.ts.map +1 -1
- package/dist/src/config/defaults/scaleDefaults.js +1 -0
- package/dist/src/config/markConfig.d.ts.map +1 -1
- package/dist/src/config/markConfig.js +16 -8
- package/dist/src/config/themes.d.ts.map +1 -1
- package/dist/src/config/themes.js +15 -2
- package/dist/src/data/sources/lazy/registerBuiltInLazySources.js +2 -2
- package/dist/src/data/sources/lazy/registerCoreLazySources.d.ts +2 -0
- package/dist/src/data/sources/lazy/registerCoreLazySources.d.ts.map +1 -0
- package/dist/src/data/sources/lazy/registerCoreLazySources.js +2 -0
- package/dist/src/data/sources/lazy/tabixSource.d.ts +7 -0
- package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/tabixSource.js +18 -0
- package/dist/src/data/sources/lazy/tabixTsvSource.d.ts +37 -0
- package/dist/src/data/sources/lazy/tabixTsvSource.d.ts.map +1 -0
- package/dist/src/data/sources/lazy/tabixTsvSource.js +163 -0
- package/dist/src/genomeSpyBase.d.ts.map +1 -1
- package/dist/src/genomeSpyBase.js +4 -1
- package/dist/src/gl/webGLHelper.d.ts +5 -2
- package/dist/src/gl/webGLHelper.d.ts.map +1 -1
- package/dist/src/gl/webGLHelper.js +20 -3
- package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +1082 -0
- package/dist/src/marks/link.vertex.glsl.js +1 -1
- package/dist/src/minimal.d.ts.map +1 -1
- package/dist/src/minimal.js +5 -4
- package/dist/src/scale/scale.js +10 -2
- package/dist/src/scales/domainPlanner.js +1 -1
- package/dist/src/scales/scaleResolution.d.ts.map +1 -1
- package/dist/src/scales/scaleResolution.js +9 -3
- package/dist/src/scales/selectionDomainUtils.d.ts +10 -0
- package/dist/src/scales/selectionDomainUtils.d.ts.map +1 -1
- package/dist/src/scales/selectionDomainUtils.js +32 -3
- package/dist/src/spec/channel.d.ts +30 -0
- package/dist/src/spec/data.d.ts +40 -0
- package/dist/src/spec/parameter.d.ts +6 -0
- package/dist/src/spec/transform.d.ts +6 -0
- package/dist/src/view/axisGridView.d.ts.map +1 -1
- package/dist/src/view/axisGridView.js +2 -1
- package/dist/src/view/axisView.d.ts.map +1 -1
- package/dist/src/view/axisView.js +2 -1
- package/dist/src/view/facetView.d.ts.map +1 -1
- package/dist/src/view/facetView.js +2 -1
- package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
- package/dist/src/view/gridView/gridChild.js +9 -1
- package/dist/src/view/gridView/gridView.d.ts.map +1 -1
- package/dist/src/view/gridView/gridView.js +198 -32
- package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
- package/dist/src/view/gridView/scrollbar.js +5 -1
- package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
- package/dist/src/view/gridView/selectionRect.js +5 -1
- package/dist/src/view/gridView/separatorView.d.ts.map +1 -1
- package/dist/src/view/gridView/separatorView.js +5 -1
- package/dist/src/view/testUtils.d.ts +30 -3
- package/dist/src/view/testUtils.d.ts.map +1 -1
- package/dist/src/view/testUtils.js +51 -2
- package/dist/src/view/viewSelectors.d.ts +38 -10
- package/dist/src/view/viewSelectors.d.ts.map +1 -1
- package/dist/src/view/viewSelectors.js +67 -2
- package/dist/src/view/viewUtilTypes.d.ts +15 -0
- package/dist/src/view/viewUtils.d.ts.map +1 -1
- package/dist/src/view/viewUtils.js +10 -0
- package/package.json +2 -2
- package/LICENSE +0 -21
- /package/dist/bundle/{esm-BDFRLEuD.js → esm-C49STiCR.js} +0 -0
- /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);
|
|
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":"
|
|
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"}
|
package/dist/src/minimal.js
CHANGED
|
@@ -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.
|
|
6
|
-
*
|
|
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
|
|
11
|
-
//
|
|
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
|
|
package/dist/src/scale/scale.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
? +
|
|
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
|
|
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;
|
|
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 =
|
|
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 =
|
|
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;
|
|
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 =
|
|
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(
|
|
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 =
|
|
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
|
*/
|
package/dist/src/spec/data.d.ts
CHANGED
|
@@ -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,
|
|
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;
|
|
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,
|
|
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":"
|
|
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 {
|
|
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":"
|
|
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"}
|