@qxs-bns/components 0.0.86 → 0.0.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/package.json.mjs +1 -1
- package/es/src/icon/src/icon.mjs +1 -1
- package/es/src/icon/src/icon.mjs.map +1 -1
- package/lib/package.json.cjs +1 -1
- package/lib/src/icon/src/icon.cjs +1 -1
- package/lib/src/icon/src/icon.cjs.map +1 -1
- package/package.json +1 -1
- package/types/src/icon/src/icon.d.ts.map +1 -1
- package/types/tsconfig.tsbuildinfo +1 -1
package/es/package.json.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var r="0.0.
|
|
1
|
+
var r="0.0.87";export{r as version};
|
|
2
2
|
//# sourceMappingURL=package.json.mjs.map
|
package/es/src/icon/src/icon.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Icon as e}from"../../../node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.mjs";import{useNamespace as t}from"@qxs-bns/hooks";import{defineComponent as s,useAttrs as i,computed as
|
|
1
|
+
import{Icon as e}from"../../../node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.mjs";import{useNamespace as t}from"@qxs-bns/hooks";import{defineComponent as s,useAttrs as i,computed as l,ref as r,h as a}from"vue";var o=s({name:"QxsIcon",inheritAttrs:!1,props:{icon:{type:[String,Object,Function],required:!0},flip:{type:String,default:""},rotate:{type:Number,default:0},color:String,size:[String,Number],localIconPrefix:{type:String,default:"icon-"},fallback:String,loading:String},setup(s){const o=i(),n=t("icon"),u=l(()=>{const e=[n.b()];return o.class&&("string"==typeof o.class?e.push(o.class):Array.isArray(o.class)?e.push(...o.class):e.push(o.class)),e}),c=l(()=>{const{class:e,style:t,...s}=o;return s}),v=l(()=>"object"==typeof s.icon||"function"==typeof s.icon),f=l(()=>{if(v.value)return"component";const e=s.icon;return/^https?:\/\//.test(e)||(/^\.{1,2}\//.test(t=e)||t.startsWith("/")||t.includes("/"))?"img":/^i-[^:]+:[^:]+/.test(e)?"unocss":e.startsWith("i-")&&!e.includes(":")?"css":e.includes(":")&&!e.startsWith("i-")?"iconify":/^[\w-]+$/.test(e)&&!e.startsWith("i-")?"svg":"css";var t}),p=l(()=>{if(v.value)return"";const e=s.icon;return"img"===f.value||"unocss"===f.value||f.value,e}),h=l(()=>"css"===f.value?p.value.split(" ").filter(e=>e.trim()):[]);function d(e){return e?"number"==typeof e||/^\d+(?:\.\d+)?$/.test(e)?`${e}px`:e:""}const g=l(()=>{const e=[];switch(s.flip){case"horizontal":e.push("rotateY(180deg)");break;case"vertical":e.push("rotateX(180deg)");break;case"both":e.push("rotateX(180deg)"),e.push("rotateY(180deg)")}s.rotate&&e.push(`rotate(${s.rotate%360}deg)`);let t=`${s.color?`color: ${s.color};`:""}${s.size?`font-size: ${d(s.size)};`:""}${e.length?`transform: ${e.join(" ")};`:""}`;const i=o.style;if(i)if("string"==typeof i)t+=i;else if("object"==typeof i){t+=Object.entries(i).map(e=>{let[t,s]=e;return`${t.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${s};`}).join("")}return t}),y=r(!0),m=r(!1);function b(){y.value=!1,m.value=!1}function $(){y.value=!1,m.value=!0}return()=>{if("component"===f.value)return a(s.icon,{class:["size-inherit","shrink-0",...u.value],style:g.value,...c.value});if("unocss"===f.value)return a("i",{class:[...u.value,p.value],style:g.value,...c.value});if("css"===f.value)return a("i",{class:["size-inherit","shrink-0",...u.value,...h.value],style:g.value,...c.value});if("iconify"===f.value){const t={class:["size-inherit","shrink-0",...u.value],icon:p.value,...c.value};if(s.color&&(t.color=s.color),s.flip&&(t.flip=s.flip),s.rotate&&(t.rotate=s.rotate),s.size){const e=d(s.size);t.width=e,t.height=e}const i=o.style;return i&&(t.style=i),a(e,t)}return"img"===f.value?y.value&&s.loading?a("i",{class:s.loading,...c.value}):m.value&&s.fallback?a("i",{class:s.fallback,...c.value}):a("img",{src:p.value,class:["size-inherit","shrink-0",...u.value],style:[g.value,{width:s.size?d(s.size):"auto",height:"auto"}],onLoad:b,onError:$,...c.value}):p.value?a("i",{class:u.value,style:g.value,...c.value},[a("svg",{"aria-hidden":"true",class:"size-inherit shrink-0"},[a("use",{"xlink:href":`#${s.localIconPrefix}${p.value}`})])]):null}}});export{o as default};
|
|
2
2
|
//# sourceMappingURL=icon.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.mjs","sources":["../../../../../../packages/components/src/icon/src/icon.tsx"],"sourcesContent":["import type { Component, CSSProperties } from 'vue'\nimport { Icon } from '@iconify/vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { computed, defineComponent, h, ref, useAttrs } from 'vue'\n\nexport interface PropsType {\n icon: string | Component\n flip?: 'horizontal' | 'vertical' | 'both' | '' | undefined\n rotate?: number\n color?: string\n size?: string | number\n localIconPrefix?: string\n // 新增功能:支持图片URL\n fallback?: string // 加载失败时的备用图标\n loading?: string // 加载中显示的图标\n}\n\nexport default defineComponent({\n name: 'QxsIcon',\n inheritAttrs: false,\n props: {\n icon: {\n type: [String, Object, Function] as any,\n required: true,\n },\n flip: {\n type: String as () => 'horizontal' | 'vertical' | 'both' | '' | undefined,\n default: '',\n },\n rotate: {\n type: Number,\n default: 0,\n },\n color: String,\n size: [String, Number],\n localIconPrefix: {\n type: String,\n default: 'icon-',\n },\n fallback: String,\n loading: String,\n },\n setup(props) {\n const attrs = useAttrs()\n const ns = useNamespace('icon')\n\n // 合并外部传入的类名\n const mergedClass = computed(() => {\n const classes: any[] = [ns.b()]\n if (attrs.class) {\n if (typeof attrs.class === 'string') {\n classes.push(attrs.class)\n }\n else if (Array.isArray(attrs.class)) {\n classes.push(...attrs.class)\n }\n else {\n classes.push(attrs.class)\n }\n }\n return classes\n })\n\n // 获取非 class 的其他属性\n const otherAttrs = computed(() => {\n const { class: _, style: __, ...rest } = attrs\n return rest\n })\n\n const isComponentName = computed(() => typeof props.icon === 'object' || typeof props.icon === 'function')\n\n const outputType = computed(() => {\n if (isComponentName.value) {\n return 'component'\n }\n\n const iconStr = props.icon as string\n\n // 检测是否为图片URL或路径\n const hasPathFeatures = (str: string) => {\n return /^\\.{1,2}\\//.test(str) || str.startsWith('/') || str.includes('/')\n }\n if (/^https?:\\/\\//.test(iconStr) || hasPathFeatures(iconStr)) {\n return 'img'\n }\n\n // 检测UnoCSS图标格式 (i-[provider]:[name])\n if (/^i-[^:]+:[^:]+/.test(iconStr)) {\n return 'unocss'\n }\n\n // 检测以i-开头的自定义CSS类图标(不包含冒号)\n if (iconStr.startsWith('i-') && !iconStr.includes(':')) {\n return 'css'\n }\n\n // 检测Iconify格式 (provider:name,但不以i-开头)\n if (iconStr.includes(':') && !iconStr.startsWith('i-')) {\n return 'iconify'\n }\n\n // 检测SVG sprite(单个单词,不包含空格和特殊字符,且不以i-开头)\n if (/^[\\w-]+$/.test(iconStr) && !iconStr.startsWith('i-')) {\n return 'svg'\n }\n\n // 其他情况都视为CSS类图标(包括多个类名等)\n return 'css'\n })\n\n const outputName = computed(() => {\n if (isComponentName.value) {\n return ''\n }\n\n const iconStr = props.icon as string\n\n // 对于图片类型,直接返回URL\n if (outputType.value === 'img') {\n return iconStr\n }\n\n // 对于UnoCSS图标,直接返回类名\n if (outputType.value === 'unocss') {\n return iconStr\n }\n\n // 对于传统CSS图标,处理多个类名的情况\n if (outputType.value === 'css') {\n return iconStr\n }\n\n // 其他情况直接返回\n return iconStr\n })\n\n // 对于CSS类图标,将字符串拆分为类名数组\n const cssClasses = computed(() => {\n if (outputType.value === 'css') {\n return outputName.value.split(' ').filter(cls => cls.trim())\n }\n return []\n })\n\n // 用正则匹配 size 是不是 number 值,再判断是否有 px 结尾的单位,没有则拼接\n function formatSize(size: string | number | undefined): string {\n if (!size) {\n return ''\n }\n\n // 如果是数字,直接添加 px\n if (typeof size === 'number') {\n return `${size}px`\n }\n\n // 如果是纯数字字符串,添加 px\n if (/^\\d+(?:\\.\\d+)?$/.test(size)) {\n return `${size}px`\n }\n\n // 如果已经有单位(px、em、rem等)或者不是纯数字,直接返回\n return size\n }\n\n // 统一的样式计算属性,适用于所有图标类型\n // 包含颜色、尺寸和变换(旋转、翻转)\n const style = computed(() => {\n const transform = [] as string[]\n switch (props.flip) {\n case 'horizontal':\n transform.push('rotateY(180deg)')\n break\n case 'vertical':\n transform.push('rotateX(180deg)')\n break\n case 'both':\n transform.push('rotateX(180deg)')\n transform.push('rotateY(180deg)')\n break\n // 对于 '' 和 undefined,不做任何处理\n }\n if (props.rotate) {\n transform.push(`rotate(${props.rotate % 360}deg)`)\n }\n\n // 构建基础样式\n let baseStyle = `${props.color ? `color: ${props.color};` : ''}${props.size ? `font-size: ${formatSize(props.size)};` : ''}${transform.length ? `transform: ${transform.join(' ')};` : ''}`\n\n // 拼接 attrs.style\n const attrsStyle = attrs.style\n if (attrsStyle) {\n if (typeof attrsStyle === 'string') {\n baseStyle += attrsStyle\n }\n else if (typeof attrsStyle === 'object') {\n // 处理对象形式的样式\n const styleEntries = Object.entries(attrsStyle as CSSProperties)\n const styleString = styleEntries\n .map(([key, value]) => `${key.replace(/([A-Z])/g, '-$1').toLowerCase()}: ${value};`)\n .join('')\n baseStyle += styleString\n }\n }\n\n return baseStyle\n })\n\n // 图片加载状态管理\n const imageLoading = ref(true)\n const imageError = ref(false)\n\n function handleImageLoad() {\n imageLoading.value = false\n imageError.value = false\n }\n\n function handleImageError() {\n imageLoading.value = false\n imageError.value = true\n }\n\n return () => {\n // Vue组件\n if (outputType.value === 'component') {\n return h(\n props.icon as Component,\n {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // UnoCSS图标\n if (outputType.value === 'unocss') {\n return h(\n 'i',\n {\n class: [...mergedClass.value, outputName.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // CSS类图标\n if (outputType.value === 'css') {\n return h(\n 'i',\n {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value, ...cssClasses.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // Iconify图标\n if (outputType.value === 'iconify') {\n return h(\n Icon,\n {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n icon: outputName.value,\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // 图片\n if (outputType.value === 'img') {\n // 加载中状态\n if (imageLoading.value && props.loading) {\n return h('i', {\n class: props.loading,\n ...otherAttrs.value,\n })\n }\n // 错误状态\n if (imageError.value && props.fallback) {\n return h('i', {\n class: props.fallback,\n ...otherAttrs.value,\n })\n }\n // 图片本体\n return h('img', {\n src: outputName.value,\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n style: [style.value, { width: props.size ? formatSize(props.size) : 'auto', height: 'auto' }],\n onLoad: handleImageLoad,\n onError: handleImageError,\n ...otherAttrs.value,\n })\n }\n\n // SVG Sprite\n if (outputName.value) {\n return h(\n 'i',\n {\n class: mergedClass.value,\n style: style.value,\n ...otherAttrs.value,\n },\n [\n h(\n 'svg',\n {\n 'aria-hidden': 'true',\n 'class': 'size-inherit shrink-0',\n },\n [\n h('use', {\n 'xlink:href': `#${props.localIconPrefix}${outputName.value}`,\n }),\n ],\n ),\n ],\n )\n }\n\n return null\n }\n },\n})\n"],"names":["component","defineComponent","name","inheritAttrs","props","icon","type","String","Object","Function","required","flip","default","rotate","Number","color","size","localIconPrefix","fallback","loading","setup","attrs","useAttrs","ns","useNamespace","mergedClass","computed","classes","b","class","push","Array","isArray","otherAttrs","_","style","__","rest","isComponentName","outputType","value","iconStr","test","str","startsWith","includes","outputName","cssClasses","split","filter","cls","trim","formatSize","transform","baseStyle","length","join","attrsStyle","entries","map","_ref","key","replace","toLowerCase","imageLoading","ref","imageError","handleImageLoad","handleImageError","h","Icon","src","width","height","onLoad","onError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"icon.mjs","sources":["../../../../../../packages/components/src/icon/src/icon.tsx"],"sourcesContent":["import type { Component, CSSProperties } from 'vue'\nimport { Icon } from '@iconify/vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { computed, defineComponent, h, ref, useAttrs } from 'vue'\n\nexport interface PropsType {\n icon: string | Component\n flip?: 'horizontal' | 'vertical' | 'both' | '' | undefined\n rotate?: number\n color?: string\n size?: string | number\n localIconPrefix?: string\n // 新增功能:支持图片URL\n fallback?: string // 加载失败时的备用图标\n loading?: string // 加载中显示的图标\n}\n\nexport default defineComponent({\n name: 'QxsIcon',\n inheritAttrs: false,\n props: {\n icon: {\n type: [String, Object, Function] as any,\n required: true,\n },\n flip: {\n type: String as () => 'horizontal' | 'vertical' | 'both' | '' | undefined,\n default: '',\n },\n rotate: {\n type: Number,\n default: 0,\n },\n color: String,\n size: [String, Number],\n localIconPrefix: {\n type: String,\n default: 'icon-',\n },\n fallback: String,\n loading: String,\n },\n setup(props) {\n const attrs = useAttrs()\n const ns = useNamespace('icon')\n\n // 合并外部传入的类名\n const mergedClass = computed(() => {\n const classes: any[] = [ns.b()]\n if (attrs.class) {\n if (typeof attrs.class === 'string') {\n classes.push(attrs.class)\n }\n else if (Array.isArray(attrs.class)) {\n classes.push(...attrs.class)\n }\n else {\n classes.push(attrs.class)\n }\n }\n return classes\n })\n\n // 获取非 class 的其他属性\n const otherAttrs = computed(() => {\n const { class: _, style: __, ...rest } = attrs\n return rest\n })\n\n const isComponentName = computed(() => typeof props.icon === 'object' || typeof props.icon === 'function')\n\n const outputType = computed(() => {\n if (isComponentName.value) {\n return 'component'\n }\n\n const iconStr = props.icon as string\n\n // 检测是否为图片URL或路径\n const hasPathFeatures = (str: string) => {\n return /^\\.{1,2}\\//.test(str) || str.startsWith('/') || str.includes('/')\n }\n if (/^https?:\\/\\//.test(iconStr) || hasPathFeatures(iconStr)) {\n return 'img'\n }\n\n // 检测UnoCSS图标格式 (i-[provider]:[name])\n if (/^i-[^:]+:[^:]+/.test(iconStr)) {\n return 'unocss'\n }\n\n // 检测以i-开头的自定义CSS类图标(不包含冒号)\n if (iconStr.startsWith('i-') && !iconStr.includes(':')) {\n return 'css'\n }\n\n // 检测Iconify格式 (provider:name,但不以i-开头)\n if (iconStr.includes(':') && !iconStr.startsWith('i-')) {\n return 'iconify'\n }\n\n // 检测SVG sprite(单个单词,不包含空格和特殊字符,且不以i-开头)\n if (/^[\\w-]+$/.test(iconStr) && !iconStr.startsWith('i-')) {\n return 'svg'\n }\n\n // 其他情况都视为CSS类图标(包括多个类名等)\n return 'css'\n })\n\n const outputName = computed(() => {\n if (isComponentName.value) {\n return ''\n }\n\n const iconStr = props.icon as string\n\n // 对于图片类型,直接返回URL\n if (outputType.value === 'img') {\n return iconStr\n }\n\n // 对于UnoCSS图标,直接返回类名\n if (outputType.value === 'unocss') {\n return iconStr\n }\n\n // 对于传统CSS图标,处理多个类名的情况\n if (outputType.value === 'css') {\n return iconStr\n }\n\n // 其他情况直接返回\n return iconStr\n })\n\n // 对于CSS类图标,将字符串拆分为类名数组\n const cssClasses = computed(() => {\n if (outputType.value === 'css') {\n return outputName.value.split(' ').filter(cls => cls.trim())\n }\n return []\n })\n\n // 用正则匹配 size 是不是 number 值,再判断是否有 px 结尾的单位,没有则拼接\n function formatSize(size: string | number | undefined): string {\n if (!size) {\n return ''\n }\n\n // 如果是数字,直接添加 px\n if (typeof size === 'number') {\n return `${size}px`\n }\n\n // 如果是纯数字字符串,添加 px\n if (/^\\d+(?:\\.\\d+)?$/.test(size)) {\n return `${size}px`\n }\n\n // 如果已经有单位(px、em、rem等)或者不是纯数字,直接返回\n return size\n }\n\n // 统一的样式计算属性,适用于所有图标类型\n // 包含颜色、尺寸和变换(旋转、翻转)\n const style = computed(() => {\n const transform = [] as string[]\n switch (props.flip) {\n case 'horizontal':\n transform.push('rotateY(180deg)')\n break\n case 'vertical':\n transform.push('rotateX(180deg)')\n break\n case 'both':\n transform.push('rotateX(180deg)')\n transform.push('rotateY(180deg)')\n break\n // 对于 '' 和 undefined,不做任何处理\n }\n if (props.rotate) {\n transform.push(`rotate(${props.rotate % 360}deg)`)\n }\n\n // 构建基础样式\n let baseStyle = `${props.color ? `color: ${props.color};` : ''}${props.size ? `font-size: ${formatSize(props.size)};` : ''}${transform.length ? `transform: ${transform.join(' ')};` : ''}`\n\n // 拼接 attrs.style\n const attrsStyle = attrs.style\n if (attrsStyle) {\n if (typeof attrsStyle === 'string') {\n baseStyle += attrsStyle\n }\n else if (typeof attrsStyle === 'object') {\n // 处理对象形式的样式\n const styleEntries = Object.entries(attrsStyle as CSSProperties)\n const styleString = styleEntries\n .map(([key, value]) => `${key.replace(/([A-Z])/g, '-$1').toLowerCase()}: ${value};`)\n .join('')\n baseStyle += styleString\n }\n }\n\n return baseStyle\n })\n\n // 图片加载状态管理\n const imageLoading = ref(true)\n const imageError = ref(false)\n\n function handleImageLoad() {\n imageLoading.value = false\n imageError.value = false\n }\n\n function handleImageError() {\n imageLoading.value = false\n imageError.value = true\n }\n\n return () => {\n // Vue组件\n if (outputType.value === 'component') {\n return h(\n props.icon as Component,\n {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // UnoCSS图标\n if (outputType.value === 'unocss') {\n return h(\n 'i',\n {\n class: [...mergedClass.value, outputName.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // CSS类图标\n if (outputType.value === 'css') {\n return h(\n 'i',\n {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value, ...cssClasses.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // Iconify图标\n if (outputType.value === 'iconify') {\n // Iconify 组件有自己的 color、width、height、flip、rotate 等属性\n // 需要单独处理这些属性\n const iconifyProps: any = {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n icon: outputName.value,\n ...otherAttrs.value,\n }\n\n // 传递 color 属性给 Iconify\n if (props.color) {\n iconifyProps.color = props.color\n }\n\n // 传递 flip 属性给 Iconify\n if (props.flip) {\n iconifyProps.flip = props.flip\n }\n\n // 传递 rotate 属性给 Iconify\n if (props.rotate) {\n iconifyProps.rotate = props.rotate\n }\n\n // 处理 size - Iconify 使用 width 和 height\n if (props.size) {\n const formattedSize = formatSize(props.size)\n iconifyProps.width = formattedSize\n iconifyProps.height = formattedSize\n }\n\n // 如果有额外的 style,也要传递\n const attrsStyle = attrs.style\n if (attrsStyle) {\n iconifyProps.style = attrsStyle\n }\n\n return h(Icon, iconifyProps)\n }\n\n // 图片\n if (outputType.value === 'img') {\n // 加载中状态\n if (imageLoading.value && props.loading) {\n return h('i', {\n class: props.loading,\n ...otherAttrs.value,\n })\n }\n // 错误状态\n if (imageError.value && props.fallback) {\n return h('i', {\n class: props.fallback,\n ...otherAttrs.value,\n })\n }\n // 图片本体\n return h('img', {\n src: outputName.value,\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n style: [style.value, { width: props.size ? formatSize(props.size) : 'auto', height: 'auto' }],\n onLoad: handleImageLoad,\n onError: handleImageError,\n ...otherAttrs.value,\n })\n }\n\n // SVG Sprite\n if (outputName.value) {\n return h(\n 'i',\n {\n class: mergedClass.value,\n style: style.value,\n ...otherAttrs.value,\n },\n [\n h(\n 'svg',\n {\n 'aria-hidden': 'true',\n 'class': 'size-inherit shrink-0',\n },\n [\n h('use', {\n 'xlink:href': `#${props.localIconPrefix}${outputName.value}`,\n }),\n ],\n ),\n ],\n )\n }\n\n return null\n }\n },\n})\n"],"names":["component","defineComponent","name","inheritAttrs","props","icon","type","String","Object","Function","required","flip","default","rotate","Number","color","size","localIconPrefix","fallback","loading","setup","attrs","useAttrs","ns","useNamespace","mergedClass","computed","classes","b","class","push","Array","isArray","otherAttrs","_","style","__","rest","isComponentName","outputType","value","iconStr","test","str","startsWith","includes","outputName","cssClasses","split","filter","cls","trim","formatSize","transform","baseStyle","length","join","attrsStyle","entries","map","_ref","key","replace","toLowerCase","imageLoading","ref","imageError","handleImageLoad","handleImageError","h","iconifyProps","formattedSize","width","height","Icon","src","onLoad","onError"],"mappings":"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"}
|
package/lib/package.json.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";exports.version="0.0.
|
|
1
|
+
"use strict";exports.version="0.0.87";
|
|
2
2
|
//# sourceMappingURL=package.json.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.cjs"),t=require("@qxs-bns/hooks"),s=require("vue"),i=s.defineComponent({name:"QxsIcon",inheritAttrs:!1,props:{icon:{type:[String,Object,Function],required:!0},flip:{type:String,default:""},rotate:{type:Number,default:0},color:String,size:[String,Number],localIconPrefix:{type:String,default:"icon-"},fallback:String,loading:String},setup(i){const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.cjs"),t=require("@qxs-bns/hooks"),s=require("vue"),i=s.defineComponent({name:"QxsIcon",inheritAttrs:!1,props:{icon:{type:[String,Object,Function],required:!0},flip:{type:String,default:""},rotate:{type:Number,default:0},color:String,size:[String,Number],localIconPrefix:{type:String,default:"icon-"},fallback:String,loading:String},setup(i){const r=s.useAttrs(),l=t.useNamespace("icon"),o=s.computed(()=>{const e=[l.b()];return r.class&&("string"==typeof r.class?e.push(r.class):Array.isArray(r.class)?e.push(...r.class):e.push(r.class)),e}),a=s.computed(()=>{const{class:e,style:t,...s}=r;return s}),u=s.computed(()=>"object"==typeof i.icon||"function"==typeof i.icon),n=s.computed(()=>{if(u.value)return"component";const e=i.icon;return/^https?:\/\//.test(e)||(/^\.{1,2}\//.test(t=e)||t.startsWith("/")||t.includes("/"))?"img":/^i-[^:]+:[^:]+/.test(e)?"unocss":e.startsWith("i-")&&!e.includes(":")?"css":e.includes(":")&&!e.startsWith("i-")?"iconify":/^[\w-]+$/.test(e)&&!e.startsWith("i-")?"svg":"css";var t}),c=s.computed(()=>{if(u.value)return"";const e=i.icon;return"img"===n.value||"unocss"===n.value||n.value,e}),v=s.computed(()=>"css"===n.value?c.value.split(" ").filter(e=>e.trim()):[]);function p(e){return e?"number"==typeof e||/^\d+(?:\.\d+)?$/.test(e)?`${e}px`:e:""}const f=s.computed(()=>{const e=[];switch(i.flip){case"horizontal":e.push("rotateY(180deg)");break;case"vertical":e.push("rotateX(180deg)");break;case"both":e.push("rotateX(180deg)"),e.push("rotateY(180deg)")}i.rotate&&e.push(`rotate(${i.rotate%360}deg)`);let t=`${i.color?`color: ${i.color};`:""}${i.size?`font-size: ${p(i.size)};`:""}${e.length?`transform: ${e.join(" ")};`:""}`;const s=r.style;if(s)if("string"==typeof s)t+=s;else if("object"==typeof s){t+=Object.entries(s).map(e=>{let[t,s]=e;return`${t.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${s};`}).join("")}return t}),h=s.ref(!0),d=s.ref(!1);function y(){h.value=!1,d.value=!1}function g(){h.value=!1,d.value=!0}return()=>{if("component"===n.value)return s.h(i.icon,{class:["size-inherit","shrink-0",...o.value],style:f.value,...a.value});if("unocss"===n.value)return s.h("i",{class:[...o.value,c.value],style:f.value,...a.value});if("css"===n.value)return s.h("i",{class:["size-inherit","shrink-0",...o.value,...v.value],style:f.value,...a.value});if("iconify"===n.value){const t={class:["size-inherit","shrink-0",...o.value],icon:c.value,...a.value};if(i.color&&(t.color=i.color),i.flip&&(t.flip=i.flip),i.rotate&&(t.rotate=i.rotate),i.size){const e=p(i.size);t.width=e,t.height=e}const l=r.style;return l&&(t.style=l),s.h(e.Icon,t)}return"img"===n.value?h.value&&i.loading?s.h("i",{class:i.loading,...a.value}):d.value&&i.fallback?s.h("i",{class:i.fallback,...a.value}):s.h("img",{src:c.value,class:["size-inherit","shrink-0",...o.value],style:[f.value,{width:i.size?p(i.size):"auto",height:"auto"}],onLoad:y,onError:g,...a.value}):c.value?s.h("i",{class:o.value,style:f.value,...a.value},[s.h("svg",{"aria-hidden":"true",class:"size-inherit shrink-0"},[s.h("use",{"xlink:href":`#${i.localIconPrefix}${c.value}`})])]):null}}});exports.default=i;
|
|
2
2
|
//# sourceMappingURL=icon.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.cjs","sources":["../../../../../../packages/components/src/icon/src/icon.tsx"],"sourcesContent":["import type { Component, CSSProperties } from 'vue'\nimport { Icon } from '@iconify/vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { computed, defineComponent, h, ref, useAttrs } from 'vue'\n\nexport interface PropsType {\n icon: string | Component\n flip?: 'horizontal' | 'vertical' | 'both' | '' | undefined\n rotate?: number\n color?: string\n size?: string | number\n localIconPrefix?: string\n // 新增功能:支持图片URL\n fallback?: string // 加载失败时的备用图标\n loading?: string // 加载中显示的图标\n}\n\nexport default defineComponent({\n name: 'QxsIcon',\n inheritAttrs: false,\n props: {\n icon: {\n type: [String, Object, Function] as any,\n required: true,\n },\n flip: {\n type: String as () => 'horizontal' | 'vertical' | 'both' | '' | undefined,\n default: '',\n },\n rotate: {\n type: Number,\n default: 0,\n },\n color: String,\n size: [String, Number],\n localIconPrefix: {\n type: String,\n default: 'icon-',\n },\n fallback: String,\n loading: String,\n },\n setup(props) {\n const attrs = useAttrs()\n const ns = useNamespace('icon')\n\n // 合并外部传入的类名\n const mergedClass = computed(() => {\n const classes: any[] = [ns.b()]\n if (attrs.class) {\n if (typeof attrs.class === 'string') {\n classes.push(attrs.class)\n }\n else if (Array.isArray(attrs.class)) {\n classes.push(...attrs.class)\n }\n else {\n classes.push(attrs.class)\n }\n }\n return classes\n })\n\n // 获取非 class 的其他属性\n const otherAttrs = computed(() => {\n const { class: _, style: __, ...rest } = attrs\n return rest\n })\n\n const isComponentName = computed(() => typeof props.icon === 'object' || typeof props.icon === 'function')\n\n const outputType = computed(() => {\n if (isComponentName.value) {\n return 'component'\n }\n\n const iconStr = props.icon as string\n\n // 检测是否为图片URL或路径\n const hasPathFeatures = (str: string) => {\n return /^\\.{1,2}\\//.test(str) || str.startsWith('/') || str.includes('/')\n }\n if (/^https?:\\/\\//.test(iconStr) || hasPathFeatures(iconStr)) {\n return 'img'\n }\n\n // 检测UnoCSS图标格式 (i-[provider]:[name])\n if (/^i-[^:]+:[^:]+/.test(iconStr)) {\n return 'unocss'\n }\n\n // 检测以i-开头的自定义CSS类图标(不包含冒号)\n if (iconStr.startsWith('i-') && !iconStr.includes(':')) {\n return 'css'\n }\n\n // 检测Iconify格式 (provider:name,但不以i-开头)\n if (iconStr.includes(':') && !iconStr.startsWith('i-')) {\n return 'iconify'\n }\n\n // 检测SVG sprite(单个单词,不包含空格和特殊字符,且不以i-开头)\n if (/^[\\w-]+$/.test(iconStr) && !iconStr.startsWith('i-')) {\n return 'svg'\n }\n\n // 其他情况都视为CSS类图标(包括多个类名等)\n return 'css'\n })\n\n const outputName = computed(() => {\n if (isComponentName.value) {\n return ''\n }\n\n const iconStr = props.icon as string\n\n // 对于图片类型,直接返回URL\n if (outputType.value === 'img') {\n return iconStr\n }\n\n // 对于UnoCSS图标,直接返回类名\n if (outputType.value === 'unocss') {\n return iconStr\n }\n\n // 对于传统CSS图标,处理多个类名的情况\n if (outputType.value === 'css') {\n return iconStr\n }\n\n // 其他情况直接返回\n return iconStr\n })\n\n // 对于CSS类图标,将字符串拆分为类名数组\n const cssClasses = computed(() => {\n if (outputType.value === 'css') {\n return outputName.value.split(' ').filter(cls => cls.trim())\n }\n return []\n })\n\n // 用正则匹配 size 是不是 number 值,再判断是否有 px 结尾的单位,没有则拼接\n function formatSize(size: string | number | undefined): string {\n if (!size) {\n return ''\n }\n\n // 如果是数字,直接添加 px\n if (typeof size === 'number') {\n return `${size}px`\n }\n\n // 如果是纯数字字符串,添加 px\n if (/^\\d+(?:\\.\\d+)?$/.test(size)) {\n return `${size}px`\n }\n\n // 如果已经有单位(px、em、rem等)或者不是纯数字,直接返回\n return size\n }\n\n // 统一的样式计算属性,适用于所有图标类型\n // 包含颜色、尺寸和变换(旋转、翻转)\n const style = computed(() => {\n const transform = [] as string[]\n switch (props.flip) {\n case 'horizontal':\n transform.push('rotateY(180deg)')\n break\n case 'vertical':\n transform.push('rotateX(180deg)')\n break\n case 'both':\n transform.push('rotateX(180deg)')\n transform.push('rotateY(180deg)')\n break\n // 对于 '' 和 undefined,不做任何处理\n }\n if (props.rotate) {\n transform.push(`rotate(${props.rotate % 360}deg)`)\n }\n\n // 构建基础样式\n let baseStyle = `${props.color ? `color: ${props.color};` : ''}${props.size ? `font-size: ${formatSize(props.size)};` : ''}${transform.length ? `transform: ${transform.join(' ')};` : ''}`\n\n // 拼接 attrs.style\n const attrsStyle = attrs.style\n if (attrsStyle) {\n if (typeof attrsStyle === 'string') {\n baseStyle += attrsStyle\n }\n else if (typeof attrsStyle === 'object') {\n // 处理对象形式的样式\n const styleEntries = Object.entries(attrsStyle as CSSProperties)\n const styleString = styleEntries\n .map(([key, value]) => `${key.replace(/([A-Z])/g, '-$1').toLowerCase()}: ${value};`)\n .join('')\n baseStyle += styleString\n }\n }\n\n return baseStyle\n })\n\n // 图片加载状态管理\n const imageLoading = ref(true)\n const imageError = ref(false)\n\n function handleImageLoad() {\n imageLoading.value = false\n imageError.value = false\n }\n\n function handleImageError() {\n imageLoading.value = false\n imageError.value = true\n }\n\n return () => {\n // Vue组件\n if (outputType.value === 'component') {\n return h(\n props.icon as Component,\n {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // UnoCSS图标\n if (outputType.value === 'unocss') {\n return h(\n 'i',\n {\n class: [...mergedClass.value, outputName.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // CSS类图标\n if (outputType.value === 'css') {\n return h(\n 'i',\n {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value, ...cssClasses.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // Iconify图标\n if (outputType.value === 'iconify') {\n return h(\n Icon,\n {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n icon: outputName.value,\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // 图片\n if (outputType.value === 'img') {\n // 加载中状态\n if (imageLoading.value && props.loading) {\n return h('i', {\n class: props.loading,\n ...otherAttrs.value,\n })\n }\n // 错误状态\n if (imageError.value && props.fallback) {\n return h('i', {\n class: props.fallback,\n ...otherAttrs.value,\n })\n }\n // 图片本体\n return h('img', {\n src: outputName.value,\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n style: [style.value, { width: props.size ? formatSize(props.size) : 'auto', height: 'auto' }],\n onLoad: handleImageLoad,\n onError: handleImageError,\n ...otherAttrs.value,\n })\n }\n\n // SVG Sprite\n if (outputName.value) {\n return h(\n 'i',\n {\n class: mergedClass.value,\n style: style.value,\n ...otherAttrs.value,\n },\n [\n h(\n 'svg',\n {\n 'aria-hidden': 'true',\n 'class': 'size-inherit shrink-0',\n },\n [\n h('use', {\n 'xlink:href': `#${props.localIconPrefix}${outputName.value}`,\n }),\n ],\n ),\n ],\n )\n }\n\n return null\n }\n },\n})\n"],"names":["component","defineComponent","name","inheritAttrs","props","icon","type","String","Object","Function","required","flip","default","rotate","Number","color","size","localIconPrefix","fallback","loading","setup","attrs","useAttrs","ns","useNamespace","mergedClass","computed","classes","b","class","push","Array","isArray","otherAttrs","_","style","__","rest","isComponentName","outputType","value","iconStr","test","str","startsWith","includes","outputName","cssClasses","split","filter","cls","trim","formatSize","transform","baseStyle","length","join","attrsStyle","entries","map","_ref","key","replace","toLowerCase","imageLoading","ref","imageError","handleImageLoad","handleImageError","h","Icon","src","width","height","onLoad","onError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"icon.cjs","sources":["../../../../../../packages/components/src/icon/src/icon.tsx"],"sourcesContent":["import type { Component, CSSProperties } from 'vue'\nimport { Icon } from '@iconify/vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { computed, defineComponent, h, ref, useAttrs } from 'vue'\n\nexport interface PropsType {\n icon: string | Component\n flip?: 'horizontal' | 'vertical' | 'both' | '' | undefined\n rotate?: number\n color?: string\n size?: string | number\n localIconPrefix?: string\n // 新增功能:支持图片URL\n fallback?: string // 加载失败时的备用图标\n loading?: string // 加载中显示的图标\n}\n\nexport default defineComponent({\n name: 'QxsIcon',\n inheritAttrs: false,\n props: {\n icon: {\n type: [String, Object, Function] as any,\n required: true,\n },\n flip: {\n type: String as () => 'horizontal' | 'vertical' | 'both' | '' | undefined,\n default: '',\n },\n rotate: {\n type: Number,\n default: 0,\n },\n color: String,\n size: [String, Number],\n localIconPrefix: {\n type: String,\n default: 'icon-',\n },\n fallback: String,\n loading: String,\n },\n setup(props) {\n const attrs = useAttrs()\n const ns = useNamespace('icon')\n\n // 合并外部传入的类名\n const mergedClass = computed(() => {\n const classes: any[] = [ns.b()]\n if (attrs.class) {\n if (typeof attrs.class === 'string') {\n classes.push(attrs.class)\n }\n else if (Array.isArray(attrs.class)) {\n classes.push(...attrs.class)\n }\n else {\n classes.push(attrs.class)\n }\n }\n return classes\n })\n\n // 获取非 class 的其他属性\n const otherAttrs = computed(() => {\n const { class: _, style: __, ...rest } = attrs\n return rest\n })\n\n const isComponentName = computed(() => typeof props.icon === 'object' || typeof props.icon === 'function')\n\n const outputType = computed(() => {\n if (isComponentName.value) {\n return 'component'\n }\n\n const iconStr = props.icon as string\n\n // 检测是否为图片URL或路径\n const hasPathFeatures = (str: string) => {\n return /^\\.{1,2}\\//.test(str) || str.startsWith('/') || str.includes('/')\n }\n if (/^https?:\\/\\//.test(iconStr) || hasPathFeatures(iconStr)) {\n return 'img'\n }\n\n // 检测UnoCSS图标格式 (i-[provider]:[name])\n if (/^i-[^:]+:[^:]+/.test(iconStr)) {\n return 'unocss'\n }\n\n // 检测以i-开头的自定义CSS类图标(不包含冒号)\n if (iconStr.startsWith('i-') && !iconStr.includes(':')) {\n return 'css'\n }\n\n // 检测Iconify格式 (provider:name,但不以i-开头)\n if (iconStr.includes(':') && !iconStr.startsWith('i-')) {\n return 'iconify'\n }\n\n // 检测SVG sprite(单个单词,不包含空格和特殊字符,且不以i-开头)\n if (/^[\\w-]+$/.test(iconStr) && !iconStr.startsWith('i-')) {\n return 'svg'\n }\n\n // 其他情况都视为CSS类图标(包括多个类名等)\n return 'css'\n })\n\n const outputName = computed(() => {\n if (isComponentName.value) {\n return ''\n }\n\n const iconStr = props.icon as string\n\n // 对于图片类型,直接返回URL\n if (outputType.value === 'img') {\n return iconStr\n }\n\n // 对于UnoCSS图标,直接返回类名\n if (outputType.value === 'unocss') {\n return iconStr\n }\n\n // 对于传统CSS图标,处理多个类名的情况\n if (outputType.value === 'css') {\n return iconStr\n }\n\n // 其他情况直接返回\n return iconStr\n })\n\n // 对于CSS类图标,将字符串拆分为类名数组\n const cssClasses = computed(() => {\n if (outputType.value === 'css') {\n return outputName.value.split(' ').filter(cls => cls.trim())\n }\n return []\n })\n\n // 用正则匹配 size 是不是 number 值,再判断是否有 px 结尾的单位,没有则拼接\n function formatSize(size: string | number | undefined): string {\n if (!size) {\n return ''\n }\n\n // 如果是数字,直接添加 px\n if (typeof size === 'number') {\n return `${size}px`\n }\n\n // 如果是纯数字字符串,添加 px\n if (/^\\d+(?:\\.\\d+)?$/.test(size)) {\n return `${size}px`\n }\n\n // 如果已经有单位(px、em、rem等)或者不是纯数字,直接返回\n return size\n }\n\n // 统一的样式计算属性,适用于所有图标类型\n // 包含颜色、尺寸和变换(旋转、翻转)\n const style = computed(() => {\n const transform = [] as string[]\n switch (props.flip) {\n case 'horizontal':\n transform.push('rotateY(180deg)')\n break\n case 'vertical':\n transform.push('rotateX(180deg)')\n break\n case 'both':\n transform.push('rotateX(180deg)')\n transform.push('rotateY(180deg)')\n break\n // 对于 '' 和 undefined,不做任何处理\n }\n if (props.rotate) {\n transform.push(`rotate(${props.rotate % 360}deg)`)\n }\n\n // 构建基础样式\n let baseStyle = `${props.color ? `color: ${props.color};` : ''}${props.size ? `font-size: ${formatSize(props.size)};` : ''}${transform.length ? `transform: ${transform.join(' ')};` : ''}`\n\n // 拼接 attrs.style\n const attrsStyle = attrs.style\n if (attrsStyle) {\n if (typeof attrsStyle === 'string') {\n baseStyle += attrsStyle\n }\n else if (typeof attrsStyle === 'object') {\n // 处理对象形式的样式\n const styleEntries = Object.entries(attrsStyle as CSSProperties)\n const styleString = styleEntries\n .map(([key, value]) => `${key.replace(/([A-Z])/g, '-$1').toLowerCase()}: ${value};`)\n .join('')\n baseStyle += styleString\n }\n }\n\n return baseStyle\n })\n\n // 图片加载状态管理\n const imageLoading = ref(true)\n const imageError = ref(false)\n\n function handleImageLoad() {\n imageLoading.value = false\n imageError.value = false\n }\n\n function handleImageError() {\n imageLoading.value = false\n imageError.value = true\n }\n\n return () => {\n // Vue组件\n if (outputType.value === 'component') {\n return h(\n props.icon as Component,\n {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // UnoCSS图标\n if (outputType.value === 'unocss') {\n return h(\n 'i',\n {\n class: [...mergedClass.value, outputName.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // CSS类图标\n if (outputType.value === 'css') {\n return h(\n 'i',\n {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value, ...cssClasses.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // Iconify图标\n if (outputType.value === 'iconify') {\n // Iconify 组件有自己的 color、width、height、flip、rotate 等属性\n // 需要单独处理这些属性\n const iconifyProps: any = {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n icon: outputName.value,\n ...otherAttrs.value,\n }\n\n // 传递 color 属性给 Iconify\n if (props.color) {\n iconifyProps.color = props.color\n }\n\n // 传递 flip 属性给 Iconify\n if (props.flip) {\n iconifyProps.flip = props.flip\n }\n\n // 传递 rotate 属性给 Iconify\n if (props.rotate) {\n iconifyProps.rotate = props.rotate\n }\n\n // 处理 size - Iconify 使用 width 和 height\n if (props.size) {\n const formattedSize = formatSize(props.size)\n iconifyProps.width = formattedSize\n iconifyProps.height = formattedSize\n }\n\n // 如果有额外的 style,也要传递\n const attrsStyle = attrs.style\n if (attrsStyle) {\n iconifyProps.style = attrsStyle\n }\n\n return h(Icon, iconifyProps)\n }\n\n // 图片\n if (outputType.value === 'img') {\n // 加载中状态\n if (imageLoading.value && props.loading) {\n return h('i', {\n class: props.loading,\n ...otherAttrs.value,\n })\n }\n // 错误状态\n if (imageError.value && props.fallback) {\n return h('i', {\n class: props.fallback,\n ...otherAttrs.value,\n })\n }\n // 图片本体\n return h('img', {\n src: outputName.value,\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n style: [style.value, { width: props.size ? formatSize(props.size) : 'auto', height: 'auto' }],\n onLoad: handleImageLoad,\n onError: handleImageError,\n ...otherAttrs.value,\n })\n }\n\n // SVG Sprite\n if (outputName.value) {\n return h(\n 'i',\n {\n class: mergedClass.value,\n style: style.value,\n ...otherAttrs.value,\n },\n [\n h(\n 'svg',\n {\n 'aria-hidden': 'true',\n 'class': 'size-inherit shrink-0',\n },\n [\n h('use', {\n 'xlink:href': `#${props.localIconPrefix}${outputName.value}`,\n }),\n ],\n ),\n ],\n )\n }\n\n return null\n }\n },\n})\n"],"names":["component","defineComponent","name","inheritAttrs","props","icon","type","String","Object","Function","required","flip","default","rotate","Number","color","size","localIconPrefix","fallback","loading","setup","attrs","useAttrs","ns","useNamespace","mergedClass","computed","classes","b","class","push","Array","isArray","otherAttrs","_","style","__","rest","isComponentName","outputType","value","iconStr","test","str","startsWith","includes","outputName","cssClasses","split","filter","cls","trim","formatSize","transform","baseStyle","length","join","attrsStyle","entries","map","_ref","key","replace","toLowerCase","imageLoading","ref","imageError","handleImageLoad","handleImageError","h","iconifyProps","formattedSize","width","height","Icon","src","onLoad","onError"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../../packages/components/src/icon/src/icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,KAAK,CAAA;AAKnD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,IAAI,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,EAAE,GAAG,SAAS,CAAA;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;;;cAOyC,GAAG;;;;cAIvB,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,EAAE,GAAG,SAAS;;;;;;;;;;;;;;;;;;;cAJrC,GAAG;;;;cAIvB,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,EAAE,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;AAT/E,
|
|
1
|
+
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../../packages/components/src/icon/src/icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,KAAK,CAAA;AAKnD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,IAAI,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,EAAE,GAAG,SAAS,CAAA;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;;;cAOyC,GAAG;;;;cAIvB,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,EAAE,GAAG,SAAS;;;;;;;;;;;;;;;;;;;cAJrC,GAAG;;;;cAIvB,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,EAAE,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;AAT/E,wBAkVE"}
|