/**
 *  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