@nebula.js/sn-bullet-chart
Version:
Visualize measures or measure values as bars with multiple axes and user-defined ranges. The ranges provide context to the bars which makes them easier to interpret.
7 lines (6 loc) • 382 kB
JavaScript
/*
* @nebula.js/sn-bullet-chart v1.26.6
* Copyright (c) 2025 QlikTech International AB
* Released under the MIT license.
*/
System.register(["picasso.js","picasso-plugin-q","hammerjs","qlik-chart-modules","react","react-dom","qlik-chart-modules/react","@nebula.js/stardust","qlik-object-conversion"],(function(e){"use strict";var t,n,i,r,o,a,s,l,c,u,d,h,p,m,f,g,v,y,b,x,S,M,w,k,E,C,q,T,R,A,O,N,D,P,I,L,z,j,H,_,F,$,B,W,U,V,G,X,K,J,Y;return{setters:[function(e){t=e.default},function(e){n=e.default},function(e){i=e.default},function(e){r=e.getValue,o=e.setValue,a=e.selectionService,s=e.storage,l=e.cache,c=e.throttler,u=e.colorService,d=e.pluginService,h=e.tooltipService,p=e.layoutService,m=e.alternativeService,f=e.disclaimerService,g=e.dockService,v=e.themeService,y=e.debouncer,b=e.fontResolver},function(e){x=e.default,S=e,M=e.isValidElement,w=e.cloneElement,k=e.Children},function(e){E=e,C=e.default},function(e){q=e.reactRenderer,T=e.axisTitleComponent,R=e.disclaimerComponent},function(e){A=e.useElement,O=e.useSelections,N=e.useOptions,D=e.useState,P=e.useLayout,I=e.useTranslator,L=e.useEffect,z=e.useAction,j=e.useRect,H=e.usePromise,_=e.useStaleLayout,F=e.useTheme,$=e.useApp,B=e.useModel,W=e.useConstraints,U=e.useAppLayout,V=e.usePlugins,G=e.useEmbed,X=e.useDeviceType,K=e.onTakeSnapshot,J=e.useImperativeHandle},function(e){Y=e.default}],execute:function(){e("default",(function(e){!function(e){if(e&&e.get&&e.add){const t="Object.Disclaimer.LimitedData";if(e.get(t)!==t)return;Object.keys(Z).forEach((t=>{e.add(Z[t])}))}}(e.translator);const o=function(){const e=t();return e.use(n),e.use(function(e){if("function"!=typeof e.interaction)return t=>{t.interaction("hammer",te(e))};return void e.interaction("hammer",te(Hammer))}(i)),e.use(function(){return function(e){e.renderer("react",function(){function e({x:e,y:t,width:n,height:i,scaleRatio:r,margin:o}={}){const a={x:0,y:0,width:0,height:0,scaleRatio:{x:1,y:1},margin:{left:0,top:0}};return a.x=Number.isNaN(e)?a.x:e,a.y=Number.isNaN(t)?a.y:t,a.width=Number.isNaN(n)?a.width:n,a.height=Number.isNaN(i)?a.height:i,void 0!==r&&(a.scaleRatio.x=Number.isNaN(r.x)?a.scaleRatio.x:r.x,a.scaleRatio.y=Number.isNaN(r.y)?a.scaleRatio.y:r.y),void 0!==o&&(a.margin.left=Number.isNaN(o.left)?0:o.left,a.margin.top=Number.isNaN(o.top)?0:o.top),a}return function(t={}){const{createElement:n=document.createElement.bind(document)}=t;let i,r=e();const o={element:()=>i,root:()=>i,appendTo:e=>(i||(i=n("div"),i.style.position="absolute",i.style["-webkit-font-smoothing"]="antialiased",i.style["-moz-osx-font-smoothing"]="antialiased",i.style.pointerEvents="none"),e.appendChild(i),i),render(e){if(!i)return!1;const t=r.scaleRatio.x,n=r.scaleRatio.y;return i.style.left=`${Math.round(r.margin.left+r.x*t)}px`,i.style.top=`${Math.round(r.margin.top+r.y*n)}px`,i.style.width=`${Math.round(r.width)}px`,i.style.height=`${Math.round(r.height)}px`,i.style.transform=`scale(${t}, ${n})`,i.style.transformOrigin="top left",C.render(function(e,t){return x.createElement(gl,{generateClassName:t},x.createElement(sc,{theme:Qu},e))}(e,ed),i),!0},itemsAt:()=>[],findShapes:()=>[],clear:()=>(i&&C.unmountComponentAtNode(i),o),destroy(){i&&i.parentElement&&(C.unmountComponentAtNode(i),i.parentElement.removeChild(i)),i=null},size:t=>(t&&(r=e(t)),r)};return o}}()),e.component("data-title",function(e){function t(e){return!e.isDimension&&we.getValue(e,"hyperCubeDef.qLayoutExclude.qHyperCubeDef.qMeasures.length")>0}function n(e){return e.isDimension&&we.getValue(e,"hyperCubeDef.qLayoutExclude.qHyperCubeDef.qDimensions.length")>0}return{renderer:"react",disableTriggers:!0,preferredSize:function(){const{height:n}=e.measureText({text:"M",fontSize:this.style.fontSize,fontFamily:this.style.fontFamily});return this.settings.settings.isDimension||t(this.settings.settings)?Math.max(28,n):Math.max(20,n)},render(){const{settings:{app:e,disabled:i,explicitItemInfos:r,hyperCube:o,hyperCubeDef:a,isDimension:s,minWidth:l,model:c,onChangeToAlternative:u,padding:d,rtl:h,selections:p,skipAttributeExpressions:m,translator:f,supportConditional:g=!1},layout:{dock:v}}=this.settings,y="top"!==v&&"bottom"!==v||!h?"ltr":"rtl",b=function(e,t){const n={pointerEvents:"auto",display:"flex",justifyContent:"center",alignItems:"center",height:"100%"};"left"===e?(n.width=`${t.height}px`,n.height=`${t.width}px`,n.transform=`rotate(-90deg) translate(-${t.height}px, 0)`,n.transformOrigin="top left"):"right"===e&&(n.width=`${t.height}px`,n.height=`${t.width}px`,n.transform=`rotate(90deg) translate(0, -${t.width}px)`,n.transformOrigin="top left");return n}(v,this.rect),S=a&&a.qLayoutExclude&&a.qLayoutExclude.qHyperCubeDef,M=S&&S[s?"qDimensions":"qMeasures"]||[],w=r||o[s?"qDimensionInfo":"qMeasureInfo"],k=s?tr:ir,E=s?nr:rr,C=Boolean(c&&c.colorSupport&&c.modifiers),q=C&&(n(this.settings.settings)||t(this.settings.settings)),T=w.map(((t,n)=>{var r;const o="number"==typeof t.explicitColumn?t.explicitColumn:n,a=E(t,o,c,e),y=n===w.length-1,b=Boolean(e)&&s&&"N"!==t.qGrouping,S=C||b?k({column:o,activeInfo:t,altList:M,app:e,dir:h?"rtl":"ltr",dock:Zu(v),model:c,onChange:u,skipAttributeExpressions:m,translator:f,allowChangeOfAlternatives:C}):void 0;return x.createElement(x.Fragment,{key:t.cId},x.createElement(Yu,{chartId:null!==(r=null==c?void 0:c.id)&&void 0!==r?r:"",showGroupDimOptions:b,popover:S,titleData:a,model:c,translator:f,selections:p,disabled:i(),style:this.style,isDimension:s,padding:d,minWidth:l,hasAlternative:q,supportConditional:g}),!y&&x.createElement("span",{style:{lineHeight:"normal",...this.style}},", "))}));return x.createElement("div",{style:b,dir:y},T)}}}(e.renderer("svg")()))}}()),e.renderer("react-qcm",q),e.component("axis-title",T),e.component("disclaimer",R),e.component("scrollbar",Hd),e.component("scroll-hint",bi),e.component("box-axis",bh),e.component("box-sliced-hat",Kd),e.component("box-out-of-bounds",Wd),e}();return{qae:Pf(e),ext:eg(e),component(){const{core:t,models:n}=function({picasso:e}){var t,n;const i=A(),r=O(),o=N(),{renderer:a}=o,[c,u]=D(),[d,h]=D(),[p,m]=D(!1),[f,g]=D(!1),v=P(),y=I(),b=!(null==v||null===(t=v.qSelectionInfo)||void 0===t||!t.qInSelections),x=!(null===(n=v.qHyperCube)||void 0===n||null===(n=n.qDimensionInfo)||void 0===n||null===(n=n[0])||void 0===n||!n.qIsOneAndOnlyOne);return L((()=>{i.style.overflow="hidden";const t=e({renderer:{prio:[a||"canvas"]}}),n=t.chart({element:i,data:[],settings:{}}),r=s({scrollOffset:void 0,viewRange:[0,1]}),o=l(),c=function(){const e={},t={interact:{key:"interact",isEnabled:!0,enabled(){return this.isEnabled},update(e){this.isEnabled=!e.active}},tooltip:{key:"tooltip",isActive:!0,isEnabled:!0,action(e){this.isActive=!!e},active(){return this.isActive},enabled(){return this.isEnabled},update(e){this.isEnabled=!e.passive}},scroll:{key:"scroll",isActive:!0,isEnabled:!0,action(){this.isActive=!this.isActive},active(){return this.isActive},enabled(){const{discrete:t}=e;return this.isEnabled&&(!t||t.query.getCanScroll())},update(e){this.isEnabled=!e.active}},select:{key:"select",isActive:!1,isEnabled:!0,action(){this.isActive=!this.isActive},active(){return this.isActive},enabled(){return this.isEnabled},update(e){this.isEnabled=!e.select&&!e.active}},lasso:{key:"lasso",action(){}}},n=e=>(Object.keys(wh.prototype).forEach((t=>{e[t]=wh.prototype[t]})),wh.init(e),e);return Object.keys(t).filter((e=>"setContext"!==e)).forEach((e=>n(t[e]))),t.setContext=(t={})=>{Object.assign(e,t)},t.setContext.update=()=>{},t}();return u({picassoInstance:t,chart:n,actions:c,store:{},viewState:r,viewCache:o}),()=>{n.destroy()}}),[]),z((()=>{if(null==c||!c.actions)return{};const{actions:e}=c,t={action(e){m("boolean"==typeof e?e:!p)},hidden:!b||x};return e&&(e.lasso={...t,active:()=>p,update:e=>{!!c&&g(!e.select&&!e.active)},enabled:()=>f}),{...t,label:y.get(p?"Tooltip.ToggleOffLassoSelection":"Tooltip.ToggleOnLassoSelection"),active:p,icon:kh}}),[c,p,f,b,x,y.language()]),L((()=>{if(null==c||!c.actions)return()=>{};const{chart:e,actions:t}=c,n=Eh({chart:e,actions:t,selections:r});return h({selectionService:n,updateModels:Ch}),()=>{n.destroy()}}),[c]),{core:c,models:d}}({picasso:o});!function({core:e,models:t,env:n}){var i;const{flags:o}=n,a=null===(i=n.anything)||void 0===i||null===(i=i.sense)||void 0===i?void 0:i.isUnsupportedFeature,s=_(),u=F(),d=$(),h=B(),b=I(),x=O(),S=W()||{},{qLocaleInfo:M}=U(),w=N(),{direction:k,viewState:E}=w,C="rtl"===k,q=j(),T=V(),R=G(),A=X(),[D]=H((()=>{if(!e||!t||!S)return Promise.resolve([]);const{picassoInstance:n,chart:i,actions:a,viewState:y,store:x,viewCache:k}=e,{selectionService:A,updateModels:O}=t;Object.keys(a).forEach((e=>a[e].update(S)));const N=p({source:s,metaAdditionsFn:mf}),D=m({app:d,translator:b}),P=f({config:{args:{layoutService:N},disclaimers:{NoDataExist:!0,OnlyNanDataMeasure:!0}}});P.initialize();const I=qh({layout:s,options:w}),L=function({layoutService:e}){return{major:e.meta.isDimensionless?void 0:"qDimensionInfo/0",minors:e.getHyperCubeValue("qMeasureInfo").map(((e,t)=>`qMeasureInfo/${t}`))}}({layoutService:N}),z=Gp({app:d,model:h,translator:b,picasso:n,localeInfo:M,theme:u,layoutService:N}),j=function({picasso:e,chart:t,localeInfo:n,layoutService:i,colorService:r,options:o,viewCache:a}){const s=[jp.COMPONENT.MAJOR_AXIS_TITLE,jp.COMPONENT.MINOR_AXIS_TITLE,jp.COMPONENT.GRID_LINE,jp.COMPONENT.ZERO_LINE],l={isDataless:!1},c=[],u={main:c,dataset:e.data("q")({key:jp.DATA.MAIN,data:i.getHyperCube(),config:{localeInfo:n}})},d={isPartialUpdating:!1,hasSlicedHats:!1},h=()=>!0===o.chartAnimations&&(!(d.isPartialUpdating||d.hasSlicedHats||a.get("hasSlicedHats"))&&!zi.propertiesHaveChanged({viewCache:a,layout:i.getLayout()}));return{query:{getIsUpdateDataless:()=>l.isDataless,getDataset:()=>u.dataset,animationsEnabled:h},command:{getChart:()=>t,update:({settings:e}={})=>{t.update({settings:e})},updateDataless:({generateSettings:e,forceData:o=!1})=>{const a=e();o||(l.isDataless=!0,u.main=i.getDataPages(),i.setDataPages([]));const s=[{type:"q",key:jp.DATA.MAIN,data:i.getHyperCube(),config:{localeInfo:n}},...r.getData()];t.layoutComponents({data:s,settings:a}),o||(i.setDataPages(u.main),u.main=c,l.isDataless=!1),d.hasSlicedHats=a.components.filter((e=>"box-sliced-hat"===e.type)).length>0},updatePartial:()=>{d.isPartialUpdating=!0,t.update({partialData:!0,excludeFromUpdate:s}),d.isPartialUpdating=!1},getAnimationsMeta:e=>d[e]}}}({picasso:n,chart:i,localeInfo:M,layoutService:N,colorService:z,options:w,viewCache:k}),H=g({chart:i,layoutService:N,config:{logicalSize:I,rtl:C},typeConfig:{type:"major-minor",fallback:"vertical",invert:!0}}),_=function({layoutService:e}){const{hasDimensions:t}=e.meta,n={bullet2Scale:{}},i=()=>{n.bullet2Scale={};const{qMatrix:i}=e.getDataPages()[0];t?i.forEach(((e,t)=>{const i=e[0].qElemNumber;n.bullet2Scale[i]=t})):i[0]&&i[0].forEach(((e,t)=>{n.bullet2Scale[t]=t}))};return{query:{bullet2Scale:e=>n.bullet2Scale[e]},command:{update:i}}}({layoutService:N}),F=function({layoutService:e}){const t=function({layoutService:e}){return function({layoutService:e}){return function({itemIndex:t}){const n=function(e,t){const{hasDimensions:n,isSharedRange:i,measuresTargetIndex:r,measuresSegmentIndices:o}=e.meta,a=e.getHyperCubeValue("qMeasureInfo");let s;if(i||!Fp(t))s=[$p({measures:a,index:0,measuresTargetIndex:r,measuresSegmentIndices:o})];else if(n){const[{qMatrix:n=[]}={}]=e.getDataPages()||[];s=function(e,t,n){const i=e[t],r={qMin:NaN,qMax:NaN,qAttrExprInfo:[]};if(!i)return[r];const{qNum:o=NaN,qAttrExps:a}=i[1],s=a?a.qValues.filter(((e,t)=>n.indexOf(t)>-1)).map((e=>({qMin:e.qNum,qMax:e.qNum}))):[];return[{...r,qMin:o,qMax:o,qAttrExprInfo:s}]}(n,t,[r[0],...o[0]])}else s=[$p({measures:a,index:t,measuresTargetIndex:r,measuresSegmentIndices:o})];return s}(e,t),i=n.map((e=>e.qAttrExprInfo)),r=[...n,..._p(i)];return{min:Math.min(...r.filter((e=>Fp(e.qMin))).map((e=>e.qMin))),max:Math.max(...r.filter((e=>Fp(e.qMax))).map((e=>e.qMax)))}}}({layoutService:e})}({layoutService:e}),n=he(!0,{},Up),i=()=>{const i=e.getDataPages()[0];if(he(!0,n,Vp(e,t)),i&&i.qMatrix){const r=e.meta.hasDimensions?i.qMatrix:i.qMatrix[0];n.individual=r?r.map(((n,i)=>Vp(e,t,i))):[]}else n.individual=[]};return i(),{query:{getExtrema:e=>"number"==typeof e&&e<n.individual.length?n.individual[e]:n},command:{update:i}}}({layoutService:N}),$=v({theme:u,config:{id:"bulletChart",transform:[["label.value.fontSize",e=>parseInt(e,10)]]}}),B=function({layoutService:e,themeService:t}){const n=t.getStyles(),i=t=>e.getLayoutValue("components",[]).find((e=>e.key===t)),r={axis:{title:{getStyle:()=>{var e,t,r,o,a,s;return{color:null!==(e=null===(t=i("axis"))||void 0===t||null===(t=t.axis)||void 0===t||null===(t=t.title)||void 0===t||null===(t=t.color)||void 0===t?void 0:t.color)&&void 0!==e?e:n.axis.title.color,fontFamily:null!==(r=null===(o=i("axis"))||void 0===o||null===(o=o.axis)||void 0===o||null===(o=o.title)||void 0===o?void 0:o.fontFamily)&&void 0!==r?r:n.axis.title.fontFamily,fontSize:null!==(a=null===(s=i("axis"))||void 0===s||null===(s=s.axis)||void 0===s||null===(s=s.title)||void 0===s?void 0:s.fontSize)&&void 0!==a?a:n.axis.title.fontSize}}},label:{getStyle:()=>{var e,t,r,o,a,s;return{fill:null!==(e=null===(t=i("axis"))||void 0===t||null===(t=t.axis)||void 0===t||null===(t=t.label)||void 0===t||null===(t=t.name)||void 0===t||null===(t=t.color)||void 0===t?void 0:t.color)&&void 0!==e?e:n.axis.label.name.color,fontFamily:null!==(r=null===(o=i("axis"))||void 0===o||null===(o=o.axis)||void 0===o||null===(o=o.label)||void 0===o||null===(o=o.name)||void 0===o?void 0:o.fontFamily)&&void 0!==r?r:n.axis.label.name.fontFamily,fontSize:null!==(a=null===(s=i("axis"))||void 0===s||null===(s=s.axis)||void 0===s||null===(s=s.label)||void 0===s||null===(s=s.name)||void 0===s?void 0:s.fontSize)&&void 0!==a?a:n.axis.label.name.fontSize}}}},label:{getStyle:()=>{var e,t,r,o,a,s,l,c;return{fill:null!==(e=null===(t=i("label"))||void 0===t||null===(t=t.label)||void 0===t||null===(t=t.value)||void 0===t||null===(t=t.color)||void 0===t?void 0:t.color)&&void 0!==e?e:n.label.value.color,useContrastColor:null===(r=null===(o=i("label"))||void 0===o||null===(o=o.label)||void 0===o||null===(o=o.value)||void 0===o?void 0:o.useContrastColor)||void 0===r||r,fontFamily:null!==(a=null===(s=i("label"))||void 0===s||null===(s=s.label)||void 0===s||null===(s=s.value)||void 0===s?void 0:s.fontFamily)&&void 0!==a?a:n.label.value.fontFamily,fontSize:null!==(l=null===(c=i("label"))||void 0===c||null===(c=c.label)||void 0===c||null===(c=c.value)||void 0===c?void 0:c.fontSize)&&void 0!==l?l:n.label.value.fontSize}}}};return{query:r}}({layoutService:N,themeService:$}),W=Xh({flags:o,layout:s,app:d,model:h,chart:i,translator:b,localeInfo:M,embed:R,options:w}),U=wf({chart:i,translator:b,actions:a,rtl:C,fieldModel:L,layoutService:N,colorService:z,dockService:H,themeService:$,custom:W}),V=function({chart:e,layoutService:t,chartModel:n,extremumModel:i,dockService:r,themeService:o,fieldModel:a}){const{hasDimensions:s}=t.meta,l={extremaList:[]},c=e=>void 0===e?(l.extrema||(l.extrema=i.query.getExtrema()),l.extrema):(l.extremaList[e]||(l.extremaList[e]=i.query.getExtrema(e)),l.extremaList[e]);function u(i=void 0){const l=c(i),u=e.formatter(a.minors[s?0:i||0]),d=function({chart:e,layoutService:t,chartModel:n,dockService:i,themeService:r,extrema:o,formatter:a}){const s=zp,l=r.getStyles(),c=e=>Hp({text:e,fontFamily:l.axis.label.name.fontFamily,fontSize:l.axis.label.name.fontSize}),u=function({chart:e,chartModel:t,dockService:n}){const i=e.component(jp.COMPONENT.BAR),r=t.query.getIsUpdateDataless()||!i?n.meta.chart.size:i.rect;return"horizontal"===n.meta.major.orientation?r.height:r.width}({chart:e,chartModel:n,dockService:i}),d=s({layoutService:t,dockService:i,measureText:c,extrema:o,size:u,formatter:a});return d}({chart:e,layoutService:t,chartModel:n,dockService:r,themeService:o,extrema:l,formatter:u});return d}const d=()=>{l.extremaList=[],l.extrema=i.query.getExtrema()};return{query:{getValues:e=>u(e).values,getMin:e=>{const t=c(e);return t.meta.hasExplicitMin?t.explicit.min:u(e).min},getMax:e=>{const t=c(e);return t.meta.hasExplicitMax?t.explicit.max:u(e).max}},command:{update:d}}}({chart:i,layoutService:N,chartModel:j,extremumModel:F,dockService:H,themeService:$,fieldModel:L}),G=function({layoutService:e,dockService:t,tickModel:n,chart:i,fieldModel:r,themeService:o}){let a={},{mode:s}=t.meta.chart,l=lm({layoutService:e,dockService:t});const c=o.getStyles(),{hasDimensions:u,numDataItems:d,hasTarget:h,hasRange:p,isSharedRange:m}=e.meta,f={paddingStart:1,paddingEnd:8,labelMargin:2,tickSize:5,strokeWidth:1},g=f.paddingStart+f.paddingEnd+f.labelMargin+f.tickSize+f.strokeWidth,v=e=>Hp({text:e,fontFamily:c.axis.label.name.fontFamily,fontSize:c.axis.label.name.fontSize}),y=e=>Math.max(...e.map((e=>e.height))),b=e=>Math.max(...e.map((e=>e.width))),x=()=>{let e,t,o=[];if(u)if(e=i.formatter(r.minors[0]),m)t=n.query.getValues().filter((e=>!e.isMinor)),o=t.map((t=>e(t.value)));else for(let i=0;i<d;i++)t=n.query.getValues(i).filter((e=>!e.isMinor)),o=o.concat(t.map((t=>e(t.value))));else for(let a=0;a<d;a++)e=i.formatter(r.minors[a]),t=n.query.getValues(a).filter((e=>!e.isMinor)),o=o.concat(t.map((t=>e(t.value))));return o},S=e=>{const t={},n=[];return e.forEach((e=>{t[e]||(t[e]=!0,n.push(e))})),n},M=e=>{const t=l?e:e*gf;return p?t/a.range.widthPxs[s].DEFAULT:h?t/a.target.widthPxs[s].DEFAULT:t/a.bar.widthPxs[s].DEFAULT},w=e=>{const t=M(e);t<1&&(Object.keys(ff).forEach((e=>{Object.keys(ff[e]).forEach((n=>{a.bar.widthPxs[e][n]*=t}))})),a.bar.widthPx=a.bar.widthPxs[s].DEFAULT,h&&(Object.keys(ff).forEach((e=>{Object.keys(ff[e]).forEach((n=>{a.target.widthPxs[e][n]*=t}))})),a.target.widthPx=a.target.widthPxs[s].DEFAULT),p&&(Object.keys(ff).forEach((e=>{Object.keys(ff[e]).forEach((n=>{a.range.widthPxs[e][n]*=t}))})),a.range.widthPx=a.range.widthPxs[s].DEFAULT))},k=()=>{s=t.meta.chart.mode,l=lm({layoutService:e,dockService:t});const n=Math.min(200,t.meta.chart.size["horizontal"===t.meta.major.orientation?"height":"width"]/4);a={bar:{widthPxs:{}},target:{widthPxs:{},widthPx:0},range:{widthPxs:{},widthPx:0},maxBTR:{widthPxs:{}},bulletAxis:f,itemWidths:{},maxPxStep:n},Object.keys(ff).forEach((e=>{a.bar.widthPxs[e]={},Object.keys(ff[e]).forEach((t=>{a.bar.widthPxs[e][t]=ff[e][t]*gf}))})),a.bar.widthPx=a.bar.widthPxs[s].DEFAULT,h&&(Object.keys(ff).forEach((e=>{a.target.widthPxs[e]={},Object.keys(ff[e]).forEach((t=>{a.target.widthPxs[e][t]=a.bar.widthPxs[e][t]*yf}))})),a.target.widthPx=a.target.widthPxs[s].DEFAULT),p&&(Object.keys(ff).forEach((e=>{a.range.widthPxs[e]={},Object.keys(ff[e]).forEach((t=>{a.range.widthPxs[e][t]=a.bar.widthPxs[e][t]*vf}))})),a.range.widthPx=a.range.widthPxs[s].DEFAULT),w(n),a.maxBTR.widthPxs=p?a.range.widthPxs:h?a.target.widthPxs:a.bar.widthPxs;let i=0;if(l){const e=S(x()).map(v),r=y(e),o=b(e)+2;i=g+("horizontal"===t.meta.major.orientation?o:r),Object.keys(ff).forEach((e=>{a.itemWidths[e]={},Object.keys(ff[e]).forEach((t=>{a.itemWidths[e][t]=a.maxBTR.widthPxs[e][t]+i}))})),a.maxPxStep=gf*n+i}else Object.keys(ff).forEach((e=>{a.itemWidths[e]={},Object.keys(ff[e]).forEach((t=>{a.itemWidths[e][t]=a.maxBTR.widthPxs[e][t]/gf}))}));const r=a.itemWidths[s].DEFAULT;a.bar.width=a.bar.widthPx/r,a.target.width=a.target.widthPx/r,a.range.width=a.range.widthPx/r,a.bulletAxis.widthPx=i,a.bulletAxis.width=a.bulletAxis.widthPx/r,a.bandWidthPx=r,a.maxBTR.widthPx=p?a.range.widthPx:h?a.target.widthPx:a.bar.widthPx,a.maxBTR.width=p?a.range.width:h?a.target.width:a.bar.width};return k(),{BAR_WIDTH_RATIO:gf,query:{getBulletAxis:()=>a.bulletAxis,getBar:()=>a.bar,getTarget:()=>a.target,getRange:()=>a.range,getMaxBTR:()=>a.maxBTR,getBandWidthPx:()=>a.bandWidthPx,getItemWidths:()=>a.itemWidths,getExpand:()=>a.expand,getMaxPxStep:()=>a.maxPxStep},command:{update:k}}}({layoutService:N,dockService:H,tickModel:V,chart:i,fieldModel:L,themeService:$}),X=function({layoutService:e,mappingModel:t,tickModel:n,dockService:i,chart:r,rtl:o}){const{isSharedRange:a,hasDimensions:s}=e.meta,l="vertical"===i.meta.minor.orientation||o,c={scales:[]},u=({index:e})=>{const t=Jm({key:jp.SCALE.DIMENSION_PREFIX+e,tickModel:n,invert:l,index:e});return r.scale(t)},d=e=>a?r.scale(jp.SCALE.MAIN.MINOR):(c.scales[e]||(c.scales[e]=u({index:e})),c.scales[e]),h=e=>{if(a)return r.scale(jp.SCALE.MAIN.MINOR);if(s){const n=t.query.bullet2Scale(e.datum.value);return d(n)}return r.scale(e.datum.source.field)},p=()=>{c.scales=[]};return{query:{getScale:h},command:{update:p}}}({layoutService:N,mappingModel:_,tickModel:V,dockService:H,chart:i,rtl:C}),K=function({chart:e,actions:t,componentKey:n,enigmaModel:i,layoutService:o,dockService:a,trendLineModel:s,itemWidths:u,viewState:d,rtl:h,options:{definitionPath:p="/qHyperCubeDef",getRect:m,axisKey:f,renderer:g,areaBuffer:v,processDataPage:y=()=>{}}={}}){const b=l(),x=function({qMode:e}){switch(e){case"K":return ip;case"T":return rp;default:return np}}({qMode:o.getHyperCubeValue("qMode")}),S=function({state:e,contains:t}){return e.set(op,[]),{add:t=>{const n=e.get(op);n.length=0,n.push(t)},getCurrent:()=>e.get(op)[0],getAll:()=>e.get(op),contains:n=>t(e.get(op)[0],n)}}({state:b,contains:x.contains});!function({layoutService:e,dataStore:t,composition:n}){const i=e.getDataPages()[0];if(!i)return;const r=n.patcher({layoutService:e});r.should(i)&&r(i);t.add(i)}({layoutService:o,dataStore:S,composition:x});const M=function({buffer:e}){return void 0===e?void 0:2*Math.round(e/2)}({buffer:v}),w=function({dataStore:e,composition:t,enigmaModel:n,layoutService:i,trendLineModel:r=hp,definitionPath:o,processDataPage:a}){const{slicer:s,cacheWarden:l,request:u}=t,d=function({dataStore:e,slice:t,warden:n,expand:i,request:r,process:o,connectionless:a,processDataPage:s}){const l=(l,{onProcessing:c}={})=>{if(e.contains(l)){const i=e.getCurrent();if(a)return Promise.resolve(t(i,l));const r=n.release(i.qArea,l),s=o.isProcessing();if(!r&&s&&o.cancel(),!r||s)return Promise.resolve(t(i,l))}if(a)return Promise.resolve(e.getCurrent());o.isProcessing()&&c&&c();const u=i(l);return o(r(u)).then((n=>(s(n),e.add(n),t(n,l))))};return l}({dataStore:e,slice:s,warden:l({bounds:{width:i.meta.size.x,height:i.meta.size.y}}),expand:up({layoutService:i}),request:u({definitionPath:o}),process:dp(n),connectionless:i.meta.isSnapshot,processDataPage:a}),h=c(((e,{onProcessing:t,onData:n})=>{d(e,{onProcessing:t}).then((e=>n(e))).catch((e=>{if(e!==Kh)throw e}))}),Qh);return function(e,{onProcessing:t=Jh,onDataPage:n=Jh}={}){h(e,{onProcessing:t,onData:e=>{i.setDataPages(e?[e]:[]),r.command.update(),n(e)}})}}({dataStore:S,composition:x,enigmaModel:i,layoutService:o,trendLineModel:s,definitionPath:p,processDataPage:y}),k=function({chart:e,componentKey:t,state:n,dataStore:i,pageData:r,layoutService:o,dockService:a,itemWidths:s,getRect:l,axisKey:c,renderer:u,areaBuffer:d,viewState:h,rtl:p}){n.set("rect",{width:0,height:0}),n.set("itemWidths",{}),n.set("itemSize",0),n.set("items",{}),n.set("offsets",{}),n.set("finished",0),n.set("scaleRange",[0,1]);const m=function({chart:e,getRect:t,getDataPages:n,layoutService:i,dockService:r,getItemWidths:o,axisKey:a,renderer:s,areaBuffer:l,rtl:c}){const{inTotal:u,area:d,scaleRange:h}=function({layoutService:e}){const{isDimensionless:t,isGrouped:n,isGroupedByMeasure:i}=e.meta;if(t)return pp;if(!n)return mp;return i?yp:Sp}({layoutService:i}),p=()=>"horizontal"===r.meta.major.orientation?t().width:t().height,m=e=>e?p()/e:0,f=(e,t)=>-(e-t)*m(t);return{getItems(){const n=i.getLayoutValue("dimensionAxis"),l=u({layoutService:i});return{inTotal:l,inView:Mp({chart:e,rect:t(),dockService:r,itemWidths:o(),axisKey:a,renderer:s,isGrouped:i.meta.isGrouped,dimensionAxis:n,inTotal:l,isMajorLabelless:"none"===n.show||"title"===n.show,maxDataRows:Math.floor(Yh/(i.meta.dimensionCount+i.meta.measureCount))})}},getItemSize({items:e}){const{inView:t}=e;return m(t)},getOffsets({pixelOffset:e,items:t}){const{inTotal:n,inView:i}=t,r=Math.min(0,Math.max(e,f(n,i))),o=i?Math.abs(i*r/p()):0;return{start:{pixel:r,item:o},end:{item:Math.min(o+(i||0),n)}}},getUpperBound({items:e}){const{inTotal:t,inView:n}=e;return f(t,n)},getViewRange({pixelOffset:e,items:t}){const{inTotal:n,inView:i}=t;return function({viewSize:e,inTotal:t,inView:n,pixelOffset:i}){const r=e/n*t,o=Math.abs(i)/r,a=Math.min(1,o+e/r);return[o,a]}({viewSize:p(),inTotal:n,inView:i,pixelOffset:e})},getArea:({itemOffset:e,items:t})=>d({getDataPages:n,layoutService:i,itemOffset:e,inView:t.inView,areaBuffer:l}),getScaleRange({offsets:e,items:t}){const o=h({getDataPages:n,layoutService:i,offsets:e,items:t,viewSize:p(),upperBound:f(t.inTotal,t.inView)});return"horizontal"===r.meta.major.orientation&&c?function(e){return[1-e[1],1-e[0]]}(o):o},validate:{offset({pixelOffset:e,items:t}){const{inTotal:n,inView:i}=t;return e<=0&&e>=f(n,i)}},convert:{itemToPixelOffset({itemOffset:e,items:t}){const{inView:n}=t,i=e*m(n);return Number.isFinite(i)?-i:0},relativeToPixelOffset({relativeOffset:e,items:t}){const{inTotal:n,inView:i}=t;return-e*(m(i)*n)}}}}({chart:e,getRect:()=>n.get("rect"),getDataPages:i.getCurrent,layoutService:o,dockService:a,getItemWidths:()=>n.get("itemWidths"),axisKey:c,renderer:u,areaBuffer:d,rtl:p}),f=()=>{const e=m.getItems();return n.set("items",e),e},g=({pixelOffset:e,items:t})=>{const i=m.getOffsets({pixelOffset:e,items:t});return n.set("offsets",i),i},v=({items:e})=>{const t=o.getLayoutValue("scrollStartPos"),n=h.get("scrollOffset");if(void 0===n)return 1===t?m.getUpperBound({items:e}):0;if("number"==typeof n)return m.convert.itemToPixelOffset({itemOffset:n,items:e});const{start:i,end:r}=n,a=1===t&&r?r-e.inView:i;return m.convert.itemToPixelOffset({itemOffset:a,items:e})},y=e=>{const[{qArea:t}]=o.getDataPages();return!!t&&Object.keys(e).every((n=>e[n]===t[n]))},b=e=>{const t=Date.now(),i=f(),o=g({pixelOffset:e,items:i}),a=m.getArea({itemOffset:o.start.item,items:i});if(y(a))return void((m.validate.offset({pixelOffset:e,items:i})||h.get("scrollOffset").start!==o.start.item)&&(n.set("finished",t),n.set("scaleRange",m.getScaleRange({offsets:o.start,items:i})),h.preventSet("viewRange",m.getViewRange({pixelOffset:o.start.pixel,items:i})),h.set("scrollOffset",{start:o.start.item,end:o.end.item})));h.preventSet("viewRange",m.getViewRange({pixelOffset:o.start.pixel,items:i}));const s=()=>{n.get("finished")>t||(n.set("finished",t),n.set("scaleRange",m.getScaleRange({offsets:o.start,items:i})),h.set("scrollOffset",{start:o.start.item,end:o.end.item}))};r(a,{onProcessing:s,onDataPage:s})};return{enabled(){const{inTotal:e,inView:t}=n.get("items");return e>t},itemSize:()=>n.get("itemSize"),scaleRange:()=>n.get("scaleRange"),initialize(){const i=e.component(t);if(!i)return Promise.resolve();n.set("rect","function"==typeof l?l():i.rect),n.set("itemWidths","function"==typeof s?s():s);const o=f();n.set("itemSize",m.getItemSize({items:o}));const a=v({items:o}),c=g({pixelOffset:a,items:o});h.preventSet("viewRange",m.getViewRange({pixelOffset:c.start.pixel,items:o}));const u=m.getArea({itemOffset:c.start.item,items:o});return new Promise((e=>{r(u,{onDataPage:()=>{n.set("scaleRange",m.getScaleRange({offsets:c.start,items:o})),h.preventSet("scrollOffset",{start:c.start.item,end:c.end.item}),e()}})}))},scroll(e){const t=n.get("offsets").start.pixel+e;b(t)},scrollToRelative(e){const t=n.get("items"),i=m.convert.relativeToPixelOffset({relativeOffset:e,items:t});b(i)}}}({chart:e,componentKey:n,state:b,dataStore:S,pageData:w,layoutService:o,dockService:a,itemWidths:u,getRect:m,axisKey:f,renderer:g,areaBuffer:M,viewState:d,rtl:h}),E=function({layoutService:e,dataStore:t}){return function(n){const i=r(n,`${e.refs.dataPages}`);i.length=0,i.push(t.getCurrent())}}({layoutService:o,dataStore:S}),C=function({chart:e,actions:t,componentKey:n,dockService:i,rtl:r,scroller:o}){return{gestures:[lp({chart:e,actions:t,componentKey:n,dockService:i,rtl:r,scroller:o})],native:{type:"native",events:{wheel:cp({chart:e,actions:t,componentKey:n,scroller:o})}}}}({chart:e,actions:t,componentKey:n,dockService:a,rtl:h,scroller:k});return{interactions:C,query:{getCanScroll:()=>k.enabled(),getItemSize:()=>k.itemSize(),getScaleRange:()=>k.scaleRange(),getCurrentDataPage:()=>S.getCurrent()},command:{initialize:()=>k.initialize(),scrollTo:e=>k.scrollToRelative(e),setSnapshotData:e=>E(e)}}}({chart:i,actions:a,componentKey:jp.COMPONENT.BAR,enigmaModel:h,layoutService:N,dockService:H,itemWidths:G.query.getItemWidths,viewState:y,rtl:C,options:{axisKey:jp.COMPONENT.MAJOR_AXIS,renderer:n.renderer("svg")()}});a.setContext({discrete:K});const J=bf({picassoInstance:n,plugins:T,layoutService:N});return t.alternativeService=D,t.layoutService=N,t.fieldModel=L,t.colorService=z,t.chartModel=j,t.dockService=H,t.mappingModel=_,t.extremumModel=F,t.styleModel=B,t.themeService=$,t.tooltipService=U,t.tickModel=V,t.itemWidthModel=G,t.scaleModel=X,t.discrete=K,t.disclaimerService=P,x.context={rtl:C,logicalSize:I},x.rect={...q},y.onChanged("scrollOffset",(()=>{O(t),j.command.updatePartial()})),function({layoutService:e,viewState:t,viewStateOptions:n={}}){const i=e.meta.isSnapshot?e.getLayoutValue("snapshotData.content.chartData",{}):n;t.preventSet("scrollOffset",i.scrollOffset)}({layoutService:N,viewState:y,viewStateOptions:E}),A.setLayout(N.getLayout()),function({layout:e,model:t}){if(qe.snapshot(e))return Promise.resolve(null);return t.getEffectiveProperties().then((e=>({properties:e})))}({layout:N.getLayout(),model:h}).then((e=>Promise.all([Promise.resolve(e),z.initialize(),J.initialize().then((()=>{t.pluginService=J})),D.initialize({properties:(null==e?void 0:e.properties)||{}})])))}),[e,t,S,s,k,u.name(),b.language()]),[P]=H((()=>{if(!D||!D.length)return Promise.resolve([]);const{properties:n}=D[0]||{},{picassoInstance:i,chart:r,actions:s,viewState:l,viewCache:c,store:u}=e;Object.keys(s).forEach((e=>s[e].update(S)));const{alternativeService:p,layoutService:m,fieldModel:f,colorService:g,chartModel:v,dockService:M,mappingModel:w,extremumModel:k,styleModel:E,themeService:C,tooltipService:q,tickModel:T,itemWidthModel:R,scaleModel:O,discrete:N,disclaimerService:P,selectionService:I,pluginService:L}=t;if(!g.isInitialized())return Promise.resolve([]);q.expando.set("properties",n),u.context.constraints=S;const z=()=>function(e,t){const{properties:n,alternativeService:i,dockService:r,layoutService:o,disclaimerService:a,isUnsupportedFeature:s,extensions:l,discrete:c,viewState:u,viewCache:d,styleModel:h,themeService:p,tooltipService:m,tickModel:f,chartModel:g,selectionService:v,translator:y,flags:b,actions:x,colorService:S,isLocked:M,scaleModel:w,fieldModel:k,extremumModel:E,itemWidthModel:C,mappingModel:q,model:T,app:R,debouncer:A,pluginService:O,deviceType:N,selections:D}=t,{constraints:P,rtl:I,logicalSize:L}=e,z=o.getLayout(),j=function(e){return e.qHyperCube.qMeasureInfo.map(((e,t)=>`qMeasureInfo/${t}`))}(z),H=function(e){return e.qHyperCube.qDimensionInfo.map(((e,t)=>`qDimensionInfo/${t}`))}(z),{hasDimensions:_}=o.meta,F="vertical"===r.meta.minor.orientation||I,$=_?H:j,B=function({layoutService:e,fields:t,chartModel:n,colorService:i}){const r=function({layoutService:e,fields:t,collectionKey:n,chartModel:i,colorService:r}){const{hasDimensions:o,measuresSegmentIndices:a=[],measuresTargetIndex:s,dimensionCount:l}=e.meta,c={key:n,data:{extract:t.map(((t,n)=>{const c={field:t,value:o?void 0:n,props:{start:0,end:{field:o?"qMeasureInfo/0":t,reduceLabel:"none",label:cf({dataset:i.query.getDataset(),minor:o?"qMeasureInfo/0":t})},...uf({colorService:r,index:n}),selectionDimension:{field:t},...0!==l&&{customTooltipAttrExps:Wh.getNode(e.getLayout(),e.meta)}}},u=o?0:n;-1!==s[u]&&(c.props.target={field:`qMeasureInfo/${u}/qAttrExprInfo/${s[u]}`,value:e=>e.qNum});const d=a[u];return d&&d.length&&d.forEach((e=>{c.props[`limit${e}`]={field:`qMeasureInfo/${u}/qAttrExprInfo/${e}`,value:e=>e.qNum}})),c}))}};return c}({layoutService:e,fields:t,collectionKey:jp.COLLECTION.MAIN,chartModel:n,colorService:i});return[r]}({layoutService:o,fields:$,chartModel:g,colorService:S}),W={...Ym({measures:j,yAxisData:_?H:j,invert:F,discrete:c,layoutService:o,tickModel:f,fieldModel:k,itemWidthModel:C,dockService:r,rtl:I}),...S.getScales()},U=function({fieldModel:e}){const t={};return e.minors.forEach((e=>{t[e]={data:{field:e}}})),t}({fieldModel:k}),V=function({actions:e,selectionService:t,layoutService:n,colorService:i,chartModel:r,isLocked:o,dockService:a,flags:s,isUnsupportedFeature:l,debouncer:c}){const u=r.command.getChart(),d=n.getHyperCubeValue("qDimensionInfo.0.qIsOneAndOnlyOne",!1),h=function(e){const{layoutService:t,selectionService:n}=e,{hasDimensions:i}=t.meta,r=t.getHyperCubeValue("qDimensionInfo.0.qIsOneAndOnlyOne",!1),o=!i||n.getIsDimensionLocked();return function(e,t){if(!e.targets)throw new Error("Missing 'targets' property");const n=tf(e,t);return{interactions:[n],components:[]}}({targets:o?[jp.COMPONENT.BAR]:[jp.COMPONENT.BAR,jp.COMPONENT.MAJOR_AXIS,jp.COMPONENT.RANGES],components:(e,t)=>[{key:t[0].key,action:e.srcEvent.ctrlKey||r?"set":"toggle",contexts:["selection"]}]},{...e,tooltipOnly:o})}({chart:u,actions:e,selectionService:t,layoutService:n,colorService:i,chartModel:r,isLocked:o,flags:s,debouncer:c})||lf;if(d)return{components:[...h.components],gestures:[...h.interactions]};const p=function({actions:e,selectionService:t,dockService:n,layoutService:i,isUnsupportedFeature:r}){const{hasDimensions:o}=i.meta;if(!o)return!1;const a=of({actions:e,selectionService:t,layoutService:i,dockService:n,isUnsupportedFeature:r})||af,s=function({actions:e,selectionService:t,dockService:n}){const i=t.getIsDimensionLocked();if(i)return!1;return function(e,t){const n=function(e){const{key:t,targets:n,components:i,fillTargets:r,dock:o}=e;return{key:t,type:"brush-area-dir",layout:{dock:n.map((e=>`@${e}`)).join(",")},settings:{multiple:!0,brush:{components:i},direction:"left"===o||"right"===o?"vertical":"horizontal",bubbles:{align:"left"===o||"top"===o?"end":"start",placement:"inside"},target:{components:r,fill:"rgba(82,204,82,0.2)"}}}}(e),i=rf(e,t,"area");return{interactions:[i],components:[n]}}({eventName:"discreteRange",key:"discrete-range-brush",components:[{key:jp.COMPONENT.GHOST_BAR,contexts:["selection"],action:"set"}],targets:[jp.COMPONENT.MAJOR_AXIS,jp.COMPONENT.BAR],fillTargets:[jp.COMPONENT.MAJOR_AXIS],dock:n.meta.major.dock},{actions:e})}({actions:e,selectionService:t,dockService:n})||af;return{components:[...s.components,...a.components],interactions:[...s.interactions,...a.interactions]}}({actions:e,selectionService:t,dockService:a,layoutService:n,isUnsupportedFeature:l})||lf,m=sf({actions:e,selectionService:t,layoutService:n})||lf;return{components:[...h.components,...m.components,...p.components],gestures:[...h.interactions,...m.interactions,...p.interactions]}}({chartModel:g,actions:x,selectionService:v,layoutService:o,colorService:S,isLocked:M,dockService:r,flags:b,isUnsupportedFeature:s,debouncer:A}),G=function({properties:e,alternativeService:t,dockService:n,layoutService:i,extensions:r,discrete:o,viewState:a,styleModel:s,themeService:l,tooltipService:c,chartModel:u,translator:d,colorService:h,scaleModel:p,fieldModel:m,rtl:f,fields:g,invert:v,selectables:y,viewCache:b,extremumModel:x,disclaimerService:S,tickModel:M,itemWidthModel:w,mappingModel:k,model:E,app:C,constraints:q,deviceType:T,flags:R,selectionService:A,selections:O}){const N=function({rtl:e,translator:t,disclaimerService:n,themeService:i}){const r=n.getDisclaimer();if(!r)return!1;const{fontFamily:o}=i.getStyles();return{key:"disclaimer",type:"disclaimer",layout:{dock:r.alignment},settings:{label:t.get(`Object.Disclaimer.${r.key}`),isRTL:e},style:{fontFamily:o}}}({rtl:f,translator:d,disclaimerService:S,themeService:l});if(S.getHasSuppressingDisclaimer())return[N];const D=[..._m({chartModel:u,layoutService:i,extremumModel:x,dockService:n,themeService:l,tickModel:M}),...jm({extremumModel:x,chartModel:u,fields:g,dockService:n,layoutService:i,scaleModel:p,fieldModel:m,colorService:h,styleModel:s,themeService:l,itemWidthModel:w,mappingModel:k,invert:v,flags:R}),xi({viewState:a,viewCache:b,layoutService:i,dockService:n,rtl:f}),Xm({extremumModel:x,chartModel:u,layoutService:i,dockService:n,styleModel:s,themeService:l,scaleModel:p,mappingModel:k,rtl:f,flags:R}),Gm({extremumModel:x,chartModel:u,layoutService:i,dockService:n,styleModel:s,themeService:l,scaleModel:p,mappingModel:k,rtl:f,flags:R}),...c.getComponents(),...Zp({chartModel:u,dockService:n,layoutService:i,fieldModel:m,styleModel:s,themeService:l,rtl:f,itemWidthModel:w,flags:R}),...tm({model:E,app:C,translator:d,constraints:q,rtl:f,properties:e,layoutService:i,dockService:n,styleModel:s,flags:R,selectionService:A}),...rm({alternativeService:t,app:C,constraints:q,dockService:n,flags:R,layoutService:i,model:E,rtl:f,selections:O,styleModel:s,translator:d,viewCache:b}),Xp({viewState:a,viewCache:b,discrete:o,layoutService:i,dockService:n,themeService:l,rtl:f,deviceType:T}),...y.components],P=me.extend(D.filter(Boolean),r);return function(e){if(!e||0===e.length)return;for(let t=0;t<e.length;t++)e[t].layout=e[t].layout||{},e[t].layout.displayOrder=t}(P),P}({properties:n,alternativeService:i,dockService:r,layoutService:o,disclaimerService:a,extensions:l,discrete:c,viewState:u,styleModel:h,themeService:p,tooltipService:m,chartModel:g,translator:y,colorService:S,scaleModel:w,fieldModel:k,rtl:I,fields:$,invert:F,selectables:V,viewCache:d,extremumModel:E,tickModel:f,itemWidthModel:C,mappingModel:q,model:T,app:R,constraints:P,deviceType:N,flags:b,selectionService:v,selections:D}),X=function({gestures:e=[],chartModel:t,actions:n,viewState:i,viewCache:r,discrete:o,layoutService:a,dockService:s,tooltipService:l,rtl:c}){const u=t.command.getChart(),d=function({componentKey:e,chart:t,actions:n,viewState:i,viewCache:r,layoutService:o,dockService:a,discrete:s,rtl:l}){return{gestures:[...yd({componentKey:e,chart:t,actions:n,viewState:i,viewCache:r,layoutService:o,dockService:a,discrete:s,rtl:l})],native:bd({componentKey:e,chart:t,actions:n,layoutService:o})}}({componentKey:"scrollbar",chart:u,actions:n,viewState:i,viewCache:r,discrete:o,layoutService:a,dockService:s,rtl:c}),h=l.getInteractions(),p={type:"hammer",enable:!0,gestures:[...[...e].sort(((e,t)=>(t.prio||0)-(e.prio||0))),...d.gestures,...o.interactions.gestures,...h.gestures]},m=[h.native,d.native,o.interactions.native];return[p,...m]}({gestures:[...V.gestures],chartModel:g,actions:x,viewState:u,viewCache:d,discrete:c,layoutService:o,dockService:r,tooltipService:m,rtl:I}),K=(Y={logicalSize:L,minCenterRatio:0},{layoutModes:ve.getLayoutModes(),center:void 0!==Y.minCenterRatio?{minWidthRatio:Y.minCenterRatio,minHeightRatio:Y.minCenterRatio}:void 0,logicalSize:Y.logicalSize?{align:.5,preserveAspectRatio:!0,...Y.logicalSize}:void 0}),J={collections:B,scales:W,formatters:U,components:O.extendComponents(G),interactions:X,strategy:K,palettes:S.getPalettes()};var Y;return J}(u.context,{properties:n,extensions:[],isUnsupportedFeature:a,model:h,app:d,actions:s,translator:b,flags:o,viewState:l,alternativeService:p,layoutService:m,chartModel:v,dockService:M,discrete:N,selectionService:I,selections:x,isLocked:x&&x.isLocked?x.isLocked:Si,viewCache:c,colorService:g,tickModel:T,styleModel:E,themeService:C,tooltipService:q,scaleModel:O,fieldModel:f,extremumModel:k,itemWidthModel:R,disclaimerService:P,mappingModel:w,debouncer:y,pluginService:L,deviceType:A});u.generateSettings=z;const j=o.isEnabled("LAYOUTING_WITH_DATA");return sm({layoutService:m})&&(v.command.updateDataless({generateSettings:z,forceData:j}),R.command.update()),v.command.updateDataless({generateSettings:z,forceData:j}),Promise.all([Promise.resolve({}),N.command.initialize()])}),[D,S]);L((()=>{if(!P||!P.length)return;const{updateModels:n,chartModel:i,layoutService:r}=t,{viewCache:o}=e;n(t),i.command.update(),zi.cacheProperties({viewCache:o,layout:r.getLayout()}),o.set("hasSlicedHats",i.command.getAnimationsMeta("hasSlicedHats"))}),[P])}({core:t,models:n,env:e}),function({core:e,models:t,flags:n}){const i=N(),r=j(),[o]=H((()=>{if(!(t&&e&&e.store.generateSettings&&e.store.rect))return Promise.resolve([]);const{store:o}=e,{generateSettings:a}=o,{layoutService:s,dockService:l,itemWidthModel:c,chartModel:u,discrete:d}=t,h=s.getLayout(),p=qh({layout:h,options:i});o.context.logicalSize=p;const m=p||r;if(!m||!m.width||!m.height)return Promise.resolve([]);const f=!!h.snapshotData;if(!f&&Th(o.rect,m))return Promise.resolve([]);l.update(m),f||(o.rect={...m}),c.command.update();const g=n.isEnabled("LAYOUTING_WITH_DATA");return u.command.updateDataless({generateSettings:a,forceData:g}),c.command.update(),Promise.all([Promise.resolve({}),d.command.initialize()])}),[r.width,r.height]);L((()=>{if(!o||!o.length)return;const{updateModels:e,chartModel:n}=t;e(t),n.command.update(),n.command.update()}),[o])}({core:t,models:n,flags:e.flags}),kf({core:t,models:n})}}}));var Z={properties_dataPoints_labelmode_share:{id:"properties.dataPoints.labelmode.share",locale:{"en-US":"Share","zh-TW":"佔有率","zh-CN":"份额","tr-TR":"Pay","sv-SE":"Andel","it-IT":"Percentuale","es-ES":"Cuota","de-DE":"Anteil","pl-PL":"Udział","nl-NL":"Aandeel","ko-KR":"공유","pt-BR":"Percentual","fr-FR":"Part","ja-JP":"割合","ru-RU":"Доля"}},Tooltip_selections_locked:{id:"Tooltip.selections.locked",locale:{"en-US":"Selections on this dimension are locked","zh-TW":"已鎖定此維度上的選項","zh-CN":"相关维度的选择已锁定","tr-TR":"Bu boyuttaki seçimler kilitli","sv-SE":"Urval i den här dimensionen är låsta","it-IT":"Le selezioni in questa dimensione sono bloccate","es-ES":"Las selecciones de esta dimensión están bloqueadas.","de-DE":"Auswahlen sind für diese Dimension gesperrt","pl-PL":"Selekcje dotyczące tego wymiaru są zablokowane","nl-NL":"Selecties voor deze dimensie zijn vergrendeld","ko-KR":"이 차원의 선택은 잠겨 있습니다.","pt-BR":"Seleções estão bloqueadas nesta dimensão","fr-FR":"Sélections verrouillées pour cette dimension","ja-JP":"この軸での選択はロックされています","ru-RU":"Выборки для данного измерения заблокированы"}},Tooltip_dimensions_drilldown:{id:"Tooltip.dimensions.drilldown",locale:{"en-US":"Drill-down dimension","zh-TW":"向下探查維度","zh-CN":"下钻维度","tr-TR":"Detaya inme boyutu","sv-SE":"Hierarkisk dimension","it-IT":"Dimensione di drill-down","es-ES":"Dimensión jerárquica","de-DE":"Drilldown-Dimension:","pl-PL":"Wymiar hierarchiczny","nl-NL":"Drill-downdimensie","ko-KR":"드릴다운 차원","pt-BR":"Dimensão da hierarquia","fr-FR":"Descendre dans la hiérarchie de la dimension","ja-JP":"軸のドリルダウン","ru-RU":"Измерение с детализацией"}},Object_ErrorMessage_MissingDimension:{id:"Object.ErrorMessage.MissingDimension",locale:{"en-US":"Dimension not found","zh-TW":"找不到維度","zh-CN":"未找到维度","tr-TR":"Boyut bulunamadı","sv-SE":"Dimensionen hittades inte","it-IT":"Dimensione non trovata","es-ES":"No se ha encontrado la dimensión","de-DE":"Dimension nicht gefunden","pl-PL":"Wymiar nie został znaleziony","nl-NL":"Dimensie niet gevonden","ko-KR":"차원을 찾지 못했습니다.","pt-BR":"Dimensão não encontrada","fr-FR":"Dimension introuvable","ja-JP":"軸が見つかりません","ru-RU":"Измерение не найдено"}},Object_ErrorMessage_MissingMeasure:{id:"Object.ErrorMessage.MissingMeasure",locale:{"en-US":"Measure not found","zh-TW":"找不到量值","zh-CN":"未找到度量","tr-TR":"Hesaplama bulunamadı","sv-SE":"Måttet hittades inte","it-IT":"Misura non trovata","es-ES":"No se ha encontrado la medida","de-DE":"Kennzahl nicht gefunden","pl-PL":"Miara nie została znaleziona","nl-NL":"Meting niet gevonden","ko-KR":"측정값을 찾지 못했습니다.","pt-BR":"Medida não encontrada","fr-FR":"Mesure introuvable","ja-JP":"メジャーが見つかりません","ru-RU":"Мера не найдена"}},Object_Disclaimer_LimitedData:{id:"Object.Disclaimer.LimitedData",locale:{"en-US":"Currently showing a limited data set.","zh-TW":"目前顯示的是有限的資料集。","zh-CN":"当前正显示有限的数据集。","tr-TR":"Şu anda sınırlı bir veri kümesi gösteriliyor.","sv-SE":"Just nu visas en begränsad uppsättning data.","it-IT":"Attualmente viene visualizzata una serie di dati limitata.","es-ES":"Mostrando actualmente un conjunto limitado de datos.","de-DE":"Zurzeit wird nur ein beschränkter Datensatz angezeigt.","pl-PL":"Aktualnie przedstawiany jest ograniczony zestaw danych.","nl-NL":"Momenteel wordt een beperkte gegevensverzameling getoond.","ko-KR":"현재 제한된 데이터 집합을 표시하고 있습니다.","pt-BR":"Mostrando um conjunto de dados limitado.","fr-FR":"Affichage d'un ensemble de données limité pour l'instant.","ja-JP":"現在、限定的なデータ セットを表示しています。","ru-RU":"В настоящее время отображается ограниченный набор данных."}},Object_Disclaimer_OnlyNegativeOrZeroValues:{id:"Object.Disclaimer.OnlyNegativeOrZeroValues",locale:{"en-US":"The chart is not displayed because it contains only negative or zero values.","zh-TW":"系統不會顯示圖表,因為該圖表僅包含負值或零值。","zh-CN":"未显示图表,因为它仅包含负值或零值。","tr-TR":"Yalnızca negatif veya sıfır değerlerini içermesi nedeniyle grafik görüntülenmiyor.","sv-SE":"Diagrammet visas inte eftersom det enbart innehåller negativa eller nollvärden","it-IT":"Il grafico non viene visualizzato poiché contiene solo valori negativi o uguali a zero.","es-ES":"El gráfico no se muestra porque sólo contiene valores negativos o valores cero.","de-DE":"Das Diagramm wird nicht angezeigt, da es nur negative oder 0-Werte enthält.","pl-PL":"Wykres nie jest wyświetlany, ponieważ zawiera wartości ujemne lub zerowe.","nl-NL":"De grafiek wordt niet weergegeven omdat het alleen negatieve waarden of nulwaarden bevat.","ko-KR":"음수 또는 zero 값만 포함되어 있으므로 차트가 표시되지 않습니다.","pt-BR":"O gráfico não foi exibido, porque contém apenas valores negativos ou zero.","fr-FR":"Le graphique n'est pas affiché, car il contient uniquement des valeurs négatives ou égales à zéro.","ja-JP":"チャートは負の値またはゼロ値しか含まれていないため、表示されていません。","ru-RU":"Диаграмма не отображается, поскольку она содержит только отрицательные или нулевые значения."}},Object_Disclaimer_NegativeOrZeroValues:{id:"Object.Disclaimer.NegativeOrZeroValues",locale:{"en-US":"The data set contains negative or zero values that cannot be shown in this chart.","zh-TW":"資料集包含無法在此圖表中顯示的負值或零值。","zh-CN":"数据集中包含无法在此图表中显示的负值或零值。","tr-TR":"Veri kümesi, bu grafikte gösterilemeyen negatif veya sıfır değerlerini içeriyor.","sv-SE":"Datauppsättningen innehåller negativa värden eller nollvärden som inte kan visas i detta diagram.","it-IT":"La serie di dati contiene valori negativi o uguali a zero che non possono essere visualizzati in questo grafico.","es-ES":"El conjunto de datos contiene valores negativos o cero que no se pueden mostrar en este gráfico.","de-DE":"Die in den Datensätzen enthaltenen negativen oder 0-Werte können nicht in diesem Diagramm dargestellt werden.","pl-PL":"Zestaw danych zawiera wartości ujemne lub zerowe, których nie można przedstawić w tym wykresie.","nl-NL":"De gegevensverzameling bevat negatieve waarden of nulwaarden die niet kunnen worden weergegeven in deze grafiek.","ko-KR":"데이터 집합에 해당 차트에 표시할 수 없는 음수 값 또는 zero 값이 포함되어 있습니다.","pt-BR":"O conjunto de dados contém valores negativos ou iguais a zero que não podem ser mostrados neste gráfico.","fr-FR":"L'ensemble de données contient des valeurs négatives ou égales à zéro impossibles à afficher dans ce graphique.","ja-JP":"データ セットには、本チャートに表示できない負の値またはゼロ値が含まれています。","ru-RU":"Набор данных содержит отрицательные или нулевые значения, которые невозможно показать в этой диаграмме."}},Object_Disclaimer_DataRangeIncludingZero:{id:"Object.Disclaimer.DataRangeIncludingZero",locale:{"en-US":"The logarithmic scale has been replaced by a linear scale because the data range includes zero.","zh-TW":"對數刻度已遭線性刻度取代,因為資料範圍包含零。","zh-CN":"对数刻度已替换为线性刻度,因为该数据范围包括零。","tr-TR":"Veri aralığı sıfır değerini içerdiğinden, logaritmik ölçek yerine doğrusal ölçek kullanıldı.","sv-SE":"Den logaritmiska skalan har ersatts av en linjär skala eftersom dataintervallet innehåller värdet noll.","it-IT":"La scala logaritmica è stata sostituita da una scala lineare perché l'intervallo di dati include zero.","es-ES":"La escala logarítmica ha sido reemplazada por una escala lineal porque el rango de datos incluye cero.","de-DE":"Die logarithmische Skala wurde durch die lineare Skala ersetzt, weil der Datenbereich NULL enthält.","pl-PL":"Skala logarytmiczna została zastąpiona liniową, ponieważ zakres danych zawiera zero.","nl-NL":"De logaritmische schaal is vervangen door een lineaire schaal omdat het gegevensbereik nullen bevat.","ko-KR":"데이터 범위에 0이 포함되어 있으므로 로그 눈금이 선형 눈금으로 바뀌었습니다.","pt-BR":"A escala logarítmica foi substituída por uma escala linear, pois o intervalo de dados inclui zero.","fr-FR":"L'échelle logarithmique a été remplacée par une échelle linéaire, car la plage de données comprend la valeur zéro.","ja-JP":"データ範囲にゼロが含まれるため、Log スケールは Linear スケールで置換されています。","ru-RU":"Логарифмический масштаб заменен линейным масштабом, поскольку диапазон данных включает ноль."}},Object_Disclaimer_NoDataExist:{id:"Object.Disclaimer.NoDataExist",locale:{"en-US":"The selections generated no data for this chart.","zh-TW":"此選項無法產生任何適用於此圖表的資料。","zh-CN":"选择未生成此图表的数据。","tr-TR":"Seçimler bu grafik için hiç veri oluşturmadı.","sv-SE":"Urvalen genererade inga data för detta diagram.","it-IT":"Le selezioni non hanno generato dati per questo grafico.","es-ES":"Las selecciones no han generado datos para este gráfico.","de-DE":"Die Auswahlen haben für dieses Diagramm keine Daten generiert.","pl-PL":"Selekcje nie spowodowały wygenerowania danych dla tego wykresu.","nl-NL":"De selecties hebben geen gegevens voor de grafiek gegenereerd.","ko-KR":"선택 내용으로 해당 차트에 대한 데이터가 생성되지 않았습니다.","pt-BR":"As seleções não geraram dados para este gráfico.","fr-FR":"Les sélections n'ont pas généré de données pour ce graphique.","ja-JP":"このチャートには選択からデータが生成されませんでした。","ru-RU":"В результате выборок данные для этой диаграммы не созданы."}},Object_Disclaimer_OnlyNanData:{id:"Object.Disclaimer.OnlyNanData",locale:{"en-US":"The chart is not displayed because it contains only undefined values.","zh-TW":"系統不會顯示圖表,因為該圖表僅包含未定義的值。","zh-CN":"未显示图表,因为它仅包含未定义的值。","tr-TR":"Yalnızca tanımsız değerleri içermesi nedeniyle grafik görüntülenmiyor.","sv-SE":"Diagrammet visas inte eftersom det enbart innehåller odefinierade värden.","it-IT":"Il grafico non è visualizzato poiché contiene solo valori non definiti.","es-ES":"El gráfico no se