UNPKG

@volverjs/ui-vue

Version:

@volverjs/ui-vue is a lightweight Vue 3 component library to accompany @volverjs/style.

2 lines (1 loc) 2.01 kB
import{inject as e,computed as o,defineComponent as r,mergeDefaults as i,ref as t,toRefs as n,createBlock as a,createCommentVNode as l,unref as s,openBlock as c,mergeProps as p}from"vue";import{iconLoaded as f,Icon as u,addIcon as v}from"@iconify/vue";const d={prefix:"normal"},h=Symbol.for("volver");const m=/* @__PURE__ */r({name:"VvIcon",props:/* @__PURE__ */i({name:{},color:{},width:{},height:{},provider:{},prefix:{},src:{},horizontalFlip:{type:Boolean},verticalFlip:{type:Boolean},flip:{},mode:{},inline:{type:Boolean},rotate:{},onLoad:{type:Function},svg:{},modifiers:{}},d),setup(r){const i=r,d=o(()=>"string"==typeof i.rotate?Number.parseFloat(i.rotate):i.rotate),m=t(!0),w=e(h,void 0),{modifiers:$}=n(i),g=function(e,r){return o(()=>{const o={[e]:!0},i="string"==typeof r?.value?r.value.split(" "):r?.value;return i&&Array.isArray(i)&&i.forEach(r=>{r&&(o[`${e}--${r}`]=!0)}),o})}("vv-icon",$),y=o(()=>i.provider||w?.iconsProvider),x=o(()=>{const e=i.name??"",o=`@${y.value}:${i.prefix}:${e}`;if(f(o))return o;const r=w?.iconsCollections.find(o=>{const r=`@${y.value}:${o.prefix}:${e}`;return f(r)});return r?`@${y.value}:${r.prefix}:${e}`:e});function F(e){const o=function(e){let o;if("undefined"==typeof window){const{JSDOM:e}=require("jsdom");o=(new e).window}return(o?new o.DOMParser:new window.DOMParser).parseFromString(e,"text/html").querySelector("svg")}(e),r=o?.innerHTML.trim()||"";o&&r&&v(`@${y.value}:${i.prefix}:${i.name}`,{body:r,height:o.viewBox.baseVal.height,width:o.viewBox.baseVal.width})}return w&&i.src&&!f(`@${y.value}:${i.prefix}:${i.name}`)&&(m.value=!1,w.fetchIcon(i.src).then(e=>{e&&(F(e),m.value=!0)}).catch(e=>{throw new Error(`Error during fetch icon: ${e?.message}`)})),i.svg&&F(i.svg),(e,o)=>s(m)?(c(),a(s(u),p({key:0,class:s(g)},{inline:r.inline,width:r.width,height:r.height,horizontalFlip:r.horizontalFlip,verticalFlip:r.verticalFlip,flip:r.flip,rotate:s(d),color:r.color,icon:s(x)},{onLoad:r.onLoad}),null,16,["class","onLoad"])):l("v-if",!0)}});export{m as default};