vue-data-ui
Version:
A user-empowering data visualization Vue 3 components library for eloquent data storytelling
2 lines (1 loc) • 17.6 kB
JavaScript
"use strict";const e=require("vue"),a=require("./BaseIcon-Db1HIrAt.cjs"),D=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),A={beforeMount(t,d){t.clickOutsideEvent=function(s){t===s.target||t.contains(s.target)||d.value(s)},document.addEventListener("click",t.clickOutsideEvent)},unmounted(t){document.removeEventListener("click",t.clickOutsideEvent)}},L=["title"],w=["data-open"],X={__name:"UserOptions",props:{hasPdf:{type:Boolean,default:!0},hasXls:{type:Boolean,default:!0},hasImg:{type:Boolean,default:!1},hasLabel:{type:Boolean,default:!1},isLabelActive:{type:Boolean,default:!1},hasTable:{type:Boolean,default:!1},hasSort:{type:Boolean,default:!1},hasStack:{type:Boolean,default:!1},hasTooltip:{type:Boolean,default:!1},color:{type:String},backgroundColor:{type:String},isPrinting:{type:Boolean,default:!1},isImaging:{type:Boolean,default:!1},title:{type:String},uid:{type:String},hasFullscreen:{type:Boolean,default:!1},chartElement:{type:HTMLElement,default:null},isFullscreen:{type:Boolean,default:!1},isStacked:{type:Boolean,default:!1},isTooltip:{type:Boolean,default:!1},hasAnimation:{type:Boolean,default:!1},isAnimation:{type:Boolean,default:!1},titles:{type:Object,default(){return{}}},showTooltips:{type:Boolean,default:!0},zIndex:{type:Number,default:1},noOffset:{type:Boolean,default:!0},position:{type:String,default:"right"},offsetX:{type:Number,default:0},hasAnnotator:{type:Boolean,default:!1},isAnnotation:{type:Boolean,default:!1}},emits:["generatePdf","generateCsv","generateImage","toggleTable","toggleLabels","toggleSort","toggleFullscreen","toggleStack","toggleTooltip","toggleAnimation","toggleAnnotator"],setup(t,{emit:d}){const s=t,u=d;function m(){u("generatePdf")}function v(){u("generateCsv")}function B(){u("generateImage")}const g=e.ref(!1);function f(){g.value=!g.value,u("toggleTable")}const k=e.ref(!1),M=e.ref(!0);function h(){r.value=window.innerWidth>600,k.value=!k.value,k.value&&(M.value=!1)}function T(){s.isPrinting||s.isImaging||(k.value=!1)}function F(){k.value&&T()}const C=e.ref(s.isLabelActive);function I(){C.value=!C.value,u("toggleLabels")}const b=e.ref(s.isAnimation);function E(){b.value=!b.value,u("toggleAnimation")}const y=e.computed({get:()=>s.isAnnotation,set:l=>l});function z(){y.value=!y.value,u("toggleAnnotator")}function P(){u("toggleSort")}const $=e.ref(s.isStacked);function p(){$.value=!$.value,u("toggleStack")}const S=e.ref(s.isTooltip);function O(){S.value=!S.value,u("toggleTooltip")}const c=e.ref(!1);function N(l){s.chartElement&&(l==="in"?(c.value=!0,s.chartElement.requestFullscreen(),u("toggleFullscreen",!0)):(c.value=!1,document&&document.exitFullscreen(),u("toggleFullscreen",!1)))}function V(l){document.fullscreenElement?c.value=!0:c.value=!1}e.onMounted(()=>{document.addEventListener("fullscreenchange",V)}),e.onBeforeUnmount(()=>{document.removeEventListener("fullscreenchange",V)});const r=e.ref(window.innerWidth>600),n=e.ref({tooltip:!1,pdf:!1,csv:!1,img:!1,table:!1,labels:!1,sort:!1,stack:!1,fullscreen:!1,animation:!1,annotator:!1});return(l,o)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{"data-html2canvas-ignore":"",class:"vue-ui-user-options",style:e.normalizeStyle(`z-index: ${t.zIndex}; height: 34px; position: ${c.value?"fixed":"absolute"}; top: 0; ${t.position==="right"?`right:${c.value?"12px":"0"}`:`left:${c.value?"12px":"0"}`}; padding: 4px; background:transparent;`)},[e.createElementVNode("div",{tabindex:"0",title:k.value?t.titles.close||"":t.titles.open||"",style:e.normalizeStyle(`width:32px; position: absolute; top: 0;${t.position==="right"?`right: ${t.offsetX?t.offsetX:t.noOffset?0:4}px`:`left: ${t.noOffset?0:4}px`}; padding: 0 0px; display: flex; align-items:center;justify-content:center;height: 36px; cursor:pointer; background:transparent`),onClick:e.withModifiers(h,["stop"]),onKeypress:e.withKeys(h,["enter"])},[e.renderSlot(l.$slots,"menuIcon",e.normalizeProps(e.guardReactiveProps({isOpen:k.value,color:t.color})),()=>[e.createVNode(a.default,{name:k.value?"close":"menu",stroke:t.color,"stroke-width":2},null,8,["name","stroke"])],!0)],44,L),e.createElementVNode("div",{"data-open":k.value,class:e.normalizeClass({"vue-ui-user-options-drawer":!0}),style:e.normalizeStyle(`background:${t.backgroundColor}; ${t.position==="right"?`right: ${t.offsetX?t.offsetX:t.noOffset?0:4}px`:`left: ${t.noOffset?0:4}px`}`)},[t.hasTooltip?(e.openBlock(),e.createElementBlock("button",{key:0,tabindex:"0",class:"vue-ui-user-options-button",onClick:O,onMouseenter:o[0]||(o[0]=i=>n.value.tooltip=!0),onMouseout:o[1]||(o[1]=i=>n.value.tooltip=!1)},[l.$slots.optionTooltip?e.renderSlot(l.$slots,"optionTooltip",{key:0},void 0,!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[S.value?(e.openBlock(),e.createBlock(a.default,{key:0,name:"tooltip",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"])):(e.openBlock(),e.createBlock(a.default,{key:1,name:"tooltipDisabled",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"]))],64)),r.value&&t.titles.tooltip&&!l.$slots.optionTooltip?(e.openBlock(),e.createElementBlock("div",{key:2,dir:"auto",class:e.normalizeClass({"button-info-left":t.position==="left","button-info-right":t.position==="right","button-info-left-visible":t.position==="left"&&n.value.tooltip,"button-info-right-visible":t.position==="right"&&n.value.tooltip}),style:e.normalizeStyle({background:t.backgroundColor,color:t.color})},e.toDisplayString(t.titles.tooltip),7)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0),t.hasPdf?(e.openBlock(),e.createElementBlock("button",{key:1,tabindex:"0",class:"vue-ui-user-options-button",onClick:m,onMouseenter:o[2]||(o[2]=i=>n.value.pdf=!0),onMouseout:o[3]||(o[3]=i=>n.value.pdf=!1)},[l.$slots.optionPdf?e.renderSlot(l.$slots,"optionPdf",{key:0},void 0,!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[t.isPrinting?(e.openBlock(),e.createBlock(a.default,{key:0,name:"spin",isSpin:"",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"])):(e.openBlock(),e.createBlock(a.default,{key:1,name:"pdf",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"]))],64)),r.value&&t.titles.pdf&&!l.$slots.optionPdf?(e.openBlock(),e.createElementBlock("div",{key:2,dir:"auto",class:e.normalizeClass({"button-info-left":t.position==="left","button-info-right":t.position==="right","button-info-right-visible":t.position==="right"&&n.value.pdf,"button-info-left-visible":t.position==="left"&&n.value.pdf}),style:e.normalizeStyle({background:t.backgroundColor,color:t.color})},e.toDisplayString(t.titles.pdf),7)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0),t.hasXls?(e.openBlock(),e.createElementBlock("button",{key:2,tabindex:"0",class:"vue-ui-user-options-button",onClick:v,onMouseenter:o[4]||(o[4]=i=>n.value.csv=!0),onMouseout:o[5]||(o[5]=i=>n.value.csv=!1)},[l.$slots.optionCsv?e.renderSlot(l.$slots,"optionCsv",{key:0},void 0,!0):(e.openBlock(),e.createBlock(a.default,{key:1,name:"excel",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"])),r.value&&t.titles.csv&&!l.$slots.optionCsv?(e.openBlock(),e.createElementBlock("div",{key:2,dir:"auto",class:e.normalizeClass({"button-info-left":t.position==="left","button-info-right":t.position==="right","button-info-right-visible":t.position==="right"&&n.value.csv,"button-info-left-visible":t.position==="left"&&n.value.csv}),style:e.normalizeStyle({background:t.backgroundColor,color:t.color})},e.toDisplayString(t.titles.csv),7)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0),t.hasImg?(e.openBlock(),e.createElementBlock("button",{key:3,tabindex:"0",class:"vue-ui-user-options-button",onClick:B,onMouseenter:o[6]||(o[6]=i=>n.value.img=!0),onMouseout:o[7]||(o[7]=i=>n.value.img=!1)},[l.$slots.optionImg?e.renderSlot(l.$slots,"optionImg",{key:0},void 0,!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[t.isImaging?(e.openBlock(),e.createBlock(a.default,{key:0,name:"spin",isSpin:"",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"])):(e.openBlock(),e.createBlock(a.default,{key:1,name:"image",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"]))],64)),r.value&&t.titles.img&&!l.$slots.optionImg?(e.openBlock(),e.createElementBlock("div",{key:2,dir:"auto",class:e.normalizeClass({"button-info-left":t.position==="left","button-info-right":t.position==="right","button-info-right-visible":t.position==="right"&&n.value.img,"button-info-left-visible":t.position==="left"&&n.value.img}),style:e.normalizeStyle({background:t.backgroundColor,color:t.color})},e.toDisplayString(t.titles.img),7)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0),t.hasTable?(e.openBlock(),e.createElementBlock("button",{key:4,tabindex:"0",class:"vue-ui-user-options-button",onClick:f,onMouseenter:o[8]||(o[8]=i=>n.value.table=!0),onMouseout:o[9]||(o[9]=i=>n.value.table=!1)},[l.$slots.optionTable?e.renderSlot(l.$slots,"optionTable",{key:0},void 0,!0):(e.openBlock(),e.createBlock(a.default,{key:1,name:g.value?"tableClose":"tableOpen",stroke:t.color,style:{"pointer-events":"none"}},null,8,["name","stroke"])),r.value&&t.titles.table&&!l.$slots.optionTable?(e.openBlock(),e.createElementBlock("div",{key:2,dir:"auto",class:e.normalizeClass({"button-info-left":t.position==="left","button-info-right":t.position==="right","button-info-right-visible":t.position==="right"&&n.value.table,"button-info-left-visible":t.position==="left"&&n.value.table}),style:e.normalizeStyle({background:t.backgroundColor,color:t.color})},e.toDisplayString(t.titles.table),7)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0),t.hasLabel?(e.openBlock(),e.createElementBlock("button",{key:5,tabindex:"0",class:"vue-ui-user-options-button",onClick:I,onMouseenter:o[10]||(o[10]=i=>n.value.labels=!0),onMouseout:o[11]||(o[11]=i=>n.value.labels=!1)},[l.$slots.optionLabels?e.renderSlot(l.$slots,"optionLabels",{key:0},void 0,!0):(e.openBlock(),e.createBlock(a.default,{key:1,name:C.value?"labelClose":"labelOpen",stroke:t.color,style:{"pointer-events":"none"}},null,8,["name","stroke"])),r.value&&t.titles.labels&&!l.$slots.optionLabels?(e.openBlock(),e.createElementBlock("div",{key:2,dir:"auto",class:e.normalizeClass({"button-info-left":t.position==="left","button-info-right":t.position==="right","button-info-right-visible":t.position==="right"&&n.value.labels,"button-info-left-visible":t.position==="left"&&n.value.labels}),style:e.normalizeStyle({background:t.backgroundColor,color:t.color})},e.toDisplayString(t.titles.labels),7)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0),t.hasSort?(e.openBlock(),e.createElementBlock("button",{key:6,tabindex:"0",class:"vue-ui-user-options-button",onClick:P,onMouseenter:o[12]||(o[12]=i=>n.value.sort=!0),onMouseout:o[13]||(o[13]=i=>n.value.sort=!1)},[l.$slots.optionSort?e.renderSlot(l.$slots,"optionSort",{key:0},void 0,!0):(e.openBlock(),e.createBlock(a.default,{key:1,name:"sort",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"])),r.value&&t.titles.sort&&!l.$slots.optionSort?(e.openBlock(),e.createElementBlock("div",{key:2,dir:"auto",class:e.normalizeClass({"button-info-left":t.position==="left","button-info-right":t.position==="right","button-info-right-visible":t.position==="right"&&n.value.sort,"button-info-left-visible":t.position==="left"&&n.value.sort}),style:e.normalizeStyle({background:t.backgroundColor,color:t.color})},e.toDisplayString(t.titles.sort),7)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0),t.hasStack?(e.openBlock(),e.createElementBlock("button",{key:7,tabindex:"0",class:"vue-ui-user-options-button",onClick:p,onMouseenter:o[14]||(o[14]=i=>n.value.stack=!0),onMouseout:o[15]||(o[15]=i=>n.value.stack=!1)},[l.$slots.optionStack?e.renderSlot(l.$slots,"optionStack",{key:0},void 0,!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[$.value?(e.openBlock(),e.createBlock(a.default,{key:0,name:"unstack",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"])):(e.openBlock(),e.createBlock(a.default,{key:1,name:"stack",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"]))],64)),r.value&&t.titles.stack&&!l.$slots.optionStack?(e.openBlock(),e.createElementBlock("div",{key:2,dir:"auto",class:e.normalizeClass({"button-info-left":t.position==="left","button-info-right":t.position==="right","button-info-right-visible":t.position==="right"&&n.value.stack,"button-info-left-visible":t.position==="left"&&n.value.stack}),style:e.normalizeStyle({background:t.backgroundColor,color:t.color})},e.toDisplayString(t.titles.stack),7)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0),t.hasFullscreen?(e.openBlock(),e.createElementBlock("button",{key:8,tabindex:"0",class:"vue-ui-user-options-button",onMouseenter:o[16]||(o[16]=i=>n.value.fullscreen=!0),onMouseout:o[17]||(o[17]=i=>n.value.fullscreen=!1),onClick:o[18]||(o[18]=i=>N(c.value?"out":"in"))},[l.$slots.optionFullscreen?e.renderSlot(l.$slots,"optionFullscreen",e.normalizeProps(e.mergeProps({key:0},{toggleFullscreen:N,isFullscreen:c.value})),void 0,!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[c.value?(e.openBlock(),e.createBlock(a.default,{key:0,name:"exitFullscreen",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"])):e.createCommentVNode("",!0),c.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(a.default,{key:1,name:"fullscreen",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"]))],64)),r.value&&t.titles.fullscreen&&!l.$slots.optionFullscreen?(e.openBlock(),e.createElementBlock("div",{key:2,dir:"auto",class:e.normalizeClass({"button-info-left":t.position==="left","button-info-right":t.position==="right","button-info-right-visible":t.position==="right"&&n.value.fullscreen,"button-info-left-visible":t.position==="left"&&n.value.fullscreen}),style:e.normalizeStyle({background:t.backgroundColor,color:t.color})},e.toDisplayString(t.titles.fullscreen),7)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0),t.hasAnimation?(e.openBlock(),e.createElementBlock("button",{key:9,tabindex:"0",class:"vue-ui-user-options-button",onMouseenter:o[19]||(o[19]=i=>n.value.animation=!0),onMouseout:o[20]||(o[20]=i=>n.value.animation=!1),onClick:E},[l.$slots.optionAnimation?e.renderSlot(l.$slots,"optionAnimation",e.normalizeProps(e.mergeProps({key:0},{toggleAnimation:E,isAnimated:b.value})),void 0,!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[b.value?(e.openBlock(),e.createBlock(a.default,{key:0,name:"play",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"])):e.createCommentVNode("",!0),b.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(a.default,{key:1,name:"pause",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"]))],64)),r.value&&t.titles.fullscreen&&!l.$slots.optionAnimation?(e.openBlock(),e.createElementBlock("div",{key:2,dir:"auto",class:e.normalizeClass({"button-info-left":t.position==="left","button-info-right":t.position==="right","button-info-right-visible":t.position==="right"&&n.value.animation,"button-info-left-visible":t.position==="left"&&n.value.animation}),style:e.normalizeStyle({background:t.backgroundColor,color:t.color})},e.toDisplayString(t.titles.animation),7)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0),t.hasAnnotator?(e.openBlock(),e.createElementBlock("button",{key:10,tabindex:"0",class:"vue-ui-user-options-button",onMouseenter:o[21]||(o[21]=i=>n.value.annotator=!0),onMouseout:o[22]||(o[22]=i=>n.value.annotator=!1),onClick:z},[l.$slots.optionAnnotator?e.renderSlot(l.$slots,"optionAnnotator",e.normalizeProps(e.mergeProps({key:0},{toggleAnnotator:z,isAnnotator:y.value})),void 0,!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[y.value?(e.openBlock(),e.createBlock(a.default,{key:0,name:"annotatorDisabled",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"])):e.createCommentVNode("",!0),y.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(a.default,{key:1,name:"annotator",stroke:t.color,style:{"pointer-events":"none"}},null,8,["stroke"]))],64)),r.value&&t.titles.annotator&&!l.$slots.optionAnnotator?(e.openBlock(),e.createElementBlock("div",{key:2,dir:"auto",class:e.normalizeClass({"button-info-left":t.position==="left","button-info-right":t.position==="right","button-info-right-visible":t.position==="right"&&n.value.annotator,"button-info-left-visible":t.position==="left"&&n.value.annotator}),style:e.normalizeStyle({background:t.backgroundColor,color:t.color})},e.toDisplayString(t.titles.annotator),7)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0)],12,w)],4)),[[e.unref(A),F]])}},q=D._export_sfc(X,[["__scopeId","data-v-0926bd71"]]);function U({elementId:t,fileName:d,canPrint:s=!0}){const u=e.ref(!1),m=e.ref(!1),v=e.ref(null);async function B(){!s||u.value||(u.value=!0,clearTimeout(v.value),v.value=setTimeout(async()=>{if(s)try{const{default:f}=await Promise.resolve().then(()=>require("./pdf-DSkQT5iH.cjs"));await f({domElement:document.getElementById(t),fileName:d})}catch(f){console.error("Error generating PDF:",f)}finally{u.value=!1}},100))}async function g(){!s||m.value||(m.value=!0,clearTimeout(v.value),v.value=setTimeout(async()=>{if(s)try{const{default:f}=await Promise.resolve().then(()=>require("./img-BPGizWpM.cjs"));await f({domElement:document.getElementById(t),fileName:d,format:"png"})}catch(f){console.error("Error generating image:",f)}finally{m.value=!1}},100))}return{generatePdf:B,generateImage:g,isPrinting:u,isImaging:m}}exports.UserOptions=q;exports.usePrinter=U;exports.vClickOutside=A;