UNPKG

@volverjs/ui-vue

Version:

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

2 lines (1 loc) 2.23 kB
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("vue"),require("@iconify/vue")):"function"==typeof define&&define.amd?define(["vue","@iconify/vue"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).VvIcon=o(e.vue,e.vue$1)}(this,function(e,o){"use strict";const n={prefix:"normal"},r=Symbol.for("volver");return e.defineComponent({name:"VvIcon",props:e.mergeDefaults({name:{},color:{},width:{},height:{},provider:{},prefix:{},src:{},horizontalFlip:{type:Boolean},verticalFlip:{type:Boolean},flip:{},mode:{},inline:{type:Boolean},rotate:{},onLoad:{type:Function},svg:{},modifiers:{}},n),setup(n){const i=n,t=e.computed(()=>"string"==typeof i.rotate?Number.parseFloat(i.rotate):i.rotate),a=e.ref(!0),l=e.inject(r,void 0),{modifiers:c}=e.toRefs(i),u=function(o,n){return e.computed(()=>{const e={[o]:!0},r="string"==typeof n?.value?n.value.split(" "):n?.value;return r&&Array.isArray(r)&&r.forEach(n=>{n&&(e[`${o}--${n}`]=!0)}),e})}("vv-icon",c),f=e.computed(()=>i.provider||l?.iconsProvider),s=e.computed(()=>{const e=i.name??"",n=`@${f.value}:${i.prefix}:${e}`;if(o.iconLoaded(n))return n;const r=l?.iconsCollections.find(n=>{const r=`@${f.value}:${n.prefix}:${e}`;return o.iconLoaded(r)});return r?`@${f.value}:${r.prefix}:${e}`:e});function d(e){const n=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=n?.innerHTML.trim()||"";n&&r&&o.addIcon(`@${f.value}:${i.prefix}:${i.name}`,{body:r,height:n.viewBox.baseVal.height,width:n.viewBox.baseVal.width})}return l&&i.src&&!o.iconLoaded(`@${f.value}:${i.prefix}:${i.name}`)&&(a.value=!1,l.fetchIcon(i.src).then(e=>{e&&(d(e),a.value=!0)}).catch(e=>{throw new Error(`Error during fetch icon: ${e?.message}`)})),i.svg&&d(i.svg),(r,i)=>e.unref(a)?(e.openBlock(),e.createBlock(e.unref(o.Icon),e.mergeProps({key:0,class:e.unref(u)},{inline:n.inline,width:n.width,height:n.height,horizontalFlip:n.horizontalFlip,verticalFlip:n.verticalFlip,flip:n.flip,rotate:e.unref(t),color:n.color,icon:e.unref(s)},{onLoad:n.onLoad}),null,16,["class","onLoad"])):e.createCommentVNode("v-if",!0)}})});