| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 | | import { h, defineComponent } from 'vue'; |  | import { isExternal } from '@/utils'; |  |   |  | export default defineComponent({ |  |   name: 'svgIcon', |  |   props: { |  |     iconClass: { |  |       type: String, |  |       required: true, |  |     }, |  |     className: { |  |       type: String, |  |       default: '', |  |     }, |  |     color: { |  |       type: String, |  |       default: '#fff', |  |     }, |  |     size: { |  |       type: String, |  |       default: '14px', |  |     }, |  |   }, |  |   computed: { |  |     isExternal() { |  |       return isExternal(this.iconClass); |  |     }, |  |     iconName() { |  |       return `#icon-${this.iconClass}`; |  |     }, |  |     svgClass() { |  |       if (this.className) { |  |         return 'svg-icon ' + this.className; |  |       } else { |  |         return 'svg-icon'; |  |       } |  |     }, |  |     styleExternalIcon() { |  |       return { |  |         mask: `url(${this.iconClass}) no-repeat 50% 50%`, |  |         '-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`, |  |       }; |  |     }, |  |   }, |  |   render() { |  |     return this.isExternal |  |       ? h( |  |           'div', |  |           { |  |             style: this.styleExternalIcon, |  |             class: 'svg-external-icon svg-icon"', |  |           }, |  |           this.iconClass |  |         ) |  |       : h( |  |           'svg', |  |           { |  |             class: this.svgClass, |  |             'aria-hidden': true, |  |             width: this.size, |  |             height: this.size, |  |           }, |  |           [ |  |             h( |  |               'use', |  |               { |  |                 'xlink:href': this.iconName, |  |                 fill: this.color, |  |               }, |  |               null |  |             ), |  |           ] |  |         ); |  |   }, |  | }); | 
 |