UNPKG

vue-cesium

Version:
1 lines 12.4 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/ui/icon/index.ts"],"sourcesContent":["import { h, defineComponent, computed, VNode, ComponentPublicInstance } from 'vue'\nimport type { CSSProperties } from 'vue'\nimport useSize, { useSizeProps } from '@vue-cesium/composables/private/use-size'\nimport { hMergeSlot, hSlot } from '@vue-cesium/utils/private/render'\n\nexport const iconProps = {\n ...useSizeProps,\n\n tag: {\n type: String,\n default: 'i'\n },\n\n name: String,\n color: String,\n hoverColor: String,\n left: Boolean,\n right: Boolean\n}\nexport default defineComponent({\n name: 'VcIcon',\n props: iconProps,\n setup(props: VcIconProps, { slots }) {\n const sizeStyle = useSize(props)\n const style = computed(() => {\n const css: CSSProperties | null = sizeStyle.value\n if (!css) {\n return undefined\n }\n props.color && (css.color = props.color)\n props.hoverColor && (css['--hover-color'] = props.hoverColor)\n return css\n })\n\n const classes = computed(\n () =>\n 'vc-icon' +\n (props.left === true ? ' on-left' : '') +\n (props.right === true ? ' on-right' : '') +\n (props.color !== void 0 ? ` text-${props.color}` : '')\n )\n\n const type = computed(() => {\n let cls\n let icon = props.name\n\n if (!icon) {\n return {\n none: true,\n cls: classes.value\n }\n }\n\n if (icon.startsWith('M') === true) {\n const [def, viewBox] = icon.split('|')\n\n return {\n svg: true,\n cls: classes.value,\n nodes: def.split('&&').map(path => {\n const [d, style, transform] = path.split('@@')\n return h('path', {\n style,\n d,\n transform\n })\n }),\n viewBox: viewBox !== void 0 ? viewBox : '0 0 24 24'\n }\n }\n\n if (icon.startsWith('img:') === true) {\n return {\n img: true,\n cls: classes.value,\n src: icon.substring(4)\n }\n }\n\n if (icon.startsWith('svguse:') === true) {\n const [def, viewBox] = icon.split('|')\n\n return {\n svguse: true,\n cls: classes.value,\n src: def.substring(7),\n viewBox: viewBox !== void 0 ? viewBox : '0 0 24 24'\n }\n }\n\n let content = ' '\n\n if (/^[l|f]a[s|r|l|b|d]{0,1} /.test(icon) || icon.startsWith('icon-') === true) {\n cls = icon\n } else if (icon.startsWith('bt-') === true) {\n cls = `bt ${icon}`\n } else if (icon.startsWith('eva-') === true) {\n cls = `eva ${icon}`\n } else if (/^ion-(md|ios|logo)/.test(icon) === true) {\n cls = `ionicons ${icon}`\n } else if (icon.startsWith('ion-') === true) {\n cls = `ionicons ion-md${icon.substr(3)}`\n } else if (icon.startsWith('mdi-') === true) {\n cls = `mdi ${icon}`\n } else if (icon.startsWith('iconfont ') === true) {\n cls = `${icon}`\n } else if (icon.startsWith('ti-') === true) {\n cls = `themify-icon ${icon}`\n } else if (icon.startsWith('vc-') === true) {\n cls = `vc-icons ${icon}`\n } else {\n // \"notranslate\" class is for Google Translate\n // to avoid tampering with Material Icons ligature font\n //\n // Caution: To be able to add suffix to the class name,\n // keep the 'material-icons' at the end of the string.\n cls = 'notranslate material-icons'\n\n if (icon.startsWith('o_') === true) {\n icon = icon.substring(2)\n cls += '-outlined'\n } else if (icon.startsWith('r_') === true) {\n icon = icon.substring(2)\n cls += '-round'\n } else if (icon.startsWith('s_') === true) {\n icon = icon.substring(2)\n cls += '-sharp'\n }\n\n content = icon\n }\n\n return {\n cls: cls + ' ' + classes.value,\n content\n }\n })\n\n return () => {\n const data = {\n class: type.value.cls,\n style: style.value,\n 'aria-hidden': 'true',\n role: 'presentation',\n viewBox: '',\n src: ''\n }\n\n if (type.value.none === true) {\n return h(props.tag, data, hSlot(slots.default))\n }\n\n if (type.value.img === true) {\n data.src = type.value.src\n if (data.style) {\n data.style.width = data.style.fontSize\n data.style.height = data.style.fontSize\n }\n return h('img', data)\n }\n\n if (type.value.svg === true) {\n data.viewBox = type.value.viewBox\n data['aria-hidden'] = 'true'\n\n if (data.style) {\n data.style.width = data.style.fontSize\n data.style.height = data.style.fontSize\n }\n\n return h('svg', data, hMergeSlot(slots.default, type.value.nodes))\n }\n\n if (type.value.svguse === true) {\n data.viewBox = type.value.viewBox\n data['aria-hidden'] = 'true'\n\n if (data.style) {\n data.style.width = data.style.fontSize\n data.style.height = data.style.fontSize\n }\n return h('svg', data, hMergeSlot(slots.default, [h('use', { 'xlink:href': type.value.src })]))\n }\n\n return h(props.tag, data, hMergeSlot(slots.default, [type.value.content]))\n }\n }\n})\n\nexport interface VcIconProps {\n /**\n * Size in CSS units, including unit name or standard size name (xs|sm|md|lg|xl).\n */\n size?: string\n /**\n * HTML tag to render, unless no icon is supplied or it's an svg icon.\n * Default value: i\n */\n tag?: string\n /**\n * Name of the icon, following VueCesium convention.\n */\n name?: string\n /**\n * Color name for component from the css color palette.\n */\n color?: string\n hoverColor?: string\n /**\n * Useful if icon is on the left side of something: applies a standard margin on the right side of Icon.\n */\n left?: boolean\n /**\n * Useful if icon is on the right side of something: applies a standard margin on the left side of Icon.\n */\n right?: boolean\n}\n\nexport interface VcIconSlots {\n /**\n * Suggestions: VcTooltip\n */\n default: () => VNode[]\n}\n\nexport type VcIconRef = ComponentPublicInstance<VcIconProps>\n"],"names":["style"],"mappings":"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"}