|
1 |
- {"version":3,"sources":["../../../src/components/VIcon/VIcon.ts"],"names":[],"mappings":"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","sourcesContent":["import '../../stylus/components/_icons.styl'\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify'\n\nenum SIZE_MAP {\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab'].some(val => iconType.includes(val))\n}\n\nconst VIcon = mixins(\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n disabled: Boolean,\n left: Boolean,\n right: Boolean\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n },\n // Component data for both font and svg icon.\n getDefaultData (): VNodeData {\n const data: VNodeData = {\n staticClass: 'v-icon',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.$listeners.click || this.$listeners['!click'],\n 'v-icon--right': this.right\n },\n attrs: {\n 'aria-hidden': true,\n ...this.$attrs\n },\n on: this.$listeners\n }\n\n return data\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h('i', data, newChildren)\n },\n renderSvgIcon (icon: VuetifyIconComponent, h: CreateElement): VNode {\n const data = this.getDefaultData()\n data.class['v-icon--is-component'] = true\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(component, data)\n }\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIcon(icon, h)\n }\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n }\n})\n"],"sourceRoot":""}
|