tags.ts 2.1 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2
import { isHTMLTag, isSVGTag } from '@vue/shared'

3
export const BUILT_IN_TAG_NAMES = [
fxy060608's avatar
fxy060608 已提交
4
  'ad',
fxy060608's avatar
fxy060608 已提交
5 6
  'ad-content-page',
  'ad-draw',
fxy060608's avatar
fxy060608 已提交
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
  'audio',
  'button',
  'camera',
  'canvas',
  'checkbox',
  'checkbox-group',
  'cover-image',
  'cover-view',
  'editor',
  'form',
  'functional-page-navigator',
  'icon',
  'image',
  'input',
  'label',
  'live-player',
  'live-pusher',
  'map',
  'movable-area',
  'movable-view',
  'navigator',
  'official-account',
  'open-data',
  'picker',
  'picker-view',
  'picker-view-column',
  'progress',
  'radio',
  'radio-group',
  'rich-text',
  'scroll-view',
  'slider',
  'swiper',
  'swiper-item',
  'switch',
  'text',
  'textarea',
  'video',
  'view',
  'web-view',
47 48 49
]

export const BUILT_IN_TAGS = BUILT_IN_TAG_NAMES.map((tag) => 'uni-' + tag)
fxy060608's avatar
fxy060608 已提交
50

fxy060608's avatar
fxy060608 已提交
51
export const TAGS = [
fxy060608's avatar
fxy060608 已提交
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  'app',
  'layout',
  'content',
  'main',
  'top-window',
  'left-window',
  'right-window',
  'tabbar',
  'page',
  'page-head',
  'page-wrapper',
  'page-body',
  'page-refresh',
  'actionsheet',
  'modal',
  'toast',
  'resize-sensor',
  'shadow-root',
].map((tag) => 'uni-' + tag)
fxy060608's avatar
fxy060608 已提交
71 72

export function isBuiltInComponent(tag: string) {
73 74
  // h5 平台会被转换为 v-uni-
  return BUILT_IN_TAGS.indexOf('uni-' + tag.replace('v-uni-', '')) !== -1
fxy060608's avatar
fxy060608 已提交
75 76
}

fxy060608's avatar
fxy060608 已提交
77
export function isH5CustomElement(tag: string) {
fxy060608's avatar
fxy060608 已提交
78
  return TAGS.indexOf(tag) !== -1 || BUILT_IN_TAGS.indexOf(tag) !== -1
fxy060608's avatar
fxy060608 已提交
79
}
fxy060608's avatar
fxy060608 已提交
80

fxy060608's avatar
fxy060608 已提交
81
export function isH5NativeTag(tag: string) {
雪洛's avatar
雪洛 已提交
82 83 84 85 86
  return (
    tag !== 'head' &&
    (isHTMLTag(tag) || isSVGTag(tag)) &&
    !isBuiltInComponent(tag)
  )
fxy060608's avatar
fxy060608 已提交
87 88
}

fxy060608's avatar
fxy060608 已提交
89
export function isAppNativeTag(tag: string) {
fxy060608's avatar
fxy060608 已提交
90 91 92
  return isHTMLTag(tag) || isSVGTag(tag) || isBuiltInComponent(tag)
}

fxy060608's avatar
fxy060608 已提交
93 94 95 96 97 98 99 100
export function isMiniProgramNativeTag(tag: string) {
  return isBuiltInComponent(tag)
}

export function createIsCustomElement(tags: string[] = []) {
  return function isCustomElement(tag: string) {
    return tags.includes(tag)
  }
fxy060608's avatar
fxy060608 已提交
101 102
}

fxy060608's avatar
fxy060608 已提交
103 104 105 106
export function isComponentTag(tag: string) {
  return tag[0].toLowerCase() + tag.slice(1) === 'component'
}

fxy060608's avatar
fxy060608 已提交
107 108 109
export const COMPONENT_SELECTOR_PREFIX = 'uni-'

export const COMPONENT_PREFIX = 'v-' + COMPONENT_SELECTOR_PREFIX