300 lines
4.9 KiB
JavaScript
300 lines
4.9 KiB
JavaScript
/**
|
||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||
* 2.请不要删除和修改Snowy源码头部的版权声明。
|
||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
|
||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||
*/
|
||
function kebabCase(value) {
|
||
return value
|
||
.replace(/([A-Z])/g, ' $1')
|
||
.trim()
|
||
.split(' ')
|
||
.join('-')
|
||
.toLowerCase()
|
||
}
|
||
const antComponents = [
|
||
'Affix',
|
||
'Alert',
|
||
'Anchor',
|
||
'AnchorLink',
|
||
'AutoComplete',
|
||
'AutoCompleteOptGroup',
|
||
'AutoCompleteOption',
|
||
'Avatar',
|
||
'AvatarGroup',
|
||
'BackTop',
|
||
'Badge',
|
||
'BadgeRibbon',
|
||
'Breadcrumb',
|
||
'BreadcrumbItem',
|
||
'BreadcrumbSeparator',
|
||
'Button',
|
||
'ButtonGroup',
|
||
'Calendar',
|
||
'Card',
|
||
'CardGrid',
|
||
'CardMeta',
|
||
'Carousel',
|
||
'Cascader',
|
||
'CheckableTag',
|
||
'Checkbox',
|
||
'CheckboxGroup',
|
||
'Col',
|
||
'Collapse',
|
||
'CollapsePanel',
|
||
'Comment',
|
||
'ConfigProvider',
|
||
'DatePicker',
|
||
'Descriptions',
|
||
'DescriptionsItem',
|
||
'DirectoryTree',
|
||
'Divider',
|
||
'Drawer',
|
||
'Dropdown',
|
||
'DropdownButton',
|
||
'Empty',
|
||
'Form',
|
||
'FormItem',
|
||
'FormItemRest',
|
||
'Image',
|
||
'ImagePreviewGroup',
|
||
'Input',
|
||
'InputGroup',
|
||
'InputNumber',
|
||
'InputPassword',
|
||
'InputSearch',
|
||
'Layout',
|
||
'LayoutContent',
|
||
'LayoutFooter',
|
||
'LayoutHeader',
|
||
'LayoutSider',
|
||
'List',
|
||
'ListItem',
|
||
'ListItemMeta',
|
||
'LocaleProvider',
|
||
'Mentions',
|
||
'MentionsOption',
|
||
'Menu',
|
||
'MenuDivider',
|
||
'MenuItem',
|
||
'MenuItemGroup',
|
||
'Modal',
|
||
'MonthPicker',
|
||
'PageHeader',
|
||
'Pagination',
|
||
'Popconfirm',
|
||
'Popover',
|
||
'Progress',
|
||
'QuarterPicker',
|
||
'Radio',
|
||
'RadioButton',
|
||
'RadioGroup',
|
||
'RangePicker',
|
||
'Rate',
|
||
'Result',
|
||
'Row',
|
||
'Select',
|
||
'SelectOptGroup',
|
||
'SelectOption',
|
||
'Skeleton',
|
||
'SkeletonAvatar',
|
||
'SkeletonButton',
|
||
'SkeletonImage',
|
||
'SkeletonInput',
|
||
'Slider',
|
||
'Space',
|
||
'Spin',
|
||
'Statistic',
|
||
'StatisticCountdown',
|
||
'Step',
|
||
'Steps',
|
||
'SubMenu',
|
||
'Switch',
|
||
'TabPane',
|
||
'Table',
|
||
'TableColumn',
|
||
'TableColumnGroup',
|
||
'TableSummary',
|
||
'TableSummaryCell',
|
||
'TableSummaryRow',
|
||
'Tabs',
|
||
'Tag',
|
||
'Textarea',
|
||
'TimePicker',
|
||
'TimeRangePicker',
|
||
'Timeline',
|
||
'TimelineItem',
|
||
'Tooltip',
|
||
'Transfer',
|
||
'Tree',
|
||
'TreeNode',
|
||
'TreeSelect',
|
||
'TreeSelectNode',
|
||
'Typography',
|
||
'TypographyLink',
|
||
'TypographyParagraph',
|
||
'TypographyText',
|
||
'TypographyTitle',
|
||
'Upload',
|
||
'UploadDragger',
|
||
'WeekPicker'
|
||
]
|
||
const matchComponents = [
|
||
{
|
||
pattern: /^Avatar/,
|
||
styleDir: 'avatar'
|
||
},
|
||
{
|
||
pattern: /^AutoComplete/,
|
||
styleDir: 'auto-complete'
|
||
},
|
||
{
|
||
pattern: /^Anchor/,
|
||
styleDir: 'anchor'
|
||
},
|
||
{
|
||
pattern: /^Badge/,
|
||
styleDir: 'badge'
|
||
},
|
||
{
|
||
pattern: /^Breadcrumb/,
|
||
styleDir: 'breadcrumb'
|
||
},
|
||
{
|
||
pattern: /^Button/,
|
||
styleDir: 'button'
|
||
},
|
||
{
|
||
pattern: /^Checkbox/,
|
||
styleDir: 'checkbox'
|
||
},
|
||
{
|
||
pattern: /^Card/,
|
||
styleDir: 'card'
|
||
},
|
||
{
|
||
pattern: /^Collapse/,
|
||
styleDir: 'collapse'
|
||
},
|
||
{
|
||
pattern: /^Descriptions/,
|
||
styleDir: 'descriptions'
|
||
},
|
||
{
|
||
pattern: /^RangePicker|^WeekPicker|^MonthPicker|^QuarterPicker/,
|
||
styleDir: 'date-picker'
|
||
},
|
||
{
|
||
pattern: /^TimeRangePicker/,
|
||
styleDir: 'time-picker'
|
||
},
|
||
{
|
||
pattern: /^Dropdown/,
|
||
styleDir: 'dropdown'
|
||
},
|
||
{
|
||
pattern: /^Form/,
|
||
styleDir: 'form'
|
||
},
|
||
{
|
||
pattern: /^InputNumber/,
|
||
styleDir: 'input-number'
|
||
},
|
||
{
|
||
pattern: /^Input|^Textarea/,
|
||
styleDir: 'input'
|
||
},
|
||
{
|
||
pattern: /^Statistic/,
|
||
styleDir: 'statistic'
|
||
},
|
||
{
|
||
pattern: /^CheckableTag/,
|
||
styleDir: 'tag'
|
||
},
|
||
{
|
||
pattern: /^Layout/,
|
||
styleDir: 'layout'
|
||
},
|
||
{
|
||
pattern: /^Menu|^SubMenu/,
|
||
styleDir: 'menu'
|
||
},
|
||
{
|
||
pattern: /^Table/,
|
||
styleDir: 'table'
|
||
},
|
||
{
|
||
pattern: /^Radio/,
|
||
styleDir: 'radio'
|
||
},
|
||
{
|
||
pattern: /^Image/,
|
||
styleDir: 'image'
|
||
},
|
||
{
|
||
pattern: /^List/,
|
||
styleDir: 'list'
|
||
},
|
||
{
|
||
pattern: /^Tab/,
|
||
styleDir: 'tabs'
|
||
},
|
||
{
|
||
pattern: /^Mentions/,
|
||
styleDir: 'mentions'
|
||
},
|
||
{
|
||
pattern: /^Step/,
|
||
styleDir: 'steps'
|
||
},
|
||
{
|
||
pattern: /^Skeleton/,
|
||
styleDir: 'skeleton'
|
||
},
|
||
{
|
||
pattern: /^Select/,
|
||
styleDir: 'select'
|
||
},
|
||
{
|
||
pattern: /^TreeSelect/,
|
||
styleDir: 'tree-select'
|
||
},
|
||
{
|
||
pattern: /^Tree|^DirectoryTree/,
|
||
styleDir: 'tree'
|
||
},
|
||
{
|
||
pattern: /^Typography/,
|
||
styleDir: 'typography'
|
||
},
|
||
{
|
||
pattern: /^Timeline/,
|
||
styleDir: 'timeline'
|
||
},
|
||
{
|
||
pattern: /^Upload/,
|
||
styleDir: 'upload'
|
||
}
|
||
]
|
||
const antStyleDeps = Array.from(
|
||
new Set(
|
||
antComponents.map((name) => {
|
||
for (let i = 0; i < matchComponents.length; i++) {
|
||
if (name.match(matchComponents[i].pattern)) {
|
||
return matchComponents[i].styleDir
|
||
}
|
||
}
|
||
return kebabCase(name)
|
||
})
|
||
)
|
||
).map((name) => {
|
||
return `ant-design-vue/es/${name}/style`
|
||
})
|
||
|
||
export default antStyleDeps
|