From 4202488b2a5e3eb24928615eab0f4a4f4b44ee4e Mon Sep 17 00:00:00 2001 From: James Wexler Date: Mon, 1 Jul 2019 11:48:44 -0400 Subject: [PATCH] update build --- facets-dist/facets-jupyter.html | 687 ++++++++++++++++---------------- 1 file changed, 343 insertions(+), 344 deletions(-) diff --git a/facets-dist/facets-jupyter.html b/facets-dist/facets-jupyter.html index 396416e..d39f915 100755 --- a/facets-dist/facets-jupyter.html +++ b/facets-dist/facets-jupyter.html @@ -14610,12 +14610,12 @@ function Rh(b,d){var f=b.getName();0 @@ -19022,16 +19022,15 @@ function Tl(b,d,f,h,m){const w=Nj(d),l=new Plottable.Scales.Linear;var p=new Plottable.Scales.Category;const n=Nl(h);p.domain(w);p=new Plottable.Axes.Category(p,"bottom");const q=new Plottable.Axes.Numeric(n,"left");q.formatter(Ol());m&&(d=tk(d));let t=0;m=d.map((z,y)=>{z.forEach(D=>{D=Pj(D.getSampleCount());D>t&&(t=D)});const x=new Yj;x.name=f[y];x.rawBuckets=z;return x});b._tableData=bk(m,w);const v=new Plottable.Plots.Bar;d.forEach((z,y)=>v.addDataset(new Plottable.Dataset(z,{name:f[y]})));v.x(z=> w.indexOf(Oj(lj(z))),l).y(z=>Rl(b,z,t,h),n);v.attr("fill",(z,y,x)=>x.metadata().name,b.dataModel.colorScale).attr("opacity",b._chartAlpha);Pl(b,v,p,q,z=>v.entitiesAt(z),z=>Oj(lj(z))+": "+Pj(z.getSampleCount()).toLocaleString(),z=>new Hj(b.feature,lj(z)),z=>z.append("rect").attr("stroke","black").attr("fill","none").attr("stroke-width","1px"),(z,y)=>z.attr("x",y.position.x-y.selection._groups[0][0].width.baseVal.value/2).attr("y",y.position.y).attr("width",y.selection._groups[0][0].width.baseVal.value).attr("height", y.selection._groups[0][0].height.baseVal.value))}function Nl(b){return b?new Plottable.Scales.ModifiedLog:new Plottable.Scales.Linear}function Ol(){const b=Plottable.Formatters.shortScale();return d=>1E3>Math.abs(d)?String(d):b(d)}function Rl(b,d,f,h){d=Pj(d.getSampleCount());!h&&0{v.selectAll(".component").remove();z.selectAll(".component").remove();q.renderTo(b.$.chart);b._selectionElem=p(d.foreground());Ul(b,b.selection);v.on("mouseenter",()=>{b._onPointer=new plottable_helpers.PointerInteraction; -b._onPointerEnterFunction=x=>{x=m(x);0null==D.dataset.metadata().name||1===xk(b.dataModel).length?w(D.datum):D.dataset.metadata().name+": "+w(D.datum)).join("\n"),y.text(x),y.style("opacity","1"))};b._onPointer.onPointerMove(b._onPointerEnterFunction);b._onPointerExitFunction=function(){y.style("opacity","0")};b._onPointer.onPointerExit(b._onPointerExitFunction);b._onPointer.attachTo(d);"Value list length"!==b.chartSelection&&(b._onClick=new Plottable.Interactions.Click,b._onClickFunction= -x=>{x=m(x);0{b._onPointer.detachFrom();b._onClick.detachFrom()});null!=h&&t.columnPadding(q.componentAt(1).width()+(q.componentAt(0)?q.componentAt(0).width():0));t.renderTo(b.$.xaxis)})}}function Ul(b,d){b._selectionElem&&b._selectionElem.style("display",null==d||d.name!==b.feature?"none":"inline")} -function Vl(b,d){d.equals(b.selection)&&d.clear();b.selection=d;b.fire("feature-select",{selection:d})} +function Pl(b,d,f,h,m,w,l,p,n){if(!b._showTable){var q=new Plottable.Components.Table([[null,h,d],[null,null,null]]),t=new Plottable.Components.Table([[null,null],[null,f]]);Plottable.RenderController.renderPolicy();var v=d3.select(b.$.chart),z=d3.select(b.$.xaxis),y=d3.select(b.$.tooltip);b.async(()=>{v.selectAll(".component").remove();z.selectAll(".component").remove();q.renderTo(b.$.chart);b._selectionElem=p(d.foreground());b._updateSelectionVisibility(b.selection);v.on("mouseenter",()=>{b._onPointer= +new plottable_helpers.PointerInteraction;b._onPointerEnterFunction=x=>{x=m(x);0null==D.dataset.metadata().name||1===Cl(b.dataModel).length?w(D.datum):D.dataset.metadata().name+": "+w(D.datum)).join("\n"),y.text(x),y.style("opacity","1"))};b._onPointer.onPointerMove(b._onPointerEnterFunction);b._onPointerExitFunction=function(){y.style("opacity","0")};b._onPointer.onPointerExit(b._onPointerExitFunction);b._onPointer.attachTo(d);"Value list length"!==b.chartSelection&&(b._onClick= +new Plottable.Interactions.Click,b._onClickFunction=x=>{x=m(x);0{b._onPointer.detachFrom();b._onClick.detachFrom()});null!=h&&t.columnPadding(q.componentAt(1).width()+(q.componentAt(0)?q.componentAt(0).width():0));t.renderTo(b.$.xaxis)})}}function Ul(b,d){d.equals(b.selection)&&d.clear();b.selection=d;b.fire("feature-select",{selection:d})} Polymer({is:"facets-overview-chart",properties:{data:{type:Object,observer:"_updateData"},dataModel:Object,feature:String,_maxBucketsForBarChart:{type:Number,value:10,readOnly:!0},_chartAlpha:{type:Number,value:1},logScale:Boolean,showWeighted:Boolean,showPercentage:Boolean,chartSelection:{type:Number,observer:"_updateChartSelection"},selection:{type:Object,observer:"_updateSelectionVisibility",notify:!0},expandChart:Boolean,_selectionElem:Object,_minBarHeightRatio:{type:Number,value:.01,readOnly:!0}, _onClick:Object,_onClickFunction:Object,_onPointer:Object,_onPointerEnterFunction:Object,_onPointerExitFunction:Object,_tableData:Array,_showTable:{type:Boolean,value:!1},_chartType:Object,_chartClass:{type:String,computed:"_getChartClass(_showTable)"},_chartSvgClass:{type:String,computed:"_getChartSvgClass(expandChart)"},_xAxisSvgClass:{type:String,computed:"_getXAxisSvgClass(expandChart)"},_tableDataClass:{type:String,computed:"_getTableDataClass(expandChart)"}},observers:["_render(data, logScale, showWeighted, chartSelection, _showTable, expandChart, showPercentage, dataModel)"], _updateData(){this._showTable=!1},_updateChartSelection(){this._showTable=!1},_hasWeightedHistogram(b){return Uj(b)},_hasQuantiles(b){a:{if(b)for(let d=0;dLj(n,f,h)),this._chartType=ek(b,h,this._maxBucketsForBarChart),b=b.map(n=>n.name),"Value list length"===h||"Feature list length"===h||"Quantiles"===h?Ml(this,m,b,d):this._chartType===ck.HISTOGRAM?Ql(this,m,b,d,l):this._chartType===ck.CUMDIST_CHART?Sl(this,m,b,d):Tl(this,m,b,d,l))},_toggleShowTable(){this._showTable=!this._showTable},_getChartClass(b){return b?"hidechart":"showchart"}, -_getShowTableButtonText(b){return b?"show chart":"show raw data"},_getChartSvgClass(b){return b?"chart-big":"chart-small"},_getXAxisSvgClass(b){return b?"xaxis-big":"xaxis-small"},_getTableDataClass(b){return b?"data-list-big":"data-list-small"},_rowClick(b){Vl(this,new Hj(this.feature,b.currentTarget.dataValue))},_getEntryRowValue(b){return b.value},_getEntryRowClass(b,d){let f="dialog-row";null!=d&&d.name===this.feature&&d.stringValue===b.value&&(f+=" selected");return f},_getCountCellClass(b){return"dailog-row-entry count-cell"+ -(b?" weighted-cell":"")}}); +this._onClick&&this._onClick.offClick(this._onClickFunction);b&&(this._chartAlpha=2<=Cl(p).length?.4:1,m=b.map(n=>Lj(n,f,h)),this._chartType=ek(b,h,this._maxBucketsForBarChart),b=b.map(n=>n.name),"Value list length"===h||"Feature list length"===h||"Quantiles"===h?Ml(this,m,b,d):this._chartType===ck.HISTOGRAM?Ql(this,m,b,d,l):this._chartType===ck.CUMDIST_CHART?Sl(this,m,b,d):Tl(this,m,b,d,l))},_updateSelectionVisibility:function(b){this._selectionElem&&this._selectionElem.style("display",null==b|| +b.name!==this.feature?"none":"inline")},_toggleShowTable(){this._showTable=!this._showTable},_getChartClass(b){return b?"hidechart":"showchart"},_getShowTableButtonText(b){return b?"show chart":"show raw data"},_getChartSvgClass(b){return b?"chart-big":"chart-small"},_getXAxisSvgClass(b){return b?"xaxis-big":"xaxis-small"},_getTableDataClass(b){return b?"data-list-big":"data-list-small"},_rowClick(b){Ul(this,new Hj(this.feature,b.currentTarget.dataValue))},_getEntryRowValue(b){return b.value},_getEntryRowClass(b, +d){let f="dialog-row";null!=d&&d.name===this.feature&&d.stringValue===b.value&&(f+=" selected");return f},_getCountCellClass(b){return"dailog-row-entry count-cell"+(b?" weighted-cell":"")}}); @@ -19179,11 +19178,11 @@ @@ -19387,14 +19386,14 @@ @@ -19898,36 +19897,36 @@ @@ -19940,24 +19939,24 @@ @@ -21100,80 +21099,80 @@ See the License for the specific language governing permissions and limitations under the License. */ -const sn={bottom:6,left:6,right:6,top:6},tn={"\ufffcOTHER\ufffc":"other","\ufffcNO_WORDS\ufffc":"non-words","\ufffcALL_WORDS\ufffc":"other"},un=b=>null!==b&&b in tn?{label:tn[b],special:!0}:"number"!==typeof b&&"string"!==typeof b?{label:""+b,special:!0}:{label:rn(""+b),special:!1},vn="#4285F4 #DB4437 #F4B400 #0F9D58 #AB47BC #00ACC1 #FF7043 #9E9D24 #5C6BC0 #F06292 #00796B #C2185B".split(" "),wn="#4285F4 #0F9D58 #00ACC1 #9E9D24 #5C6BC0 #00796B #607D8B".split(" "),xn="#DB4437 #F4B400 #AB47BC #F06292 #AB47BC #795548 #FF7043 #C2185B".split(" "), -yn="#4285F4 #C53929 #F7CB4D #0B8043 #5E35B1 #80DEEA #FF7043 #C0CA33".split(" "),zn={"alignment-baseline":"middle",fill:"#444444","font-size":18,"font-style":"normal","text-anchor":"middle",x:0,y:0};class An extends bm{} -function Bn(b){const d=-b.camera.position.x*b.scale,f=b.camera.position.y*b.scale;b.cellBackgroundSVGRoot.attr("transform",`translate(${d},${f}) scale(${b.scale},${-b.scale})`);b.labelsAndAxesSVGRoot.attr("transform",`translate(${d},${f}) scale(${b.scale},${-b.scale})`);b.labelsAndAxesSVGRoot.selectAll(".unscale").attr("transform",`scale(${1/b.scale})`);b.axesLayer.selectAll(".axis").select("path").attr("d",h=>h.path(b.scale)).attr("stroke-width",()=>1.2/b.scale)} -function Cn(b){var d=b.labelsLayer.selectAll(".label");const f=d.filter(function(m){return(void 0===m.visible||!m.visible)&&b.isVisible(m,this)}).each(m=>m.visible=!0),h=d.filter(function(m){return(void 0===m.visible||m.visible)&&!b.isVisible(m,this)}).each(m=>m.visible=!1);f.selectAll(".opacity").transition().duration(b.elem.tweenDuration).attr("opacity",1);h.selectAll(".opacity").transition().duration(b.elem.tweenDuration).attr("opacity",0);d.filter(m=>!!m.scaleDown).selectAll(".scale").attr("transform", +const rn={bottom:6,left:6,right:6,top:6},sn={"\ufffcOTHER\ufffc":"other","\ufffcNO_WORDS\ufffc":"non-words","\ufffcALL_WORDS\ufffc":"other"},tn=b=>null!==b&&b in sn?{label:sn[b],special:!0}:"number"!==typeof b&&"string"!==typeof b?{label:""+b,special:!0}:{label:qn(""+b),special:!1},un="#4285F4 #DB4437 #F4B400 #0F9D58 #AB47BC #00ACC1 #FF7043 #9E9D24 #5C6BC0 #F06292 #00796B #C2185B".split(" "),vn="#4285F4 #0F9D58 #00ACC1 #9E9D24 #5C6BC0 #00796B #607D8B".split(" "),wn="#DB4437 #F4B400 #AB47BC #F06292 #AB47BC #795548 #FF7043 #C2185B".split(" "), +xn="#4285F4 #C53929 #F7CB4D #0B8043 #5E35B1 #80DEEA #FF7043 #C0CA33".split(" "),yn={"alignment-baseline":"middle",fill:"#444444","font-size":18,"font-style":"normal","text-anchor":"middle",x:0,y:0};class zn extends am{} +function An(b){const d=-b.camera.position.x*b.scale,f=b.camera.position.y*b.scale;b.cellBackgroundSVGRoot.attr("transform",`translate(${d},${f}) scale(${b.scale},${-b.scale})`);b.labelsAndAxesSVGRoot.attr("transform",`translate(${d},${f}) scale(${b.scale},${-b.scale})`);b.labelsAndAxesSVGRoot.selectAll(".unscale").attr("transform",`scale(${1/b.scale})`);b.axesLayer.selectAll(".axis").select("path").attr("d",h=>h.path(b.scale)).attr("stroke-width",()=>1.2/b.scale)} +function Bn(b){var d=b.labelsLayer.selectAll(".label");const f=d.filter(function(m){return(void 0===m.visible||!m.visible)&&b.isVisible(m,this)}).each(m=>m.visible=!0),h=d.filter(function(m){return(void 0===m.visible||m.visible)&&!b.isVisible(m,this)}).each(m=>m.visible=!1);f.selectAll(".opacity").transition().duration(b.elem.tweenDuration).attr("opacity",1);h.selectAll(".opacity").transition().duration(b.elem.tweenDuration).attr("opacity",0);d.filter(m=>!!m.scaleDown).selectAll(".scale").attr("transform", m=>`scale(${b.scale!!m.visible).select("path").transition().duration(b.elem.tweenDuration).attr("stroke-opacity",1);d.filter(m=>!m.visible).select("path").transition().duration(b.elem.tweenDuration).attr("stroke-opacity",0)} -function Dn(b){b.renderQueued||(b.renderQueued=!0,requestAnimationFrame(()=>{if(b.renderQueued){b.renderQueued=!1;var d=Date.now();b.endTimestamp>d&&Dn(b);if(b.spriteMesh&&(b.spriteMesh.time=d,81>+THREE.REVISION&&b.spriteMesh.onBeforeRender))b.spriteMesh.onBeforeRender();b.renderer&&b.renderer.render(b.scene,b.camera);if(b.spriteMesh&&b.spriteMesh.spriteAtlas&&(d=b.spriteMesh.spriteAtlas,!(d.drawQueue.length||0{if(b.renderQueued){b.renderQueued=!1;var d=Date.now();b.endTimestamp>d&&Cn(b);if(b.spriteMesh&&(b.spriteMesh.time=d,81>+THREE.REVISION&&b.spriteMesh.onBeforeRender))b.spriteMesh.onBeforeRender();b.renderer&&b.renderer.render(b.scene,b.camera);if(b.spriteMesh&&b.spriteMesh.spriteAtlas&&(d=b.spriteMesh.spriteAtlas,!(d.drawQueue.length||0({x:b.spriteMesh.getX(h),y:b.spriteMesh.getY(h)}));d=b.selectedLayer.selectAll(".selected").data(d);var f=d.enter().append("g").classed("selected",!0).attr("transform",h=>`translate(${.5+(h.x||0)},${.5+(h.y||0)}) scale(${3})`).style("opacity",0);f.append("rect").attr("x",-.5).attr("y",-.5).attr("width",1).attr("height",1).attr("stroke","#483d06").attr("stroke-linecap","round").attr("stroke-linejoin","round").attr("stroke-opacity",0).attr("stroke-width", +function Dn(b){var d=b.elem.selectedIndices.map(h=>({x:b.spriteMesh.getX(h),y:b.spriteMesh.getY(h)}));d=b.selectedLayer.selectAll(".selected").data(d);var f=d.enter().append("g").classed("selected",!0).attr("transform",h=>`translate(${.5+(h.x||0)},${.5+(h.y||0)}) scale(${3})`).style("opacity",0);f.append("rect").attr("x",-.5).attr("y",-.5).attr("width",1).attr("height",1).attr("stroke","#483d06").attr("stroke-linecap","round").attr("stroke-linejoin","round").attr("stroke-opacity",0).attr("stroke-width", .3).attr("fill-opacity",0);f.append("rect").attr("x",-.5).attr("y",-.5).attr("width",1).attr("height",1).attr("stroke","#fad411").attr("stroke-linecap","round").attr("stroke-linejoin","round").attr("stroke-opacity",0).attr("stroke-width",.15).attr("fill-opacity",0);f=f.merge(d);f.transition().attr("transform",h=>`translate(${.5+(h.x||0)},${.5+(h.y||0)}) scale(${.8})`).style("opacity",1);f.selectAll("rect").classed("rotate",!0).attr("stroke-opacity",1);d.exit().transition().style("opacity",0).remove()} -function Fn(b){var d=b.elem.comparedIndices.map(h=>({x:b.spriteMesh.getX(h),y:b.spriteMesh.getY(h)}));d=b.comparedLayer.selectAll(".compared").data(d);var f=d.enter().append("g").classed("compared",!0).attr("transform",h=>`translate(${.5+(h.x||0)},${.5+(h.y||0)}) scale(${3})`).style("opacity",0);f.append("rect").attr("x",-.5).attr("y",-.5).attr("width",1).attr("height",1).attr("stroke","#44ff44").attr("stroke-linecap","round").attr("stroke-linejoin","round").attr("stroke-opacity",0).attr("stroke-width", +function En(b){var d=b.elem.comparedIndices.map(h=>({x:b.spriteMesh.getX(h),y:b.spriteMesh.getY(h)}));d=b.comparedLayer.selectAll(".compared").data(d);var f=d.enter().append("g").classed("compared",!0).attr("transform",h=>`translate(${.5+(h.x||0)},${.5+(h.y||0)}) scale(${3})`).style("opacity",0);f.append("rect").attr("x",-.5).attr("y",-.5).attr("width",1).attr("height",1).attr("stroke","#44ff44").attr("stroke-linecap","round").attr("stroke-linejoin","round").attr("stroke-opacity",0).attr("stroke-width", .3).attr("fill-opacity",0);f.append("rect").attr("x",-.5).attr("y",-.5).attr("width",1).attr("height",1).attr("stroke","#1d6b1d").attr("stroke-linecap","round").attr("stroke-linejoin","round").attr("stroke-opacity",0).attr("stroke-width",.15).attr("fill-opacity",0);f=f.merge(d);f.transition().attr("transform",h=>`translate(${.5+(h.x||0)},${.5+(h.y||0)}) scale(${.8})`).style("opacity",1);f.selectAll("rect").classed("rotate",!0).attr("stroke-opacity",1);d.exit().transition().style("opacity",0).remove()} -function Gn(b,d){b.elem.verticalFacet in b.stats&&wm(b.grid,b.grid.horizontalKeys[b.grid.horizontalKeys.length-1]).forEach(f=>{const h=b.verticalFacetInfo.labelingFunction(f.verticalKey),m=new An;m.text=h.label;m.x=f.x+f.width;m.y=f.contentY+f.innerHeight/2;m.side=$l.Right;m.cell=f;m.attributes={"alignment-baseline":"middle",fill:"#666666","font-size":zn["font-size"],"text-anchor":"start","font-style":h.special?"italic":"normal"};m.offsetPosition={x:8};m.minScale=zn["font-size"]/(f.height+b.grid.cellMargin); +function Fn(b,d){b.elem.verticalFacet in b.stats&&vm(b.grid,b.grid.horizontalKeys[b.grid.horizontalKeys.length-1]).forEach(f=>{const h=b.verticalFacetInfo.labelingFunction(f.verticalKey),m=new zn;m.text=h.label;m.x=f.x+f.width;m.y=f.contentY+f.innerHeight/2;m.side=Zl.Right;m.cell=f;m.attributes={"alignment-baseline":"middle",fill:"#666666","font-size":yn["font-size"],"text-anchor":"start","font-style":h.special?"italic":"normal"};m.offsetPosition={x:8};m.minScale=yn["font-size"]/(f.height+b.grid.cellMargin); m.scaleDown=!0;d.push(m)})} -function Hn(b,d){b.elem.horizontalFacet in b.stats&&vm(b.grid,b.grid.verticalKeys[b.grid.verticalKeys.length-1]).forEach(f=>{const h=b.horizontalFacetInfo.labelingFunction(f.horizontalKey),m=new An;m.text=h.label;m.x=f.contentX+f.innerWidth/2;m.y=f.y+f.height;m.side=$l.Top;m.cell=f;m.rotate=-45;m.attributes={"alignment-baseline":"ideographic",fill:"#dd6622","font-size":zn["font-size"],"text-anchor":"start","font-style":h.special?"italic":"normal"};m.offsetPosition={x:8,y:-8};m.minScale=zn["font-size"]/ -(f.width+b.grid.cellMargin/2);m.scaleDown=!0;d.push(m)})}function In(b,d=3){if(null===b)return"null";b=parseFloat(b.toPrecision(d));return 1E3<=Math.abs(b)?d3.format(`.${d}s`)(b):`${b}`} -function Jn(b,d){if("scatter"===b.elem.positionMode&&b.elem.verticalPosition in b.stats){var f=b.stats[b.elem.verticalPosition],[h,m]=d3.scaleLinear().domain([f.numberMin,f.numberMax]).nice().domain(),w=In(h),l=In(m),p=(w.length+3)/(w.length+l.length+6);rm(b.grid,n=>{if(n.items.length){for(var q=n.siblings.left;!(!q||q.items.length||q.siblings.above&&q.siblings.above.items.length);)q=q.siblings.left;q=q?q.contentX+q.innerWidth:-Infinity;var t=n.x+8,v=n.contentY,z=n.contentY+n.innerHeight,y=new An; -y.id=`${n.compoundKey}-left-start`;y.text=w;y.x=n.x+8;y.y=n.y+(b.elem.horizontalPosition?8:0);y.side=$l.Left;y.cell=n;y.rotate=-90;y.attributes={"alignment-baseline":"ideographic",fill:"#2255aa","font-size":16,"text-anchor":"start"};y.offsetPosition={x:sn.bottom,y:-sn.right};y.boundingBox={bottom:v,left:q,right:t,top:v+n.innerHeight*(Math.max(p,.1)-.05)};y.elementMargin=sn;d.push(y);y=new An;y.id=`${n.compoundKey}-left-end`;y.text=l;y.x=n.x+8;y.y=n.y+n.height;y.side=$l.Left;y.cell=n;y.rotate=-90; -y.attributes={"alignment-baseline":"ideographic",fill:"#2255aa","font-size":16,"text-anchor":"end"};y.offsetPosition={x:-sn.top,y:-sn.right};y.boundingBox={bottom:v+n.innerHeight*(Math.min(p,.9)+.05),left:q,right:t,top:z};y.elementMargin=sn;d.push(y)}})}} -function fp(b,d){if("scatter"===b.elem.positionMode&&b.elem.horizontalPosition in b.stats){var f=b.stats[b.elem.horizontalPosition],[h,m]=d3.scaleLinear().domain([f.numberMin,f.numberMax]).nice().domain(),w=In(h),l=In(m),p=(w.length+3)/(w.length+l.length+6);rm(b.grid,n=>{if(n.items.length){for(var q=n.siblings.below;!(!q||q.items.length||q.siblings.right&&q.siblings.right.items.length);)q=q.siblings.below;q=q?q.contentY+q.innerHeight:-Infinity;var t=n.contentY,v=n.contentX,z=v+n.innerWidth,y=new An; -y.id=`${n.compoundKey}-bottom-start`;y.text=w;y.x=n.x+(b.elem.verticalPosition?8:0);y.y=n.y+8;y.side=$l.Bottom;y.cell=n;y.attributes={"alignment-baseline":"hanging",fill:"#118844","font-size":16,"text-anchor":"start"};y.offsetPosition={x:sn.left,y:sn.top};y.boundingBox={bottom:q,left:v,right:v+n.innerWidth*(Math.max(p,.1)-.05),top:t};y.elementMargin=sn;d.push(y);y=new An;y.id=`${n.compoundKey}-bottom-end`;y.text=l;y.x=n.x+n.width;y.y=n.y+8;y.side=$l.Bottom;y.cell=n;y.attributes={"alignment-baseline":"hanging", -fill:"#118844","font-size":16,"text-anchor":"end"};y.offsetPosition={x:-sn.right,y:sn.top};y.boundingBox={bottom:q,left:v+n.innerWidth*(Math.min(p,.9)+.05),right:z,top:t};y.elementMargin=sn;d.push(y)}})}}function gp(b){const d=[];Gn(b,d);Hn(b,d);Jn(b,d);fp(b,d);return d} -function hp(b){var d=um(b.grid).filter(f=>f.items.length);d=b.cellBackgroundLayer.selectAll(".cell").data(d,f=>f.compoundKey);d.enter().append("rect").attr("class","cell").attr("x",f=>f.contentX||0).attr("y",f=>f.contentY||0).attr("width",f=>f.innerWidth||0).attr("height",f=>f.innerHeight||0).attr("fill","#f8f8f9").attr("fill-opacity",0).merge(d).transition().duration(b.elem.tweenDuration).attr("x",f=>f.contentX||0).attr("y",f=>f.contentY||0).attr("width",f=>f.innerWidth||0).attr("height",f=>f.innerHeight|| +function Gn(b,d){b.elem.horizontalFacet in b.stats&&um(b.grid,b.grid.verticalKeys[b.grid.verticalKeys.length-1]).forEach(f=>{const h=b.horizontalFacetInfo.labelingFunction(f.horizontalKey),m=new zn;m.text=h.label;m.x=f.contentX+f.innerWidth/2;m.y=f.y+f.height;m.side=Zl.Top;m.cell=f;m.rotate=-45;m.attributes={"alignment-baseline":"ideographic",fill:"#dd6622","font-size":yn["font-size"],"text-anchor":"start","font-style":h.special?"italic":"normal"};m.offsetPosition={x:8,y:-8};m.minScale=yn["font-size"]/ +(f.width+b.grid.cellMargin/2);m.scaleDown=!0;d.push(m)})}function Hn(b,d=3){if(null===b)return"null";b=parseFloat(b.toPrecision(d));return 1E3<=Math.abs(b)?d3.format(`.${d}s`)(b):`${b}`} +function dp(b,d){if("scatter"===b.elem.positionMode&&b.elem.verticalPosition in b.stats){var f=b.stats[b.elem.verticalPosition],[h,m]=d3.scaleLinear().domain([f.numberMin,f.numberMax]).nice().domain(),w=Hn(h),l=Hn(m),p=(w.length+3)/(w.length+l.length+6);qm(b.grid,n=>{if(n.items.length){for(var q=n.siblings.left;!(!q||q.items.length||q.siblings.above&&q.siblings.above.items.length);)q=q.siblings.left;q=q?q.contentX+q.innerWidth:-Infinity;var t=n.x+8,v=n.contentY,z=n.contentY+n.innerHeight,y=new zn; +y.id=`${n.compoundKey}-left-start`;y.text=w;y.x=n.x+8;y.y=n.y+(b.elem.horizontalPosition?8:0);y.side=Zl.Left;y.cell=n;y.rotate=-90;y.attributes={"alignment-baseline":"ideographic",fill:"#2255aa","font-size":16,"text-anchor":"start"};y.offsetPosition={x:rn.bottom,y:-rn.right};y.boundingBox={bottom:v,left:q,right:t,top:v+n.innerHeight*(Math.max(p,.1)-.05)};y.elementMargin=rn;d.push(y);y=new zn;y.id=`${n.compoundKey}-left-end`;y.text=l;y.x=n.x+8;y.y=n.y+n.height;y.side=Zl.Left;y.cell=n;y.rotate=-90; +y.attributes={"alignment-baseline":"ideographic",fill:"#2255aa","font-size":16,"text-anchor":"end"};y.offsetPosition={x:-rn.top,y:-rn.right};y.boundingBox={bottom:v+n.innerHeight*(Math.min(p,.9)+.05),left:q,right:t,top:z};y.elementMargin=rn;d.push(y)}})}} +function ep(b,d){if("scatter"===b.elem.positionMode&&b.elem.horizontalPosition in b.stats){var f=b.stats[b.elem.horizontalPosition],[h,m]=d3.scaleLinear().domain([f.numberMin,f.numberMax]).nice().domain(),w=Hn(h),l=Hn(m),p=(w.length+3)/(w.length+l.length+6);qm(b.grid,n=>{if(n.items.length){for(var q=n.siblings.below;!(!q||q.items.length||q.siblings.right&&q.siblings.right.items.length);)q=q.siblings.below;q=q?q.contentY+q.innerHeight:-Infinity;var t=n.contentY,v=n.contentX,z=v+n.innerWidth,y=new zn; +y.id=`${n.compoundKey}-bottom-start`;y.text=w;y.x=n.x+(b.elem.verticalPosition?8:0);y.y=n.y+8;y.side=Zl.Bottom;y.cell=n;y.attributes={"alignment-baseline":"hanging",fill:"#118844","font-size":16,"text-anchor":"start"};y.offsetPosition={x:rn.left,y:rn.top};y.boundingBox={bottom:q,left:v,right:v+n.innerWidth*(Math.max(p,.1)-.05),top:t};y.elementMargin=rn;d.push(y);y=new zn;y.id=`${n.compoundKey}-bottom-end`;y.text=l;y.x=n.x+n.width;y.y=n.y+8;y.side=Zl.Bottom;y.cell=n;y.attributes={"alignment-baseline":"hanging", +fill:"#118844","font-size":16,"text-anchor":"end"};y.offsetPosition={x:-rn.right,y:rn.top};y.boundingBox={bottom:q,left:v+n.innerWidth*(Math.min(p,.9)+.05),right:z,top:t};y.elementMargin=rn;d.push(y)}})}}function fp(b){const d=[];Fn(b,d);Gn(b,d);dp(b,d);ep(b,d);return d} +function gp(b){var d=tm(b.grid).filter(f=>f.items.length);d=b.cellBackgroundLayer.selectAll(".cell").data(d,f=>f.compoundKey);d.enter().append("rect").attr("class","cell").attr("x",f=>f.contentX||0).attr("y",f=>f.contentY||0).attr("width",f=>f.innerWidth||0).attr("height",f=>f.innerHeight||0).attr("fill","#f8f8f9").attr("fill-opacity",0).merge(d).transition().duration(b.elem.tweenDuration).attr("x",f=>f.contentX||0).attr("y",f=>f.contentY||0).attr("width",f=>f.innerWidth||0).attr("height",f=>f.innerHeight|| 0).attr("fill-opacity",1);d.exit().transition().duration(b.elem.tweenDuration).remove().attr("fill-opacity",0)} -function ip(b){const d=[];"stacked"!==b.elem.positionMode&&rm(b.grid,m=>{if(m.items.length){if(b.elem.verticalPosition){const w=new ym($l.Left,m);d.push(w)}b.elem.horizontalPosition&&(m=new ym($l.Bottom,m),d.push(m))}});const f=b.axesLayer.selectAll(".axis").data(d,m=>m.key()),h=f.enter().append("g").attr("class","axis").attr("opacity",0);h.append("path").attr("d",m=>m.path(b.scale)).attr("stroke",m=>m.side===$l.Left?"#2255aa":"#118844").attr("stroke-width",()=>1.2/b.scale).attr("stroke-opacity", +function hp(b){const d=[];"stacked"!==b.elem.positionMode&&qm(b.grid,m=>{if(m.items.length){if(b.elem.verticalPosition){const w=new xm(Zl.Left,m);d.push(w)}b.elem.horizontalPosition&&(m=new xm(Zl.Bottom,m),d.push(m))}});const f=b.axesLayer.selectAll(".axis").data(d,m=>m.key()),h=f.enter().append("g").attr("class","axis").attr("opacity",0);h.append("path").attr("d",m=>m.path(b.scale)).attr("stroke",m=>m.side===Zl.Left?"#2255aa":"#118844").attr("stroke-width",()=>1.2/b.scale).attr("stroke-opacity", 0).attr("fill","none");h.merge(f).transition().duration(b.elem.tweenDuration).attr("opacity",1);h.merge(f).select("path").transition().duration(b.elem.tweenDuration).attr("d",m=>m.path(b.scale));f.exit().transition().duration(b.elem.tweenDuration).remove().attr("opacity",0)} -function jp(b){if(b.scale){b.labels=gp(b);var d=b.labelsLayer.selectAll(".label").data(b.labels,l=>l.id||`${l.side}-${l.text}`);d.each(function(l){const p=d3.select(this),n=p.select(".current");l.text!==n.text()&&(n.attr("fill-opacity",0),p.select(".old").attr("fill-opacity",1).text(n.text()))}).select(".current").text(l=>l.text);var f=l=>p=>void 0===p.attributes||void 0===p.attributes[l]?zn[l]:p.attributes[l],h=d.enter().append("g").attr("class","label").attr("transform",l=>`translate(${l.x},${l.y})`), -m=h.append("g").attr("class","flip").attr("transform","scale(1,-1)").append("g").attr("class","rotate").attr("transform",l=>"rotate("+("rotate"in l?l.rotate:0)+")").append("g").attr("class","unscale").attr("transform",`scale(${1/b.scale})`).append("g").attr("class","position").append("g").attr("class","opacity scale"),w=m.append("text").attr("class","old").attr("fill-opacity",0);m=m.append("text").attr("class","current").attr("fill-opacity",0).text(l=>l.text);for(const l in zn)zn.hasOwnProperty(l)&& -(w.attr(l,f(l)),m.attr(l,f(l)));w=h.merge(d).transition().duration(b.elem.tweenDuration).attr("transform",l=>`translate(${l.x},${l.y})`);w.select(".rotate").attr("transform",l=>"rotate("+("rotate"in l?l.rotate:0)+")");w.filter(l=>!!l.offsetPosition).select(".position").attr("transform",l=>`translate(${l.offsetPosition.x||0},${l.offsetPosition.y||0})`);h=w.select(".old").attr("fill-opacity",0);w=w.select(".current").attr("fill-opacity",1);for(const l in zn)zn.hasOwnProperty(l)&&(h.attr(l,f(l)),w.attr(l, +function ip(b){if(b.scale){b.labels=fp(b);var d=b.labelsLayer.selectAll(".label").data(b.labels,l=>l.id||`${l.side}-${l.text}`);d.each(function(l){const p=d3.select(this),n=p.select(".current");l.text!==n.text()&&(n.attr("fill-opacity",0),p.select(".old").attr("fill-opacity",1).text(n.text()))}).select(".current").text(l=>l.text);var f=l=>p=>void 0===p.attributes||void 0===p.attributes[l]?yn[l]:p.attributes[l],h=d.enter().append("g").attr("class","label").attr("transform",l=>`translate(${l.x},${l.y})`), +m=h.append("g").attr("class","flip").attr("transform","scale(1,-1)").append("g").attr("class","rotate").attr("transform",l=>"rotate("+("rotate"in l?l.rotate:0)+")").append("g").attr("class","unscale").attr("transform",`scale(${1/b.scale})`).append("g").attr("class","position").append("g").attr("class","opacity scale"),w=m.append("text").attr("class","old").attr("fill-opacity",0);m=m.append("text").attr("class","current").attr("fill-opacity",0).text(l=>l.text);for(const l in yn)yn.hasOwnProperty(l)&& +(w.attr(l,f(l)),m.attr(l,f(l)));w=h.merge(d).transition().duration(b.elem.tweenDuration).attr("transform",l=>`translate(${l.x},${l.y})`);w.select(".rotate").attr("transform",l=>"rotate("+("rotate"in l?l.rotate:0)+")");w.filter(l=>!!l.offsetPosition).select(".position").attr("transform",l=>`translate(${l.offsetPosition.x||0},${l.offsetPosition.y||0})`);h=w.select(".old").attr("fill-opacity",0);w=w.select(".current").attr("fill-opacity",1);for(const l in yn)yn.hasOwnProperty(l)&&(h.attr(l,f(l)),w.attr(l, f(l)));d.exit().transition().duration(b.elem.tweenDuration).remove().select(".current").attr("fill-opacity",0)}} -function kp(b){const d=b.elem.getBoundingClientRect();d.width&&d.height?(b.labelsAndAxesSVG.attr("width",d.width).attr("height",d.height),b.cellBackgroundSVG.attr("width",d.width).attr("height",d.height),b.renderer&&b.renderer.setSize(d.width,d.height),b.camera.right=d.width/b.scale,b.camera.bottom=-d.height/b.scale,b.camera.updateProjectionMatrix(),Dn(b)):requestAnimationFrame(()=>kp(b))} -function lp(b){b.spriteMesh&&(b.scene.remove(b.spriteMesh),Mm(b.spriteMesh.spriteAtlas),delete b.spriteMesh);const d=b.elem.data,f=d.length;var h=b.elem.spriteImageWidth,m=b.elem.spriteImageHeight;const w=h/m;b.spriteMesh=new jn(f,h,m);b.scene.add(b.spriteMesh);b.spriteMesh.spriteAtlas.onDrawFinished=()=>Dn(b);b.items=[];h=Math.ceil(Math.sqrt(f));m=Math.ceil(f/h);for(let l=0;l{const q=Date.now();l.sprite.rebase(q);l.sprite.x=p;l.sprite.y=n;l.sprite.opacity=1;l.sprite.timestamp=q+b.elem.tweenDuration;mp(b,l.sprite.timestamp)}} -function np(b){if(!b.ignoreChange&&b.grid){op(b);var d=b.elem.imageFieldName;if(d in b.stats){var f=b.grid.items;for(let h=0;h{const l=Date.now();m.baseTextureTimestamp=l;m.baseTextureIndex=0;m.textureTimestamp=l+b.elem.tweenDuration;m.textureIndex=1;mp(b,m.textureTimestamp)})}}else delete b.lastAtlasUrl,pp(b)}} -function qp(b){if(b.grid){rp(b);var d=b.verticalFacetInfo=sp(b,b.elem.verticalFacet,b.elem.verticalBuckets,b.elem.verticalBagOfWords,!0);b.grid.verticalFacet=d.facetingFunction;b.grid.verticalKeyCompare=d.keyCompareFunction;d=b.horizontalFacetInfo=sp(b,b.elem.horizontalFacet,b.elem.horizontalBuckets,b.elem.horizontalBagOfWords,!1);b.grid.horizontalFacet=d.facetingFunction;b.grid.horizontalKeyCompare=d.keyCompareFunction;b.elem.fitGridAspectRatioToViewport?(d=b.elem.getBoundingClientRect(),b.grid.targetGridAspectRatio= -d&&d.width&&d.height?d.width/d.height||1:1):b.grid.targetGridAspectRatio=1;tm(b.grid);hp(b);ip(b);jp(b);En(b);Fn(b);b.fitToViewport()}} -function tp(b){if(b.grid){rp(b);var d=b.grid.cellPadding,f=jm.Tight,h=jm.Uniform,m=!1;if("stacked"===b.elem.positionMode)m=b.grid.verticalGridAlignment!==f||b.grid.horizontalGridAlignment!==f,b.grid.verticalGridAlignment=f,b.grid.horizontalGridAlignment=f,b.grid.cellPadding.top=0,b.grid.cellPadding.left=0,b.grid.cellPadding.right=0,b.grid.cellPadding.bottom=0,b.grid.minCellAspectRatio=0,b.grid.maxCellAspectRatio=Infinity;else{b.elem.verticalPosition?(m=b.grid.verticalGridAlignment!==h,b.grid.verticalGridAlignment= -h):(m=b.grid.verticalGridAlignment!==f,b.grid.verticalGridAlignment=f);b.elem.horizontalPosition?(m=m||b.grid.horizontalGridAlignment!==h,b.grid.horizontalGridAlignment=h):(m=m||b.grid.horizontalGridAlignment!==f,b.grid.horizontalGridAlignment=f);const w=up(b,b.elem.horizontalPosition)||fm,l=up(b,b.elem.verticalPosition)||gm;b.grid.computeItemPosition=(p,n,q,t)=>({x:w(p,n,q,t),y:l(p,n,q,t)});f=b.elem.verticalPosition?8:0;h=b.elem.horizontalPosition?8:0;m=m||0!==d.top||f!==d.left||0!==d.right||h!== -d.bottom;b.grid.cellPadding.top=0;b.grid.cellPadding.right=0;b.grid.cellPadding.left=f;b.grid.cellPadding.bottom=h;b.grid.minCellAspectRatio=1;b.grid.maxCellAspectRatio=2}m?(tm(b.grid),hp(b)):sm(b.grid);ip(b);jp(b);En(b);Fn(b);b.fitToViewport()}} -function vp(b){if(b.grid){var d=b.elem.colorBy;if(d in b.stats){d=b.stats[d];var f=wp(b);d=d.uniqueCount>f.length&&on(d)?xp(b):yp(b,f);f=b.grid.items;var h=Date.now(),m=h+b.elem.tweenDuration;for(var w=0;w{b.atlasUrlChangeTimer&&b.atlasUrlChange()},100)} -function op(b){const d=b.grid.items;Mm(b.spriteMesh.spriteAtlas);const f=Date.now(),h=f+b.elem.fadeDuration;for(let m=0;m+f)return{facetingFunction:()=>"",keyCompareFunction:()=>0,labelingFunction:un};const w=b.stats[d];if(w.wordTree&&1d in p.data?p.data[d]:null,keyCompareFunction:on(w)?em:m?dm:cm,labelingFunction:un};if(on(w)&&w.numberMax!==w.numberMin)return Bp(b,d,f);b=Object.keys(w.valueHash);b.sort((p,n)=>w.valueHash[n].count-w.valueHash[p].count);const l=b.slice(0, -f).reduce((p,n)=>{p[n]=!0;return p},{});return{facetingFunction:p=>{if(!(d in p.data))return null;p=p.data[d];return ln(p)in l?p:"\ufffcOTHER\ufffc"},keyCompareFunction:m?dm:cm,labelingFunction:un}}function up(b,d){b=b.stats[d];if(!b||!on(b))return null;const f=d3.scaleLinear().domain([b.numberMin,b.numberMax]).nice();return h=>f(h.data[d])}function wp(b){switch(b.elem.paletteChoice){case "warm":return xn;case "cool":return wn;case "assist":return yn;default:return vn}} -function xp(b){const d=b.elem.colorBy,f=b.stats[d];var h=b.grid.items,m=d3.rgb("#A52714"),w=d3.scaleLinear();w.domain([f.numberMin,f.numberMax]).range(["white","#1C3AA9"]).nice();const l=[];for(var p=0;pjp(b))} +function kp(b){b.spriteMesh&&(b.scene.remove(b.spriteMesh),Lm(b.spriteMesh.spriteAtlas),delete b.spriteMesh);const d=b.elem.data,f=d.length;var h=b.elem.spriteImageWidth,m=b.elem.spriteImageHeight;const w=h/m;b.spriteMesh=new hn(f,h,m);b.scene.add(b.spriteMesh);b.spriteMesh.spriteAtlas.onDrawFinished=()=>Cn(b);b.items=[];h=Math.ceil(Math.sqrt(f));m=Math.ceil(f/h);for(let l=0;l{const q=Date.now();l.sprite.rebase(q);l.sprite.x=p;l.sprite.y=n;l.sprite.opacity=1;l.sprite.timestamp=q+b.elem.tweenDuration;lp(b,l.sprite.timestamp)}} +function mp(b){if(!b.ignoreChange&&b.grid){np(b);var d=b.elem.imageFieldName;if(d in b.stats){var f=b.grid.items;for(let h=0;h{const l=Date.now();m.baseTextureTimestamp=l;m.baseTextureIndex=0;m.textureTimestamp=l+b.elem.tweenDuration;m.textureIndex=1;lp(b,m.textureTimestamp)})}}else delete b.lastAtlasUrl,op(b)}} +function pp(b){if(b.grid){qp(b);var d=b.verticalFacetInfo=rp(b,b.elem.verticalFacet,b.elem.verticalBuckets,b.elem.verticalBagOfWords,!0);b.grid.verticalFacet=d.facetingFunction;b.grid.verticalKeyCompare=d.keyCompareFunction;d=b.horizontalFacetInfo=rp(b,b.elem.horizontalFacet,b.elem.horizontalBuckets,b.elem.horizontalBagOfWords,!1);b.grid.horizontalFacet=d.facetingFunction;b.grid.horizontalKeyCompare=d.keyCompareFunction;b.elem.fitGridAspectRatioToViewport?(d=b.elem.getBoundingClientRect(),b.grid.targetGridAspectRatio= +d&&d.width&&d.height?d.width/d.height||1:1):b.grid.targetGridAspectRatio=1;sm(b.grid);gp(b);hp(b);ip(b);Dn(b);En(b);b.fitToViewport()}} +function sp(b){if(b.grid){qp(b);var d=b.grid.cellPadding,f=im.Tight,h=im.Uniform,m=!1;if("stacked"===b.elem.positionMode)m=b.grid.verticalGridAlignment!==f||b.grid.horizontalGridAlignment!==f,b.grid.verticalGridAlignment=f,b.grid.horizontalGridAlignment=f,b.grid.cellPadding.top=0,b.grid.cellPadding.left=0,b.grid.cellPadding.right=0,b.grid.cellPadding.bottom=0,b.grid.minCellAspectRatio=0,b.grid.maxCellAspectRatio=Infinity;else{b.elem.verticalPosition?(m=b.grid.verticalGridAlignment!==h,b.grid.verticalGridAlignment= +h):(m=b.grid.verticalGridAlignment!==f,b.grid.verticalGridAlignment=f);b.elem.horizontalPosition?(m=m||b.grid.horizontalGridAlignment!==h,b.grid.horizontalGridAlignment=h):(m=m||b.grid.horizontalGridAlignment!==f,b.grid.horizontalGridAlignment=f);const w=tp(b,b.elem.horizontalPosition)||em,l=tp(b,b.elem.verticalPosition)||fm;b.grid.computeItemPosition=(p,n,q,t)=>({x:w(p,n,q,t),y:l(p,n,q,t)});f=b.elem.verticalPosition?8:0;h=b.elem.horizontalPosition?8:0;m=m||0!==d.top||f!==d.left||0!==d.right||h!== +d.bottom;b.grid.cellPadding.top=0;b.grid.cellPadding.right=0;b.grid.cellPadding.left=f;b.grid.cellPadding.bottom=h;b.grid.minCellAspectRatio=1;b.grid.maxCellAspectRatio=2}m?(sm(b.grid),gp(b)):rm(b.grid);hp(b);ip(b);Dn(b);En(b);b.fitToViewport()}} +function up(b){if(b.grid){var d=b.elem.colorBy;if(d in b.stats){d=b.stats[d];var f=vp(b);d=d.uniqueCount>f.length&&nn(d)?wp(b):xp(b,f);f=b.grid.items;var h=Date.now(),m=h+b.elem.tweenDuration;for(var w=0;w{b.atlasUrlChangeTimer&&b.atlasUrlChange()},100)} +function np(b){const d=b.grid.items;Lm(b.spriteMesh.spriteAtlas);const f=Date.now(),h=f+b.elem.fadeDuration;for(let m=0;m+f)return{facetingFunction:()=>"",keyCompareFunction:()=>0,labelingFunction:tn};const w=b.stats[d];if(w.wordTree&&1d in p.data?p.data[d]:null,keyCompareFunction:nn(w)?dm:m?cm:bm,labelingFunction:tn};if(nn(w)&&w.numberMax!==w.numberMin)return Ap(b,d,f);b=Object.keys(w.valueHash);b.sort((p,n)=>w.valueHash[n].count-w.valueHash[p].count);const l=b.slice(0, +f).reduce((p,n)=>{p[n]=!0;return p},{});return{facetingFunction:p=>{if(!(d in p.data))return null;p=p.data[d];return kn(p)in l?p:"\ufffcOTHER\ufffc"},keyCompareFunction:m?cm:bm,labelingFunction:tn}}function tp(b,d){b=b.stats[d];if(!b||!nn(b))return null;const f=d3.scaleLinear().domain([b.numberMin,b.numberMax]).nice();return h=>f(h.data[d])}function vp(b){switch(b.elem.paletteChoice){case "warm":return wn;case "cool":return vn;case "assist":return xn;default:return un}} +function wp(b){const d=b.elem.colorBy,f=b.stats[d];var h=b.grid.items,m=d3.rgb("#A52714"),w=d3.scaleLinear();w.domain([f.numberMin,f.numberMax]).range(["white","#1C3AA9"]).nice();const l=[];for(var p=0;p{if(!(d in q.data||d in t.data))return 0;if(!(d in q.data))return-1;if(!(d in t.data))return 1;q=q.data[d];t=t.data[d];if(q===t)return 0;const v="number"!==typeof q||isNaN(q),z="number"!==typeof t||isNaN(t);return v&&z?0:v?-1:z?1:q-t};return l} -function yp(b,d){const f=b.elem.colorBy,h=b.stats[f],m=b.grid.items,w=Object.keys(h.valueHash);b.elem.stableColors?w.sort():w.sort((z,y)=>h.valueHash[y].count-h.valueHash[z].count);const l=Math.min(d.length,w.length),p=w.slice(0,l).reduce((z,y,x)=>{z[y]=x;return z},{}),n=d3.rgb("#F0F0F0"),q=d.map(z=>d3.rgb(z));let t=!1;const v=[];for(let z=0;z{y=h.valueHash[w[y]].value;return{key:y,color:z,content:{label:y+ -"",special:"number"!==typeof y&&"string"!==typeof y||y in tn}}});t&&d.push({key:null,color:"#F0F0F0",content:{label:"other",special:!0}});b.elem.set("palette",d);b.grid.cellItemComparator=(z,y)=>{if(!(f in z.data||f in y.data))return 0;if(!(f in z.data))return 1;if(!(f in y.data))return-1;z=z.data[f];y=y.data[f];if(z===y)return 0;z=ln(z);y=ln(y);return z in p||y in p?z in p?y in p?p[z]-p[y]:-1:1:0};return v} -function zp(b){"stacked"!==b.elem.positionMode&&b.elem.verticalPosition&&b.elem.horizontalPosition||tp(b)} -function Ap(b,d,f,h){const m=b.stats[d].wordTree,w=m.levelHash;return{facetingFunction:l=>{if(!(d in l.data))return null;for(l=m.nodeHash[ln(l.data[d])];l.parent&&l.level>f;)l=l.parent;return l.level},keyCompareFunction:(l,p)=>{l=w[l];p=w[p];if(void 0===l&&void 0===p)return 0;if(void 0===l)return-1;if(void 0===p)return 1;if(l.nonValueCount&&p.nonValueCount)return 0;if(l.nonValueCount)return-1;if(p.nonValueCount)return 1;p=p.order-l.order;return h?p:-p},labelingFunction:l=>{l=w[+l];if(!l.parent&&!l.commonWords.length)return{label:"other", +function xp(b,d){const f=b.elem.colorBy,h=b.stats[f],m=b.grid.items,w=Object.keys(h.valueHash);b.elem.stableColors?w.sort():w.sort((z,y)=>h.valueHash[y].count-h.valueHash[z].count);const l=Math.min(d.length,w.length),p=w.slice(0,l).reduce((z,y,x)=>{z[y]=x;return z},{}),n=d3.rgb("#F0F0F0"),q=d.map(z=>d3.rgb(z));let t=!1;const v=[];for(let z=0;z{y=h.valueHash[w[y]].value;return{key:y,color:z,content:{label:y+ +"",special:"number"!==typeof y&&"string"!==typeof y||y in sn}}});t&&d.push({key:null,color:"#F0F0F0",content:{label:"other",special:!0}});b.elem.set("palette",d);b.grid.cellItemComparator=(z,y)=>{if(!(f in z.data||f in y.data))return 0;if(!(f in z.data))return 1;if(!(f in y.data))return-1;z=z.data[f];y=y.data[f];if(z===y)return 0;z=kn(z);y=kn(y);return z in p||y in p?z in p?y in p?p[z]-p[y]:-1:1:0};return v} +function yp(b){"stacked"!==b.elem.positionMode&&b.elem.verticalPosition&&b.elem.horizontalPosition||sp(b)} +function zp(b,d,f,h){const m=b.stats[d].wordTree,w=m.levelHash;return{facetingFunction:l=>{if(!(d in l.data))return null;for(l=m.nodeHash[kn(l.data[d])];l.parent&&l.level>f;)l=l.parent;return l.level},keyCompareFunction:(l,p)=>{l=w[l];p=w[p];if(void 0===l&&void 0===p)return 0;if(void 0===l)return-1;if(void 0===p)return 1;if(l.nonValueCount&&p.nonValueCount)return 0;if(l.nonValueCount)return-1;if(p.nonValueCount)return 1;p=p.order-l.order;return h?p:-p},labelingFunction:l=>{l=w[+l];if(!l.parent&&!l.commonWords.length)return{label:"other", special:!0};if(l.nonValueCount)return{label:"non-words",special:!0};let p=` ${"\u2022"} ${l.commonWords.join(" ")}`;for(let n=0;nf){p+=" \u2026";break}for(;l.parent;)l=l.parent,l.commonWords.length&&(p=` ${"\u2022"} ${l.commonWords.join(" ")} `+p);return{label:p}}}} -function Bp(b,d,f){const h=b.stats[d],[m,w]=d3.scaleLinear().domain([h.numberMin,h.numberMax]).nice().domain(),l=w-m;let p=1;for(b=0;b{if(!(d in q.data))return null;q=q.data[d];return"number"!==typeof q?q:isNaN(q)?q:Math.min(Math.floor(f*(q-m)/l),f-1)},keyCompareFunction:em,labelingFunction:q=>{if("number"!==typeof q||isNaN(+q))return un(q);const t=q/f*l+m;q=(1+q)/f*l+m;return h.isInteger()?{label:Dp(Math.ceil(t), -Math.floor(q),p)}:{label:Dp(t,q,p)}}}}function Cp(b,d,f=1){for(;100>=f&&b.toPrecision(f)===d.toPrecision(f);)f++;return f}function Dp(b,d,f=3){if(b===d)return In(b,f);f=Cp(b,d,f);return`${In(b,f)} \u2014 ${In(d,f)}`} -class Ep{constructor(b){this.elem=b;this.endTimestamp=0;this.renderQueued=!1;this.labels=[];this.autoColorBy=!1;this.horizontalFacetInfo=this.verticalFacetInfo=null}ready(){this.layout=new Dm;this.holder=this.elem.$.holder;this.elem.scopeSubtree(this.holder,!0);this.cellBackgroundSVG=d3.select(this.holder).append("svg").style("left",0).style("position","absolute").style("top",0);this.cellBackgroundSVGRoot=this.cellBackgroundSVG.append("g").attr("class","root");this.cellBackgroundLayer=this.cellBackgroundSVGRoot.append("g").attr("class", +function Ap(b,d,f){const h=b.stats[d],[m,w]=d3.scaleLinear().domain([h.numberMin,h.numberMax]).nice().domain(),l=w-m;let p=1;for(b=0;b{if(!(d in q.data))return null;q=q.data[d];return"number"!==typeof q?q:isNaN(q)?q:Math.min(Math.floor(f*(q-m)/l),f-1)},keyCompareFunction:dm,labelingFunction:q=>{if("number"!==typeof q||isNaN(+q))return tn(q);const t=q/f*l+m;q=(1+q)/f*l+m;return h.isInteger()?{label:Cp(Math.ceil(t), +Math.floor(q),p)}:{label:Cp(t,q,p)}}}}function Bp(b,d,f=1){for(;100>=f&&b.toPrecision(f)===d.toPrecision(f);)f++;return f}function Cp(b,d,f=3){if(b===d)return Hn(b,f);f=Bp(b,d,f);return`${Hn(b,f)} \u2014 ${Hn(d,f)}`} +class Dp{constructor(b){this.elem=b;this.endTimestamp=0;this.renderQueued=!1;this.labels=[];this.autoColorBy=!1;this.horizontalFacetInfo=this.verticalFacetInfo=null}ready(){this.layout=new Cm;this.holder=this.elem.$.holder;this.elem.scopeSubtree(this.holder,!0);this.cellBackgroundSVG=d3.select(this.holder).append("svg").style("left",0).style("position","absolute").style("top",0);this.cellBackgroundSVGRoot=this.cellBackgroundSVG.append("g").attr("class","root");this.cellBackgroundLayer=this.cellBackgroundSVGRoot.append("g").attr("class", "labels");this.scene=new THREE.Scene;this.camera=new THREE.OrthographicCamera(0,100,0,100,.1,1E3);try{this.renderer=new THREE.WebGLRenderer({alpha:!0}),this.renderer.setPixelRatio(),d3.select(this.renderer.domElement).style("left",0).style("pointer-events","none").style("position","absolute").style("top",0),this.holder.appendChild(this.renderer.domElement)}catch(b){}this.zoom=d3.zoom().scaleExtent([1,500]).on("zoom",this.zoomed.bind(this));d3.select(this.elem).call(this.zoom);this.labelsAndAxesSVG= d3.select(this.holder).append("svg").style("left",0).style("position","absolute").style("top",0);this.labelsAndAxesSVGRoot=this.labelsAndAxesSVG.append("g").attr("class","root");this.labelsLayer=this.labelsAndAxesSVGRoot.append("g").attr("class","labels");this.axesLayer=this.labelsAndAxesSVGRoot.append("g").attr("class","axes");this.comparedLayer=this.labelsAndAxesSVGRoot.append("g").attr("class","comparedboxes");this.selectedLayer=this.labelsAndAxesSVGRoot.append("g").attr("class","selectedboxes"); this.labelsAndAxesSVG.on("click",this.clicked.bind(this));this.renderer||(this.labelsAndAxesSVG.style("display","none"),this.cellBackgroundSVG.style("display","none"),d3.select(this.holder).append("p").attr("class","error").style("color","darkred").html('\n \x3cstrong\x3eERROR\x3c/strong\x3e: Facets Dive requires WebGL, and it is not\n enabled in your browser. See\n \x3ca rel\x3d"noreferrer" href\x3d"http://webglreport.com/"\x3e\n WebGL Report\x3c/a\x3e for details.\n '))}zoomed(){const {x:b, -y:d,k:f}=d3.event.transform,h=this.scale/f;this.camera.top*=h;this.camera.left*=h;this.camera.right*=h;this.camera.bottom*=h;this.camera.position.set(-b/f,d/f,this.camera.position.z);this.camera.updateProjectionMatrix();this.scale=f;Bn(this);Cn(this);Dn(this)}clicked(){var b=this.elem.getBoundingClientRect(),d=d3.event;b=hn(this.spriteMesh,this.camera.position.x+(d.clientX-b.left)/this.scale,this.camera.position.y-(d.clientY-b.top)/this.scale);var f={};if(d.ctrlKey)for(d=0;d+h)));b=[];for(f=0;fthis.fitToViewport(),100)}zoomIn(){this.zoom.scaleBy(d3.select(this.elem),1.1)}zoomOut(){this.zoom.scaleBy(d3.select(this.elem),1/1.1)}isVisible(b,d){var f=this.scale;var h=this.camera.position,m=this.camera;if(void 0!==b.minScale)f=b.scaleDown||f>=b.minScale;else if(b.boundingBox){var w=b.boundingBox;w.left>h.x+m.right|| +this.elem.scenePadding;this.layout.padding.top=this.elem.scenePadding;this.layout.grid={bottom:0,left:0,right:this.grid.width,top:this.grid.height};if(this.labels.length){var d=0,f=0,h=0,m=0;this.labelsLayer.selectAll(".label").each(function(p){var n=d3.select(this).select(".current").node().getBoundingClientRect();const q=p.elementMargin||{bottom:0,left:0,right:0,top:0},t=n.height+q.top+q.bottom;n=n.width+q.left+q.right;switch(p.side){case Zl.Bottom:d=Math.max(d,t);break;case Zl.Top:m=Math.max(m, +t);break;case Zl.Left:f=Math.max(f,n);break;case Zl.Right:h=Math.max(h,n);break;default:throw Error("Unrecognized Side.");}});this.layout.padding.bottom+=d;this.layout.padding.left+=f;this.layout.padding.right+=h;this.layout.padding.top+=m}Am(this.layout,b.width);Bm(this.layout,b.height);this.scale=ym(this.layout);var {position:w,frustum:l}=zm(this.layout);this.camera.left=l.left;this.camera.right=l.right;this.camera.top=l.top;this.camera.bottom=l.bottom;this.camera.position.set(w.x,w.y,100);this.camera.updateProjectionMatrix(); +d3.select(this.elem).call(this.zoom.transform,d3.zoomIdentity.scale(this.scale).translate(-this.camera.position.x,this.camera.position.y));An(this);Bn(this);Cn(this)}else setTimeout(()=>this.fitToViewport(),100)}zoomIn(){this.zoom.scaleBy(d3.select(this.elem),1.1)}zoomOut(){this.zoom.scaleBy(d3.select(this.elem),1/1.1)}isVisible(b,d){var f=this.scale;var h=this.camera.position,m=this.camera;if(void 0!==b.minScale)f=b.scaleDown||f>=b.minScale;else if(b.boundingBox){var w=b.boundingBox;w.left>h.x+m.right|| w.righth.y+m.top||w.top=h&&d*f>=b)}else f=!0;return f}atlasUrlChange(){clearTimeout(this.atlasUrlChangeTimer);delete this.atlasUrlChangeTimer; -if(this.spriteMesh){var b=this.elem.atlasUrl;b&&b.length&&b!==this.lastAtlasUrl&&(this.lastAtlasUrl=b,op(this),Pm(this.spriteMesh.spriteAtlas,b,this.elem.crossOrigin,()=>{const d=this.elem.data,f=Date.now(),h=f+this.elem.fadeDuration;for(let m=0;d&&m{const f=this.spriteMesh.defaultTextureCanvas,h=f.getContext("2d");h.clearRect(0,0,f.width,f.height);h.drawImage(d,0,0,f.width,f.height);this.spriteMesh.defaultTexture.needsUpdate=!0;Dn(this)};d.src=b}else requestAnimationFrame(this.spriteUrlChange.bind(this))}getKeys(){var b;if((b=this.elem.data)&&b.length){var d={};for(let f=0;f{const d=this.elem.data,f=Date.now(),h=f+this.elem.fadeDuration;for(let m=0;d&&m{const f=this.spriteMesh.defaultTextureCanvas,h=f.getContext("2d");h.clearRect(0,0,f.width,f.height);h.drawImage(d,0,0,f.width,f.height);this.spriteMesh.defaultTexture.needsUpdate=!0;Cn(this)};d.src=b}else requestAnimationFrame(this.spriteUrlChange.bind(this))}getKeys(){var b;if((b=this.elem.data)&&b.length){var d={};for(let f=0;fd&&(m=f,d=h));isFinite(d)&&m in b.stats&&b.elem.set("imageFieldName",m)}qp(b);tp(b);vp(b)}this._setKeys(this._backing.getKeys());this._setStats(this._backing.stats)}else requestAnimationFrame(this._dataChange.bind(this, +value:[],notify:!0},comparedIndices:{type:Array,value:[],notify:!0,observer:"_comparedIndicesUpdated"},stableColors:{type:Boolean,value:!1,observer:"_updateColors"}},listeners:{"iron-resize":"_onIronResize"},created(){this._backing=new Dp(this)},ready(){this._backing.ready()},_dataChange(b){if(this._backing.scene){b=this._backing;var d=b.elem.data;if(d&&d.length){jp(b);b.stats=pn(d);if(b.items)if(b.items.length!==d.length)kp(b),mp(b);else for(var f=0;fd&&(m=f,d=h));isFinite(d)&&m in b.stats&&b.elem.set("imageFieldName",m)}pp(b);sp(b);up(b)}this._setKeys(this._backing.getKeys());this._setStats(this._backing.stats)}else requestAnimationFrame(this._dataChange.bind(this, b))},_filteredDataIndicesChange(b){if(this._backing.scene&&this._backing.items){{b=this._backing;const h=b.elem.filteredDataIndices,m=[];if(h)for(var d=0;d @@ -21399,12 +21398,11 @@ @@ -21596,7 +21594,7 @@ @@ -21627,7 +21625,7 @@ @@ -22088,7 +22086,7 @@

Colors

@@ -22203,4 +22201,5 @@

Colors

Polymer({is:"facets-dive",properties:{data:{type:Array,value:null,notify:!0},filteredDataIndices:{type:Array,value:null},_keys:{type:Array,value:[]},stats:{type:Object,value:{},notify:!0},atlasUrl:{type:String,value:null,notify:!0},spriteUrl:{type:String,value:null,notify:!0},crossOrigin:{type:String,value:null,notify:!0},spriteImageWidth:{type:Number,value:64},spriteImageHeight:{type:Number,value:64},gridFacetingVerticalLabelColor:{type:String,value:"#666666"},gridFacetingHorizontalLabelColor:{type:String, value:"#dd6622"},itemPositioningVerticalLabelColor:{type:String,value:"#2255aa"},itemPositioningHorizontalLabelColor:{type:String,value:"#118844"},fitGridAspectRatioToViewport:{type:Boolean,value:!1},verticalFacet:{type:String,value:"",notify:!0},verticalBuckets:{type:Number,value:10,notify:!0},verticalBagOfWords:{type:Boolean,value:!1,notify:!0},horizontalFacet:{type:String,value:"",notify:!0},horizontalBuckets:{type:Number,value:10,notify:!0},horizontalBagOfWords:{type:Boolean,value:!1,notify:!0}, positionMode:{type:String,value:"stacked",notify:!0},verticalPosition:{type:String,value:"",notify:!0},horizontalPosition:{type:String,value:"",notify:!0},colorBy:{type:String,value:"",notify:!0},imageFieldName:{type:String,value:"",notify:!0},_palette:{type:Array,value:[]},paletteChoice:{type:String,value:"standard",notify:!0},selectedData:{type:Array,value:[],notify:!0},selectedIndices:{type:Array,value:[],notify:!0},comparedData:{type:Array,value:[],notify:!0},comparedIndices:{type:Array,value:[], -notify:!0},height:{type:Number,value:null,observer:"_updateHeight"},infoRenderer:{type:Object},hideInfoCard:{type:Boolean,value:!1},stableColors:{type:Boolean,value:!1}},ready(){const b=this.$;b.fitButton.onclick=()=>b.vis.fitToViewport();b.zoomInButton.onclick=()=>b.vis.zoomIn();b.zoomOutButton.onclick=()=>b.vis.zoomOut();this.hideInfoCard&&(b.vis.style.right="0");null!==this.height&&(this.style.height="number"===typeof this.height?this.height+"px":this.height)}}); +notify:!0},height:{type:Number,value:null,observer:"_updateHeight"},infoRenderer:{type:Object},hideInfoCard:{type:Boolean,value:!1},stableColors:{type:Boolean,value:!1}},ready(){const b=this.$;b.fitButton.onclick=()=>b.vis.fitToViewport();b.zoomInButton.onclick=()=>b.vis.zoomIn();b.zoomOutButton.onclick=()=>b.vis.zoomOut();this.hideInfoCard&&(b.vis.style.right="0");this._updateHeight()},_updateHeight:function(){null!==this.height&&(this.style.height="number"===typeof this.height?this.height+"px": +this.height)}});