"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),s=require("./index-DwCsX1sv.cjs"),A=require("./useNestedProp-B618ZN94.cjs"),Y=require("./Title-BlC0Lcua.cjs"),J=require("./Legend-DzWbU4w8.cjs"),F=require("./usePrinter-DTDziYU0.cjs"),K=require("./PackageVersion-CDIO8v3f.cjs"),Q=require("./PenAndPaper-bCXNnqQx.cjs"),Z=require("./vue-ui-skeleton-DZILAxJl.cjs"),ee=require("./useUserOptionState-BgepsfED.cjs"),te=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),ae=["id"],le={key:1,ref:"noTitle",class:"vue-data-ui-no-title-space",style:"height:36px; width: 100%;background:transparent"},re=["xmlns","viewBox"],oe=["width","height"],se={key:1},ne=["x","y","height","width","fill","stroke"],ue=["x","y","height","width","rx","fill","stroke","stroke-width"],ie=["x","y","height","width","fill","stroke","stroke-width"],ce=["x","y","font-size","font-weight","fill"],de=["x","y","height","width","rx","fill","stroke","stroke-width"],he={key:3},ve=["x","y","fill","font-size","font-weight"],me={key:4},ge=["x1","x2","y1","y2","stroke"],fe={key:5,class:"vue-data-ui-watermark"},ye={class:"vue-ui-bullet-legend-item",dir:"auto"},pe={style:{"margin-right":"2px"}},ke={key:7,ref:"source",dir:"auto"},be={__name:"vue-ui-bullet",props:{config:{type:Object,default(){return{}}},dataset:{type:Object,default(){return{}}}},setup(z,{expose:I}){const n=z,{vue_ui_bullet:H}=s.useConfig(),y=e.ref(null),T=e.ref(null),B=e.ref(0),M=e.ref(null),U=e.ref(0),d=e.computed({get:()=>n.dataset.hasOwnProperty("value"),set:a=>a}),v=e.computed(()=>n.dataset.segments?Array.isArray(n.dataset.segments)?n.dataset.segments.length?!0:(console.warn(`VueUiBullet: dataset segments is empty. Provide segments with this datastructure:

segments: [
    {
        name: string;
        from: number;
        to: number;
        color?: string;
    },
    {...}
]
        `),d.value=!1,!1):(console.warn(`VueUiBullet: dataset segments must be an array of objects with this datastructure:

segments: [
    {
        name: string;
        from: number;
        to: number;
        color?: string;
    },
    {...}
] 
        `),d.value=!1,!1):(console.warn(`VueUiBullet: dataset segments is empty. Provide segments with this datastructure:

segments: [
    {
        name: string;
        from: number;
        to: number;
        color?: string;
    },
    {...}
]
        `),d.value=!1,!1));e.onMounted(x);function x(){s.objectIsEmpty(n.dataset)?s.error({componentName:"VueUiBullet",type:"dataset"}):v.value?n.dataset.segments.forEach((a,o)=>{s.getMissingDatasetAttributes({datasetObject:a,requiredAttributes:["name","from","to"]}).forEach(r=>{d.value=!1,s.error({componentName:"VueUiBullet segment",type:"datasetSerieAttribute",property:r,index:o})})}):d.value=!1,t.value.style.chart.animation.show&&N(n.dataset.value||0)}const p=e.ref(s.createUid());function C(){const a=A.useNestedProp({userConfig:n.config,defaultConfig:H});return a.theme?{...A.useNestedProp({userConfig:s.themes.vue_ui_bullet[a.theme]||n.config,defaultConfig:a})}:a}const t=e.computed({get:()=>C(),set:a=>a}),{userOptionsVisible:k,setUserOptionsVisibility:_,keepUserOptionState:L}=ee.useUserOptionState({config:t.value});e.watch(()=>n.config,a=>{t.value=C(),k.value=!t.value.showOnChartHover,x(),B.value+=1},{deep:!0});const l=e.computed(()=>{const a=t.value.style.chart.height,o=t.value.style.chart.width,r=t.value.style.chart.padding.left,h=o-t.value.style.chart.padding.right,f=t.value.style.chart.padding.top,c=a-t.value.style.chart.padding.bottom;return{height:a,width:o,left:r,right:h,top:f,bottom:c,chartWidth:h-r,chartHeight:c-f}}),q=e.computed(()=>{if(!v.value)return[];const a=[];for(let o=0;o<n.dataset.segments.length;o+=1)a.push(s.lightenHexColor(t.value.style.chart.segments.baseColor,o/n.dataset.segments.length));return a}),b=e.computed(()=>v.value?{min:Math.min(...n.dataset.segments.map(a=>a.from)),max:Math.max(...n.dataset.segments.map(a=>a.to))}:{min:0,max:1}),u=e.ref(D());e.watch(()=>n.dataset,a=>{t.value.style.chart.animation.show?N(a.value||0):u.value=a.value||0},{deep:!0});function D(){return t.value.style.chart.animation.show?b.value.min:n.dataset.value||0}const S=e.ref(null);function N(a){const o=Math.abs(a-u.value)/t.value.style.chart.animation.animationFrames;function r(){u.value<a?u.value=Math.min(u.value+o,a):u.value>a&&(u.value=Math.max(u.value-o,a)),u.value!==a&&(S.value=requestAnimationFrame(r))}r()}e.onBeforeUnmount(()=>{cancelAnimationFrame(S.value)});const i=e.computed(()=>{if(!v.value)return[];const a=s.calculateNiceScale(b.value.min,b.value.max,t.value.style.chart.segments.ticks.divisions),o=a.min>=0?0:Math.abs(a.min),r={x:l.value.left+(n.dataset.target+o)/(a.max+o)*l.value.chartWidth-t.value.style.chart.target.width/2},h={width:(u.value+o)/(a.max+o)*l.value.chartWidth},f=a.ticks.map(c=>({value:c,y:l.value.bottom+t.value.style.chart.segments.dataLabels.fontSize+3+t.value.style.chart.segments.dataLabels.offsetY,x:l.value.left+(c+o)/(a.max+o)*l.value.chartWidth}));return{scale:a,target:r,value:h,ticks:f,chunks:n.dataset.segments.map((c,X)=>({...c,color:c.color?s.convertColorToHex(c.color):q.value[X],x:l.value.left+l.value.chartWidth*((c.from+o)/(a.max+o)),y:l.value.top,height:l.value.chartHeight,width:l.value.chartWidth*(Math.abs(c.to-c.from)/(a.max+o))}))}}),P=e.computed(()=>!i.value||!i.value.chunks||!i.value.chunks.length?[]:i.value.chunks.map(a=>{const o=s.applyDataLabel(t.value.style.chart.segments.dataLabels.formatter,a.from,s.dataLabel({p:t.value.style.chart.segments.dataLabels.prefix,v:a.from,s:t.value.style.chart.segments.dataLabels.suffix,r:t.value.style.chart.segments.dataLabels.rounding})),r=s.applyDataLabel(t.value.style.chart.segments.dataLabels.formatter,a.to,s.dataLabel({p:t.value.style.chart.segments.dataLabels.prefix,v:a.to,s:t.value.style.chart.segments.dataLabels.suffix,r:t.value.style.chart.segments.dataLabels.rounding}));return{...a,shape:"square",value:`${o} - ${r}`}})),W=e.computed(()=>({cy:"bullet-div-legend",backgroundColor:"transparent",color:t.value.style.chart.legend.color,fontSize:t.value.style.chart.legend.fontSize,paddingBottom:6,fontWeight:t.value.style.chart.legend.bold?"bold":""})),{isPrinting:E,isImaging:V,generatePdf:$,generateImage:O}=F.usePrinter({elementId:`bullet_${p.value}`,fileName:t.value.style.chart.title.text||"vue-ui-bullet"}),R=e.computed(()=>t.value.userOptions.show&&!t.value.style.chart.title.text),m=e.ref(!1);function j(a){m.value=a,U.value+=1}function G(){return i.value}const g=e.ref(!1);function w(){g.value=!g.value}return I({getData:G,generatePdf:$,generateImage:O,toggleAnnotator:w}),(a,o)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"bulletChart",ref:y,class:e.normalizeClass(`vue-ui-bullet ${m.value?"vue-data-ui-wrapper-fullscreen":""}`),style:e.normalizeStyle(`font-family:${t.value.style.fontFamily};width:100%;background:${t.value.style.chart.backgroundColor}`),id:`bullet_${p.value}`,onMouseenter:o[0]||(o[0]=()=>e.unref(_)(!0)),onMouseleave:o[1]||(o[1]=()=>e.unref(_)(!1))},[t.value.userOptions.buttons.annotator?(e.openBlock(),e.createBlock(Q.PenAndPaper,{key:0,parent:y.value,backgroundColor:t.value.style.chart.backgroundColor,color:t.value.style.chart.color,active:g.value,onClose:w},null,8,["parent","backgroundColor","color","active"])):e.createCommentVNode("",!0),R.value?(e.openBlock(),e.createElementBlock("div",le,null,512)):e.createCommentVNode("",!0),t.value.style.chart.title.text?(e.openBlock(),e.createElementBlock("div",{key:2,ref_key:"chartTitle",ref:T,style:"width:100%;background:transparent;"},[(e.openBlock(),e.createBlock(Y._sfc_main,{lineHeight:"1.3rem",key:`title_${B.value}`,config:{title:{cy:"bullet-div-title",...t.value.style.chart.title},subtitle:{cy:"bullet-div-subtitle",...t.value.style.chart.title.subtitle}}},null,8,["config"]))],512)):e.createCommentVNode("",!0),t.value.userOptions.show&&d.value&&(e.unref(L)||e.unref(k))?(e.openBlock(),e.createBlock(F.UserOptions,{key:3,ref:"details",backgroundColor:t.value.style.chart.backgroundColor,color:t.value.style.chart.color,isPrinting:e.unref(E),isImaging:e.unref(V),uid:p.value,hasTooltip:!1,hasPdf:t.value.userOptions.buttons.pdf,hasImg:t.value.userOptions.buttons.img,hasXls:!1,hasTable:!1,hasLabel:!1,hasFullscreen:t.value.userOptions.buttons.fullscreen,isFullscreen:m.value,chartElement:y.value,position:t.value.userOptions.position,titles:{...t.value.userOptions.buttonTitles},hasAnnotator:t.value.userOptions.buttons.annotator,isAnnotation:g.value,onToggleFullscreen:j,onGeneratePdf:e.unref($),onGenerateImage:e.unref(O),onToggleAnnotator:w,style:e.normalizeStyle({visibility:e.unref(L)?e.unref(k)?"visible":"hidden":"visible"})},e.createSlots({_:2},[a.$slots.optionPdf?{name:"optionPdf",fn:e.withCtx(()=>[e.renderSlot(a.$slots,"optionPdf",{},void 0,!0)]),key:"0"}:void 0,a.$slots.optionImg?{name:"optionImg",fn:e.withCtx(()=>[e.renderSlot(a.$slots,"optionImg",{},void 0,!0)]),key:"1"}:void 0,a.$slots.optionFullscreen?{name:"optionFullscreen",fn:e.withCtx(({toggleFullscreen:r,isFullscreen:h})=>[e.renderSlot(a.$slots,"optionFullscreen",e.normalizeProps(e.guardReactiveProps({toggleFullscreen:r,isFullscreen:h})),void 0,!0)]),key:"2"}:void 0,a.$slots.optionAnnotator?{name:"optionAnnotator",fn:e.withCtx(({toggleAnnotator:r,isAnnotator:h})=>[e.renderSlot(a.$slots,"optionAnnotator",e.normalizeProps(e.guardReactiveProps({toggleAnnotator:r,isAnnotator:h})),void 0,!0)]),key:"3"}:void 0]),1032,["backgroundColor","color","isPrinting","isImaging","uid","hasPdf","hasImg","hasFullscreen","isFullscreen","chartElement","position","titles","hasAnnotator","isAnnotation","onGeneratePdf","onGenerateImage","style"])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("svg",{key:4,xmlns:e.unref(s.XMLNS),class:e.normalizeClass({"vue-data-ui-fullscreen--on":m.value,"vue-data-ui-fulscreen--off":!m.value,"vue-ui-bullet-svg":!0}),viewBox:`0 0 ${l.value.width} ${l.value.height}`,style:e.normalizeStyle(`width: 100%; overflow: visible; background:transparent;color:${t.value.style.chart.color}`)},[e.createVNode(K._sfc_main),a.$slots["chart-background"]?(e.openBlock(),e.createElementBlock("foreignObject",{key:0,x:0,y:0,width:l.value.width,height:l.value.height,style:{pointerEvents:"none"}},[e.renderSlot(a.$slots,"chart-background",{},void 0,!0)],8,oe)):e.createCommentVNode("",!0),v.value?(e.openBlock(),e.createElementBlock("g",se,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value.chunks,r=>(e.openBlock(),e.createElementBlock("rect",{x:r.x,y:r.y,height:r.height,width:r.width,fill:r.color,"stroke-width":1,stroke:t.value.style.chart.backgroundColor},null,8,ne))),256)),t.value.style.chart.target.onTop?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("rect",{key:0,x:i.value.target.x,y:l.value.top+(l.value.chartHeight-l.value.chartHeight*t.value.style.chart.target.heightRatio)/2,height:l.value.chartHeight*t.value.style.chart.target.heightRatio,width:t.value.style.chart.target.width,rx:t.value.style.chart.target.rounded?t.value.style.chart.target.width/2:0,fill:t.value.style.chart.target.color,stroke:t.value.style.chart.target.stroke,"stroke-width":t.value.style.chart.target.strokeWidth},null,8,ue)),e.createElementVNode("rect",{x:l.value.left,y:l.value.top+(l.value.chartHeight-l.value.chartHeight*t.value.style.chart.valueBar.heightRatio)/2,height:l.value.chartHeight*t.value.style.chart.valueBar.heightRatio,width:i.value.value.width,fill:t.value.style.chart.valueBar.color,stroke:t.value.style.chart.valueBar.stroke,"stroke-width":t.value.style.chart.valueBar.strokeWidth},null,8,ie),t.value.style.chart.valueBar.label.show?(e.openBlock(),e.createElementBlock("text",{key:1,x:l.value.left+i.value.value.width,y:l.value.top-6+t.value.style.chart.valueBar.label.offsetY,"font-size":t.value.style.chart.valueBar.label.fontSize,"font-weight":t.value.style.chart.valueBar.label.bold?"bold":"normal",fill:t.value.style.chart.valueBar.label.color,"text-anchor":"middle"},e.toDisplayString(e.unref(s.applyDataLabel)(t.value.style.chart.segments.dataLabels.formatter,u.value,e.unref(s.dataLabel)({p:t.value.style.chart.segments.dataLabels.prefix,v:u.value,s:t.value.style.chart.segments.dataLabels.suffix,r:t.value.style.chart.segments.dataLabels.rounding}))),9,ce)):e.createCommentVNode("",!0),t.value.style.chart.target.onTop?(e.openBlock(),e.createElementBlock("rect",{key:2,x:i.value.target.x,y:l.value.top+(l.value.chartHeight-l.value.chartHeight*t.value.style.chart.target.heightRatio)/2,height:l.value.chartHeight*t.value.style.chart.target.heightRatio,width:t.value.style.chart.target.width,rx:t.value.style.chart.target.rounded?t.value.style.chart.target.width/2:0,fill:t.value.style.chart.target.color,stroke:t.value.style.chart.target.stroke,"stroke-width":t.value.style.chart.target.strokeWidth},null,8,de)):e.createCommentVNode("",!0),t.value.style.chart.segments.dataLabels.show?(e.openBlock(),e.createElementBlock("g",he,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value.ticks,r=>(e.openBlock(),e.createElementBlock("text",{x:r.x,y:r.y,"text-anchor":"middle",fill:t.value.style.chart.segments.dataLabels.color,"font-size":t.value.style.chart.segments.dataLabels.fontSize+"px","font-weight":t.value.style.chart.segments.dataLabels.bold?"bold":"normal"},e.toDisplayString(e.unref(s.applyDataLabel)(t.value.style.chart.segments.dataLabels.formatter,r.value,e.unref(s.dataLabel)({p:t.value.style.chart.segments.dataLabels.prefix,v:r.value,s:t.value.style.chart.segments.dataLabels.suffix,r:t.value.style.chart.segments.dataLabels.rounding}))),9,ve))),256))])):e.createCommentVNode("",!0),t.value.style.chart.segments.dataLabels.show&&t.value.style.chart.segments.ticks.show?(e.openBlock(),e.createElementBlock("g",me,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value.ticks,r=>(e.openBlock(),e.createElementBlock("line",{x1:r.x,x2:r.x,y1:l.value.bottom,y2:l.value.bottom+3,stroke:t.value.style.chart.segments.ticks.stroke,"stroke-width":1,"stroke-linecap":"round"},null,8,ge))),256))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.renderSlot(a.$slots,"svg",{svg:l.value},void 0,!0)],14,re)):e.createCommentVNode("",!0),a.$slots.watermark?(e.openBlock(),e.createElementBlock("div",fe,[e.renderSlot(a.$slots,"watermark",e.normalizeProps(e.guardReactiveProps({isPrinting:e.unref(E)||e.unref(V)})),void 0,!0)])):e.createCommentVNode("",!0),d.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Z.default,{key:6,config:{type:"bullet",style:{backgroundColor:t.value.style.chart.backgroundColor,bullet:{color:"#CCCCCC"}}}},null,8,["config"])),e.createElementVNode("div",{ref_key:"chartLegend",ref:M},[t.value.style.chart.legend.show?(e.openBlock(),e.createBlock(J.Legend,{key:0,clickable:!1,legendSet:P.value,config:W.value},{item:e.withCtx(({legend:r})=>[e.createElementVNode("div",ye,[e.createElementVNode("span",pe,e.toDisplayString(r.name)+":",1),e.createElementVNode("span",null,e.toDisplayString(r.value),1)])]),_:1},8,["legendSet","config"])):e.createCommentVNode("",!0),e.renderSlot(a.$slots,"legend",{legend:P.value},void 0,!0)],512),a.$slots.source?(e.openBlock(),e.createElementBlock("div",ke,[e.renderSlot(a.$slots,"source",{},void 0,!0)],512)):e.createCommentVNode("",!0)],46,ae))}},we=te._export_sfc(be,[["__scopeId","data-v-f3c3067f"]]);exports.default=we;
