tt-design-web-vue 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -0
- package/README.md +120 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +5220 -0
- package/dist/index.js.map +1 -0
- package/dist/rich-text.css +1 -0
- package/dist/style.cjs +2 -0
- package/dist/style.cjs.map +1 -0
- package/dist/style.css +1 -0
- package/dist/style.js +2 -0
- package/dist/style.js.map +1 -0
- package/dist/types/components/ActivityFeed/ActivityFeed.vue.d.ts +13 -0
- package/dist/types/components/ActivityFeed/index.d.ts +2 -0
- package/dist/types/components/Alert/Alert.vue.d.ts +164 -0
- package/dist/types/components/Alert/index.d.ts +1 -0
- package/dist/types/components/Anchor/Anchor.vue.d.ts +12 -0
- package/dist/types/components/Anchor/AnchorLink.vue.d.ts +14 -0
- package/dist/types/components/Anchor/index.d.ts +2 -0
- package/dist/types/components/AttachmentList/AttachmentList.vue.d.ts +19 -0
- package/dist/types/components/AttachmentList/index.d.ts +2 -0
- package/dist/types/components/Avatar/Avatar.vue.d.ts +153 -0
- package/dist/types/components/Avatar/AvatarGroup.vue.d.ts +208 -0
- package/dist/types/components/Avatar/avatar.d.ts +3 -0
- package/dist/types/components/Avatar/index.d.ts +6 -0
- package/dist/types/components/BackTop/BackTop.vue.d.ts +138 -0
- package/dist/types/components/BackTop/index.d.ts +1 -0
- package/dist/types/components/Badge/Badge.vue.d.ts +164 -0
- package/dist/types/components/Badge/index.d.ts +1 -0
- package/dist/types/components/Breadcrumb/Breadcrumb.vue.d.ts +108 -0
- package/dist/types/components/Breadcrumb/BreadcrumbItem.vue.d.ts +108 -0
- package/dist/types/components/Breadcrumb/index.d.ts +2 -0
- package/dist/types/components/Button/Button.vue.d.ts +12 -0
- package/dist/types/components/Button/index.d.ts +2 -0
- package/dist/types/components/Calendar/Calendar.vue.d.ts +205 -0
- package/dist/types/components/Calendar/index.d.ts +1 -0
- package/dist/types/components/Card/Card.vue.d.ts +179 -0
- package/dist/types/components/Card/index.d.ts +2 -0
- package/dist/types/components/CardSelect/CardSelect.vue.d.ts +56 -0
- package/dist/types/components/CardSelect/index.d.ts +2 -0
- package/dist/types/components/Carousel/Carousel.vue.d.ts +214 -0
- package/dist/types/components/Carousel/CarouselItem.vue.d.ts +112 -0
- package/dist/types/components/Carousel/index.d.ts +2 -0
- package/dist/types/components/Cascader/Cascader.vue.d.ts +704 -0
- package/dist/types/components/Cascader/index.d.ts +3 -0
- package/dist/types/components/Chart/Chart.vue.d.ts +47 -0
- package/dist/types/components/Chart/index.d.ts +2 -0
- package/dist/types/components/Checkbox/Checkbox.vue.d.ts +21 -0
- package/dist/types/components/Checkbox/CheckboxGroup.vue.d.ts +20 -0
- package/dist/types/components/Checkbox/index.d.ts +5 -0
- package/dist/types/components/Collapse/Collapse.vue.d.ts +150 -0
- package/dist/types/components/Collapse/CollapseItem.vue.d.ts +146 -0
- package/dist/types/components/Collapse/index.d.ts +2 -0
- package/dist/types/components/Color/Color.vue.d.ts +26 -0
- package/dist/types/components/Color/index.d.ts +2 -0
- package/dist/types/components/ColorPicker/ColorPicker.vue.d.ts +195 -0
- package/dist/types/components/ColorPicker/index.d.ts +3 -0
- package/dist/types/components/Comment/Comment.vue.d.ts +46 -0
- package/dist/types/components/Comment/index.d.ts +2 -0
- package/dist/types/components/Container/Container.vue.d.ts +12 -0
- package/dist/types/components/Container/index.d.ts +1 -0
- package/dist/types/components/DatePicker/DatePicker.vue.d.ts +568 -0
- package/dist/types/components/DatePicker/index.d.ts +3 -0
- package/dist/types/components/Descriptions/Descriptions.vue.d.ts +138 -0
- package/dist/types/components/Descriptions/DescriptionsItem.vue.d.ts +150 -0
- package/dist/types/components/Descriptions/index.d.ts +2 -0
- package/dist/types/components/Dialog/Dialog.vue.d.ts +360 -0
- package/dist/types/components/Dialog/index.d.ts +1 -0
- package/dist/types/components/Divider/Divider.vue.d.ts +123 -0
- package/dist/types/components/Divider/index.d.ts +1 -0
- package/dist/types/components/Drawer/Drawer.vue.d.ts +398 -0
- package/dist/types/components/Drawer/index.d.ts +1 -0
- package/dist/types/components/Dropdown/Dropdown.vue.d.ts +1610 -0
- package/dist/types/components/Dropdown/DropdownItem.vue.d.ts +12 -0
- package/dist/types/components/Dropdown/DropdownMenu.vue.d.ts +12 -0
- package/dist/types/components/Dropdown/index.d.ts +3 -0
- package/dist/types/components/EChartsWrapper/EChartsWrapper.vue.d.ts +39 -0
- package/dist/types/components/EChartsWrapper/index.d.ts +2 -0
- package/dist/types/components/Empty/Empty.vue.d.ts +126 -0
- package/dist/types/components/Empty/index.d.ts +1 -0
- package/dist/types/components/FilePreview/FilePreview.vue.d.ts +67 -0
- package/dist/types/components/FilePreview/index.d.ts +2 -0
- package/dist/types/components/FloatButton/FloatButton.vue.d.ts +44 -0
- package/dist/types/components/FloatButton/index.d.ts +2 -0
- package/dist/types/components/Font/Font.vue.d.ts +18 -0
- package/dist/types/components/Font/index.d.ts +2 -0
- package/dist/types/components/Form/Form.vue.d.ts +221 -0
- package/dist/types/components/Form/FormItem.vue.d.ts +17 -0
- package/dist/types/components/Form/index.d.ts +4 -0
- package/dist/types/components/Grid/Col.vue.d.ts +160 -0
- package/dist/types/components/Grid/Row.vue.d.ts +120 -0
- package/dist/types/components/Grid/index.d.ts +2 -0
- package/dist/types/components/Icon/Icon.vue.d.ts +30 -0
- package/dist/types/components/Icon/gradient.d.ts +10 -0
- package/dist/types/components/Icon/index.d.ts +1 -0
- package/dist/types/components/Image/Image.vue.d.ts +285 -0
- package/dist/types/components/Image/index.d.ts +1 -0
- package/dist/types/components/Input/Input.vue.d.ts +407 -0
- package/dist/types/components/Input/index.d.ts +2 -0
- package/dist/types/components/InputNumber/InputNumber.vue.d.ts +282 -0
- package/dist/types/components/InputNumber/index.d.ts +2 -0
- package/dist/types/components/Layout/Layout.vue.d.ts +27 -0
- package/dist/types/components/Layout/index.d.ts +1 -0
- package/dist/types/components/Link/Link.vue.d.ts +148 -0
- package/dist/types/components/Link/index.d.ts +1 -0
- package/dist/types/components/List/List.vue.d.ts +26 -0
- package/dist/types/components/List/ListItem.vue.d.ts +27 -0
- package/dist/types/components/List/index.d.ts +2 -0
- package/dist/types/components/Loading/Loading.vue.d.ts +12 -0
- package/dist/types/components/Loading/index.d.ts +3 -0
- package/dist/types/components/Masonry/Masonry.vue.d.ts +35 -0
- package/dist/types/components/Masonry/index.d.ts +2 -0
- package/dist/types/components/Menu/Menu.vue.d.ts +235 -0
- package/dist/types/components/Menu/MenuItem.vue.d.ts +295 -0
- package/dist/types/components/Menu/MenuItemGroup.vue.d.ts +14 -0
- package/dist/types/components/Menu/SubMenu.vue.d.ts +216 -0
- package/dist/types/components/Menu/index.d.ts +4 -0
- package/dist/types/components/Message/index.d.ts +9 -0
- package/dist/types/components/Money/Money.vue.d.ts +30 -0
- package/dist/types/components/Money/index.d.ts +2 -0
- package/dist/types/components/Notification/index.d.ts +9 -0
- package/dist/types/components/Pagination/Pagination.vue.d.ts +3 -0
- package/dist/types/components/Pagination/index.d.ts +1 -0
- package/dist/types/components/Plate/Plate.vue.d.ts +46 -0
- package/dist/types/components/Plate/index.d.ts +2 -0
- package/dist/types/components/Popconfirm/Popconfirm.vue.d.ts +23 -0
- package/dist/types/components/Popconfirm/index.d.ts +1 -0
- package/dist/types/components/Popover/Popover.vue.d.ts +19 -0
- package/dist/types/components/Popover/index.d.ts +1 -0
- package/dist/types/components/Progress/Progress.vue.d.ts +180 -0
- package/dist/types/components/Progress/index.d.ts +1 -0
- package/dist/types/components/QRCode/QRCode.vue.d.ts +43 -0
- package/dist/types/components/QRCode/index.d.ts +2 -0
- package/dist/types/components/QueryForm/QueryForm.vue.d.ts +227 -0
- package/dist/types/components/QueryForm/index.d.ts +1 -0
- package/dist/types/components/Radio/Radio.vue.d.ts +20 -0
- package/dist/types/components/Radio/RadioButton.vue.d.ts +12 -0
- package/dist/types/components/Radio/RadioGroup.vue.d.ts +20 -0
- package/dist/types/components/Radio/index.d.ts +6 -0
- package/dist/types/components/Rate/Rate.vue.d.ts +120 -0
- package/dist/types/components/Rate/index.d.ts +3 -0
- package/dist/types/components/Result/Result.vue.d.ts +136 -0
- package/dist/types/components/Result/index.d.ts +1 -0
- package/dist/types/components/RichText/RichText.vue.d.ts +42 -0
- package/dist/types/components/RichText/index.d.ts +2 -0
- package/dist/types/components/SearchFilter/SearchFilter.vue.d.ts +14 -0
- package/dist/types/components/SearchFilter/index.d.ts +1 -0
- package/dist/types/components/Segmented/Segmented.vue.d.ts +24 -0
- package/dist/types/components/Segmented/index.d.ts +3 -0
- package/dist/types/components/Select/Select.vue.d.ts +56 -0
- package/dist/types/components/Select/index.d.ts +3 -0
- package/dist/types/components/Skeleton/Skeleton.vue.d.ts +140 -0
- package/dist/types/components/Skeleton/SkeletonItem.vue.d.ts +26 -0
- package/dist/types/components/Skeleton/index.d.ts +2 -0
- package/dist/types/components/Space/Space.vue.d.ts +184 -0
- package/dist/types/components/Space/SpaceCompact.vue.d.ts +23 -0
- package/dist/types/components/Space/index.d.ts +579 -0
- package/dist/types/components/Spin/Spin.vue.d.ts +23 -0
- package/dist/types/components/Spin/index.d.ts +3 -0
- package/dist/types/components/Splitter/Splitter.vue.d.ts +146 -0
- package/dist/types/components/Splitter/SplitterPanel.vue.d.ts +144 -0
- package/dist/types/components/Splitter/index.d.ts +2 -0
- package/dist/types/components/Statistic/Statistic.vue.d.ts +158 -0
- package/dist/types/components/Statistic/index.d.ts +1 -0
- package/dist/types/components/Steps/Step.vue.d.ts +136 -0
- package/dist/types/components/Steps/Steps.vue.d.ts +148 -0
- package/dist/types/components/Steps/index.d.ts +2 -0
- package/dist/types/components/Switch/Switch.vue.d.ts +238 -0
- package/dist/types/components/Switch/index.d.ts +3 -0
- package/dist/types/components/Table/Table.vue.d.ts +38 -0
- package/dist/types/components/Table/TableColumn.vue.d.ts +4 -0
- package/dist/types/components/Table/TableOperationColumn.vue.d.ts +27 -0
- package/dist/types/components/Table/index.d.ts +3 -0
- package/dist/types/components/Tabs/TabPane.vue.d.ts +14 -0
- package/dist/types/components/Tabs/Tabs.vue.d.ts +19 -0
- package/dist/types/components/Tabs/index.d.ts +4 -0
- package/dist/types/components/Tag/CheckableTag.vue.d.ts +23 -0
- package/dist/types/components/Tag/Tag.vue.d.ts +150 -0
- package/dist/types/components/Tag/index.d.ts +479 -0
- package/dist/types/components/TimePicker/TimePicker.vue.d.ts +551 -0
- package/dist/types/components/TimePicker/index.d.ts +3 -0
- package/dist/types/components/Timeline/Timeline.vue.d.ts +60 -0
- package/dist/types/components/Timeline/TimelineItem.vue.d.ts +144 -0
- package/dist/types/components/Timeline/index.d.ts +2 -0
- package/dist/types/components/Tooltip/Tooltip.vue.d.ts +19 -0
- package/dist/types/components/Tooltip/index.d.ts +1 -0
- package/dist/types/components/TopicSwitch/TopicSwitch.vue.d.ts +36 -0
- package/dist/types/components/TopicSwitch/index.d.ts +3 -0
- package/dist/types/components/Tour/Tour.vue.d.ts +222 -0
- package/dist/types/components/Tour/index.d.ts +2 -0
- package/dist/types/components/Transfer/Transfer.vue.d.ts +29 -0
- package/dist/types/components/Transfer/index.d.ts +3 -0
- package/dist/types/components/Tree/Tree.vue.d.ts +5857 -0
- package/dist/types/components/Tree/index.d.ts +3 -0
- package/dist/types/components/TreeSelect/TreeSelect.vue.d.ts +990 -0
- package/dist/types/components/TreeSelect/index.d.ts +3 -0
- package/dist/types/components/Upload/Upload.vue.d.ts +322 -0
- package/dist/types/components/Upload/index.d.ts +3 -0
- package/dist/types/components/UserDisplay/UserDisplay.vue.d.ts +21 -0
- package/dist/types/components/UserDisplay/index.d.ts +1 -0
- package/dist/types/components/Watermark/Watermark.vue.d.ts +13 -0
- package/dist/types/components/Watermark/index.d.ts +1 -0
- package/dist/types/index.d.ts +119 -0
- package/dist/types/style.d.ts +0 -0
- package/dist/types/theme.d.ts +5 -0
- package/docs/component-compatibility.md +85 -0
- package/docs/component-manifest.json +100 -0
- package/docs/components/button.md +32 -0
- package/docs/components/chart.md +37 -0
- package/docs/components/container.md +28 -0
- package/docs/components/dialog.md +46 -0
- package/docs/components/echarts-wrapper.md +46 -0
- package/docs/components/form.md +67 -0
- package/docs/components/grid.md +32 -0
- package/docs/components/icon.md +45 -0
- package/docs/components/index.md +36 -0
- package/docs/components/loading.md +46 -0
- package/docs/components/message.md +26 -0
- package/docs/components/qr-code.md +49 -0
- package/docs/components/rich-text.md +65 -0
- package/docs/components/select.md +71 -0
- package/docs/components/table.md +44 -0
- package/docs/components/upload.md +40 -0
- package/docs/index.md +35 -0
- package/docs/migration-from-workspace.md +79 -0
- package/docs/theme.md +100 -0
- package/package.json +88 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/Timeline/Timeline.vue","../src/components/Timeline/TimelineItem.vue","../src/components/ActivityFeed/ActivityFeed.vue","../src/components/Alert/Alert.vue","../src/components/Anchor/Anchor.vue","../src/components/Anchor/AnchorLink.vue","../src/components/FilePreview/FilePreview.vue","../src/components/AttachmentList/AttachmentList.vue","../src/components/Avatar/avatar.ts","../src/components/Avatar/Avatar.vue","../src/components/Avatar/AvatarGroup.vue","../src/components/Badge/Badge.vue","../src/components/BackTop/BackTop.vue","../src/components/Breadcrumb/Breadcrumb.vue","../src/components/Breadcrumb/BreadcrumbItem.vue","../src/components/Button/Button.vue","../src/components/Card/Card.vue","../src/components/Icon/gradient.ts","../src/components/Icon/Icon.vue","../src/components/CardSelect/CardSelect.vue","../src/components/Cascader/Cascader.vue","../src/components/Calendar/Calendar.vue","../src/components/Carousel/Carousel.vue","../src/components/Carousel/CarouselItem.vue","../src/components/EChartsWrapper/EChartsWrapper.vue","../src/components/Chart/Chart.vue","../src/components/Checkbox/Checkbox.vue","../src/components/Checkbox/CheckboxGroup.vue","../src/components/Color/Color.vue","../src/components/ColorPicker/ColorPicker.vue","../src/components/Comment/Comment.vue","../src/components/Container/Container.vue","../src/components/Collapse/Collapse.vue","../src/components/Collapse/CollapseItem.vue","../src/components/DatePicker/DatePicker.vue","../src/components/Descriptions/Descriptions.vue","../src/components/Descriptions/DescriptionsItem.vue","../src/components/Dialog/Dialog.vue","../src/components/Divider/Divider.vue","../src/components/Drawer/Drawer.vue","../src/components/Dropdown/Dropdown.vue","../src/components/Dropdown/DropdownMenu.vue","../src/components/Dropdown/DropdownItem.vue","../src/components/Empty/Empty.vue","../src/components/FloatButton/FloatButton.vue","../src/components/Font/Font.vue","../src/components/Form/Form.vue","../src/components/Form/FormItem.vue","../src/components/Grid/Row.vue","../src/components/Grid/Col.vue","../src/components/Image/Image.vue","../src/components/Layout/Layout.vue","../src/components/List/List.vue","../src/components/List/ListItem.vue","../src/components/Link/Link.vue","../src/components/Input/Input.vue","../src/components/InputNumber/InputNumber.vue","../src/components/Message/index.ts","../src/components/Masonry/Masonry.vue","../src/components/Menu/Menu.vue","../src/components/Menu/MenuItem.vue","../src/components/Menu/MenuItemGroup.vue","../src/components/Menu/SubMenu.vue","../src/components/Money/Money.vue","../src/components/Notification/index.ts","../src/components/Pagination/Pagination.vue","../src/components/Plate/Plate.vue","../src/components/Popconfirm/Popconfirm.vue","../src/components/Popover/Popover.vue","../src/components/QueryForm/QueryForm.vue","../src/components/QRCode/QRCode.vue","../src/components/Radio/Radio.vue","../src/components/Radio/RadioButton.vue","../src/components/Radio/RadioGroup.vue","../src/components/Rate/Rate.vue","../src/components/Result/Result.vue","../src/components/RichText/RichText.vue","../src/components/SearchFilter/SearchFilter.vue","../src/components/Select/Select.vue","../src/components/Segmented/Segmented.vue","../src/components/Skeleton/Skeleton.vue","../src/components/Skeleton/SkeletonItem.vue","../src/components/Space/Space.vue","../src/components/Space/SpaceCompact.vue","../src/components/Space/index.ts","../src/components/Splitter/Splitter.vue","../src/components/Splitter/SplitterPanel.vue","../src/components/Statistic/Statistic.vue","../src/components/Spin/Spin.vue","../src/components/Loading/Loading.vue","../src/components/Switch/Switch.vue","../src/components/Table/Table.vue","../src/components/Table/TableColumn.vue","../src/components/Table/TableOperationColumn.vue","../src/components/Tabs/Tabs.vue","../src/components/Tabs/TabPane.vue","../src/components/Tag/Tag.vue","../src/components/Tag/CheckableTag.vue","../src/components/Tag/index.ts","../src/components/TimePicker/TimePicker.vue","../src/components/Tooltip/Tooltip.vue","../src/components/TopicSwitch/TopicSwitch.vue","../src/components/Tour/Tour.vue","../src/components/Transfer/Transfer.vue","../src/components/Tree/Tree.vue","../src/components/TreeSelect/TreeSelect.vue","../src/components/Upload/Upload.vue","../src/components/UserDisplay/UserDisplay.vue","../src/components/Watermark/Watermark.vue","../src/components/Progress/Progress.vue","../src/components/Steps/Steps.vue","../src/components/Steps/Step.vue","../src/theme.ts"],"sourcesContent":["<template>\n <ElTimeline ref=\"timelineRef\" class=\"tt-timeline\" v-bind=\"$attrs\">\n <slot />\n </ElTimeline>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElTimeline } from 'element-plus';\n\nconst timelineRef = ref<InstanceType<typeof ElTimeline>>();\n\ndefineOptions({\n name: 'Timeline',\n});\n\ndefineExpose({\n timelineRef,\n});\n</script>\n","<template>\n <ElTimelineItem ref=\"timelineItemRef\" class=\"tt-timeline-item\" v-bind=\"$attrs\">\n <template v-if=\"slots.dot\" #dot>\n <span class=\"tt-timeline-item__dot\">\n <slot name=\"dot\" />\n </span>\n </template>\n <slot />\n </ElTimelineItem>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElTimelineItem } from 'element-plus';\n\nconst slots = useSlots();\nconst timelineItemRef = ref<InstanceType<typeof ElTimelineItem>>();\n\ndefineOptions({\n name: 'TimelineItem',\n});\n\ndefineExpose({\n timelineItemRef,\n});\n</script>\n","<template>\n <div class=\"tt-activity-feed\">\n <Timeline>\n <TimelineItem v-for=\"item in items\" :key=\"item.key\" :timestamp=\"item.time\" :type=\"item.type || 'primary'\" placement=\"top\">\n <div class=\"tt-activity-feed__item\">\n <div class=\"tt-activity-feed__title\">{{ item.title }}</div>\n <div v-if=\"item.description\" class=\"tt-activity-feed__description\">{{ item.description }}</div>\n <div v-if=\"item.user\" class=\"tt-activity-feed__user\">{{ item.user }}</div>\n </div>\n </TimelineItem>\n </Timeline>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Timeline, { TimelineItem } from '../Timeline';\n\nexport interface ActivityFeedItem {\n key: string | number;\n title: string;\n description?: string;\n user?: string;\n time?: string;\n type?: 'primary' | 'success' | 'warning' | 'danger' | 'info';\n}\n\ndefineProps<{\n items: ActivityFeedItem[];\n}>();\n\ndefineOptions({\n name: 'ActivityFeed',\n});\n</script>\n","<template>\n <ElAlert ref=\"alertRef\" class=\"tt-alert\" v-bind=\"$attrs\">\n <template v-if=\"slots.title\" #title>\n <slot name=\"title\" />\n </template>\n <template v-if=\"slots.default\" #default>\n <slot />\n </template>\n </ElAlert>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElAlert } from 'element-plus';\n\nconst slots = useSlots();\nconst alertRef = ref<InstanceType<typeof ElAlert>>();\n\ndefineOptions({\n name: 'Alert',\n});\n\ndefineExpose({\n alertRef,\n});\n</script>\n","<template>\n <ElAnchor class=\"tt-anchor\" v-bind=\"$attrs\">\n <slot />\n </ElAnchor>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElAnchor } from 'element-plus';\n\ndefineOptions({\n name: 'Anchor',\n});\n</script>\n","<template>\n <ElAnchorLink class=\"tt-anchor-link\" v-bind=\"$attrs\">\n <slot />\n <template #sub-link>\n <slot name=\"sub-link\" />\n </template>\n </ElAnchorLink>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElAnchorLink } from 'element-plus';\n\ndefineOptions({\n name: 'AnchorLink',\n});\n</script>\n","<template>\n <div v-if=\"!isPreviewMode\" v-bind=\"attrs\" class=\"tt-file-preview\" :class=\"{ 'is-clickable': clickable }\" :role=\"clickable ? 'button' : undefined\" :tabindex=\"clickable ? 0 : undefined\" @click=\"handlePreview\" @keydown.enter=\"handlePreview\">\n <span class=\"tt-file-preview__icon\" aria-hidden=\"true\">{{ iconText }}</span>\n <div class=\"tt-file-preview__body\"><strong>{{ name }}</strong><span v-if=\"description\">{{ description }}</span></div>\n <slot name=\"extra\" />\n </div>\n <Teleport v-else to=\"body\">\n <div v-if=\"visible\" ref=\"root\" v-bind=\"attrs\" class=\"tt-file-preview-overlay\" :style=\"{ zIndex }\" role=\"dialog\" aria-modal=\"true\" :aria-label=\"`${currentName} 文件预览`\" @click.self=\"handleMaskClick\">\n <header class=\"tt-file-preview-overlay__header\">\n <strong :title=\"currentName\">{{ currentName }}</strong>\n <div class=\"tt-file-preview-overlay__actions\">\n <button v-if=\"copyable\" type=\"button\" :disabled=\"!currentUrl\" aria-label=\"复制链接\" @click=\"copyCurrentUrl\"><CopyDocument /></button>\n <a v-if=\"downloadable\" :href=\"currentUrl || undefined\" :download=\"currentName\" :aria-disabled=\"!currentUrl\" aria-label=\"下载\" @click=\"handleDownload\"><Download /></a>\n <button type=\"button\" aria-label=\"关闭预览\" @click=\"close\"><Close /></button>\n </div>\n </header>\n <main class=\"tt-file-preview-overlay__content\">\n <img v-if=\"previewType === 'image' && currentUrl\" class=\"tt-file-preview-overlay__image\" :class=\"{ 'is-draggable': imageTransform.scale > 1 }\" :src=\"imageUrl\" :alt=\"currentName\" :style=\"imageStyle\" draggable=\"false\" @wheel.prevent=\"handleImageWheel\" @mousedown=\"startImageDrag\" />\n <video v-else-if=\"previewType === 'video' && currentUrl\" controls :src=\"currentUrl\" />\n <audio v-else-if=\"previewType === 'audio' && currentUrl\" controls :src=\"currentUrl\" />\n <pre v-else-if=\"previewType === 'txt' && textPreviewContent !== null\" class=\"tt-file-preview-overlay__text\">{{ textPreviewContent }}</pre>\n <iframe v-else-if=\"(previewType === 'pdf' || previewType === 'txt') && currentUrl\" :src=\"previewType === 'pdf' ? `${currentUrl}#toolbar=0` : currentUrl\" :title=\"currentName\" />\n <iframe v-else-if=\"isOfficeFile && currentUrl\" :src=\"officeUrl\" :title=\"currentName\" />\n <div v-else class=\"tt-file-preview-overlay__file-card\">\n <span>{{ currentIconText }}</span><strong :title=\"currentName\">{{ currentName }}</strong>\n <a v-if=\"downloadable && currentUrl\" :href=\"currentUrl\" :download=\"currentName\"><Download />下载文件</a>\n </div>\n <button v-if=\"canNavigate\" class=\"tt-file-preview-overlay__nav tt-file-preview-overlay__nav--prev\" type=\"button\" :disabled=\"!canPrev\" aria-label=\"上一个文件\" @click=\"prev\"><ArrowLeft /></button>\n <button v-if=\"canNavigate\" class=\"tt-file-preview-overlay__nav tt-file-preview-overlay__nav--next\" type=\"button\" :disabled=\"!canNext\" aria-label=\"下一个文件\" @click=\"next\"><ArrowRight /></button>\n </main>\n <div v-if=\"showToolbar && previewType === 'image' && currentUrl\" class=\"tt-file-preview-overlay__toolbar\" aria-label=\"图片工具栏\">\n <button type=\"button\" aria-label=\"缩小图片\" @click=\"updateScale(-IMAGE_SCALE_STEP)\"><ZoomOut /></button><button type=\"button\" aria-label=\"放大图片\" @click=\"updateScale(IMAGE_SCALE_STEP)\"><ZoomIn /></button><button type=\"button\" aria-label=\"向左旋转\" @click=\"rotateImage(-90)\"><RefreshLeft /></button><button type=\"button\" aria-label=\"向右旋转\" @click=\"rotateImage(90)\"><RefreshRight /></button><button type=\"button\" aria-label=\"重置图片\" @click=\"reset\"><Refresh /></button>\n </div>\n <footer v-if=\"canNavigate\" class=\"tt-file-preview-overlay__footer\" :class=\"{ 'is-expanded': footerExpanded }\">\n <div class=\"tt-file-preview-overlay__footer-bar\"><button type=\"button\" :aria-label=\"footerExpanded ? '收起文件列表' : '展开文件列表'\" @click=\"footerExpanded = !footerExpanded\"><ArrowUp v-if=\"footerExpanded\" /><ArrowDown v-else /></button><span>{{ currentIndex + 1 }} / {{ normalizedFiles.length }}</span></div>\n <div v-if=\"footerExpanded\" class=\"tt-file-preview-overlay__file-list\">\n <button v-for=\"(file, index) in normalizedFiles\" :key=\"fileKey(file, index)\" type=\"button\" :class=\"{ 'is-active': index === currentIndex }\" :aria-label=\"`预览 ${file.name || '未命名文件'}`\" @click=\"selectFile(index)\">\n <span class=\"tt-file-preview-overlay__thumb\"><img v-if=\"getPreviewType(file) === 'image' && safeUrl(file.url)\" :src=\"originImageUrl(file.url)\" :alt=\"file.name\" /><span v-else>{{ fileIcon(file) }}</span></span><span :title=\"file.name\">{{ file.name || '未命名文件' }}</span>\n </button>\n </div>\n </footer>\n </div>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, ref, useAttrs, watch } from 'vue';\nimport { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, Close, CopyDocument, Download, Refresh, RefreshLeft, RefreshRight, ZoomIn, ZoomOut } from '@element-plus/icons-vue';\n\nconst IMAGE_MIN_SCALE = 0.2;\nconst IMAGE_MAX_SCALE = 5;\nconst IMAGE_SCALE_STEP = 0.2;\nconst DEFAULT_OFFICE_PREVIEW_URL = 'https://view.officeapps.live.com/op/embed.aspx?src=';\n\nexport interface FilePreviewItem { name?: string; url?: string; [key: string]: unknown; }\nexport interface FilePreviewInstance { root: HTMLElement | null; reset: () => void; prev: () => void; next: () => void; getCurrentFile: () => FilePreviewItem | undefined; }\n\nconst props = withDefaults(defineProps<{\n name?: string; description?: string; type?: string; clickable?: boolean; visible?: boolean; fileList?: FilePreviewItem[]; startFile?: FilePreviewItem; copyable?: boolean; downloadable?: boolean; loop?: boolean; officePreviewUrl?: string | ((url: string) => string); zIndex?: number; closeOnMaskClick?: boolean; showToolbar?: boolean;\n}>(), {\n clickable: true, closeOnMaskClick: false, copyable: true, description: '', downloadable: true, fileList: () => [], loop: true, name: '', showToolbar: true, type: 'file', visible: true, zIndex: 2000,\n});\nconst emit = defineEmits<{ close: []; preview: []; 'update:visible': [visible: boolean]; }>();\nconst attrs = useAttrs();\nconst root = ref<HTMLElement | null>(null);\nconst footerExpanded = ref(false);\nconst currentIndex = ref(0);\nconst imageTransform = ref({ scale: 1, rotate: 0, offsetX: 0, offsetY: 0 });\nconst textPreviewContent = ref<string | null>(null);\nconst dragState = { dragging: false, startX: 0, startY: 0, offsetX: 0, offsetY: 0 };\nconst normalizedFiles = computed(() => props.fileList.filter(Boolean));\nconst isPreviewMode = computed(() => normalizedFiles.value.length > 0);\nconst currentFile = computed(() => normalizedFiles.value[currentIndex.value]);\nconst currentName = computed(() => currentFile.value?.name || '未命名文件');\nconst currentUrl = computed(() => safeUrl(currentFile.value?.url));\nconst previewType = computed(() => getPreviewType(currentFile.value));\nconst currentIconText = computed(() => fileIcon(currentFile.value));\nconst imageUrl = computed(() => originImageUrl(currentUrl.value));\nconst officeUrl = computed(() => getOfficePreviewUrl(currentUrl.value));\nconst isOfficeFile = computed(() => ['word', 'excel', 'ppt'].includes(previewType.value));\nconst canNavigate = computed(() => normalizedFiles.value.length > 1);\nconst canPrev = computed(() => props.loop || currentIndex.value > 0);\nconst canNext = computed(() => props.loop || currentIndex.value < normalizedFiles.value.length - 1);\nconst iconText = computed(() => props.type.slice(0, 3).toUpperCase() || 'FILE');\nconst imageStyle = computed(() => ({ transform: `translate(${imageTransform.value.offsetX}px, ${imageTransform.value.offsetY}px) scale(${imageTransform.value.scale}) rotate(${imageTransform.value.rotate}deg)` }));\n\nwatch([normalizedFiles, () => props.startFile, () => props.visible], ([files, startFile]) => {\n const startIndex = startFile ? files.findIndex(file => file === startFile || file.url === startFile.url && file.name === startFile.name) : -1;\n currentIndex.value = startIndex >= 0 ? startIndex : 0;\n reset();\n}, { immediate: true });\nwatch([isPreviewMode, () => props.visible], ([previewMode, visible], _, onCleanup) => {\n if (!previewMode || !visible || typeof document === 'undefined') return;\n const originalOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n onCleanup(() => { document.body.style.overflow = originalOverflow; });\n}, { immediate: true });\nwatch([previewType, currentUrl], async ([type, url], _, onCleanup) => {\n textPreviewContent.value = null;\n if (type !== 'txt' || !url) return;\n\n const controller = new AbortController();\n onCleanup(() => controller.abort());\n try {\n const response = await fetch(url, { signal: controller.signal });\n if (response.ok) textPreviewContent.value = await response.text();\n } catch {\n // 跨域或服务端禁止读取时,保留 iframe 作为兼容回退。\n }\n}, { immediate: true });\n\nfunction getExtension(file?: FilePreviewItem) { const source = file?.name || file?.url || ''; return source.split(/[?#]/)[0].split('.').pop()?.toLowerCase() || ''; }\nfunction getPreviewType(file?: FilePreviewItem) {\n const extension = getExtension(file);\n if (['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'bmp'].includes(extension)) return 'image';\n if (['mp4', 'webm', 'ogg', 'mov'].includes(extension)) return 'video';\n if (['mp3', 'wav', 'm4a'].includes(extension)) return 'audio';\n if (extension === 'pdf') return 'pdf'; if (extension === 'txt') return 'txt';\n if (['doc', 'docx'].includes(extension)) return 'word'; if (['xls', 'xlsx', 'csv'].includes(extension)) return 'excel'; if (['ppt', 'pptx'].includes(extension)) return 'ppt'; return 'other';\n}\nfunction safeUrl(url?: string) {\n if (!url) return ''; if (url.startsWith('/') || url.startsWith('./') || url.startsWith('../')) return url;\n try { const parsedUrl = new URL(url, typeof window === 'undefined' ? 'http://localhost' : window.location.href); return ['http:', 'https:', 'blob:'].includes(parsedUrl.protocol) ? url : ''; } catch { return ''; }\n}\nfunction originImageUrl(url?: string) { return url?.replace('_thumbnail.', '.') || ''; }\nfunction getOfficePreviewUrl(url: string) { if (!url) return ''; if (typeof props.officePreviewUrl === 'function') return props.officePreviewUrl(url); return `${props.officePreviewUrl || DEFAULT_OFFICE_PREVIEW_URL}${encodeURIComponent(url)}`; }\nfunction fileIcon(file?: FilePreviewItem) { return getExtension(file).slice(0, 3).toUpperCase() || 'FILE'; }\nfunction fileKey(file: FilePreviewItem, index: number) { return `${file.url || ''}-${file.name || ''}-${index}`; }\nfunction handlePreview() { if (props.clickable) emit('preview'); }\nfunction close() { emit('update:visible', false); emit('close'); }\nfunction handleMaskClick() { if (props.closeOnMaskClick) close(); }\nfunction reset() { imageTransform.value = { scale: 1, rotate: 0, offsetX: 0, offsetY: 0 }; }\nfunction selectFile(index: number) { if (!normalizedFiles.value[index]) return; currentIndex.value = index; reset(); }\nfunction prev() { if (canPrev.value) selectFile(currentIndex.value === 0 ? normalizedFiles.value.length - 1 : currentIndex.value - 1); }\nfunction next() { if (canNext.value) selectFile(currentIndex.value === normalizedFiles.value.length - 1 ? 0 : currentIndex.value + 1); }\nfunction updateScale(step: number) { const scale = Math.min(IMAGE_MAX_SCALE, Math.max(IMAGE_MIN_SCALE, imageTransform.value.scale + step)); imageTransform.value = { ...imageTransform.value, scale, offsetX: scale <= 1 ? 0 : imageTransform.value.offsetX, offsetY: scale <= 1 ? 0 : imageTransform.value.offsetY }; }\nfunction rotateImage(offset: number) { imageTransform.value = { ...imageTransform.value, rotate: imageTransform.value.rotate + offset }; }\nfunction handleImageWheel(event: WheelEvent) { updateScale(event.deltaY < 0 ? IMAGE_SCALE_STEP : -IMAGE_SCALE_STEP); }\nfunction startImageDrag(event: MouseEvent) { if (imageTransform.value.scale <= 1) return; event.preventDefault(); Object.assign(dragState, { dragging: true, startX: event.clientX, startY: event.clientY, offsetX: imageTransform.value.offsetX, offsetY: imageTransform.value.offsetY }); }\nfunction handleMouseMove(event: MouseEvent) { if (!dragState.dragging) return; imageTransform.value = { ...imageTransform.value, offsetX: dragState.offsetX + event.clientX - dragState.startX, offsetY: dragState.offsetY + event.clientY - dragState.startY }; }\nfunction stopImageDrag() { dragState.dragging = false; }\nasync function copyCurrentUrl() {\n if (!currentUrl.value) return;\n if (navigator.clipboard?.writeText) { await navigator.clipboard.writeText(currentUrl.value).catch(() => undefined); return; }\n const textarea = document.createElement('textarea'); textarea.value = currentUrl.value; textarea.style.position = 'fixed'; textarea.style.left = '-9999px'; document.body.appendChild(textarea); textarea.select(); document.execCommand('copy'); document.body.removeChild(textarea);\n}\nfunction handleDownload(event: MouseEvent) { if (!currentUrl.value) event.preventDefault(); }\nfunction handleKeydown(event: KeyboardEvent) { if (!props.visible) return; if (event.key === 'Escape') close(); else if (event.key === 'ArrowLeft') prev(); else if (event.key === 'ArrowRight') next(); }\nonMounted(() => { document.addEventListener('keydown', handleKeydown); document.addEventListener('mousemove', handleMouseMove); document.addEventListener('mouseup', stopImageDrag); window.addEventListener('blur', stopImageDrag); });\nonBeforeUnmount(() => { document.removeEventListener('keydown', handleKeydown); document.removeEventListener('mousemove', handleMouseMove); document.removeEventListener('mouseup', stopImageDrag); window.removeEventListener('blur', stopImageDrag); });\ndefineExpose<FilePreviewInstance>({ get root() { return root.value; }, reset, prev, next, getCurrentFile: () => currentFile.value });\ndefineOptions({ name: 'FilePreview' });\n</script>\n","<template>\n <div class=\"tt-attachment-list\">\n <FilePreview\n v-for=\"file in files\"\n :key=\"file.key\"\n :name=\"file.name\"\n :description=\"file.description || file.size\"\n :type=\"file.type\"\n @preview=\"emit('preview', file)\"\n >\n <template #extra>\n <button type=\"button\" class=\"tt-attachment-list__action\" @click.stop=\"emit('download', file)\">下载</button>\n </template>\n </FilePreview>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport FilePreview from '../FilePreview';\n\nexport interface AttachmentItem {\n key: string | number;\n name: string;\n description?: string;\n size?: string;\n type?: string;\n url?: string;\n}\n\ndefineProps<{\n files: AttachmentItem[];\n}>();\n\nconst emit = defineEmits<{\n preview: [file: AttachmentItem];\n download: [file: AttachmentItem];\n}>();\n\ndefineOptions({\n name: 'AttachmentList',\n});\n</script>\n","export const avatarColors = [\n 'red',\n 'orange',\n 'gold',\n 'lime',\n 'green',\n 'cyan',\n 'blue',\n 'geekBlue',\n 'purple',\n 'pink',\n 'rosePink',\n] as const;\n\nexport type AvatarColor = (typeof avatarColors)[number];\nexport type AvatarStatus = 'online' | 'offline' | 'away' | 'busy';\n","<template>\n <ElTooltip :content=\"name\" placement=\"top\" :disabled=\"!showTooltip || !name\">\n <span class=\"tt-avatar-wrapper\">\n <ElAvatar ref=\"avatarRef\" :class=\"avatarClass\" v-bind=\"$attrs\">\n <slot />\n </ElAvatar>\n <span v-if=\"status\" class=\"tt-avatar-status-dot\" :class=\"`is-${status}`\" />\n <span v-if=\"badgeCount > 0\" class=\"tt-avatar-badge\">{{ badgeLabel }}</span>\n <button v-if=\"showRemove\" class=\"tt-avatar-remove-btn\" type=\"button\" aria-label=\"移除头像\" @click.stop=\"emit('remove')\">\n <ElIcon><CircleCloseFilled /></ElIcon>\n </button>\n </span>\n </ElTooltip>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useSlots } from 'vue';\nimport { CircleCloseFilled } from '@element-plus/icons-vue';\nimport { ElAvatar, ElIcon, ElTooltip } from 'element-plus';\nimport { avatarColors, type AvatarColor, type AvatarStatus } from './avatar';\n\nconst props = withDefaults(\n defineProps<{\n color?: AvatarColor;\n name?: string;\n showTooltip?: boolean;\n status?: AvatarStatus;\n badgeCount?: number;\n showRemove?: boolean;\n }>(),\n {\n showTooltip: false,\n badgeCount: 0,\n showRemove: false,\n }\n);\n\nconst emit = defineEmits<{\n remove: [];\n}>();\n\nconst avatarRef = ref<InstanceType<typeof ElAvatar>>();\nconst slots = useSlots();\nconst slotText = computed(() =>\n slots\n .default?.()\n .map(node => (typeof node.children === 'string' ? node.children : ''))\n .join('') ?? ''\n);\nconst resolvedColor = computed<AvatarColor | undefined>(() => {\n if (props.color) return props.color;\n if (!slotText.value) return undefined;\n\n return avatarColors[slotText.value.charCodeAt(0) % avatarColors.length];\n});\nconst avatarClass = computed(() => [\n 'tt-avatar',\n resolvedColor.value && `tt-avatar-color-${resolvedColor.value}`,\n resolvedColor.value && ['gold', 'lime', 'cyan'].includes(resolvedColor.value) ? 'tt-avatar-text-dark' : 'tt-avatar-text-light',\n]);\nconst badgeLabel = computed(() => (props.badgeCount > 99 ? '99+' : props.badgeCount));\n\ndefineOptions({\n name: 'Avatar',\n});\n\ndefineExpose({\n avatarRef,\n});\n</script>\n","<template>\n <ElAvatarGroup ref=\"avatarGroupRef\" class=\"tt-avatar-group\" v-bind=\"$attrs\">\n <slot />\n </ElAvatarGroup>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElAvatarGroup } from 'element-plus';\n\nconst avatarGroupRef = ref<InstanceType<typeof ElAvatarGroup>>();\n\ndefineOptions({\n name: 'AvatarGroup',\n});\n\ndefineExpose({\n avatarGroupRef,\n});\n</script>\n","<template>\n <ElBadge ref=\"badgeRef\" class=\"tt-badge\" v-bind=\"$attrs\">\n <slot />\n </ElBadge>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElBadge } from 'element-plus';\n\nconst badgeRef = ref<InstanceType<typeof ElBadge>>();\n\ndefineOptions({\n name: 'Badge',\n});\n\ndefineExpose({\n badgeRef,\n});\n</script>\n","<template>\n <ElBacktop ref=\"backtopRef\" class=\"tt-backtop\" v-bind=\"$attrs\">\n <slot />\n </ElBacktop>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElBacktop } from 'element-plus';\n\nconst backtopRef = ref<InstanceType<typeof ElBacktop>>();\n\ndefineOptions({\n name: 'BackTop',\n});\n\ndefineExpose({\n backtopRef,\n});\n</script>\n","<template>\n <ElBreadcrumb ref=\"breadcrumbRef\" class=\"tt-breadcrumb\" v-bind=\"$attrs\">\n <slot />\n </ElBreadcrumb>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElBreadcrumb } from 'element-plus';\n\nconst breadcrumbRef = ref<InstanceType<typeof ElBreadcrumb>>();\n\ndefineOptions({\n name: 'Breadcrumb',\n});\n\ndefineExpose({\n breadcrumbRef,\n});\n</script>\n","<template>\n <ElBreadcrumbItem ref=\"breadcrumbItemRef\" class=\"tt-breadcrumb-item\" v-bind=\"$attrs\">\n <slot />\n </ElBreadcrumbItem>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElBreadcrumbItem } from 'element-plus';\n\nconst breadcrumbItemRef = ref<InstanceType<typeof ElBreadcrumbItem>>();\n\ndefineOptions({\n name: 'BreadcrumbItem',\n});\n\ndefineExpose({\n breadcrumbItemRef,\n});\n</script>\n","<template>\n <ElButton :class=\"buttonClass\" v-bind=\"buttonAttrs\">\n <slot />\n </ElButton>\n</template>\n\n<script lang=\"ts\">\ntype ButtonAttrs = Record<string, unknown>;\n\nfunction isBooleanAttr(value: unknown) {\n return value === true || value === '';\n}\n\nexport function getButtonClass(attrs: ButtonAttrs) {\n const type = typeof attrs.type === 'string' ? attrs.type : 'default';\n const size = typeof attrs.size === 'string' ? attrs.size : undefined;\n\n return [\n 'tt-button',\n `tt-button-${type}`,\n size && `tt-button-${size}`,\n isBooleanAttr(attrs.plain) && 'tt-button-plain',\n isBooleanAttr(attrs.round) && 'tt-button-round',\n isBooleanAttr(attrs.circle) && 'tt-button-circle',\n isBooleanAttr(attrs.text) && 'tt-button-text',\n isBooleanAttr(attrs.link) && 'tt-button-link',\n isBooleanAttr(attrs.disabled) && 'tt-button-disabled',\n isBooleanAttr(attrs.loading) && 'tt-button-loading',\n ];\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue';\nimport { ElButton } from 'element-plus';\nimport type { ButtonProps } from 'element-plus';\n\nconst attrs = useAttrs();\nconst props = defineProps<Partial<ButtonProps>>();\nconst buttonAttrs = computed(() => ({ ...props, ...attrs }));\nconst buttonClass = computed(() => getButtonClass(buttonAttrs.value));\n\ndefineOptions({\n name: 'Button',\n inheritAttrs: false,\n});\n</script>\n","<template>\n <ElCard v-if=\"isMetric\" ref=\"cardRef\" :class=\"cardClass\" v-bind=\"$attrs\">\n <div class=\"tt-card-metric__content\">\n <div v-if=\"slots.icon\" class=\"tt-card-metric__icon\">\n <slot name=\"icon\" />\n </div>\n <div class=\"tt-card-metric__body\">\n <div v-if=\"label || title\" class=\"tt-card-metric__label\">{{ label || title }}</div>\n <div v-if=\"value !== undefined && value !== null\" class=\"tt-card-metric__value\">{{ value }}</div>\n <div v-if=\"hasCompare\" class=\"tt-card-metric__footer\">\n <span v-if=\"compareLabel\" class=\"tt-card-metric__footer-label\">{{ compareLabel }}</span>\n <span v-if=\"compareValue !== undefined && compareValue !== null\" class=\"tt-card-metric__compare\" :class=\"`tt-card-metric__compare--${compareDirection}`\">\n <span>{{ compareValue }}</span>\n <span class=\"tt-card-metric__compare-icon\" aria-hidden=\"true\">{{ compareDirection === 'down' ? '↓' : '↑' }}</span>\n </span>\n </div>\n <slot />\n </div>\n </div>\n </ElCard>\n\n <ElCard v-else-if=\"hasHeader\" ref=\"cardRef\" :class=\"cardClass\" v-bind=\"$attrs\">\n <template #header>\n <slot name=\"header\">\n <div class=\"tt-card-panel__header\">\n <div class=\"tt-card-panel__title-wrap\" :class=\"{ 'tt-card-panel__title-wrap--subtitle': isPanelSubtitle }\">\n <strong v-if=\"title\" class=\"tt-card-panel__title\">{{ title }}</strong>\n <span v-if=\"subTitle && !isPanel\" class=\"tt-card-panel__subtitle\">{{ subTitle }}</span>\n </div>\n <div v-if=\"slots.extra || isPanel && subTitle\" class=\"tt-card-panel__extra\">\n <span v-if=\"isPanel && subTitle\" class=\"tt-card-panel__subtitle\">{{ subTitle }}</span>\n <slot name=\"extra\" />\n </div>\n </div>\n </slot>\n </template>\n <slot />\n <template v-if=\"slots.footer\" #footer>\n <slot name=\"footer\" />\n </template>\n </ElCard>\n\n <ElCard v-else ref=\"cardRef\" :class=\"cardClass\" v-bind=\"$attrs\">\n <slot />\n <template v-if=\"slots.footer\" #footer>\n <slot name=\"footer\" />\n </template>\n </ElCard>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useSlots } from 'vue';\nimport { ElCard } from 'element-plus';\n\nexport type CardType = 'default' | 'metric' | 'panel' | 'panel-subtitle';\nexport type CardCompareDirection = 'up' | 'down';\n\nconst props = withDefaults(\n defineProps<{\n type?: CardType;\n title?: string | number;\n subTitle?: string | number;\n label?: string | number;\n value?: string | number;\n compareLabel?: string | number;\n compareValue?: string | number;\n compareDirection?: CardCompareDirection;\n }>(),\n {\n type: 'default',\n compareDirection: 'up',\n },\n);\n\nconst slots = useSlots();\nconst cardRef = ref<InstanceType<typeof ElCard>>();\nconst isMetric = computed(() => props.type === 'metric');\nconst isPanel = computed(() => props.type === 'panel');\nconst isPanelSubtitle = computed(() => props.type === 'panel-subtitle');\nconst hasHeader = computed(() => Boolean(slots.header || slots.extra || props.title || props.subTitle));\nconst hasCompare = computed(() => Boolean(props.compareLabel || props.compareValue !== undefined && props.compareValue !== null));\nconst cardClass = computed(() => [\n 'tt-card',\n {\n 'tt-card--metric': props.type === 'metric',\n 'tt-card--panel': props.type === 'panel',\n 'tt-card--panel-subtitle': props.type === 'panel-subtitle',\n },\n]);\n\ndefineOptions({\n name: 'Card',\n});\n\ndefineExpose({\n cardRef,\n});\n</script>\n","export type GradientStop = {\n color: string;\n offset: string;\n};\n\nexport type GradientDefinition = {\n type: 'linear' | 'radial';\n stops: GradientStop[];\n coordinates?: Record<'x1' | 'y1' | 'x2' | 'y2', string>;\n};\n\nfunction splitGradientArguments(value: string) {\n const items: string[] = [];\n let start = 0;\n let depth = 0;\n\n for (let index = 0; index < value.length; index += 1) {\n if (value[index] === '(') depth += 1;\n if (value[index] === ')') depth -= 1;\n if (value[index] === ',' && depth === 0) {\n items.push(value.slice(start, index).trim());\n start = index + 1;\n }\n }\n\n items.push(value.slice(start).trim());\n return items.filter(Boolean);\n}\n\nfunction gradientAngle(value: string) {\n const degree = Number.parseFloat(value);\n if (value.endsWith('deg') && !Number.isNaN(degree)) return degree;\n\n const directions: Record<string, number> = {\n 'to top': 0,\n 'to top right': 45,\n 'to right top': 45,\n 'to right': 90,\n 'to bottom right': 135,\n 'to right bottom': 135,\n 'to bottom': 180,\n 'to bottom left': 225,\n 'to left bottom': 225,\n 'to left': 270,\n 'to top left': 315,\n 'to left top': 315,\n };\n\n return directions[value] ?? 180;\n}\n\nfunction linearCoordinates(angle: number) {\n const radians = (angle * Math.PI) / 180;\n const horizontal = Math.sin(radians) * 0.5;\n const vertical = -Math.cos(radians) * 0.5;\n const toPercent = (value: number) => `${Math.round(value * 10000) / 100}%`;\n\n return {\n x1: toPercent(0.5 - horizontal),\n y1: toPercent(0.5 - vertical),\n x2: toPercent(0.5 + horizontal),\n y2: toPercent(0.5 + vertical),\n };\n}\n\nexport function parseGradient(value?: string): GradientDefinition | null {\n if (!value) return null;\n\n const match = value.match(/^(linear|radial)-gradient\\((.*)\\)$/i);\n if (!match) return null;\n\n const type = match[1].toLowerCase() as GradientDefinition['type'];\n const argumentsList = splitGradientArguments(match[2]);\n const firstArgument = argumentsList[0] ?? '';\n const hasDirection = type === 'linear' && (firstArgument.endsWith('deg') || firstArgument.startsWith('to '));\n const stops = (hasDirection ? argumentsList.slice(1) : argumentsList)\n .map((stop, index, allStops) => {\n const color = stop.replace(/\\s+(?:\\d*\\.?\\d+)(?:%|px)?(?:\\s+(?:\\d*\\.?\\d+)(?:%|px)?)?$/, '');\n const offsetMatch = stop.match(/\\s((?:\\d*\\.?\\d+)(?:%|px))(?:\\s+(?:\\d*\\.?\\d+)(?:%|px))?$/);\n\n return {\n color,\n offset: offsetMatch?.[1] ?? `${(index / Math.max(allStops.length - 1, 1)) * 100}%`,\n };\n })\n .filter(stop => stop.color);\n\n if (stops.length < 2) return null;\n\n return {\n type,\n stops,\n coordinates: type === 'linear' ? linearCoordinates(gradientAngle(hasDirection ? firstArgument : '180deg')) : undefined,\n };\n}\n","<template>\n <ElIcon class=\"tt-icon\" :class=\"iconClass\" :size=\"size\" :color=\"iconColor\" :style=\"iconStyle\" :aria-label=\"label || undefined\" :aria-hidden=\"label ? undefined : 'true'\" v-bind=\"$attrs\">\n <svg v-if=\"gradientDefinition\" class=\"tt-icon__gradient-defs\" width=\"0\" height=\"0\" aria-hidden=\"true\" focusable=\"false\">\n <defs>\n <linearGradient v-if=\"gradientDefinition.type === 'linear'\" :id=\"gradientId\" v-bind=\"gradientDefinition.coordinates\">\n <stop v-for=\"stop in gradientDefinition.stops\" :key=\"`${stop.color}-${stop.offset}`\" :offset=\"stop.offset\" :stop-color=\"stop.color\" />\n </linearGradient>\n <radialGradient v-else :id=\"gradientId\">\n <stop v-for=\"stop in gradientDefinition.stops\" :key=\"`${stop.color}-${stop.offset}`\" :offset=\"stop.offset\" :stop-color=\"stop.color\" />\n </radialGradient>\n </defs>\n </svg>\n <span v-if=\"slots.default\" class=\"tt-icon__slot\"><slot /></span>\n <span v-else-if=\"isComponentIcon\" class=\"tt-icon__component\"><component :is=\"icon\" /></span>\n <i v-else-if=\"iconfont\" class=\"tt-icon__iconfont\" :class=\"iconfont\" aria-hidden=\"true\" />\n <span v-else-if=\"icon\" class=\"tt-icon__fallback\">{{ icon }}</span>\n </ElIcon>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useId, useSlots, type Component } from 'vue';\nimport { ElIcon } from 'element-plus';\nimport { parseGradient } from './gradient';\n\nconst props = withDefaults(\n defineProps<{\n icon?: Component | string;\n size?: number | string;\n color?: string;\n iconfont?: string;\n spin?: boolean;\n inline?: boolean;\n label?: string;\n }>(),\n {\n icon: undefined,\n size: undefined,\n color: undefined,\n iconfont: '',\n spin: false,\n inline: true,\n label: '',\n },\n);\n\nconst slots = useSlots();\nconst gradientId = `tt-icon-gradient-${useId()}`;\nconst gradientDefinition = computed(() => parseGradient(props.color));\nconst iconColor = computed(() => (gradientDefinition.value ? undefined : props.color));\nconst iconStyle = computed(() => {\n if (!gradientDefinition.value || !props.color) return undefined;\n\n return {\n '--tt-icon-gradient': props.color,\n '--tt-icon-gradient-fill': `url(#${gradientId})`,\n };\n});\nconst isComponentIcon = computed(() => Boolean(props.icon && typeof props.icon !== 'string'));\nconst isTextIcon = computed(() => typeof props.icon === 'string' && Boolean(props.icon));\nconst iconClass = computed(() => [\n `tt-icon-${props.inline ? 'inline' : 'block'}`,\n props.spin && 'tt-icon-spin',\n slots.default && 'tt-icon-slot',\n isComponentIcon.value && 'tt-icon-component',\n isTextIcon.value && 'tt-icon-text',\n props.iconfont && 'tt-icon-iconfont',\n gradientDefinition.value && 'tt-icon-gradient',\n props.label && 'tt-icon-labeled',\n]);\n\ndefineOptions({\n name: 'Icon',\n});\n</script>\n","<template>\n <div\n class=\"tt-card-select-list\"\n :class=\"{\n 'tt-card-select-list--grid': grid,\n 'is-disabled': disabled,\n }\"\n v-bind=\"$attrs\"\n >\n <button\n v-for=\"(record, index) in data\"\n :key=\"getKey(record, index)\"\n type=\"button\"\n class=\"tt-card-select\"\n :class=\"[\n `tt-card-select--${type}`,\n `tt-card-select--${position}`,\n { 'is-selected': isSelected(record, index), 'is-disabled': disabled },\n ]\"\n :disabled=\"disabled\"\n :aria-pressed=\"isSelected(record, index)\"\n @click=\"toggle(record, index)\"\n >\n <span\n v-if=\"type === 'corner' && isSelected(record, index)\"\n class=\"tt-card-select__corner-mark\"\n aria-hidden=\"true\"\n ><Icon :icon=\"Check\" :size=\"16\" :inline=\"false\" /></span>\n <span\n v-if=\"type === 'radio' && position === 'left'\"\n class=\"tt-card-select__radio-indicator\"\n aria-hidden=\"true\"\n />\n <span class=\"tt-card-select__content\">\n <slot name=\"item\" :record=\"record\" :index=\"index\" :selected=\"isSelected(record, index)\">\n <span class=\"tt-card-select__title\">{{ getTitle(record) }}</span>\n <span v-if=\"getDescription(record)\" class=\"tt-card-select__description\">{{ getDescription(record) }}</span>\n </slot>\n </span>\n <span\n v-if=\"type === 'radio' && position === 'right'\"\n class=\"tt-card-select__radio-indicator\"\n aria-hidden=\"true\"\n />\n </button>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { Check } from '@element-plus/icons-vue';\nimport Icon from '../Icon';\n\nexport type CardSelectKey = string | number;\nexport type CardSelectType = 'corner' | 'border' | 'radio';\nexport type CardSelectPosition = 'left' | 'right';\nexport type CardSelectMode = 'single' | 'multiple';\nexport type CardSelectRecord = Record<string, unknown>;\n\nconst props = withDefaults(defineProps<{\n /** 可供选择的卡片数据。 */\n data?: CardSelectRecord[];\n /** 当前选中项,使用 v-model 绑定。 */\n modelValue?: CardSelectKey[];\n /** 非受控模式的初始选中项。 */\n defaultValue?: CardSelectKey[];\n /** 卡片唯一标识对应的字段名或取值函数。 */\n rowKey?: string | ((record: CardSelectRecord, index: number) => CardSelectKey);\n /** 选中标记样式。 */\n type?: CardSelectType;\n /** 角标或单选标记所在位置。 */\n position?: CardSelectPosition;\n /** 是否禁用整个选项组。 */\n disabled?: boolean;\n /** 是否使用自适应网格布局。 */\n grid?: boolean;\n /** 选择模式。 */\n mode?: CardSelectMode;\n}>(), {\n data: () => [],\n defaultValue: () => [],\n rowKey: 'key',\n type: 'corner',\n position: 'left',\n disabled: false,\n grid: false,\n mode: 'single',\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: CardSelectKey[]];\n change: [value: CardSelectKey[], action: 'select' | 'deselect', key: CardSelectKey];\n}>();\n\nconst innerValue = ref<CardSelectKey[]>([...props.defaultValue]);\nconst selectedValue = computed(() => props.modelValue ?? innerValue.value);\n\nfunction getKey(record: CardSelectRecord, index: number): CardSelectKey {\n if (typeof props.rowKey === 'function') {\n return props.rowKey(record, index);\n }\n\n const key = record[props.rowKey];\n return typeof key === 'string' || typeof key === 'number' ? key : index;\n}\n\nfunction getTitle(record: CardSelectRecord) {\n return typeof record.title === 'string' || typeof record.title === 'number' ? record.title : '';\n}\n\nfunction getDescription(record: CardSelectRecord) {\n return typeof record.description === 'string' || typeof record.description === 'number' ? record.description : '';\n}\n\nfunction isSelected(record: CardSelectRecord, index: number) {\n return selectedValue.value.includes(getKey(record, index));\n}\n\nfunction toggle(record: CardSelectRecord, index: number) {\n if (props.disabled) return;\n\n const key = getKey(record, index);\n const selected = selectedValue.value.includes(key);\n const value = props.mode === 'single'\n ? (selected ? [] : [key])\n : (selected ? selectedValue.value.filter(item => item !== key) : [...selectedValue.value, key]);\n\n if (props.modelValue === undefined) {\n innerValue.value = value;\n }\n\n emit('update:modelValue', value);\n emit('change', value, selected ? 'deselect' : 'select', key);\n}\n\ndefineOptions({ name: 'CardSelect' });\n</script>\n","<template>\n <ElCascader\n ref=\"cascaderRef\"\n v-model=\"modelValue\"\n class=\"tt-cascader\"\n :popper-class=\"mergedPopperClass\"\n v-bind=\"cascaderAttrs\"\n >\n <template v-if=\"$slots.footer || useSelectAll\" #footer>\n <div class=\"tt-cascader__footer\">\n <slot name=\"footer\" />\n <div v-if=\"useSelectAll\" class=\"tt-cascader__select-all\">\n <ElCheckbox\n :model-value=\"allSelected\"\n :indeterminate=\"isIndeterminate\"\n :disabled=\"leafPaths.length === 0\"\n @update:model-value=\"toggleSelectAll\"\n >\n 全选\n </ElCheckbox>\n </div>\n </div>\n </template>\n </ElCascader>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue';\nimport { ElCascader, ElCheckbox } from 'element-plus';\nimport type {\n CascaderOption as ElementCascaderOption,\n CascaderValue as ElementCascaderValue,\n} from 'element-plus';\n\nexport type CascaderValue = string | number | Record<string, unknown>;\nexport type CascaderModelValue = ElementCascaderValue;\n\nexport interface CascaderOption extends ElementCascaderOption {\n label?: string;\n value?: CascaderValue;\n disabled?: boolean;\n children?: CascaderOption[];\n}\n\ntype CascaderPath = CascaderValue[];\n\nconst props = withDefaults(defineProps<{\n /** 多选时在下拉面板底部显示全选操作。 */\n showSelectAll?: boolean;\n}>(), {\n showSelectAll: false,\n});\n\nconst attrs = useAttrs();\nconst modelValue = defineModel<CascaderModelValue>();\nconst cascaderAttrs = computed(() => {\n const { popperClass: _popperClass, ...rest } = attrs;\n\n return rest;\n});\nconst mergedPopperClass = computed(() => ['tt-cascader-dropdown', attrs.popperClass].filter(Boolean).join(' '));\nconst cascaderProps = computed(() => attrs.props as { multiple?: boolean } | undefined);\nconst useSelectAll = computed(() => props.showSelectAll && cascaderProps.value?.multiple === true);\nconst leafPaths = computed(() => collectLeafPaths(attrs.options));\nconst selectedPaths = computed(() => {\n if (!useSelectAll.value || !Array.isArray(modelValue.value)) {\n return [] as CascaderPath[];\n }\n\n return modelValue.value.filter(Array.isArray) as CascaderPath[];\n});\nconst allSelected = computed(() => leafPaths.value.length > 0\n && leafPaths.value.every(path => selectedPaths.value.some(selectedPath => isPathEqual(selectedPath, path))));\nconst isIndeterminate = computed(() => !allSelected.value && selectedPaths.value.length > 0);\nconst cascaderRef = ref<InstanceType<typeof ElCascader>>();\n\nfunction collectLeafPaths(options: unknown, parentPath: CascaderPath = [], parentDisabled = false): CascaderPath[] {\n if (!Array.isArray(options)) {\n return [];\n }\n\n return options.flatMap(option => {\n if (!isCascaderOption(option) || option.value === undefined) {\n return [];\n }\n\n const currentPath = [...parentPath, option.value];\n const disabled = parentDisabled || option.disabled === true;\n if (option.children?.length) {\n return collectLeafPaths(option.children, currentPath, disabled);\n }\n\n return disabled ? [] : [currentPath];\n });\n}\n\nfunction isPathEqual(first: CascaderPath, second: CascaderPath) {\n return JSON.stringify(first) === JSON.stringify(second);\n}\n\nfunction toggleSelectAll() {\n const nextValue = allSelected.value ? [] : leafPaths.value;\n\n modelValue.value = nextValue as CascaderModelValue;\n triggerChange(nextValue as CascaderModelValue);\n}\n\nfunction isCascaderOption(option: unknown): option is CascaderOption {\n return Boolean(option) && typeof option === 'object';\n}\n\nfunction triggerChange(value: CascaderModelValue) {\n const listener = attrs.onChange;\n\n if (Array.isArray(listener)) {\n listener.forEach(handler => typeof handler === 'function' && handler(value));\n return;\n }\n\n if (typeof listener === 'function') {\n listener(value);\n }\n}\n\nfunction getCheckedNodes(...args: unknown[]) {\n return (cascaderRef.value as any)?.getCheckedNodes(...args);\n}\n\nfunction togglePopperVisible(visible?: boolean) {\n return (cascaderRef.value as any)?.togglePopperVisible?.(visible);\n}\n\nfunction focus() {\n return (cascaderRef.value as any)?.focus?.();\n}\n\nfunction blur() {\n return (cascaderRef.value as any)?.blur?.();\n}\n\ndefineOptions({\n name: 'Cascader',\n inheritAttrs: false,\n});\n\ndefineExpose({\n cascaderRef,\n getCheckedNodes,\n togglePopperVisible,\n focus,\n blur,\n});\n</script>\n","<template>\n <ElCalendar ref=\"calendarRef\" class=\"tt-calendar\" v-bind=\"$attrs\">\n <template v-if=\"slots.header\" #header=\"slotProps\">\n <slot name=\"header\" v-bind=\"slotProps\" />\n </template>\n <template v-if=\"slots.dateCell\" #date-cell=\"slotProps\">\n <slot name=\"dateCell\" v-bind=\"slotProps\" />\n </template>\n </ElCalendar>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElCalendar } from 'element-plus';\n\nconst slots = useSlots();\nconst calendarRef = ref<InstanceType<typeof ElCalendar>>();\n\ndefineOptions({\n name: 'Calendar',\n});\n\ndefineExpose({\n calendarRef,\n});\n</script>\n","<template>\n <ElCarousel ref=\"carouselRef\" class=\"tt-carousel\" v-bind=\"$attrs\">\n <slot />\n </ElCarousel>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElCarousel } from 'element-plus';\n\nconst carouselRef = ref<InstanceType<typeof ElCarousel>>();\n\nfunction setActiveItem(index: string | number) {\n return carouselRef.value?.setActiveItem(index);\n}\n\nfunction prev() {\n return carouselRef.value?.prev();\n}\n\nfunction next() {\n return carouselRef.value?.next();\n}\n\ndefineOptions({\n name: 'Carousel',\n});\n\ndefineExpose({\n carouselRef,\n setActiveItem,\n prev,\n next,\n});\n</script>\n","<template>\n <ElCarouselItem ref=\"carouselItemRef\" class=\"tt-carousel-item\" v-bind=\"$attrs\">\n <slot />\n </ElCarouselItem>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElCarouselItem } from 'element-plus';\n\nconst carouselItemRef = ref<InstanceType<typeof ElCarouselItem>>();\n\ndefineOptions({\n name: 'CarouselItem',\n});\n\ndefineExpose({\n carouselItemRef,\n});\n</script>\n","<template>\n <div ref=\"chartRef\" class=\"tt-echarts-wrapper\" :style=\"{ height: normalizedHeight }\" v-bind=\"$attrs\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue';\nimport * as echarts from 'echarts';\nimport type { ECharts, EChartsOption, SetOptionOpts } from 'echarts';\n\nexport type EChartsTheme = string | object;\nexport type EChartsEvents = Record<string, (params: unknown) => void>;\n\nexport interface EChartsWrapperInstance {\n getEchartsInstance: () => ECharts | null;\n resize: (options?: Parameters<ECharts['resize']>[0]) => void;\n setOption: (option: EChartsOption, options?: boolean | SetOptionOpts) => void;\n dispatchAction: (payload: Parameters<ECharts['dispatchAction']>[0]) => void;\n convertToPixel: (...args: any[]) => unknown;\n convertFromPixel: (...args: any[]) => unknown;\n}\n\nconst props = withDefaults(defineProps<{\n option: EChartsOption;\n height?: number | string;\n theme?: EChartsTheme;\n loading?: boolean;\n loadingOptions?: object;\n onEvents?: EChartsEvents;\n notMerge?: boolean;\n lazyUpdate?: boolean;\n autoResize?: boolean;\n}>(), {\n height: 300,\n loading: false,\n loadingOptions: () => ({}),\n onEvents: () => ({}),\n notMerge: false,\n lazyUpdate: false,\n autoResize: true,\n});\n\nconst chartRef = ref<HTMLElement>();\nlet instance: ECharts | null = null;\nlet resizeObserver: ResizeObserver | null = null;\nconst normalizedHeight = computed(() => typeof props.height === 'number' ? `${props.height}px` : props.height);\n\nfunction initChart() {\n if (!chartRef.value) return null;\n instance?.dispose();\n instance = echarts.init(chartRef.value, props.theme);\n bindEvents();\n setOption(props.option, { notMerge: props.notMerge, lazyUpdate: props.lazyUpdate });\n updateLoading();\n nextTick(() => instance?.resize());\n return instance;\n}\n\nfunction bindEvents() {\n if (!instance) return;\n instance.off();\n Object.entries(props.onEvents).forEach(([eventName, handler]) => {\n if (typeof handler === 'function') instance?.on(eventName, handler);\n });\n}\n\nfunction setOption(option: EChartsOption, options: boolean | SetOptionOpts = { notMerge: props.notMerge, lazyUpdate: props.lazyUpdate }) {\n if (typeof options === 'boolean') instance?.setOption(option, options);\n else instance?.setOption(option, options);\n}\n\nfunction resize(options?: Parameters<ECharts['resize']>[0]) {\n instance?.resize(options);\n}\n\nfunction updateLoading() {\n if (!instance) return;\n if (props.loading) instance.showLoading('default', props.loadingOptions);\n else instance.hideLoading();\n}\n\nfunction dispatchAction(payload: Parameters<ECharts['dispatchAction']>[0]) {\n instance?.dispatchAction(payload);\n}\n\nfunction convertToPixel(...args: any[]) {\n return (instance as any)?.convertToPixel(...args) ?? null;\n}\n\nfunction convertFromPixel(...args: any[]) {\n return (instance as any)?.convertFromPixel(...args) ?? null;\n}\n\nfunction handleWindowResize() { resize(); }\n\nonMounted(() => {\n initChart();\n if (props.autoResize && chartRef.value && typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(() => resize());\n resizeObserver.observe(chartRef.value);\n }\n if (props.autoResize) window.addEventListener('resize', handleWindowResize);\n});\n\nonBeforeUnmount(() => {\n window.removeEventListener('resize', handleWindowResize);\n resizeObserver?.disconnect();\n instance?.dispose();\n instance = null;\n});\n\nwatch(() => props.option, option => setOption(option, { notMerge: props.notMerge, lazyUpdate: props.lazyUpdate }), { deep: true });\nwatch(() => props.onEvents, bindEvents, { deep: true });\nwatch([() => props.loading, () => props.loadingOptions], updateLoading, { deep: true });\nwatch(() => props.theme, initChart);\nwatch(() => props.autoResize, enabled => {\n resizeObserver?.disconnect();\n if (enabled && chartRef.value && typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(() => resize());\n resizeObserver.observe(chartRef.value);\n }\n if (enabled) window.addEventListener('resize', handleWindowResize);\n else window.removeEventListener('resize', handleWindowResize);\n});\n\ndefineExpose<EChartsWrapperInstance>({\n getEchartsInstance: () => instance,\n resize,\n setOption,\n dispatchAction,\n convertToPixel,\n convertFromPixel,\n});\ndefineOptions({ name: 'EChartsWrapper' });\n</script>\n","<template>\n <div class=\"tt-chart\" v-bind=\"$attrs\">\n <div v-if=\"title || description || slots.extra\" class=\"tt-chart__header\">\n <div><strong v-if=\"title\">{{ title }}</strong><span v-if=\"description\">{{ description }}</span></div>\n <slot name=\"extra\" />\n </div>\n <EChartsWrapper ref=\"wrapper\" class=\"tt-chart__dom\" :option=\"option\" :height=\"height\" :theme=\"resolvedTheme\" :loading=\"loading\" :loading-options=\"loadingOptions\" :on-events=\"onEvents\" :not-merge=\"notMerge\" :lazy-update=\"lazyUpdate\" :auto-resize=\"autoResize\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useSlots } from 'vue';\nimport type { EChartsOption } from 'echarts';\nimport EChartsWrapper, { type EChartsEvents, type EChartsTheme, type EChartsWrapperInstance } from '../EChartsWrapper';\n\nexport type ChartThemeName = 'geekBlue' | 'dustRed' | 'mintGreen' | 'neonBlue' | 'sunsetOrange' | 'goldenPurple' | 'cyan';\nexport type ChartTheme = ChartThemeName | EChartsTheme;\n\nconst themeColors: Record<ChartThemeName, string[]> = {\n geekBlue: ['#3388ff', '#11c79b', '#fadb14', '#ff4433', '#73c0de', '#9a60b4'],\n dustRed: ['#ff4433', '#ff7875', '#faad14', '#3388ff', '#73c0de', '#9a60b4'],\n mintGreen: ['#11c79b', '#3388ff', '#fadb14', '#ff4433', '#73c0de', '#9a60b4'],\n neonBlue: ['#1677ff', '#36cfc9', '#9254de', '#f759ab', '#faad14', '#ff7a45'],\n sunsetOrange: ['#ff7a45', '#ffbb96', '#faad14', '#11c79b', '#3388ff', '#9254de'],\n goldenPurple: ['#9254de', '#d3adf7', '#faad14', '#11c79b', '#3388ff', '#ff7a45'],\n cyan: ['#13c2c2', '#3388ff', '#11c79b', '#faad14', '#ff4433', '#9254de'],\n};\n\nconst props = withDefaults(defineProps<{\n option: EChartsOption;\n theme?: ChartTheme;\n loading?: boolean;\n loadingOptions?: object;\n onEvents?: EChartsEvents;\n notMerge?: boolean;\n lazyUpdate?: boolean;\n autoResize?: boolean;\n height?: number | string;\n title?: string;\n description?: string;\n}>(), {\n autoResize: true,\n height: 300,\n loading: false,\n loadingOptions: () => ({}),\n notMerge: false,\n lazyUpdate: false,\n onEvents: () => ({}),\n theme: 'geekBlue',\n title: '',\n description: '',\n});\n\nconst wrapper = ref<EChartsWrapperInstance>();\nconst slots = useSlots();\nconst resolvedTheme = computed<EChartsTheme>(() => {\n if (typeof props.theme !== 'string') return props.theme;\n return { color: themeColors[props.theme as ChartThemeName] || themeColors.geekBlue, backgroundColor: 'transparent' };\n});\n\ndefineExpose({\n getEchartsInstance: () => wrapper.value?.getEchartsInstance() ?? null,\n resize: (...args: Parameters<EChartsWrapperInstance['resize']>) => wrapper.value?.resize(...args),\n setOption: (...args: Parameters<EChartsWrapperInstance['setOption']>) => wrapper.value?.setOption(...args),\n dispatchAction: (...args: Parameters<EChartsWrapperInstance['dispatchAction']>) => wrapper.value?.dispatchAction(...args),\n convertToPixel: (...args: Parameters<EChartsWrapperInstance['convertToPixel']>) => wrapper.value?.convertToPixel(...args) ?? null,\n convertFromPixel: (...args: Parameters<EChartsWrapperInstance['convertFromPixel']>) => wrapper.value?.convertFromPixel(...args) ?? null,\n});\ndefineOptions({ name: 'Chart' });\n</script>\n","<template>\n <ElCheckbox v-model=\"modelValue\" class=\"tt-checkbox\" v-bind=\"$attrs\">\n <slot />\n </ElCheckbox>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElCheckbox } from 'element-plus';\n\nexport type CheckboxValue = string | number | boolean;\nexport type CheckboxGroupValue = string | number;\n\ndefineOptions({\n name: 'Checkbox',\n});\n\nconst modelValue = defineModel<CheckboxValue>();\n</script>\n","<template>\n <ElCheckboxGroup v-model=\"modelValue\" class=\"tt-checkbox-group\" v-bind=\"$attrs\">\n <slot />\n </ElCheckboxGroup>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElCheckboxGroup } from 'element-plus';\nimport type { CheckboxGroupValue } from './Checkbox.vue';\n\ndefineOptions({\n name: 'CheckboxGroup',\n});\n\nconst modelValue = defineModel<CheckboxGroupValue[]>();\n</script>\n","<template>\n <div\n class=\"tt-color\"\n :class=\"colorClass\"\n role=\"button\"\n tabindex=\"0\"\n :aria-label=\"`复制颜色 ${colorValue}`\"\n v-bind=\"$attrs\"\n @click=\"copyColor\"\n @keydown.enter.prevent=\"copyColor\"\n @keydown.space.prevent=\"copyColor\"\n >\n <span class=\"tt-color__swatch\" :style=\"{ background: colorValue }\" aria-hidden=\"true\" />\n <span v-if=\"showText\" class=\"tt-color__info\">\n <span class=\"tt-color__name\">{{ colorName }}</span>\n <span class=\"tt-color__hex\">{{ copied ? '已复制!' : colorValue }}</span>\n </span>\n <span v-if=\"copied\" class=\"tt-color__tooltip\" role=\"status\">已复制!</span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\n\nexport type ColorSize = 'small' | 'default' | 'large';\nexport type ColorType = 'primary' | 'neutral' | 'success' | 'warning' | 'error';\n\nconst props = withDefaults(defineProps<{\n /** 参考项目属性:颜色名称。 */\n name?: string;\n /** 参考项目属性:颜色值。 */\n hex?: string;\n type?: ColorType;\n size?: ColorSize;\n /** 兼容既有 ColorPicker 示例的颜色值属性。 */\n value?: string;\n /** 兼容既有 ColorPicker 示例的展示名称。 */\n label?: string;\n showText?: boolean;\n}>(), {\n type: 'primary',\n size: 'default',\n showText: true,\n value: '',\n});\n\nconst emit = defineEmits<{ copy: [value: string] }>();\nconst copied = ref(false);\nlet copiedTimer: number | undefined;\nconst colorValue = computed(() => props.hex || props.value);\nconst colorName = computed(() => props.name || props.label || colorValue.value);\nconst colorClass = computed(() => [`tt-color--${props.type}`, `tt-color--${props.size}`, { 'is-copied': copied.value }]);\n\nasync function copyColor() {\n if (!colorValue.value) return;\n try {\n await navigator.clipboard?.writeText(colorValue.value);\n } catch {\n // 不支持 Clipboard API 时仍保持组件可点击,不抛出运行时错误。\n return;\n }\n copied.value = true;\n if (copiedTimer) window.clearTimeout(copiedTimer);\n copiedTimer = window.setTimeout(() => { copied.value = false; }, 2000);\n emit('copy', colorValue.value);\n}\n\ndefineOptions({ name: 'Color' });\n</script>\n","<template>\n <ElPopover v-model:visible=\"visible\" class=\"tt-color-picker\" trigger=\"click\" placement=\"bottom-start\" :disabled=\"isDisabled\" popper-class=\"tt-color-picker-popper\">\n <template #reference>\n <button class=\"tt-color-picker__trigger\" :class=\"[`tt-color-picker__trigger--${size}`, { 'is-disabled': isDisabled }]\" type=\"button\" :disabled=\"isDisabled\">\n <span v-if=\"showIcon\" class=\"tt-color-picker__icon\" aria-hidden=\"true\">◆</span>\n <span class=\"tt-color-picker__preview\" aria-hidden=\"true\"><span class=\"tt-color-picker__preview-color\" :style=\"{ background: previewValue }\" /></span>\n <span class=\"tt-color-picker__value\">{{ displayValue }}</span>\n </button>\n </template>\n\n <div class=\"tt-color-picker__panel\">\n <div v-if=\"showStatus\" class=\"tt-color-picker__mode\" role=\"tablist\" aria-label=\"颜色类型\">\n <button class=\"tt-color-picker__mode-button\" :class=\"{ 'is-active': mode === 'pure' }\" type=\"button\" role=\"tab\" :aria-selected=\"mode === 'pure'\" @click=\"setMode('pure')\">纯色</button>\n <button class=\"tt-color-picker__mode-button\" :class=\"{ 'is-active': mode === 'gradient' }\" type=\"button\" role=\"tab\" :aria-selected=\"mode === 'gradient'\" @click=\"setMode('gradient')\">渐变</button>\n </div>\n\n <ElColorPickerPanel v-if=\"mode === 'pure'\" ref=\"colorPickerRef\" v-model=\"pureColor\" class=\"tt-color-picker__pure-panel\" :border=\"false\" :show-alpha=\"showAlpha\" :color-format=\"colorFormat\" :predefine=\"predefine\" :disabled=\"isDisabled\" />\n\n <template v-else>\n <div class=\"tt-color-picker__gradient-preview\" :style=\"{ background: gradientValue }\" />\n <div class=\"tt-color-picker__stops\" aria-label=\"渐变色标\">\n <button v-for=\"(stop, index) in gradientStops\" :key=\"`${stop.position}-${index}`\" class=\"tt-color-picker__stop\" :class=\"{ 'is-active': selectedStop === index }\" type=\"button\" :style=\"{ background: stop.color }\" :aria-label=\"`色标 ${index + 1}`\" @click=\"selectedStop = index\" />\n <button class=\"tt-color-picker__add-stop\" type=\"button\" aria-label=\"添加色标\" @click=\"addStop\">+</button>\n </div>\n <div class=\"tt-color-picker__gradient-settings\">\n <label class=\"tt-color-picker__setting\">\n <span>位置</span>\n <input class=\"tt-color-picker__range\" type=\"range\" min=\"0\" max=\"100\" :value=\"activeStop.position\" @input=\"updateStopPosition\">\n <output>{{ activeStop.position }}%</output>\n </label>\n <label class=\"tt-color-picker__setting tt-color-picker__angle\">\n <span>角度</span>\n <ElInputNumber v-model=\"gradientAngle\" :min=\"0\" :max=\"360\" controls-position=\"right\" />\n <em>°</em>\n </label>\n </div>\n <ElColorPickerPanel ref=\"colorPickerRef\" v-model=\"activeStopColor\" class=\"tt-color-picker__gradient-panel\" :border=\"false\" :show-alpha=\"showAlpha\" :color-format=\"colorFormat\" :predefine=\"predefine\" :disabled=\"isDisabled\" />\n <div class=\"tt-color-picker__gradient-actions\"><button type=\"button\" :disabled=\"gradientStops.length <= 2\" @click=\"removeStop\">删除当前色标</button></div>\n </template>\n\n <div class=\"tt-color-picker__common\">\n <span>常用颜色</span>\n <div class=\"tt-color-picker__common-list\">\n <button v-for=\"color in commonColors\" :key=\"color\" type=\"button\" :style=\"{ background: color }\" :aria-label=\"`选择 ${color}`\" @click=\"selectCommonColor(color)\" />\n </div>\n <template v-if=\"mode === 'gradient'\">\n <span class=\"tt-color-picker__sub-title\">常用渐变</span>\n <div class=\"tt-color-picker__common-list\">\n <button v-for=\"gradient in commonGradients\" :key=\"gradient\" type=\"button\" :style=\"{ background: gradient }\" :aria-label=\"`选择 ${gradient}`\" @click=\"selectGradient(gradient)\" />\n </div>\n </template>\n </div>\n <div v-if=\"recentColors.length\" class=\"tt-color-picker__recent\">\n <span>最近使用</span>\n <div class=\"tt-color-picker__common-list\">\n <button v-for=\"color in recentColors\" :key=\"color\" type=\"button\" :style=\"{ background: color }\" :aria-label=\"`选择最近使用的 ${color}`\" @click=\"selectRecentColor(color)\" />\n </div>\n </div>\n <button v-if=\"clearable\" class=\"tt-color-picker__clear\" type=\"button\" @click=\"clear\">清除</button>\n </div>\n </ElPopover>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs, watch } from 'vue';\nimport type { ColorFormats } from '@ctrl/tinycolor';\nimport { ElColorPickerPanel, ElInputNumber, ElPopover } from 'element-plus';\n\nexport type ColorPickerValue = string | null;\ntype ColorPickerMode = 'pure' | 'gradient';\ninterface GradientStop { color: string; position: number; }\n\nconst props = withDefaults(defineProps<{\n initialColor?: string;\n initialStatus?: ColorPickerMode;\n showIcon?: boolean;\n showStatus?: boolean;\n debounceTime?: number;\n}>(), {\n initialColor: '#3388ff',\n initialStatus: 'pure',\n showIcon: false,\n showStatus: true,\n debounceTime: 0,\n});\n\nconst emit = defineEmits<{ change: [value: ColorPickerValue]; 'value-change': [value: ColorPickerValue]; clear: []; }>();\nconst attrs = useAttrs();\nconst modelValue = defineModel<ColorPickerValue>();\nconst visible = ref(false);\nconst initialValue = modelValue.value ?? props.initialColor;\nconst initialGradient = parseGradient(initialValue ?? null);\nconst mode = ref<ColorPickerMode>(initialGradient ? 'gradient' : props.initialStatus);\nconst pureColor = ref(initialValue && !initialGradient ? initialValue : '#3388ff');\nconst gradientStops = ref<GradientStop[]>(initialGradient?.stops || createDefaultStops(pureColor.value));\nconst gradientAngle = ref(initialGradient?.angle || 90);\nconst selectedStop = ref(0);\nconst colorPickerRef = ref<InstanceType<typeof ElColorPickerPanel>>();\n\nconst commonColors = ['#3388ff', '#00a870', '#f2b824', '#e34d59', '#722ed1', '#1f2329', '#86909c', '#ffffff', '#ff4433', '#ff8629', '#33bbff', '#4433ff'];\nconst commonGradients = [\n 'linear-gradient(135deg, #6b7a99 0%, #223355 100%)',\n 'linear-gradient(135deg, #ff7962 0%, #ff4433 100%)',\n 'linear-gradient(135deg, #ffd400 0%, #ffaa00 100%)',\n 'linear-gradient(135deg, #27e5cb 0%, #11c79b 100%)',\n 'linear-gradient(135deg, #62bdff 0%, #3388ff 100%)',\n 'linear-gradient(135deg, #7962ff 0%, #4433ff 100%)',\n];\nconst RECENT_COLORS_KEY = 'tt-color-picker-recent-colors';\nconst recentColors = ref<string[]>(loadRecentColors());\nconst showIcon = computed(() => props.showIcon);\nconst showStatus = computed(() => props.showStatus);\nconst showAlpha = computed(() => attrs.showAlpha === '' || attrs.showAlpha === true);\nconst colorFormat = computed(() => attrs.colorFormat as ColorFormats | undefined);\nconst predefine = computed(() => attrs.predefine as string[] | undefined);\nconst clearable = computed(() => attrs.clearable === '' || attrs.clearable === true);\nconst isDisabled = computed(() => attrs.disabled === '' || attrs.disabled === true);\nconst size = computed(() => (attrs.size === 'small' || attrs.size === 'large' ? attrs.size : 'default'));\nconst activeStop = computed(() => gradientStops.value[selectedStop.value] || gradientStops.value[0]);\nconst activeStopColor = computed({\n get: () => activeStop.value?.color || '#3388ff',\n set: color => updateActiveStop({ color: color || '#3388ff' }),\n});\nconst gradientValue = computed(() => formatGradient(gradientAngle.value, gradientStops.value));\nconst previewValue = computed(() => mode.value === 'gradient' ? gradientValue.value : pureColor.value);\nconst displayValue = computed(() => modelValue.value || '未选择颜色');\n\nwatch(pureColor, color => { if (mode.value === 'pure') updateValue(color); });\nwatch(gradientValue, value => { if (mode.value === 'gradient') updateValue(value); });\nwatch(modelValue, value => {\n if (!value) return;\n const gradient = parseGradient(value);\n if (gradient) {\n mode.value = 'gradient';\n gradientAngle.value = gradient.angle;\n gradientStops.value = gradient.stops;\n selectedStop.value = 0;\n return;\n }\n mode.value = 'pure';\n pureColor.value = value;\n});\n\nfunction setMode(nextMode: ColorPickerMode) {\n if (nextMode === mode.value) return;\n if (nextMode === 'gradient') {\n gradientStops.value = createDefaultStops(pureColor.value);\n gradientAngle.value = 90;\n selectedStop.value = 0;\n } else {\n pureColor.value = activeStop.value?.color || pureColor.value;\n }\n mode.value = nextMode;\n updateValue(nextMode === 'gradient' ? gradientValue.value : pureColor.value);\n}\n\nfunction updateActiveStop(updates: Partial<GradientStop>) {\n gradientStops.value = gradientStops.value.map((stop, index) => index === selectedStop.value ? { ...stop, ...updates } : stop);\n}\n\nfunction updateStopPosition(event: Event) {\n const position = Number((event.target as HTMLInputElement).value);\n updateActiveStop({ position: Math.max(0, Math.min(100, position)) });\n}\n\nfunction addStop() {\n const position = Math.round((gradientStops.value[0].position + gradientStops.value.at(-1)!.position) / 2);\n gradientStops.value = [...gradientStops.value, { color: activeStop.value?.color || pureColor.value, position }];\n selectedStop.value = gradientStops.value.length - 1;\n}\n\nfunction removeStop() {\n if (gradientStops.value.length <= 2) return;\n gradientStops.value = gradientStops.value.filter((_, index) => index !== selectedStop.value);\n selectedStop.value = Math.min(selectedStop.value, gradientStops.value.length - 1);\n}\n\nfunction selectCommonColor(color: string) {\n if (mode.value === 'pure') pureColor.value = color;\n else updateActiveStop({ color });\n}\n\nfunction selectGradient(gradient: string) {\n const parsed = parseGradient(gradient);\n if (!parsed) return;\n mode.value = 'gradient';\n gradientAngle.value = parsed.angle;\n gradientStops.value = parsed.stops;\n selectedStop.value = 0;\n updateValue(gradient);\n}\n\nfunction selectRecentColor(color: string) {\n if (color.startsWith('linear-gradient(')) selectGradient(color);\n else {\n mode.value = 'pure';\n pureColor.value = color;\n updateValue(color);\n }\n}\n\nfunction updateValue(value: ColorPickerValue) {\n if (modelValue.value === value) return;\n modelValue.value = value;\n if (value) saveRecentColor(value);\n emit('change', value);\n if (props.debounceTime > 0) window.setTimeout(() => emit('value-change', value), props.debounceTime);\n else emit('value-change', value);\n}\n\nfunction clear() {\n modelValue.value = null;\n emit('change', null);\n emit('clear');\n}\n\nfunction show() { if (!isDisabled.value) visible.value = true; }\nfunction hide() { visible.value = false; }\nfunction createDefaultStops(color: string): GradientStop[] { return [{ color: color || '#3388ff', position: 0 }, { color: '#00a870', position: 100 }]; }\nfunction formatGradient(angle: number, stops: GradientStop[]) {\n return `linear-gradient(${angle}deg, ${[...stops].sort((first, second) => first.position - second.position).map(stop => `${stop.color} ${stop.position}%`).join(', ')})`;\n}\n\nfunction loadRecentColors() {\n if (typeof window === 'undefined') return [];\n try {\n const stored = window.localStorage.getItem(RECENT_COLORS_KEY);\n return stored ? JSON.parse(stored) : [];\n } catch {\n return [];\n }\n}\n\nfunction saveRecentColor(color: string) {\n recentColors.value = [color, ...recentColors.value.filter(item => item !== color)].slice(0, 12);\n if (typeof window !== 'undefined') {\n try { window.localStorage.setItem(RECENT_COLORS_KEY, JSON.stringify(recentColors.value)); } catch { /* storage unavailable */ }\n }\n}\nfunction parseGradient(value: ColorPickerValue) {\n if (!value?.startsWith('linear-gradient(')) return undefined;\n const angle = Number(value.match(/linear-gradient\\(\\s*(-?\\d+(?:\\.\\d+)?)deg/i)?.[1] || 90);\n const stops = [...value.matchAll(/(#[0-9a-f]{3,8}|rgba?\\([^)]*\\)|hsla?\\([^)]*\\))\\s+(\\d+(?:\\.\\d+)?)%/gi)].map(match => ({ color: match[1], position: Number(match[2]) }));\n return stops.length >= 2 ? { angle, stops } : undefined;\n}\n\ndefineOptions({ name: 'ColorPicker', inheritAttrs: false });\ndefineExpose({ colorPickerRef, show, hide });\n</script>\n","<template>\n <article class=\"tt-comment\" v-bind=\"$attrs\">\n <div class=\"tt-comment__avatar\" aria-hidden=\"true\">\n <slot name=\"avatar\">\n <img v-if=\"avatar\" :src=\"avatar\" :alt=\"avatarAlt\" />\n <span v-else>{{ avatarText || authorInitial }}</span>\n </slot>\n </div>\n <div class=\"tt-comment__main\">\n <header v-if=\"author || datetime || slots.author || slots.datetime\" class=\"tt-comment__header\">\n <strong v-if=\"author || slots.author\" class=\"tt-comment__author\">\n <slot name=\"author\">{{ author }}</slot>\n </strong>\n <time v-if=\"datetime || slots.datetime\" class=\"tt-comment__datetime\">\n <slot name=\"datetime\">{{ datetime }}</slot>\n </time>\n </header>\n <div class=\"tt-comment__content\">\n <slot>{{ content }}</slot>\n </div>\n <div v-if=\"normalizedActions.length || slots.actions\" class=\"tt-comment__actions\">\n <slot name=\"actions\">\n <button\n v-for=\"(action, index) in normalizedActions\"\n :key=\"action.key\"\n type=\"button\"\n :disabled=\"action.disabled\"\n @click=\"handleAction(action, index)\"\n >\n {{ action.label }}\n </button>\n </slot>\n </div>\n </div>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue';\n\nexport interface CommentAction {\n label: string;\n key?: string | number;\n disabled?: boolean;\n}\n\nconst props = withDefaults(\n defineProps<{\n author?: string;\n datetime?: string;\n content?: string;\n avatar?: string;\n avatarText?: string;\n avatarAlt?: string;\n actions?: Array<string | CommentAction>;\n }>(),\n {\n author: '',\n datetime: '',\n content: '',\n avatar: '',\n avatarText: '',\n avatarAlt: '',\n actions: () => [],\n },\n);\n\nconst emit = defineEmits<{\n action: [action: CommentAction, index: number];\n}>();\n\nconst slots = useSlots();\nconst authorInitial = computed(() => props.author?.trim().slice(0, 1).toUpperCase() || 'U');\nconst normalizedActions = computed<CommentAction[]>(() =>\n props.actions.map((action, index) =>\n typeof action === 'string'\n ? {\n label: action,\n key: action || index,\n }\n : {\n key: action.key ?? action.label ?? index,\n ...action,\n },\n ),\n);\n\nfunction handleAction(action: CommentAction, index: number) {\n if (action.disabled) {\n return;\n }\n\n emit('action', action, index);\n}\n\ndefineOptions({\n name: 'Comment',\n});\n</script>\n","<template>\n <ElContainer ref=\"containerRef\" class=\"tt-container\" v-bind=\"$attrs\">\n <slot />\n </ElContainer>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({\n name: 'Container',\n});\n</script>\n","<template>\n <ElCollapse ref=\"collapseRef\" class=\"tt-collapse\" v-bind=\"$attrs\">\n <slot />\n </ElCollapse>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElCollapse } from 'element-plus';\n\nconst collapseRef = ref<InstanceType<typeof ElCollapse>>();\n\ndefineOptions({\n name: 'Collapse',\n});\n\ndefineExpose({\n collapseRef,\n});\n</script>\n","<template>\n <ElCollapseItem ref=\"collapseItemRef\" class=\"tt-collapse-item\" v-bind=\"$attrs\">\n <template v-if=\"slots.title\" #title>\n <slot name=\"title\" />\n </template>\n <template v-if=\"slots.icon\" #icon=\"slotProps\">\n <slot name=\"icon\" v-bind=\"slotProps\" />\n </template>\n <slot />\n </ElCollapseItem>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElCollapseItem } from 'element-plus';\n\nconst slots = useSlots();\nconst collapseItemRef = ref<InstanceType<typeof ElCollapseItem>>();\n\ndefineOptions({\n name: 'CollapseItem',\n});\n\ndefineExpose({\n collapseItemRef,\n});\n</script>\n","<template>\n <ElDatePicker\n ref=\"datePickerRef\"\n v-model=\"modelValue\"\n class=\"tt-datepicker\"\n :popper-class=\"mergedPopperClass\"\n :shortcuts=\"mergedShortcuts\"\n v-bind=\"datePickerAttrs\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue';\nimport { ElDatePicker } from 'element-plus';\n\ntype DatePickerSingleValue = string | number | Date;\n\nexport type DatePickerValue = DatePickerSingleValue | string[] | number[] | Date[] | null;\nexport type DatePickerQuickActionValue = Date | [Date, Date];\n\nexport interface DatePickerQuickAction {\n key: string;\n label: string;\n getValue: () => DatePickerQuickActionValue;\n}\n\nconst props = withDefaults(\n defineProps<{\n popperClass?: string;\n /** 显示与 tt-design 对齐的默认快捷日期。 */\n showQuickActions?: boolean;\n /** 自定义快捷日期,优先级高于默认快捷日期。 */\n quickActions?: DatePickerQuickAction[];\n }>(),\n {\n popperClass: '',\n showQuickActions: false,\n quickActions: () => [],\n }\n);\n\nconst attrs = useAttrs();\nconst modelValue = defineModel<DatePickerValue>();\nconst pickerType = computed(() => String(attrs.type || 'date'));\nconst isRangePicker = computed(() => ['daterange', 'datetimerange', 'monthrange'].includes(pickerType.value));\nconst nativeShortcuts = computed(() => attrs.shortcuts as unknown[] | undefined);\nconst datePickerAttrs = computed(() => {\n const { shortcuts: _shortcuts, ...rest } = attrs;\n\n return rest;\n});\nconst mergedShortcuts = computed(() => {\n if (props.quickActions.length > 0) {\n return props.quickActions.map(action => ({ text: action.label, value: action.getValue }));\n }\n\n if (props.showQuickActions) {\n return getDefaultQuickActions(isRangePicker.value);\n }\n\n return nativeShortcuts.value;\n});\nconst mergedPopperClass = computed(() => ['tt-picker-dropdown', 'tt-datepicker-dropdown', props.popperClass].filter(Boolean).join(' '));\nconst datePickerRef = ref<InstanceType<typeof ElDatePicker>>();\n\nfunction getDefaultQuickActions(isRange: boolean) {\n if (isRange) {\n return [\n { text: '近一周', value: () => getRecentRange(6, 'day') },\n { text: '近一月', value: () => getRecentRange(1, 'month') },\n { text: '近一季', value: () => getRecentRange(3, 'month') },\n ];\n }\n\n return [\n { text: '昨天', value: () => addDays(-1) },\n { text: '今天', value: () => new Date() },\n { text: '明天', value: () => addDays(1) },\n ];\n}\n\nfunction addDays(amount: number) {\n const date = new Date();\n date.setDate(date.getDate() + amount);\n return date;\n}\n\nfunction getRecentRange(amount: number, unit: 'day' | 'month'): [Date, Date] {\n const end = new Date();\n const start = new Date();\n\n if (unit === 'day') {\n start.setDate(start.getDate() - amount);\n } else {\n start.setMonth(start.getMonth() - amount);\n start.setDate(start.getDate() + 1);\n }\n\n return [start, end];\n}\n\nfunction focus() {\n return (datePickerRef.value as any)?.focus?.();\n}\n\nfunction blur() {\n return (datePickerRef.value as any)?.blur?.();\n}\n\ndefineOptions({\n name: 'DatePicker',\n});\n\ndefineExpose({\n datePickerRef,\n focus,\n blur,\n});\n</script>\n","<template>\n <ElDescriptions ref=\"descriptionsRef\" class=\"tt-descriptions\" v-bind=\"$attrs\">\n <template v-if=\"slots.title\" #title>\n <slot name=\"title\" />\n </template>\n <template v-if=\"slots.extra\" #extra>\n <slot name=\"extra\" />\n </template>\n <slot />\n </ElDescriptions>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElDescriptions } from 'element-plus';\n\nconst slots = useSlots();\nconst descriptionsRef = ref<InstanceType<typeof ElDescriptions>>();\n\ndefineOptions({\n name: 'Descriptions',\n});\n\ndefineExpose({\n descriptionsRef,\n});\n</script>\n","<template>\n <ElDescriptionsItem ref=\"descriptionsItemRef\" class=\"tt-descriptions-item\" v-bind=\"$attrs\">\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n <slot />\n </ElDescriptionsItem>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElDescriptionsItem } from 'element-plus';\n\nconst slots = useSlots();\nconst descriptionsItemRef = ref<InstanceType<typeof ElDescriptionsItem>>();\n\ndefineOptions({\n name: 'ElDescriptionsItem',\n});\n\ndefineExpose({\n descriptionsItemRef,\n});\n</script>\n","<template>\n <ElDialog ref=\"dialogRef\" v-model=\"visible\" class=\"tt-dialog\" v-bind=\"dialogAttrs\" :append-to-body=\"appendToBody\">\n <template v-if=\"slots.header\" #header=\"slotProps\">\n <slot name=\"header\" v-bind=\"slotProps\" />\n </template>\n <slot />\n <template v-if=\"slots.footer\" #footer>\n <slot name=\"footer\" />\n </template>\n </ElDialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs, useSlots } from 'vue';\nimport { ElDialog } from 'element-plus';\nimport type { DialogProps } from 'element-plus';\n\nconst slots = useSlots();\ntype TTDialogProps = Pick<DialogProps, 'appendToBody'>;\nconst props = withDefaults(defineProps<TTDialogProps>(), { appendToBody: true });\nconst attrs = useAttrs();\nconst visible = defineModel<boolean>();\nconst appendToBody = computed(() => props.appendToBody ?? true);\nconst dialogAttrs = computed(() => {\n const { appendToBody: _propAppendToBody, ...restProps } = props;\n const { appendToBody: _appendToBody, ...rest } = attrs;\n return { ...restProps, ...rest };\n});\nconst dialogRef = ref<InstanceType<typeof ElDialog>>();\n\ndefineOptions({\n name: 'Dialog',\n inheritAttrs: false,\n});\n\ndefineExpose({\n dialogRef,\n});\n</script>\n","<template>\n <ElDivider ref=\"dividerRef\" class=\"tt-divider\" :class=\"{ 'tt-divider-plain': props.plain }\" v-bind=\"$attrs\">\n <slot />\n </ElDivider>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElDivider } from 'element-plus';\n\nconst props = withDefaults(\n defineProps<{\n plain?: boolean;\n }>(),\n {\n plain: false,\n },\n);\n\nconst dividerRef = ref<InstanceType<typeof ElDivider>>();\n\ndefineOptions({\n name: 'Divider',\n});\n\ndefineExpose({\n dividerRef,\n});\n</script>\n","<template>\n <ElDrawer ref=\"drawerRef\" v-model=\"visible\" class=\"tt-drawer\" v-bind=\"drawerAttrs\" :append-to-body=\"appendToBody\">\n <template v-if=\"slots.header\" #header=\"slotProps\">\n <slot name=\"header\" v-bind=\"slotProps\" />\n </template>\n <slot />\n <template v-if=\"slots.footer\" #footer>\n <slot name=\"footer\" />\n </template>\n </ElDrawer>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs, useSlots } from 'vue';\nimport { ElDrawer } from 'element-plus';\nimport type { DrawerProps } from 'element-plus';\n\nconst slots = useSlots();\ntype TTDrawerProps = Pick<DrawerProps, 'appendToBody'>;\nconst props = withDefaults(defineProps<TTDrawerProps>(), { appendToBody: true });\nconst attrs = useAttrs();\nconst visible = defineModel<boolean>();\nconst appendToBody = computed(() => props.appendToBody ?? true);\nconst drawerAttrs = computed(() => {\n const { appendToBody: _propAppendToBody, ...restProps } = props;\n const { appendToBody: _appendToBody, ...rest } = attrs;\n return { ...restProps, ...rest };\n});\nconst drawerRef = ref<InstanceType<typeof ElDrawer>>();\n\ndefineOptions({\n name: 'Drawer',\n inheritAttrs: false,\n});\n\ndefineExpose({\n drawerRef,\n});\n</script>\n","<template>\n <ElDropdown\n ref=\"dropdownRef\"\n class=\"tt-dropdown\"\n v-bind=\"$attrs\"\n :popper-class=\"mergedPopperClass\"\n :popper-options=\"mergedPopperOptions\"\n >\n <slot />\n <template v-if=\"slots.dropdown\" #dropdown>\n <slot name=\"dropdown\" />\n </template>\n </ElDropdown>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElDropdown } from 'element-plus';\nimport { computed, ref, useSlots } from 'vue';\n\ntype DropdownPopperOptions = NonNullable<InstanceType<typeof ElDropdown>['$props']['popperOptions']>;\n\nconst props = withDefaults(\n defineProps<{\n popperClass?: string;\n popperOptions?: DropdownPopperOptions;\n }>(),\n {\n popperClass: '',\n }\n);\n\nconst slots = useSlots();\nconst dropdownRef = ref<InstanceType<typeof ElDropdown>>();\nconst mergedPopperClass = computed(() => ['tt-dropdown-popper', props.popperClass].filter(Boolean).join(' '));\nconst mergedPopperOptions = computed<DropdownPopperOptions>(() => ({\n ...props.popperOptions,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 0],\n },\n },\n ...(props.popperOptions?.modifiers ?? []),\n ],\n}));\n\nfunction handleOpen() {\n return dropdownRef.value?.handleOpen();\n}\n\nfunction handleClose() {\n return dropdownRef.value?.handleClose();\n}\n\ndefineOptions({\n name: 'Dropdown',\n});\n\ndefineExpose({\n dropdownRef,\n handleOpen,\n handleClose,\n});\n</script>\n","<template>\n <ElDropdownMenu class=\"tt-dropdown-menu\" v-bind=\"$attrs\">\n <slot />\n </ElDropdownMenu>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElDropdownMenu } from 'element-plus';\n\ndefineOptions({\n name: 'DropdownMenu',\n});\n</script>\n","<template>\n <ElDropdownItem class=\"tt-dropdown-item\" v-bind=\"$attrs\">\n <slot />\n </ElDropdownItem>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElDropdownItem } from 'element-plus';\n\ndefineOptions({\n name: 'DropdownItem',\n});\n</script>\n","<template>\n <ElEmpty ref=\"emptyRef\" class=\"tt-empty\" v-bind=\"$attrs\">\n <template v-if=\"slots.image\" #image>\n <slot name=\"image\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n <template v-if=\"slots.default\" #default>\n <slot />\n </template>\n </ElEmpty>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElEmpty } from 'element-plus';\n\nconst slots = useSlots();\nconst emptyRef = ref<InstanceType<typeof ElEmpty>>();\n\ndefineOptions({\n name: 'Empty',\n});\n\ndefineExpose({\n emptyRef,\n});\n</script>\n","<template>\n <component\n :is=\"componentTag\"\n class=\"tt-float-button\"\n :class=\"buttonClass\"\n :style=\"buttonStyle\"\n :href=\"href || undefined\"\n :target=\"href ? target : undefined\"\n :rel=\"href && target === '_blank' ? 'noopener noreferrer' : undefined\"\n :disabled=\"!href ? disabled : undefined\"\n :aria-disabled=\"href && disabled ? 'true' : undefined\"\n :title=\"tooltip || undefined\"\n v-bind=\"$attrs\"\n @click=\"handleClick\"\n >\n <span v-if=\"slots.icon\" class=\"tt-float-button__icon\">\n <slot name=\"icon\" />\n </span>\n <span v-if=\"slots.default\" class=\"tt-float-button__content\">\n <slot />\n </span>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue';\n\nexport type FloatButtonType = 'default' | 'primary' | 'success' | 'warning' | 'danger';\nexport type FloatButtonShape = 'circle' | 'square';\nexport type FloatButtonPosition = 'right-bottom' | 'right-top' | 'left-bottom' | 'left-top' | 'inline';\n\nconst props = withDefaults(\n defineProps<{\n type?: FloatButtonType;\n shape?: FloatButtonShape;\n position?: FloatButtonPosition;\n right?: number | string;\n left?: number | string;\n top?: number | string;\n bottom?: number | string;\n offset?: number;\n disabled?: boolean;\n href?: string;\n target?: string;\n tooltip?: string;\n }>(),\n {\n type: 'primary',\n shape: 'circle',\n position: 'right-bottom',\n offset: 28,\n disabled: false,\n href: '',\n target: '_self',\n tooltip: '',\n },\n);\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n\nconst slots = useSlots();\nconst componentTag = computed(() => (props.href ? 'a' : 'button'));\nconst buttonClass = computed(() => [`tt-float-button--${props.type}`, `tt-float-button--${props.shape}`, `tt-float-button--${props.position}`, { 'is-disabled': props.disabled }]);\n\nfunction toCssLength(value: number | string | undefined, fallback: number) {\n if (typeof value === 'number') {\n return `${value}px`;\n }\n\n return value || `${fallback}px`;\n}\n\nconst buttonStyle = computed(() => ({\n '--tt-float-button-right': toCssLength(props.right, props.offset),\n '--tt-float-button-left': toCssLength(props.left, props.offset),\n '--tt-float-button-top': toCssLength(props.top, props.offset),\n '--tt-float-button-bottom': toCssLength(props.bottom, props.offset),\n}));\n\nfunction handleClick(event: MouseEvent) {\n if (props.disabled) {\n event.preventDefault();\n return;\n }\n\n emit('click', event);\n}\n\ndefineOptions({\n name: 'FloatButton',\n});\n</script>\n","<template>\n <component :is=\"tagName\" class=\"tt-font\" :class=\"fontClass\" v-bind=\"$attrs\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nexport type FontVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'body' | 'small';\n\nconst props = withDefaults(\n defineProps<{\n variant?: FontVariant;\n }>(),\n {\n variant: 'body',\n },\n);\n\nconst tagMap: Record<FontVariant, string> = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n body: 'p',\n small: 'span',\n};\n\nconst tagName = computed(() => tagMap[props.variant]);\n\nconst fontClass = computed(() => `tt-font-${props.variant}`);\n\ndefineOptions({\n name: 'Font',\n});\n</script>\n","<template>\n <ElForm ref=\"formRef\" class=\"tt-form\" v-bind=\"formAttrs\">\n <slot />\n </ElForm>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue';\nimport { ElForm } from 'element-plus';\nimport type { FormProps } from 'element-plus';\n\ndefineOptions({\n name: 'Form',\n inheritAttrs: false,\n});\n\nconst formRef = ref<InstanceType<typeof ElForm>>();\nconst props = defineProps<Partial<FormProps>>();\nconst attrs = useAttrs();\nconst formAttrs = computed(() => ({ ...props, ...attrs }));\n\nfunction validate(...args: unknown[]) {\n return (formRef.value as any)?.validate(...args);\n}\n\nfunction validateField(...args: unknown[]) {\n return (formRef.value as any)?.validateField(...args);\n}\n\nfunction resetFields(...args: unknown[]) {\n return (formRef.value as any)?.resetFields(...args);\n}\n\nfunction clearValidate(...args: unknown[]) {\n return (formRef.value as any)?.clearValidate(...args);\n}\n\nfunction scrollToField(...args: unknown[]) {\n return (formRef.value as any)?.scrollToField(...args);\n}\n\ndefineExpose({\n formRef,\n validate,\n validateField,\n resetFields,\n clearValidate,\n scrollToField,\n});\n</script>\n","<template>\n <ElFormItem class=\"tt-form-item\" v-bind=\"formItemAttrs\">\n <slot />\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n <template v-if=\"slots.error\" #error>\n <slot name=\"error\" />\n </template>\n </ElFormItem>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots } from 'vue';\nimport { ElFormItem } from 'element-plus';\nimport type { FormItemProps } from 'element-plus';\n\ndefineOptions({\n name: 'FormItem',\n inheritAttrs: false,\n});\n\nconst slots = useSlots();\nconst props = defineProps<Partial<FormItemProps>>();\nconst attrs = useAttrs();\nconst formItemAttrs = computed(() => ({ ...props, ...attrs }));\n</script>\n","<template>\n <ElRow ref=\"rowRef\" class=\"tt-row\" v-bind=\"$attrs\">\n <slot />\n </ElRow>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElRow } from 'element-plus';\n\nconst rowRef = ref<InstanceType<typeof ElRow>>();\n\ndefineOptions({\n name: 'Row',\n});\n\ndefineExpose({\n rowRef,\n});\n</script>\n","<template>\n <ElCol ref=\"colRef\" class=\"tt-col\" v-bind=\"$attrs\">\n <slot />\n </ElCol>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElCol } from 'element-plus';\n\nconst colRef = ref<InstanceType<typeof ElCol>>();\n\ndefineOptions({\n name: 'Col',\n});\n\ndefineExpose({\n colRef,\n});\n</script>\n","<template>\n <ElImage ref=\"imageRef\" class=\"tt-image\" :preview-teleported=\"previewTeleported\" v-bind=\"$attrs\">\n <template v-if=\"slots.placeholder\" #placeholder>\n <slot name=\"placeholder\" />\n </template>\n <template v-if=\"slots.error\" #error>\n <slot name=\"error\" />\n </template>\n <template v-if=\"slots.viewer\" #viewer=\"slotProps\">\n <slot name=\"viewer\" v-bind=\"slotProps\" />\n </template>\n </ElImage>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElImage } from 'element-plus';\n\nwithDefaults(\n defineProps<{\n previewTeleported?: boolean;\n }>(),\n {\n previewTeleported: true,\n },\n);\n\nconst slots = useSlots();\nconst imageRef = ref<InstanceType<typeof ElImage>>();\n\ndefineOptions({\n name: 'Image',\n});\n\ndefineExpose({\n imageRef,\n});\n</script>\n","<template>\n <section class=\"tt-layout\" :class=\"layoutClass\" :style=\"layoutStyle\">\n <header v-if=\"slots.header\" class=\"tt-layout__header\">\n <slot name=\"header\" />\n </header>\n <div class=\"tt-layout__body\">\n <aside v-if=\"slots.sider\" class=\"tt-layout__sider\" :style=\"siderStyle\">\n <slot name=\"sider\" />\n </aside>\n <main class=\"tt-layout__content\">\n <slot />\n </main>\n </div>\n <footer v-if=\"slots.footer\" class=\"tt-layout__footer\">\n <slot name=\"footer\" />\n </footer>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n direction?: 'vertical' | 'horizontal';\n gap?: string | number;\n siderWidth?: string | number;\n }>(),\n {\n direction: 'vertical',\n gap: 0,\n siderWidth: 220,\n },\n);\n\nconst slots = useSlots();\nconst normalizedGap = computed(() => (typeof props.gap === 'number' ? `${props.gap}px` : props.gap));\nconst normalizedSiderWidth = computed(() => (typeof props.siderWidth === 'number' ? `${props.siderWidth}px` : props.siderWidth));\nconst layoutClass = computed(() => ({\n 'tt-layout--horizontal': props.direction === 'horizontal',\n 'tt-layout--has-sider': Boolean(slots.sider),\n}));\nconst layoutStyle = computed(() => ({\n '--tt-layout-gap': normalizedGap.value,\n}));\nconst siderStyle = computed(() => ({\n '--tt-layout-sider-width': normalizedSiderWidth.value,\n}));\n\ndefineOptions({\n name: 'Layout',\n});\n</script>\n","<template>\n <div class=\"tt-list\" :class=\"{ 'tt-list--bordered': bordered }\">\n <div v-if=\"slots.header || title\" class=\"tt-list__header\">\n <slot name=\"header\">\n <strong>{{ title }}</strong>\n </slot>\n </div>\n <div class=\"tt-list__body\">\n <slot />\n <div v-if=\"empty && !slots.default\" class=\"tt-list__empty\">{{ emptyText }}</div>\n </div>\n <div v-if=\"slots.footer\" class=\"tt-list__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useSlots } from 'vue';\n\nwithDefaults(\n defineProps<{\n title?: string;\n bordered?: boolean;\n empty?: boolean;\n emptyText?: string;\n }>(),\n {\n bordered: true,\n empty: false,\n emptyText: '暂无数据',\n },\n);\n\nconst slots = useSlots();\n\ndefineOptions({\n name: 'List',\n});\n</script>\n","<template>\n <div class=\"tt-list-item\" :class=\"{ 'is-clickable': clickable }\" :role=\"clickable ? 'button' : undefined\" :tabindex=\"clickable ? 0 : undefined\" @click=\"handleClick\" @keydown.enter=\"handleClick\">\n <div v-if=\"slots.meta || title || description\" class=\"tt-list-item__meta\">\n <slot name=\"meta\">\n <strong v-if=\"title\">{{ title }}</strong>\n <span v-if=\"description\">{{ description }}</span>\n </slot>\n </div>\n <div v-if=\"slots.default\" class=\"tt-list-item__content\">\n <slot />\n </div>\n <div v-if=\"slots.actions\" class=\"tt-list-item__actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useSlots } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n title?: string;\n description?: string;\n clickable?: boolean;\n }>(),\n {\n clickable: false,\n },\n);\n\nconst emit = defineEmits<{\n click: [];\n}>();\nconst slots = useSlots();\n\nfunction handleClick() {\n if (props.clickable) {\n emit('click');\n }\n}\n\ndefineOptions({\n name: 'ListItem',\n});\n</script>\n","<template>\n <ElLink ref=\"linkRef\" :class=\"linkClass\" v-bind=\"$attrs\">\n <slot />\n <template v-if=\"slots.icon\" #icon>\n <slot name=\"icon\" />\n </template>\n </ElLink>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs, useSlots } from 'vue';\nimport { ElLink } from 'element-plus';\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst linkRef = ref<InstanceType<typeof ElLink>>();\nconst linkClass = computed(() => {\n const type = typeof attrs.type === 'string' ? attrs.type : 'default';\n const underline = attrs.underline === true ? 'hover' : attrs.underline === false ? 'never' : typeof attrs.underline === 'string' ? attrs.underline : 'hover';\n\n return [\n 'tt-link',\n `tt-link-${type}`,\n `tt-link-underline-${underline}`,\n attrs.disabled === true && 'tt-link-disabled',\n slots.icon && 'tt-link-with-icon',\n ];\n});\n\ndefineOptions({\n name: 'Link',\n});\n\ndefineExpose({\n linkRef,\n});\n</script>\n","<template>\n <ElInput ref=\"inputRef\" v-model=\"modelValue\" class=\"tt-input\" v-bind=\"inputAttrs\">\n <template v-if=\"slots.prefix\" #prefix>\n <slot name=\"prefix\" />\n </template>\n <template v-if=\"slots.suffix\" #suffix>\n <slot name=\"suffix\" />\n </template>\n <template v-if=\"slots.prepend\" #prepend>\n <slot name=\"prepend\" />\n </template>\n <template v-if=\"slots.append\" #append>\n <slot name=\"append\" />\n </template>\n </ElInput>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs, useSlots } from 'vue';\nimport { ElInput } from 'element-plus';\nimport type { InputProps } from 'element-plus';\n\ndefineOptions({\n name: 'Input',\n inheritAttrs: false,\n});\n\nconst props = defineProps<Omit<Partial<InputProps>, 'modelValue' | 'modelModifiers'>>();\nconst attrs = useAttrs();\nconst modelValue = defineModel<string | number | null | undefined>();\nconst inputAttrs = computed(() => ({ ...props, ...attrs }));\nconst slots = useSlots();\nconst inputRef = ref<InstanceType<typeof ElInput>>();\n\nfunction focus() {\n return inputRef.value?.focus();\n}\n\nfunction blur() {\n return inputRef.value?.blur();\n}\n\nfunction clear() {\n return inputRef.value?.clear();\n}\n\nfunction select() {\n return inputRef.value?.select();\n}\n\ndefineExpose({\n inputRef,\n focus,\n blur,\n clear,\n select,\n});\n</script>\n","<template>\n <div\n v-if=\"prefix || suffix || buttonMode === 'side'\"\n class=\"tt-input-number-wrapper\"\n :class=\"buttonMode === 'side' ? 'tt-input-number-side-wrapper' : 'tt-input-number-affix-wrapper'\"\n :style=\"$attrs.style\"\n >\n <button\n v-if=\"buttonMode === 'side'\"\n class=\"tt-input-number-side-btn tt-input-number-side-btn-left\"\n :class=\"{ 'tt-input-number-side-btn-disabled': isDecreaseDisabled }\"\n type=\"button\"\n :disabled=\"isDecreaseDisabled\"\n @click=\"decrease\"\n >\n <Minus />\n </button>\n <span v-if=\"prefix\" :class=\"buttonMode === 'side' ? 'tt-input-number-side-prefix' : 'tt-input-number-prefix'\">{{ prefix }}</span>\n <ElInputNumber ref=\"inputNumberRef\" v-model=\"modelValue\" class=\"tt-input-number\" controls-position=\"right\" :controls=\"buttonMode !== 'side' && $attrs.controls !== false\" v-bind=\"inputAttrs\" />\n <span v-if=\"suffix\" :class=\"buttonMode === 'side' ? 'tt-input-number-side-suffix' : 'tt-input-number-suffix'\">{{ suffix }}</span>\n <button\n v-if=\"buttonMode === 'side'\"\n class=\"tt-input-number-side-btn tt-input-number-side-btn-right\"\n :class=\"{ 'tt-input-number-side-btn-disabled': isIncreaseDisabled }\"\n type=\"button\"\n :disabled=\"isIncreaseDisabled\"\n @click=\"increase\"\n >\n <Plus />\n </button>\n </div>\n <ElInputNumber v-else ref=\"inputNumberRef\" v-model=\"modelValue\" class=\"tt-input-number\" controls-position=\"right\" v-bind=\"$attrs\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue';\nimport { ElInputNumber } from 'element-plus';\nimport { Minus, Plus } from '@element-plus/icons-vue';\n\ndefineOptions({\n name: 'InputNumber',\n});\n\nconst props = withDefaults(\n defineProps<{\n buttonMode?: 'default' | 'side';\n prefix?: string;\n suffix?: string;\n }>(),\n {\n buttonMode: 'default',\n prefix: '',\n suffix: '',\n },\n);\nconst attrs = useAttrs();\nconst modelValue = defineModel<number | undefined>();\nconst inputNumberRef = ref<InstanceType<typeof ElInputNumber>>();\nconst inputAttrs = computed(() => {\n const { controls: _controls, style: _style, ...rest } = attrs;\n return rest;\n});\nconst min = computed(() => toFiniteNumber(attrs.min));\nconst max = computed(() => toFiniteNumber(attrs.max));\nconst step = computed(() => toFiniteNumber(attrs.step) ?? 1);\nconst isDisabled = computed(() => attrs.disabled === '' || attrs.disabled === true);\nconst isDecreaseDisabled = computed(() => isDisabled.value || (min.value !== undefined && (modelValue.value ?? 0) <= min.value));\nconst isIncreaseDisabled = computed(() => isDisabled.value || (max.value !== undefined && (modelValue.value ?? 0) >= max.value));\n\nfunction toFiniteNumber(value: unknown) {\n const numberValue = Number(value);\n return Number.isFinite(numberValue) ? numberValue : undefined;\n}\n\nfunction decrease() {\n if (!isDecreaseDisabled.value) {\n modelValue.value = Math.max(min.value ?? -Infinity, (modelValue.value ?? 0) - step.value);\n }\n}\n\nfunction increase() {\n if (!isIncreaseDisabled.value) {\n modelValue.value = Math.min(max.value ?? Infinity, (modelValue.value ?? 0) + step.value);\n }\n}\n\nfunction focus() {\n return inputNumberRef.value?.focus();\n}\n\nfunction blur() {\n return inputNumberRef.value?.blur();\n}\n\ndefineExpose({\n inputNumberRef,\n focus,\n blur,\n});\n</script>\n","import { ElMessage } from 'element-plus';\nimport type { MessageHandler } from 'element-plus';\n\nconst messageTypes = ['success', 'warning', 'info', 'error'] as const;\ntype MessageType = (typeof messageTypes)[number];\ntype MessageOptions = string | number | boolean | Record<string, any>;\ntype MessageFactory = ((options: MessageOptions) => MessageHandler) & Record<MessageType, (options: MessageOptions) => MessageHandler> & {\n closeAll: typeof ElMessage.closeAll;\n};\n\nfunction normalizeOptions(options: MessageOptions, type?: MessageType) {\n if (typeof options === 'string' || typeof options === 'number' || typeof options === 'boolean') {\n return {\n type,\n message: options,\n customClass: 'tt-message',\n };\n }\n\n return {\n ...options,\n type: type ?? options.type,\n customClass: ['tt-message', options.customClass].filter(Boolean).join(' '),\n };\n}\n\nconst Message = ((options: MessageOptions) => (ElMessage as any)(normalizeOptions(options))) as MessageFactory;\n\nmessageTypes.forEach(type => {\n Message[type] = (options: MessageOptions) => (ElMessage[type] as any)(normalizeOptions(options, type));\n});\n\nMessage.closeAll = ElMessage.closeAll;\n\nexport default Message;\n","<template>\n <component :is=\"tag\" class=\"tt-masonry\" :class=\"{ 'tt-masonry--auto': hasMinColumnWidth }\" :style=\"masonryStyle\" v-bind=\"$attrs\">\n <template v-if=\"items.length\">\n <component :is=\"itemTag\" v-for=\"(item, index) in items\" :key=\"getItemKey(item, index)\" class=\"tt-masonry__item\">\n <slot name=\"item\" :item=\"item\" :index=\"index\">{{ item }}</slot>\n </component>\n </template>\n <slot v-else />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nexport type MasonryItemKey = string | ((item: unknown, index: number) => string | number);\n\nconst props = withDefaults(\n defineProps<{\n items?: unknown[];\n columns?: number;\n minColumnWidth?: number | string;\n gap?: number | string;\n itemKey?: MasonryItemKey;\n tag?: string;\n itemTag?: string;\n }>(),\n {\n items: () => [],\n columns: 3,\n minColumnWidth: undefined,\n gap: 16,\n itemKey: undefined,\n tag: 'div',\n itemTag: 'div',\n },\n);\n\nconst masonryStyle = computed(() => ({\n '--tt-masonry-columns': props.minColumnWidth ? 'auto' : props.columns,\n '--tt-masonry-column-width': props.minColumnWidth\n ? (typeof props.minColumnWidth === 'number' ? `${props.minColumnWidth}px` : props.minColumnWidth)\n : 'auto',\n '--tt-masonry-gap': typeof props.gap === 'number' ? `${props.gap}px` : props.gap,\n}));\n\nconst hasMinColumnWidth = computed(() => Boolean(props.minColumnWidth));\n\nfunction getItemKey(item: unknown, index: number) {\n if (typeof props.itemKey === 'function') {\n return props.itemKey(item, index);\n }\n\n if (typeof props.itemKey === 'string' && item && typeof item === 'object' && props.itemKey in item) {\n return (item as Record<string, unknown>)[props.itemKey] as string | number;\n }\n\n return index;\n}\n\ndefineOptions({\n name: 'Masonry',\n});\n</script>\n","<template>\n <ElMenu ref=\"menuRef\" class=\"tt-menu\" :class=\"menuClass\" :mode=\"mode\" v-bind=\"$attrs\">\n <slot />\n </ElMenu>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { ElMenu } from 'element-plus';\n\nconst props = withDefaults(\n defineProps<{\n mode?: 'horizontal' | 'vertical';\n }>(),\n {\n mode: 'vertical',\n },\n);\n\nconst menuRef = ref<InstanceType<typeof ElMenu>>();\nconst menuClass = computed(() => ({\n 'tt-menu--horizontal': props.mode === 'horizontal',\n}));\n\nfunction open(...args: unknown[]) {\n return (menuRef.value as any)?.open(...args);\n}\n\nfunction close(...args: unknown[]) {\n return (menuRef.value as any)?.close(...args);\n}\n\nfunction handleResize(...args: unknown[]) {\n return (menuRef.value as any)?.handleResize?.(...args);\n}\n\ndefineOptions({\n name: 'Menu',\n});\n\ndefineExpose({\n menuRef,\n open,\n close,\n handleResize,\n});\n</script>\n","<template>\n <ElMenuItem ref=\"menuItemRef\" class=\"tt-menu-item\" :index=\"index\" v-bind=\"$attrs\">\n <slot />\n </ElMenuItem>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElMenuItem } from 'element-plus';\n\nconst props = defineProps<{\n index: string;\n}>();\n\nconst menuItemRef = ref<InstanceType<typeof ElMenuItem>>();\nconst { index } = props;\n\ndefineOptions({\n name: 'MenuItem',\n});\n\ndefineExpose({\n menuItemRef,\n});\n</script>\n","<template>\n <ElMenuItemGroup class=\"tt-menu-item-group\" v-bind=\"$attrs\">\n <template v-if=\"slots.title\" #title>\n <slot name=\"title\" />\n </template>\n <slot />\n </ElMenuItemGroup>\n</template>\n\n<script setup lang=\"ts\">\nimport { useSlots } from 'vue';\nimport { ElMenuItemGroup } from 'element-plus';\n\nconst slots = useSlots();\n\ndefineOptions({\n name: 'MenuItemGroup',\n});\n</script>\n","<template>\n <ElSubMenu ref=\"subMenuRef\" class=\"tt-sub-menu\" :index=\"index\" :popper-class=\"mergedPopperClass\" v-bind=\"$attrs\">\n <template v-if=\"slots.title\" #title>\n <slot name=\"title\" />\n </template>\n <slot />\n </ElSubMenu>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useSlots } from 'vue';\nimport { ElSubMenu } from 'element-plus';\n\nconst props = withDefaults(defineProps<{\n index: string;\n popperClass?: string;\n}>(), {\n popperClass: '',\n});\n\nconst slots = useSlots();\nconst subMenuRef = ref<InstanceType<typeof ElSubMenu>>();\nconst { index } = props;\nconst mergedPopperClass = computed(() => ['tt-menu-popper', props.popperClass].filter(Boolean).join(' '));\n\ndefineOptions({\n name: 'SubMenu',\n});\n\ndefineExpose({\n subMenuRef,\n});\n</script>\n","<template>\n <span class=\"tt-money\" :class=\"moneyClass\" v-bind=\"$attrs\">\n <span v-if=\"prefix\" class=\"tt-money__prefix\">{{ prefix }}</span>\n <span class=\"tt-money__value\">{{ displayValue }}</span>\n <span v-if=\"suffix\" class=\"tt-money__suffix\">{{ suffix }}</span>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nexport type MoneyValue = number | string | null | undefined;\n\nconst props = withDefaults(\n defineProps<{\n value?: MoneyValue;\n currency?: string;\n locale?: string;\n precision?: number;\n symbol?: string;\n prefix?: string;\n suffix?: string;\n showSign?: boolean;\n placeholder?: string;\n negativeType?: 'minus' | 'parentheses';\n colorByValue?: boolean;\n strong?: boolean;\n }>(),\n {\n value: undefined,\n currency: 'CNY',\n locale: 'zh-CN',\n precision: undefined,\n symbol: undefined,\n prefix: '',\n suffix: '',\n showSign: false,\n placeholder: '--',\n negativeType: 'minus',\n colorByValue: false,\n strong: false,\n },\n);\n\nconst numericValue = computed(() => {\n if (props.value === null || props.value === undefined || props.value === '') {\n return null;\n }\n\n const value = Number(props.value);\n return Number.isFinite(value) ? value : null;\n});\n\nconst displayValue = computed(() => {\n const value = numericValue.value;\n\n if (value === null) {\n return props.placeholder;\n }\n\n const isNegative = value < 0;\n const formatValue = props.negativeType === 'parentheses' ? Math.abs(value) : value;\n const options: Intl.NumberFormatOptions = {\n minimumFractionDigits: props.precision,\n maximumFractionDigits: props.precision,\n signDisplay: props.showSign ? 'exceptZero' : 'auto',\n };\n\n if (!props.symbol) {\n options.style = 'currency';\n options.currency = props.currency;\n }\n\n const formatted = new Intl.NumberFormat(props.locale, options).format(formatValue);\n const withSymbol = props.symbol ? `${props.symbol}${formatted}` : formatted;\n\n if (props.negativeType === 'parentheses' && isNegative) {\n return `(${withSymbol})`;\n }\n\n return withSymbol;\n});\n\nconst moneyClass = computed(() => ({\n 'is-empty': numericValue.value === null,\n 'is-positive': props.colorByValue && numericValue.value !== null && numericValue.value > 0,\n 'is-negative': props.colorByValue && numericValue.value !== null && numericValue.value < 0,\n 'is-strong': props.strong,\n}));\n\ndefineOptions({\n name: 'Money',\n});\n</script>\n","import { ElNotification } from 'element-plus';\nimport type { NotificationHandle } from 'element-plus';\n\nconst notificationTypes = ['success', 'warning', 'info', 'error'] as const;\ntype NotificationType = (typeof notificationTypes)[number];\ntype NotificationOptions = string | number | boolean | Record<string, any>;\ntype NotificationFactory = ((options: NotificationOptions) => NotificationHandle) & Record<NotificationType, (options: NotificationOptions) => NotificationHandle> & {\n closeAll: typeof ElNotification.closeAll;\n};\n\nfunction normalizeOptions(options: NotificationOptions, type?: NotificationType) {\n if (typeof options === 'string' || typeof options === 'number' || typeof options === 'boolean') {\n return {\n type,\n message: String(options),\n customClass: 'tt-notification',\n };\n }\n\n return {\n ...options,\n type: type ?? options.type,\n customClass: ['tt-notification', options.customClass].filter(Boolean).join(' '),\n };\n}\n\nconst Notification = ((options: NotificationOptions) => (ElNotification as any)(normalizeOptions(options))) as NotificationFactory;\n\nnotificationTypes.forEach(type => {\n Notification[type] = (options: NotificationOptions) => (ElNotification[type] as any)(normalizeOptions(options, type));\n});\n\nNotification.closeAll = ElNotification.closeAll;\n\nexport default Notification;\n","<template>\n <ElPagination class=\"tt-pagination\" v-bind=\"paginationAttrs\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue';\nimport { ElPagination } from 'element-plus';\nimport type { PaginationProps } from 'element-plus';\n\nconst props = defineProps<Partial<PaginationProps>>();\nconst attrs = useAttrs();\nconst paginationAttrs = computed(() => ({ ...props, ...attrs }));\n\ndefineOptions({\n name: 'Pagination',\n inheritAttrs: false,\n});\n</script>\n","<template>\n <div class=\"tt-plate\" :class=\"plateClass\" v-bind=\"$attrs\">\n <ElPopover\n :visible=\"popoverVisible\"\n trigger=\"click\"\n :width=\"360\"\n :placement=\"popoverToTop ? 'top-start' : 'bottom-start'\"\n :teleported=\"false\"\n popper-class=\"tt-plate-popper\"\n @update:visible=\"handlePopoverVisible\"\n >\n <template #reference>\n <div\n class=\"tt-plate__box\"\n :class=\"{ 'is-disabled': disabled, 'is-focused': focused }\"\n tabindex=\"0\"\n role=\"textbox\"\n :aria-label=\"'车牌号'\"\n :aria-disabled=\"disabled\"\n @click=\"focusAt()\"\n @keydown=\"handleKeydown\"\n @paste=\"handlePaste\"\n >\n <span v-for=\"(_, index) in plateLength\" :key=\"index\" class=\"tt-plate__char\" :class=\"{ 'is-active': focused && cursor === index, 'is-new-energy': index === plateLength - 1 && plateLength === 8 }\" @click.stop=\"focusAt(index)\">\n {{ displayChars[index] }}\n </span>\n </div>\n </template>\n\n <div class=\"tt-plate__keyboard\" @mousedown.prevent>\n <template v-if=\"cursor === 0\">\n <span class=\"tt-plate__keyboard-title\">选择省份简称</span>\n <div class=\"tt-plate__keyboard-grid tt-plate__keyboard-grid--province\">\n <button v-for=\"brief in availableBriefs\" :key=\"brief\" type=\"button\" :class=\"{ 'is-selected': value.startsWith(brief), 'is-special': brief.length > 1 }\" @click=\"selectProvince(brief)\">{{ brief }}</button>\n </div>\n </template>\n <template v-else>\n <span class=\"tt-plate__keyboard-title\">{{ keyboardMode === 'en' ? '输入字母或数字' : '输入省份或特殊字符' }}</span>\n <div class=\"tt-plate__keyboard-grid tt-plate__keyboard-grid--code\">\n <div v-for=\"(row, rowIndex) in keyboardRows\" :key=\"rowIndex\" class=\"tt-plate__keyboard-row\">\n <button\n v-for=\"key in row\"\n :key=\"key\"\n type=\"button\"\n :disabled=\"isKeyboardKeyDisabled(key)\"\n :class=\"{ 'is-disabled': isKeyboardKeyDisabled(key) }\"\n @click=\"handleKeyboardKey(key)\"\n >{{ key }}</button>\n </div>\n </div>\n </template>\n </div>\n </ElPopover>\n\n <button v-if=\"value && !disabled\" class=\"tt-plate__clear\" type=\"button\" aria-label=\"清空车牌\" @click=\"clear\">×</button>\n <button v-if=\"copy && value\" class=\"tt-plate__copy\" type=\"button\" aria-label=\"复制车牌号\" @click=\"copyValue\">复制</button>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport { ElPopover } from 'element-plus';\n\nexport type PlateType = 'search' | 'input' | 'single-input' | 'default' | 'new-energy' | 'temporary' | 'police';\nexport type PlateSize = 'small' | 'default' | 'large';\nexport type PlateColor = 'blue' | 'green' | 'yellow' | 'yellow-green' | 'white' | 'black';\n\nconst provinceBriefs = ['京', '冀', '津', '豫', '鲁', '贵', '渝', '云', '辽', '沪', '黑', '湘', '皖', '新', '苏', '浙', '赣', '鄂', '桂', '甘', '晋', '蒙', '陕', '吉', '闽', '粤', '青', '藏', '川', '宁', '琼', '使', '电', 'U', '无牌', '未登记'];\nconst disabledKeyboardKeys = ['I', 'O'];\nconst keyboardLayouts = {\n en: [\n ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'],\n ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'],\n ['字', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '⌫'],\n ],\n zh: [\n ['京', '津', '冀', '辽', '蒙', '鲁', '豫', '贵'],\n ['渝', '云', '沪', '黑', '湘', '皖', '新', '苏'],\n ['浙', '赣', '鄂', '桂', '甘', '晋', '陕', '吉'],\n ['闽', '粤', '青', '藏', '川', '宁', '琼', '台'],\n ['领', '警', '学', '挂', '港', '澳', '试', '超', '使'],\n ['EN', '无牌', '非机动车', '电', 'U', '⌫'],\n ],\n} as const;\n\nconst props = withDefaults(defineProps<{\n value?: string;\n type?: PlateType;\n size?: PlateSize;\n disabled?: boolean;\n masked?: boolean;\n placeholder?: string;\n hideBrief?: string[];\n canInputKeys?: string[];\n plateColorValueFromOutside?: number;\n copy?: boolean;\n popoverToTop?: boolean;\n}>(), {\n value: '',\n type: 'search',\n size: 'default',\n disabled: false,\n masked: false,\n placeholder: '未录入',\n hideBrief: () => [],\n canInputKeys: () => [],\n copy: true,\n popoverToTop: false,\n});\n\nconst modelValue = defineModel<string>();\nconst emit = defineEmits<{\n change: [value: string];\n blur: [];\n 'color-options-change': [values: number[]];\n keypress: [event: KeyboardEvent];\n copy: [value: string];\n}>();\n\nconst innerValue = ref(normalize(props.value));\nconst focused = ref(false);\nconst cursor = ref(0);\nconst keyboardMode = ref<keyof typeof keyboardLayouts>('en');\nconst value = computed(() => normalize(modelValue.value ?? innerValue.value));\nconst isVirtualPlate = computed(() => value.value.startsWith('U') || value.value.startsWith('电'));\nconst plateLength = computed(() => isVirtualPlate.value ? 13 : 8);\ntype PlateInputMode = 'search' | 'input' | 'single-input';\nconst mode = computed<PlateInputMode>(() => ['search', 'input', 'single-input'].includes(props.type) ? props.type as PlateInputMode : 'search');\nconst availableBriefs = computed(() => provinceBriefs.filter(item => !props.hideBrief.includes(item)));\nconst plateColor = computed<PlateColor>(() => resolvePlateColor(value.value, mode.value, props.plateColorValueFromOutside, props.type));\nconst colorOptions = computed(() => resolveColorOptions(value.value, mode.value));\nconst popoverVisible = computed(() => focused.value && !props.disabled);\nconst keyboardRows = computed(() => keyboardLayouts[keyboardMode.value]);\nconst displayChars = computed(() => {\n const chars = Array.from(value.value.padEnd(plateLength.value, ' ').slice(0, plateLength.value));\n if (props.masked && value.value.length > 4) {\n for (let index = 2; index < Math.min(value.value.length - 2, chars.length); index += 1) chars[index] = '*';\n }\n return chars;\n});\nconst plateClass = computed(() => [\n `tt-plate--${props.size}`,\n `tt-plate--${plateColor.value}`,\n { 'has-dot': plateLength.value === 8, 'is-empty': !value.value, 'popover-to-top': props.popoverToTop },\n]);\n\nwatch(colorOptions, options => emit('color-options-change', options), { immediate: true });\nwatch(plateLength, length => { cursor.value = Math.min(cursor.value, length - 1); });\nwatch(() => props.value, nextValue => {\n if (modelValue.value === undefined) innerValue.value = normalize(nextValue);\n});\n\nfunction normalize(nextValue: string) {\n return nextValue.replace(/[\\s·•・]/g, '').toUpperCase();\n}\n\nfunction updateValue(nextValue: string) {\n const normalized = normalize(nextValue).slice(0, plateLength.value);\n innerValue.value = normalized;\n modelValue.value = normalized;\n emit('change', normalized);\n}\n\nfunction focusAt(index = Math.min(value.value.length, plateLength.value - 1)) {\n if (props.disabled) return;\n cursor.value = Math.max(0, Math.min(index, plateLength.value - 1));\n focused.value = true;\n}\n\nfunction handlePopoverVisible(nextVisible: boolean) {\n focused.value = nextVisible;\n if (!nextVisible) emit('blur');\n}\n\nfunction insertKey(key: string) {\n if (props.disabled) return;\n const nextValue = `${value.value.slice(0, cursor.value)}${key}${value.value.slice(cursor.value + 1)}`;\n updateValue(nextValue);\n cursor.value = Math.min(cursor.value + 1, plateLength.value - 1);\n}\n\nfunction isKeyboardKeyDisabled(key: string) {\n return disabledKeyboardKeys.includes(key);\n}\n\nfunction handleKeyboardKey(key: string) {\n if (key === '字') {\n keyboardMode.value = 'zh';\n return;\n }\n if (key === 'EN') {\n keyboardMode.value = 'en';\n return;\n }\n if (key === '⌫') {\n removeKey();\n return;\n }\n if (!isKeyboardKeyDisabled(key)) insertKey(key);\n}\n\nfunction removeKey() {\n if (props.disabled) return;\n const target = value.value[cursor.value] ? cursor.value : Math.max(0, cursor.value - 1);\n updateValue(`${value.value.slice(0, target)}${value.value.slice(target + 1)}`);\n cursor.value = target;\n}\n\nfunction selectProvince(brief: string) {\n const oldBriefLength = value.value.startsWith('未登记') ? 3 : value.value.startsWith('无牌') ? 2 : 1;\n const suffix = value.value.slice(oldBriefLength);\n updateValue(props.canInputKeys.includes(brief) || !['无牌', '未登记'].includes(brief) ? `${brief}${suffix}` : brief);\n cursor.value = Math.min(brief.length, plateLength.value - 1);\n}\n\nfunction handleKeydown(event: KeyboardEvent) {\n if (props.disabled) return;\n if (mode.value === 'search') emit('keypress', event);\n if (event.key === 'ArrowLeft') { event.preventDefault(); cursor.value = Math.max(0, cursor.value - 1); return; }\n if (event.key === 'ArrowRight') { event.preventDefault(); cursor.value = Math.min(plateLength.value - 1, cursor.value + 1); return; }\n if (event.key === 'Backspace') { event.preventDefault(); removeKey(); return; }\n if (/^[A-Za-z0-9\\u4e00-\\u9fa5]$/.test(event.key)) {\n event.preventDefault();\n const key = event.key.toUpperCase();\n if (!isKeyboardKeyDisabled(key)) insertKey(key);\n }\n}\n\nfunction handlePaste(event: ClipboardEvent) {\n if (props.disabled) return;\n event.preventDefault();\n const pasted = normalize(event.clipboardData?.getData('text') || '');\n updateValue(`${value.value.slice(0, cursor.value)}${pasted}${value.value.slice(cursor.value)}`);\n cursor.value = Math.min(cursor.value + pasted.length, plateLength.value - 1);\n}\n\nfunction clear() {\n updateValue('');\n cursor.value = 0;\n focused.value = true;\n}\n\nasync function copyValue() {\n if (navigator.clipboard?.writeText) await navigator.clipboard.writeText(value.value);\n emit('copy', value.value);\n}\n\nfunction resolveColorOptions(currentValue: string, currentMode: PlateInputMode) {\n if (currentMode !== 'input') return [];\n if (/^[A-TV-Z0-9]/.test(currentValue)) return [2, 3];\n if (currentValue.startsWith('U') || currentValue.startsWith('电')) return [1, 2, 3];\n if (provinceBriefs.includes(currentValue[0] || '')) return currentValue.length >= 8 && /^[A-Z]$/.test(currentValue[2] || '') ? [5] : currentValue.length >= 8 && /^[A-Z]$/.test(currentValue[7] || '') ? [6] : [1, 0, 4, 2, 3];\n return [];\n}\n\nfunction resolvePlateColor(currentValue: string, currentMode: PlateInputMode, externalColor: number | undefined, legacyType: PlateType): PlateColor {\n if (legacyType === 'new-energy') return 'green';\n if (legacyType === 'temporary') return 'yellow';\n if (legacyType === 'police') return 'white';\n const colorMap: Record<number, PlateColor> = { 0: 'yellow', 1: 'blue', 2: 'white', 3: 'black', 4: 'yellow', 5: 'green', 6: 'yellow-green' };\n if (currentMode === 'input' && externalColor !== undefined && colorMap[externalColor]) return colorMap[externalColor];\n if (currentMode === 'search') return currentValue.length === 8 ? 'green' : 'blue';\n if (/^[A-TV-Z0-9]/.test(currentValue)) return currentMode === 'single-input' ? 'white' : 'black';\n if (currentValue.startsWith('U') || currentValue.startsWith('电')) return 'blue';\n if (currentValue.length >= 8 && /^[A-Z]$/.test(currentValue[2] || '')) return 'green';\n if (currentValue.length >= 8 && /^[A-Z]$/.test(currentValue[7] || '')) return 'yellow-green';\n return 'blue';\n}\n\ndefineOptions({ name: 'Plate', inheritAttrs: false });\n</script>\n","<template>\n <ElPopconfirm :width=\"props.width ?? 'fit-content'\" :popper-class=\"mergedPopperClass\" v-bind=\"$attrs\">\n <template v-if=\"slots.reference\" #reference>\n <slot name=\"reference\" />\n </template>\n <template v-if=\"slots.actions\" #actions=\"slotProps\">\n <slot name=\"actions\" v-bind=\"slotProps\" />\n </template>\n </ElPopconfirm>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue';\nimport { ElPopconfirm } from 'element-plus';\n\nconst props = withDefaults(\n defineProps<{\n popperClass?: string;\n width?: number | string;\n }>(),\n {\n popperClass: '',\n }\n);\n\nconst slots = useSlots();\nconst mergedPopperClass = computed(() => ['tt-popconfirm', props.popperClass].filter(Boolean).join(' '));\n\ndefineOptions({\n name: 'Popconfirm',\n});\n</script>\n","<template>\n <ElPopover :popper-class=\"mergedPopperClass\" v-bind=\"$attrs\">\n <slot />\n <template v-if=\"slots.reference\" #reference>\n <slot name=\"reference\" />\n </template>\n </ElPopover>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue';\nimport { ElPopover } from 'element-plus';\n\nconst props = withDefaults(\n defineProps<{\n popperClass?: string;\n }>(),\n {\n popperClass: '',\n }\n);\n\nconst slots = useSlots();\nconst mergedPopperClass = computed(() => ['tt-popover', props.popperClass].filter(Boolean).join(' '));\n\ndefineOptions({\n name: 'Popover',\n});\n</script>\n","<template>\n <ElForm ref=\"queryFormRef\" class=\"tt-query-form\" :inline=\"true\" v-bind=\"$attrs\" @submit.prevent>\n <div class=\"tt-query-form__content\">\n <slot />\n </div>\n <div v-if=\"showActions || slots.actions\" class=\"tt-query-form__actions\">\n <slot name=\"actions\">\n <ElButton class=\"tt-button\" @click=\"emit('reset')\">{{ resetText }}</ElButton>\n <ElButton class=\"tt-button\" type=\"primary\" @click=\"emit('search')\">{{ searchText }}</ElButton>\n </slot>\n </div>\n </ElForm>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElButton, ElForm } from 'element-plus';\n\nwithDefaults(\n defineProps<{\n showActions?: boolean;\n searchText?: string;\n resetText?: string;\n }>(),\n {\n showActions: true,\n searchText: '查询',\n resetText: '重置',\n },\n);\n\nconst emit = defineEmits<{\n search: [];\n reset: [];\n}>();\n\nconst slots = useSlots();\nconst queryFormRef = ref<InstanceType<typeof ElForm>>();\n\ndefineOptions({\n name: 'QueryForm',\n});\n\ndefineExpose({\n queryFormRef,\n});\n</script>\n","<template>\n <div class=\"tt-qrcode\" :class=\"qrcodeClass\" :style=\"qrcodeStyle\" v-bind=\"$attrs\">\n <div class=\"tt-qrcode__canvas\">\n <img v-if=\"dataUrl && status === 'active'\" :src=\"dataUrl\" :alt=\"altText\" />\n <div v-else-if=\"status === 'loading'\" class=\"tt-qrcode__loading\">\n <slot name=\"loading\">生成中</slot>\n </div>\n <div v-else class=\"tt-qrcode__expired\">\n <slot name=\"expired\">\n <span>二维码已过期</span>\n <button type=\"button\" @click=\"emit('refresh')\">{{ refreshText }}</button>\n </slot>\n </div>\n <span v-if=\"slots.icon && status === 'active'\" class=\"tt-qrcode__icon\">\n <slot name=\"icon\" />\n </span>\n </div>\n <div v-if=\"description || slots.description\" class=\"tt-qrcode__description\">\n <slot name=\"description\">{{ description }}</slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useSlots, watch } from 'vue';\nimport * as QRCodeLib from 'qrcode';\n\nexport type QRCodeStatus = 'active' | 'expired' | 'loading';\nexport type QRCodeLevel = 'L' | 'M' | 'Q' | 'H';\n\nconst props = withDefaults(\n defineProps<{\n value?: string;\n size?: number;\n level?: QRCodeLevel;\n status?: QRCodeStatus;\n bordered?: boolean;\n description?: string;\n refreshText?: string;\n alt?: string;\n }>(),\n {\n value: '',\n size: 156,\n level: 'M',\n status: 'active',\n bordered: true,\n description: '',\n refreshText: '刷新',\n alt: '',\n },\n);\n\nconst emit = defineEmits<{\n refresh: [];\n}>();\n\nconst slots = useSlots();\nconst dataUrl = ref('');\nconst altText = computed(() => props.alt || `QRCode: ${props.value}`);\nconst qrcodeClass = computed(() => ({\n 'is-bordered': props.bordered,\n 'is-expired': props.status === 'expired',\n 'is-loading': props.status === 'loading',\n}));\nconst qrcodeStyle = computed(() => ({\n '--tt-qrcode-size': `${props.size}px`,\n}));\n\nwatch(\n () => [props.value, props.size, props.level] as const,\n async ([value, size, level]) => {\n if (!value) {\n dataUrl.value = '';\n return;\n }\n\n dataUrl.value = await QRCodeLib.toDataURL(value, {\n width: size,\n margin: 1,\n errorCorrectionLevel: level,\n color: {\n dark: '#081126',\n light: '#ffffff',\n },\n });\n },\n { immediate: true },\n);\n\ndefineOptions({\n name: 'QRCode',\n});\n</script>\n","<template>\n <ElRadio v-model=\"modelValue\" class=\"tt-radio\" v-bind=\"$attrs\">\n <slot />\n </ElRadio>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElRadio } from 'element-plus';\n\nexport type RadioValue = string | number | boolean;\n\ndefineOptions({\n name: 'Radio',\n});\n\nconst modelValue = defineModel<RadioValue>();\n</script>\n","<template>\n <ElRadioButton class=\"tt-radio-button\" v-bind=\"$attrs\">\n <slot />\n </ElRadioButton>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElRadioButton } from 'element-plus';\n\ndefineOptions({\n name: 'RadioButton',\n});\n</script>\n","<template>\n <ElRadioGroup v-model=\"modelValue\" class=\"tt-radio-group\" v-bind=\"$attrs\">\n <slot />\n </ElRadioGroup>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElRadioGroup } from 'element-plus';\nimport type { RadioValue } from './Radio.vue';\n\ndefineOptions({\n name: 'RadioGroup',\n});\n\nconst modelValue = defineModel<RadioValue>();\n</script>\n","<template>\n <ElRate ref=\"rateRef\" v-model=\"modelValue\" class=\"tt-rate\" v-bind=\"$attrs\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElRate } from 'element-plus';\n\nexport type RateValue = number;\n\nconst modelValue = defineModel<RateValue>();\nconst rateRef = ref<InstanceType<typeof ElRate>>();\n\ndefineOptions({\n name: 'Rate',\n});\n\ndefineExpose({\n rateRef,\n});\n</script>\n","<template>\n <ElResult ref=\"resultRef\" class=\"tt-result\" v-bind=\"$attrs\">\n <template v-if=\"slots.icon\" #icon>\n <slot name=\"icon\" />\n </template>\n <template v-if=\"slots.title\" #title>\n <slot name=\"title\" />\n </template>\n <template v-if=\"slots.subTitle\" #sub-title>\n <slot name=\"subTitle\" />\n </template>\n <template v-if=\"slots.extra\" #extra>\n <slot name=\"extra\" />\n </template>\n </ElResult>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElResult } from 'element-plus';\n\nconst slots = useSlots();\nconst resultRef = ref<InstanceType<typeof ElResult>>();\n\ndefineOptions({\n name: 'Result',\n});\n\ndefineExpose({\n resultRef,\n});\n</script>\n","<template>\n <section\n class=\"tt-rich-text\"\n :class=\"{ 'is-disabled': disabled, 'is-readonly': readonly }\"\n :style=\"{ '--tt-rich-text-min-height': minHeightValue }\"\n v-bind=\"$attrs\"\n >\n <component\n :is=\"ToolbarComp\"\n v-if=\"!readonly && ToolbarComp\"\n class=\"tt-rich-text__toolbar\"\n :editor=\"editorRef\"\n :default-config=\"toolbarConfig\"\n mode=\"default\"\n />\n <component\n :is=\"EditorComp\"\n v-if=\"EditorComp\"\n v-model=\"modelValue\"\n class=\"tt-rich-text__editor\"\n :default-config=\"editorConfig\"\n mode=\"default\"\n @on-created=\"handleCreated\"\n @on-change=\"handleChange\"\n @on-focus=\"emit('focus', $event)\"\n @on-blur=\"emit('blur', $event)\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, markRaw, onBeforeUnmount, onMounted, shallowRef, watch, type Component } from 'vue';\nimport type { IDomEditor, IEditorConfig, IToolbarConfig } from '@wangeditor/editor';\n// wangEditor 是浏览器专属的重型依赖(在 Node/SSR 环境求值会因 global.navigator 只读而崩溃),\n// 组件挂载后再动态加载,包入口导入不触发其求值,SSR/Node 环境安全。\nconst EditorComp = shallowRef<Component | null>(null);\nconst ToolbarComp = shallowRef<Component | null>(null);\nonMounted(() => {\n void import('@wangeditor/editor-for-vue').then(mod => {\n EditorComp.value = markRaw(mod.Editor);\n ToolbarComp.value = markRaw(mod.Toolbar);\n });\n});\n// wangEditor 样式随 RichText 组件加载,不进入全局 style 入口,避免未使用富文本的宿主背体积\nimport '@wangeditor/editor/dist/css/style.css';\n\nexport type RichTextTool = 'bold' | 'italic' | 'underline' | 'strike' | 'heading1' | 'heading2' | 'unorderedList' | 'orderedList' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'link' | 'removeFormat' | 'divider';\n\nconst toolbarKeyMap: Record<RichTextTool, string> = {\n bold: 'bold', italic: 'italic', underline: 'underline', strike: 'through',\n heading1: 'headerSelect', heading2: 'headerSelect',\n unorderedList: 'bulletedList', orderedList: 'numberedList',\n alignLeft: 'justifyLeft', alignCenter: 'justifyCenter', alignRight: 'justifyRight',\n link: 'insertLink', removeFormat: 'clearStyle', divider: '|',\n};\n\nconst props = withDefaults(defineProps<{\n placeholder?: string;\n disabled?: boolean;\n readonly?: boolean;\n minHeight?: number | string;\n toolbar?: RichTextTool[];\n}>(), {\n placeholder: '请输入内容...',\n disabled: false,\n readonly: false,\n minHeight: 200,\n});\n\nconst modelValue = defineModel<string>({ default: '' });\nconst emit = defineEmits<{\n change: [value: string];\n focus: [editor: IDomEditor];\n blur: [editor: IDomEditor];\n clear: [];\n}>();\n\nconst editorRef = shallowRef<IDomEditor | null>(null);\nconst minHeightValue = computed(() => typeof props.minHeight === 'number' ? `${props.minHeight}px` : props.minHeight);\nconst editorConfig = computed<Partial<IEditorConfig>>(() => ({ placeholder: props.placeholder }));\nconst toolbarConfig = computed<Partial<IToolbarConfig>>(() => {\n if (!props.toolbar) return {};\n const toolbarKeys = props.toolbar\n .map(tool => toolbarKeyMap[tool])\n .filter((tool, index, tools) => tool === '|' || tools.indexOf(tool) === index);\n return { toolbarKeys };\n});\n\nfunction syncReadonlyState() {\n if (!editorRef.value) return;\n if (props.disabled || props.readonly) editorRef.value.disable();\n else editorRef.value.enable();\n}\n\nfunction handleCreated(editor: IDomEditor) {\n editorRef.value = editor;\n syncReadonlyState();\n}\n\nfunction handleChange(editor: IDomEditor) {\n const value = editor.getHtml();\n if (modelValue.value !== value) modelValue.value = value;\n emit('change', value);\n}\n\nfunction clear() {\n if (props.disabled || props.readonly || !editorRef.value) return;\n editorRef.value.clear();\n emit('clear');\n}\n\nfunction focus() { editorRef.value?.focus(); }\nfunction blur() { editorRef.value?.blur(); }\nfunction getHtml() { return editorRef.value?.getHtml() ?? modelValue.value; }\nfunction setHtml(value: string) {\n if (editorRef.value) editorRef.value.setHtml(value);\n else modelValue.value = value;\n}\n\nwatch(() => [props.disabled, props.readonly], syncReadonlyState);\nonBeforeUnmount(() => editorRef.value?.destroy());\n\ndefineOptions({ name: 'RichText', inheritAttrs: false });\ndefineExpose({ blur, clear, focus, getHtml, setHtml });\n</script>\n","<template>\n <QueryForm class=\"tt-search-filter\" v-bind=\"$attrs\">\n <slot />\n <template v-if=\"slots.actions\" #actions>\n <slot name=\"actions\" />\n </template>\n </QueryForm>\n</template>\n\n<script setup lang=\"ts\">\nimport { useSlots } from 'vue';\nimport QueryForm from '../QueryForm';\n\nconst slots = useSlots();\n\ndefineOptions({\n name: 'SearchFilter',\n});\n</script>\n","<template>\n <ElSelect\n ref=\"selectRef\"\n v-model=\"modelValue\"\n class=\"tt-select\"\n :popper-class=\"mergedPopperClass\"\n v-bind=\"selectAttrs\"\n @change=\"emit('change', $event)\"\n >\n <template v-if=\"searchable\" #header>\n <div class=\"tt-select__search\">\n <ElInput v-model=\"searchQuery\" clearable placeholder=\"搜索选项\" @click.stop />\n </div>\n </template>\n\n <slot v-if=\"$slots.default\" />\n <template v-else>\n <template v-for=\"option in filteredOptions\" :key=\"getOptionKey(option)\">\n <ElOption\n v-if=\"isSelectOption(option)\"\n :label=\"option.label\"\n :value=\"option.value\"\n :disabled=\"option.disabled\"\n />\n <ElOptionGroup\n v-else\n :label=\"option.label\"\n :disabled=\"option.disabled\"\n >\n <ElOption\n v-for=\"child in option.options\"\n :key=\"getOptionKey(child)\"\n :label=\"child.label\"\n :value=\"child.value\"\n :disabled=\"child.disabled\"\n />\n </ElOptionGroup>\n </template>\n </template>\n\n <template v-if=\"$slots.footer || useSelectAll\" #footer>\n <div class=\"tt-select__footer\" @mouseenter=\"clearHoveringOption\">\n <slot name=\"footer\" />\n <div v-if=\"useSelectAll\" class=\"tt-select__select-all\" @mousedown.stop @click.stop>\n <ElCheckbox\n :model-value=\"allSelected\"\n :indeterminate=\"isIndeterminate\"\n :disabled=\"selectableOptionValues.length === 0\"\n @update:model-value=\"toggleSelectAll\"\n >\n 全选\n </ElCheckbox>\n </div>\n </div>\n </template>\n </ElSelect>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue';\nimport { ElCheckbox, ElInput, ElOption, ElOptionGroup, ElSelect } from 'element-plus';\nimport type { SelectInstance, SelectProps } from 'element-plus';\n\nexport type SelectValue = string | number | boolean;\n\nexport interface SelectOption {\n label: string;\n value: SelectValue;\n disabled?: boolean;\n}\n\nexport interface SelectOptionGroup {\n label: string;\n options: SelectOption[];\n disabled?: boolean;\n}\n\nexport type SelectOptionItem = SelectOption | SelectOptionGroup;\n\nconst props = withDefaults(defineProps<{\n /** 多选时在下拉面板底部显示全选操作。 */\n showSelectAll?: boolean;\n /** 使用 TT 自定义下拉搜索头;Element Plus 原生 `filterable` 仍可通过属性透传。 */\n searchable?: boolean;\n /** 无默认插槽内容时渲染的选项列表。 */\n options?: SelectOptionItem[];\n popperClass?: string;\n} & Partial<Pick<SelectProps, 'placeholder' | 'multiple' | 'clearable'>>>(), {\n showSelectAll: false,\n searchable: false,\n options: () => [],\n popperClass: '',\n});\nconst emit = defineEmits<{ change: [value: SelectValue | SelectValue[] | undefined] }>();\nconst attrs = useAttrs();\nconst modelValue = defineModel<SelectValue | SelectValue[]>();\nconst selectRef = ref<SelectInstance>();\nconst searchQuery = ref('');\nconst searchable = computed(() => props.searchable === true);\n\nconst selectAttrs = computed(() => {\n const { popperClass: _popperClass, options: _options, searchable: _searchable, ...rest } = attrs;\n // placeholder/multiple/clearable 已声明为 props,需显式回传给 ElSelect\n return {\n ...rest,\n placeholder: props.placeholder,\n multiple: props.multiple,\n clearable: props.clearable,\n };\n});\nconst mergedPopperClass = computed(() => ['tt-select-popper', props.popperClass, attrs.popperClass].filter(Boolean).join(' '));\nconst filteredOptions = computed<SelectOptionItem[]>(() => {\n const keyword = searchQuery.value.trim().toLocaleLowerCase();\n if (!keyword) {\n return props.options;\n }\n\n return props.options.flatMap<SelectOptionItem>(option => {\n if (isSelectOption(option)) {\n return option.label.toLocaleLowerCase().includes(keyword) ? [option] : [];\n }\n\n const children = option.options.filter(child => child.label.toLocaleLowerCase().includes(keyword));\n return children.length > 0 ? [{ ...option, options: children }] : [];\n });\n});\nconst isMultiple = computed(() => props.multiple === true);\nconst useSelectAll = computed(() => props.showSelectAll && isMultiple.value);\nconst selectedValues = computed(() => modelValue.value === undefined || modelValue.value === null\n ? [] as SelectValue[]\n : (Array.isArray(modelValue.value) ? modelValue.value : [modelValue.value]));\nconst selectableOptionValues = computed(() => collectSelectableValues(props.options));\nconst allSelected = computed(() => selectableOptionValues.value.length > 0\n && selectableOptionValues.value.every(value => selectedValues.value.includes(value)));\nconst isIndeterminate = computed(() => !allSelected.value\n && selectableOptionValues.value.some(value => selectedValues.value.includes(value)));\n\nfunction collectSelectableValues(options: unknown): SelectValue[] {\n if (!Array.isArray(options)) {\n return [];\n }\n\n return options.flatMap(option => {\n if (isSelectOption(option)) {\n return option.disabled ? [] : [option.value];\n }\n\n return option.disabled ? [] : collectSelectableValues(option.options);\n });\n}\n\nfunction isSelectOption(option: unknown): option is SelectOption {\n if (!option || typeof option !== 'object') {\n return false;\n }\n\n const record = option as Record<string, unknown>;\n return 'value' in record && !Array.isArray(record.options);\n}\n\nfunction getOptionKey(option: SelectOptionItem | SelectOption) {\n if (isSelectOption(option)) {\n return `option-${typeof option.value}-${String(option.value)}`;\n }\n\n return `group-${option.label}`;\n}\n\nfunction clearHoveringOption() {\n const select = selectRef.value as SelectInstance & { states?: { hoveringIndex: number } };\n if (select?.states) {\n select.states.hoveringIndex = -1;\n }\n}\n\nfunction toggleSelectAll() {\n const nextValue = allSelected.value ? [] : [...selectableOptionValues.value];\n modelValue.value = nextValue;\n emit('change', nextValue);\n}\n\nfunction focus() {\n return selectRef.value?.focus();\n}\n\nfunction blur() {\n return selectRef.value?.blur();\n}\n\ndefineOptions({\n name: 'Select',\n inheritAttrs: false,\n});\n\ndefineExpose({\n selectRef,\n focus,\n blur,\n});\n</script>\n","<template>\n <ElSegmented ref=\"segmentedRef\" v-model=\"modelValue\" class=\"tt-segmented\" v-bind=\"$attrs\">\n <template v-if=\"slots.default\" #default=\"slotProps\">\n <slot v-bind=\"slotProps\" />\n </template>\n </ElSegmented>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElSegmented } from 'element-plus';\n\nexport type SegmentedValue = string | number | boolean;\n\nconst slots = useSlots();\nconst modelValue = defineModel<SegmentedValue>();\nconst segmentedRef = ref<unknown>();\n\ndefineOptions({\n name: 'Segmented',\n});\n\ndefineExpose({\n segmentedRef,\n});\n</script>\n","<template>\n <ElSkeleton ref=\"skeletonRef\" class=\"tt-skeleton\" v-bind=\"$attrs\">\n <template v-if=\"slots.template\" #template>\n <slot name=\"template\" />\n </template>\n <template v-if=\"slots.default\" #default>\n <slot />\n </template>\n </ElSkeleton>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElSkeleton } from 'element-plus';\n\nconst slots = useSlots();\nconst skeletonRef = ref<InstanceType<typeof ElSkeleton>>();\n\ndefineOptions({\n name: 'Skeleton',\n});\n\ndefineExpose({\n skeletonRef,\n});\n</script>\n","<template>\n <ElSkeletonItem ref=\"skeletonItemRef\" class=\"tt-skeleton-item\" v-bind=\"$attrs\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElSkeletonItem } from 'element-plus';\n\nconst skeletonItemRef = ref<InstanceType<typeof ElSkeletonItem>>();\n\ndefineOptions({\n name: 'SkeletonItem',\n});\n\ndefineExpose({\n skeletonItemRef,\n});\n</script>\n","<template>\n <ElSpace ref=\"spaceRef\" class=\"tt-space\" v-bind=\"$attrs\">\n <slot />\n </ElSpace>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElSpace } from 'element-plus';\n\nconst spaceRef = ref<InstanceType<typeof ElSpace>>();\n\ndefineOptions({\n name: 'Space',\n});\n\ndefineExpose({\n spaceRef,\n});\n</script>\n","<template>\n <div class=\"tt-space-compact\" :class=\"compactClass\" v-bind=\"$attrs\">\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nexport type SpaceCompactDirection = 'horizontal' | 'vertical';\nexport type SpaceCompactSize = 'small' | 'default' | 'large' | number;\n\nconst props = withDefaults(\n defineProps<{\n block?: boolean;\n direction?: SpaceCompactDirection;\n size?: SpaceCompactSize;\n }>(),\n {\n block: false,\n direction: 'horizontal',\n size: undefined,\n },\n);\n\nconst compactClass = computed(() => [\n `tt-space-compact-${props.direction}`,\n props.size && `tt-space-compact-${props.size}`,\n props.block && 'tt-space-compact-block',\n]);\n\ndefineOptions({\n name: 'SpaceCompact',\n});\n</script>\n","import Space from './Space.vue';\nimport SpaceCompact from './SpaceCompact.vue';\n\nexport type { SpaceCompactDirection, SpaceCompactSize } from './SpaceCompact.vue';\nexport { SpaceCompact };\nexport default Object.assign(Space, { Compact: SpaceCompact });\n","<template>\n <ElSplitter ref=\"splitterRef\" class=\"tt-splitter\" v-bind=\"$attrs\">\n <slot />\n </ElSplitter>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElSplitter } from 'element-plus';\n\nconst splitterRef = ref<InstanceType<typeof ElSplitter>>();\n\ndefineOptions({\n name: 'Splitter',\n});\n\ndefineExpose({\n splitterRef,\n});\n</script>\n","<template>\n <ElSplitterPanel ref=\"splitterPanelRef\" class=\"tt-splitter-panel\" v-bind=\"$attrs\">\n <slot />\n </ElSplitterPanel>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElSplitterPanel } from 'element-plus';\n\nconst splitterPanelRef = ref<InstanceType<typeof ElSplitterPanel>>();\n\ndefineOptions({\n name: 'SplitterPanel',\n});\n\ndefineExpose({\n splitterPanelRef,\n});\n</script>\n","<template>\n <ElStatistic ref=\"statisticRef\" class=\"tt-statistic\" v-bind=\"$attrs\">\n <template v-if=\"slots.title\" #title>\n <slot name=\"title\" />\n </template>\n <template v-if=\"slots.prefix\" #prefix>\n <slot name=\"prefix\" />\n </template>\n <template v-if=\"slots.suffix\" #suffix>\n <slot name=\"suffix\" />\n </template>\n </ElStatistic>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElStatistic } from 'element-plus';\n\nconst slots = useSlots();\nconst statisticRef = ref<InstanceType<typeof ElStatistic>>();\n\ndefineOptions({\n name: 'Statistic',\n});\n\ndefineExpose({\n statisticRef,\n});\n</script>\n","<template>\n <div class=\"tt-spin\" :class=\"spinClass\" :aria-busy=\"visibleSpinning\">\n <div v-if=\"visibleSpinning\" class=\"tt-spin__indicator\" role=\"status\" :aria-label=\"text || '加载中'\">\n <i v-for=\"dot in 4\" :key=\"dot\" class=\"tt-spin__dot\" />\n </div>\n <span v-if=\"visibleSpinning && text\" class=\"tt-spin__text\">{{ text }}</span>\n <div v-if=\"slots.default\" class=\"tt-spin__content\" :class=\"{ 'is-blur': visibleSpinning }\">\n <slot />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, ref, useSlots, watch } from 'vue';\n\nexport type SpinSize = 'small' | 'default' | 'large';\n\nconst props = withDefaults(\n defineProps<{\n spinning?: boolean;\n text?: string;\n size?: SpinSize;\n delay?: number;\n }>(),\n {\n spinning: true,\n size: 'default',\n delay: 0,\n },\n);\n\nconst slots = useSlots();\nconst visibleSpinning = ref(false);\nlet delayTimer: ReturnType<typeof setTimeout> | undefined;\n\nwatch(\n () => [props.spinning, props.delay] as const,\n ([spinning, delay]) => {\n if (delayTimer) {\n clearTimeout(delayTimer);\n delayTimer = undefined;\n }\n\n if (!spinning) {\n visibleSpinning.value = false;\n return;\n }\n\n if (delay > 0) {\n delayTimer = setTimeout(() => {\n visibleSpinning.value = true;\n }, delay);\n return;\n }\n\n visibleSpinning.value = true;\n },\n {\n immediate: true,\n },\n);\n\nonBeforeUnmount(() => {\n if (delayTimer) {\n clearTimeout(delayTimer);\n }\n});\n\nconst spinClass = computed(() => ({\n [`tt-spin--${props.size}`]: props.size !== 'default',\n 'tt-spin--nested': Boolean(slots.default),\n 'is-spinning': visibleSpinning.value,\n}));\n\ndefineOptions({\n name: 'Spin',\n});\n</script>\n","<template>\n <div class=\"tt-loading\" v-bind=\"$attrs\">\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({\n name: 'Loading',\n inheritAttrs: false,\n});\n</script>\n","<template>\n <ElSwitch ref=\"switchRef\" v-model=\"modelValue\" class=\"tt-switch\" v-bind=\"$attrs\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElSwitch } from 'element-plus';\n\nexport type SwitchValue = string | number | boolean;\n\ndefineOptions({\n name: 'Switch',\n});\n\nconst modelValue = defineModel<SwitchValue>();\nconst switchRef = ref<InstanceType<typeof ElSwitch>>();\n\nfunction focus() {\n return switchRef.value?.focus();\n}\n\ndefineExpose({\n switchRef,\n focus,\n});\n</script>\n","<template>\n <ElTable ref=\"tableRef\" class=\"tt-table\" :data=\"props.data\" :stripe=\"props.stripe\" v-bind=\"$attrs\">\n <slot />\n <template v-if=\"slots.empty\" #empty>\n <slot name=\"empty\" />\n </template>\n <template v-if=\"slots.append\" #append>\n <slot name=\"append\" />\n </template>\n </ElTable>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElTable } from 'element-plus';\nimport type { TableInstance, TableProps } from 'element-plus';\n\n// 高频透传 props 显式声明以提供组件类型;其余 ElTable 属性继续经 $attrs 透传\nconst props = defineProps<Pick<TableProps, 'data' | 'stripe'>>();\n\nconst slots = useSlots();\nconst tableRef = ref<TableInstance>();\n\nfunction clearSelection() {\n return tableRef.value?.clearSelection();\n}\n\nfunction toggleRowSelection(\n row: Parameters<TableInstance['toggleRowSelection']>[0],\n selected?: Parameters<TableInstance['toggleRowSelection']>[1],\n ignoreSelectable?: Parameters<TableInstance['toggleRowSelection']>[2]\n) {\n return tableRef.value?.toggleRowSelection(row, selected, ignoreSelectable);\n}\n\nfunction toggleAllSelection() {\n return tableRef.value?.toggleAllSelection();\n}\n\nfunction toggleRowExpansion(row: unknown, expanded?: boolean) {\n return tableRef.value?.toggleRowExpansion(row as never, expanded);\n}\n\nfunction setCurrentRow(row?: unknown) {\n return tableRef.value?.setCurrentRow(row as never);\n}\n\nfunction clearSort() {\n return tableRef.value?.clearSort();\n}\n\nfunction clearFilter(columnKeys?: Parameters<TableInstance['clearFilter']>[0]) {\n return tableRef.value?.clearFilter(columnKeys);\n}\n\nfunction doLayout() {\n return tableRef.value?.doLayout();\n}\n\nfunction sort(prop: string, order: string) {\n return tableRef.value?.sort(prop, order);\n}\n\ndefineOptions({\n name: 'Table',\n});\n\ndefineExpose({\n tableRef,\n clearSelection,\n toggleRowSelection,\n toggleAllSelection,\n toggleRowExpansion,\n setCurrentRow,\n clearSort,\n clearFilter,\n doLayout,\n sort,\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h } from 'vue';\nimport { ElTableColumn } from 'element-plus';\n\nfunction normalizeClassName(value: unknown): string {\n if (!value) {\n return '';\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(normalizeClassName).filter(Boolean).join(' ');\n }\n\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>)\n .filter(([, active]) => Boolean(active))\n .map(([name]) => name)\n .join(' ');\n }\n\n return '';\n}\n\nexport default defineComponent({\n name: 'TableColumn',\n inheritAttrs: false,\n setup(_, { attrs, slots }) {\n return () => {\n const { className, 'class-name': kebabClassName, ...columnAttrs } = attrs as Record<string, unknown>;\n const mergedClassName = normalizeClassName(['tt-table-column', className, kebabClassName]);\n\n return h(\n ElTableColumn,\n {\n ...columnAttrs,\n className: mergedClassName,\n },\n {\n ...(slots.default ? { default: (scope: unknown) => slots.default?.(scope) } : {}),\n ...(slots.header ? { header: (scope: unknown) => slots.header?.(scope) } : {}),\n }\n );\n };\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h } from 'vue';\nimport { ElIcon } from 'element-plus';\nimport { Tools } from '@element-plus/icons-vue';\nimport TableColumn from './TableColumn.vue';\n\nfunction normalizeClassName(value: unknown): string {\n if (!value) {\n return '';\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(normalizeClassName).filter(Boolean).join(' ');\n }\n\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>)\n .filter(([, active]) => Boolean(active))\n .map(([name]) => name)\n .join(' ');\n }\n\n return '';\n}\n\nexport default defineComponent({\n name: 'TableOperationColumn',\n inheritAttrs: false,\n props: {\n label: {\n type: String,\n default: '操作',\n },\n showHeaderTools: {\n type: Boolean,\n default: true,\n },\n },\n emits: ['header-tools-click'],\n setup(props, { attrs, emit, slots }) {\n return () => {\n const { className, 'class-name': kebabClassName, label, fixed, ...columnAttrs } = attrs as Record<string, unknown>;\n const columnLabel = label ?? props.label;\n const columnFixed = fixed ?? 'right';\n const mergedClassName = normalizeClassName(['tt-table-operation-column', className, kebabClassName]);\n\n return h(\n TableColumn,\n {\n ...columnAttrs,\n label: columnLabel,\n fixed: columnFixed,\n className: mergedClassName,\n },\n {\n ...(slots.default ? { default: (scope: unknown) => slots.default?.(scope) } : {}),\n header: (scope: unknown) =>\n h('span', { class: 'tt-table-operation-column__header' }, [\n h('span', { class: 'tt-table-operation-column__label' }, slots.header ? slots.header(scope) : String(columnLabel ?? '')),\n props.showHeaderTools\n ? h(\n ElIcon,\n {\n class: 'tt-table-operation-column__tools',\n onClick: (event: MouseEvent) => {\n event.stopPropagation();\n emit('header-tools-click', event);\n },\n },\n () => h(Tools)\n )\n : null,\n ]),\n }\n );\n };\n },\n});\n</script>\n","<template>\n <ElTabs v-model=\"modelValue\" class=\"tt-tabs\" v-bind=\"$attrs\">\n <slot />\n </ElTabs>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElTabs } from 'element-plus';\n\ndefineOptions({\n name: 'Tabs',\n});\n\nconst modelValue = defineModel<string | number>();\n</script>\n","<template>\n <ElTabPane class=\"tt-tab-pane\" v-bind=\"$attrs\">\n <slot />\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </ElTabPane>\n</template>\n\n<script setup lang=\"ts\">\nimport { useSlots } from 'vue';\nimport { ElTabPane } from 'element-plus';\n\ndefineOptions({\n name: 'TabPane',\n});\n\nconst slots = useSlots();\n</script>\n","<template>\n <ElTag ref=\"tagRef\" class=\"tt-tag\" v-bind=\"$attrs\">\n <slot />\n </ElTag>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElTag } from 'element-plus';\n\nconst tagRef = ref<InstanceType<typeof ElTag>>();\n\ndefineOptions({\n name: 'Tag',\n});\n\ndefineExpose({\n tagRef,\n});\n</script>\n","<template>\n <span\n class=\"tt-tag tt-tag-checkable\"\n :class=\"{ 'is-checked': checked }\"\n role=\"checkbox\"\n :aria-checked=\"checked\"\n tabindex=\"0\"\n @click=\"handleClick\"\n @keydown.enter.prevent=\"toggle\"\n @keydown.space.prevent=\"toggle\"\n >\n <slot />\n </span>\n</template>\n\n<script setup lang=\"ts\">\nconst props = withDefaults(\n defineProps<{\n checked?: boolean;\n }>(),\n {\n checked: false,\n },\n);\n\nconst emit = defineEmits<{\n change: [checked: boolean];\n click: [event: MouseEvent];\n}>();\n\nfunction toggle() {\n emit('change', !props.checked);\n}\n\nfunction handleClick(event: MouseEvent) {\n toggle();\n emit('click', event);\n}\n\ndefineOptions({\n name: 'CheckableTag',\n});\n</script>\n","import Tag from './Tag.vue';\nimport CheckableTag from './CheckableTag.vue';\n\nexport { CheckableTag };\nexport default Object.assign(Tag, { CheckableTag });\n","<template>\n <ElTimePicker\n ref=\"timePickerRef\"\n v-model=\"modelValue\"\n class=\"tt-timepicker\"\n :popper-class=\"mergedPopperClass\"\n v-bind=\"timePickerAttrs\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue';\nimport { ElTimePicker } from 'element-plus';\n\ntype TimePickerSingleValue = string | number | Date;\n\nexport type TimePickerValue = TimePickerSingleValue | string[] | number[] | Date[] | null;\n\nconst attrs = useAttrs();\nconst modelValue = defineModel<TimePickerValue>();\nconst timePickerRef = ref<InstanceType<typeof ElTimePicker>>();\nconst mergedPopperClass = computed(() => ['tt-picker-dropdown', attrs.popperClass].filter(Boolean).join(' '));\nconst timePickerAttrs = computed(() => {\n const { popperClass: _popperClass, ...rest } = attrs;\n return rest;\n});\n\nfunction focus() {\n return (timePickerRef.value as any)?.focus?.();\n}\n\nfunction blur() {\n return (timePickerRef.value as any)?.blur?.();\n}\n\ndefineOptions({\n name: 'TimePicker',\n inheritAttrs: false,\n});\n\ndefineExpose({\n timePickerRef,\n focus,\n blur,\n});\n</script>\n","<template>\n <ElTooltip :popper-class=\"mergedPopperClass\" v-bind=\"$attrs\">\n <slot />\n <template v-if=\"slots.content\" #content>\n <slot name=\"content\" />\n </template>\n </ElTooltip>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue';\nimport { ElTooltip } from 'element-plus';\n\nconst props = withDefaults(\n defineProps<{\n popperClass?: string;\n }>(),\n {\n popperClass: '',\n }\n);\n\nconst slots = useSlots();\nconst mergedPopperClass = computed(() => ['tt-tooltip', props.popperClass].filter(Boolean).join(' '));\n\ndefineOptions({\n name: 'Tooltip',\n});\n</script>\n","<template>\n <div class=\"tt-topic-switch\" role=\"group\" :aria-label=\"ariaLabel\" :style=\"switchStyle\">\n <Button\n v-for=\"option in options\"\n :key=\"String(option.value)\"\n class=\"tt-topic-switch__button\"\n :class=\"{ 'tt-topic-switch__button--active': option.value === modelValue }\"\n native-type=\"button\"\n text\n :disabled=\"option.disabled\"\n @click=\"handleSelect(option)\"\n >\n <slot name=\"option\" :option=\"option\" :active=\"option.value === modelValue\">\n {{ option.label }}\n </slot>\n </Button>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { CSSProperties } from 'vue';\nimport Button from '../Button';\n\nexport type TopicSwitchValue = string | number;\n\nexport interface TopicSwitchOption {\n label: string;\n value: TopicSwitchValue;\n disabled?: boolean;\n}\n\nconst props = withDefaults(defineProps<{\n options: TopicSwitchOption[];\n ariaLabel?: string;\n}>(), {\n ariaLabel: '专题切换',\n});\n\nconst modelValue = defineModel<TopicSwitchValue>();\nconst activeIndex = computed(() => Math.max(props.options.findIndex(option => option.value === modelValue.value), 0));\nconst switchStyle = computed<CSSProperties>(() => ({\n '--tt-topic-switch-count': String(Math.max(props.options.length, 1)),\n '--tt-topic-switch-active-index': String(activeIndex.value),\n}) as CSSProperties);\nconst emit = defineEmits<{\n change: [value: TopicSwitchValue, option: TopicSwitchOption];\n}>();\n\ndefineOptions({\n name: 'TopicSwitch',\n});\n\nfunction handleSelect(option: TopicSwitchOption) {\n if (option.disabled || option.value === modelValue.value) {\n return;\n }\n\n modelValue.value = option.value;\n emit('change', option.value, option);\n}\n</script>\n","<template>\n <ElTour ref=\"tourRef\" class=\"tt-tour\" v-bind=\"$attrs\">\n <slot />\n </ElTour>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElTour } from 'element-plus';\n\nconst tourRef = ref<InstanceType<typeof ElTour>>();\n\ndefineOptions({\n name: 'Tour',\n});\n\ndefineExpose({\n tourRef,\n});\n</script>\n","<template>\n <ElTransfer ref=\"transferRef\" v-model=\"modelValue\" class=\"tt-transfer\" v-bind=\"$attrs\">\n <template v-if=\"slots.default\" #default=\"slotProps\">\n <slot v-bind=\"slotProps\" />\n </template>\n <template v-if=\"slots.leftFooter\" #left-footer>\n <slot name=\"leftFooter\" />\n </template>\n <template v-if=\"slots.rightFooter\" #right-footer>\n <slot name=\"rightFooter\" />\n </template>\n </ElTransfer>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElTransfer } from 'element-plus';\n\nexport type TransferKey = string | number;\nexport type TransferModelValue = TransferKey[];\n\nconst slots = useSlots();\nconst modelValue = defineModel<TransferModelValue>({ default: () => [] });\nconst transferRef = ref<unknown>();\n\ndefineOptions({\n name: 'Transfer',\n});\n\ndefineExpose({\n transferRef,\n});\n</script>\n","<template>\n <ElTree ref=\"treeRef\" class=\"tt-tree\" v-bind=\"$attrs\">\n <template v-if=\"slots.default\" #default=\"slotProps\">\n <slot v-bind=\"slotProps\" />\n </template>\n </ElTree>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElTree } from 'element-plus';\n\nexport type TreeValue = string | number;\n\nexport interface TreeOption {\n label?: string;\n value?: TreeValue;\n id?: TreeValue;\n disabled?: boolean;\n children?: TreeOption[];\n [key: string]: unknown;\n}\n\nconst slots = useSlots();\nconst treeRef = ref<InstanceType<typeof ElTree>>();\n\nfunction filter(...args: unknown[]) {\n return (treeRef.value as any)?.filter(...args);\n}\n\nfunction getCheckedNodes(...args: unknown[]) {\n return (treeRef.value as any)?.getCheckedNodes(...args);\n}\n\nfunction getCheckedKeys(...args: unknown[]) {\n return (treeRef.value as any)?.getCheckedKeys(...args);\n}\n\nfunction setCheckedKeys(...args: unknown[]) {\n return (treeRef.value as any)?.setCheckedKeys(...args);\n}\n\nfunction setChecked(...args: unknown[]) {\n return (treeRef.value as any)?.setChecked(...args);\n}\n\nfunction setCheckedNodes(...args: unknown[]) {\n return (treeRef.value as any)?.setCheckedNodes(...args);\n}\n\nfunction getCurrentNode(...args: unknown[]) {\n return (treeRef.value as any)?.getCurrentNode(...args);\n}\n\nfunction getCurrentKey(...args: unknown[]) {\n return (treeRef.value as any)?.getCurrentKey(...args);\n}\n\nfunction setCurrentKey(...args: unknown[]) {\n return (treeRef.value as any)?.setCurrentKey(...args);\n}\n\nfunction updateKeyChildren(...args: unknown[]) {\n return (treeRef.value as any)?.updateKeyChildren(...args);\n}\n\ndefineOptions({\n name: 'Tree',\n});\n\ndefineExpose({\n treeRef,\n filter,\n getCheckedNodes,\n getCheckedKeys,\n setCheckedKeys,\n setChecked,\n setCheckedNodes,\n getCurrentNode,\n getCurrentKey,\n setCurrentKey,\n updateKeyChildren,\n});\n</script>\n","<template>\n <ElTreeSelect\n ref=\"treeSelectRef\"\n v-model=\"modelValue\"\n class=\"tt-tree-select\"\n :data=\"resolvedData\"\n :icon=\"ArrowRight\"\n :popper-class=\"mergedPopperClass\"\n v-bind=\"$attrs\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { ElTreeSelect } from 'element-plus';\nimport { ArrowRight } from '@element-plus/icons-vue';\n\nexport type TreeSelectValue = string | number | boolean;\nexport type TreeSelectModelValue = TreeSelectValue | TreeSelectValue[];\n\nexport interface TreeSelectOption {\n label: string;\n value: TreeSelectValue;\n disabled?: boolean;\n children?: TreeSelectOption[];\n}\n\nconst props = defineProps<{\n data?: TreeSelectOption[];\n treeData?: TreeSelectOption[];\n popperClass?: string;\n}>();\n\nconst modelValue = defineModel<TreeSelectModelValue>();\nconst resolvedData = computed(() => props.treeData ?? props.data ?? []);\nconst mergedPopperClass = computed(() => ['tt-tree-select-dropdown', props.popperClass].filter(Boolean).join(' '));\nconst treeSelectRef = ref<InstanceType<typeof ElTreeSelect>>();\n\nfunction focus() {\n return (treeSelectRef.value as any)?.focus?.();\n}\n\nfunction blur() {\n return (treeSelectRef.value as any)?.blur?.();\n}\n\ndefineOptions({\n name: 'TreeSelect',\n});\n\ndefineExpose({\n treeSelectRef,\n focus,\n blur,\n});\n</script>\n","<template>\n <ElUpload\n ref=\"uploadRef\"\n class=\"tt-upload\"\n :class=\"[`tt-upload--${size}`, { 'tt-upload--meta': showMetaInfo }]\"\n :style=\"uploadStyle\"\n v-bind=\"$attrs\"\n >\n <template #default>\n <slot>\n <ElButton type=\"primary\">点击上传</ElButton>\n </slot>\n </template>\n <template v-if=\"slots.tip\" #tip>\n <slot name=\"tip\" />\n </template>\n <template #file=\"slotProps\">\n <slot name=\"file\" v-bind=\"slotProps\">\n <div class=\"tt-upload-item\" :class=\"[`is-${slotProps.file.status || 'ready'}`, { 'tt-upload-item--meta': showMetaInfo }]\">\n <div class=\"tt-upload-item-icon-section\">\n <span class=\"tt-upload-item-icon\">{{ getFileIcon(slotProps.file) }}</span>\n </div>\n <div class=\"tt-upload-item-content\">\n <div class=\"tt-upload-item-main\">\n <span class=\"tt-upload-item-name\" :title=\"slotProps.file.name\">{{ slotProps.file.name }}</span>\n <span v-if=\"slotProps.file.status === 'uploading'\" class=\"tt-upload-item-status-text\">{{ Math.round(slotProps.file.percentage || 0) }}%</span>\n <span v-else-if=\"slotProps.file.status === 'success'\" class=\"tt-upload-item-status-success-icon\">✓</span>\n <span v-else-if=\"slotProps.file.status === 'fail'\" class=\"tt-upload-item-status-error-icon\">!</span>\n </div>\n <div v-if=\"showMetaInfo\" class=\"tt-upload-item-meta\">\n <span>{{ formatFileSize(slotProps.file.size) }}</span>\n <span class=\"tt-upload-item-separator\">/</span>\n <span>{{ slotProps.file.status === 'fail' ? '上传失败' : slotProps.file.status === 'success' ? '上传成功' : '文件已选择' }}</span>\n </div>\n </div>\n </div>\n </slot>\n </template>\n </ElUpload>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useSlots } from 'vue';\nimport { ElButton, ElUpload } from 'element-plus';\nimport type { UploadFile, UploadRawFile, UploadStatus } from 'element-plus';\n\nexport type UploadSize = 'large' | 'small';\n\nconst props = withDefaults(\n defineProps<{\n pictureCardWidth?: number;\n showMetaInfo?: boolean;\n size?: UploadSize;\n }>(),\n {\n pictureCardWidth: 60,\n showMetaInfo: false,\n size: 'large',\n }\n);\n\nconst slots = useSlots();\nconst uploadRef = ref<InstanceType<typeof ElUpload>>();\nconst uploadStyle = computed(() => ({\n '--tt-upload-picture-card-width': `${props.pictureCardWidth}px`,\n}));\n\nfunction getFileIcon(file: { name?: string; raw?: { type?: string }; type?: string }) {\n const name = file.name || '';\n const type = file.raw?.type || file.type || '';\n const extension = name.split('.').pop()?.toLowerCase();\n\n if (type.startsWith('image/') || ['png', 'jpg', 'jpeg', 'gif', 'webp'].includes(extension || '')) {\n return 'IMG';\n }\n\n if (['xls', 'xlsx'].includes(extension || '')) {\n return 'XLS';\n }\n\n if (['doc', 'docx'].includes(extension || '')) {\n return 'DOC';\n }\n\n if (extension) {\n return extension.slice(0, 3).toUpperCase();\n }\n\n return 'FILE';\n}\n\nfunction formatFileSize(size?: number) {\n if (!size) {\n return '0B';\n }\n\n if (size < 1024) {\n return `${size}B`;\n }\n\n if (size < 1024 * 1024) {\n return `${(size / 1024).toFixed(2)}kb`;\n }\n\n return `${(size / 1024 / 1024).toFixed(2)}MB`;\n}\n\nfunction submit() {\n return uploadRef.value?.submit();\n}\n\nfunction abort(file?: UploadFile) {\n return uploadRef.value?.abort(file);\n}\n\nfunction clearFiles(states?: UploadStatus[]) {\n return uploadRef.value?.clearFiles(states);\n}\n\nfunction handleStart(rawFile: UploadRawFile) {\n return uploadRef.value?.handleStart(rawFile);\n}\n\nfunction handleRemove(file: UploadFile | UploadRawFile) {\n return uploadRef.value?.handleRemove(file);\n}\n\ndefineOptions({\n name: 'Upload',\n});\n\ndefineExpose({\n uploadRef,\n submit,\n abort,\n clearFiles,\n handleStart,\n handleRemove,\n});\n</script>\n","<template>\n <div class=\"tt-user-display\">\n <Avatar class=\"tt-user-display__avatar\" :size=\"size\" :src=\"avatar\">\n <slot name=\"avatar\">{{ fallbackText }}</slot>\n </Avatar>\n <div class=\"tt-user-display__content\">\n <div class=\"tt-user-display__name\">{{ name }}</div>\n <div v-if=\"description\" class=\"tt-user-display__description\">{{ description }}</div>\n </div>\n <span v-if=\"status\" class=\"tt-user-display__status\">{{ status }}</span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport Avatar from '../Avatar';\n\nconst props = withDefaults(\n defineProps<{\n name: string;\n description?: string;\n status?: string;\n avatar?: string;\n size?: number | 'small' | 'default' | 'large';\n }>(),\n {\n size: 36,\n },\n);\n\nconst fallbackText = computed(() => props.name.slice(0, 1).toUpperCase());\n\ndefineOptions({\n name: 'UserDisplay',\n});\n</script>\n","<template>\n <ElWatermark class=\"tt-watermark\" v-bind=\"{ ...props, ...$attrs }\">\n <slot />\n </ElWatermark>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElWatermark } from 'element-plus';\nimport type { WatermarkProps } from 'element-plus';\n\nconst props = defineProps<WatermarkProps>();\n\ndefineOptions({\n name: 'Watermark',\n});\n</script>\n","<template>\n <ElProgress ref=\"progressRef\" class=\"tt-progress\" v-bind=\"$attrs\">\n <slot />\n </ElProgress>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElProgress } from 'element-plus';\n\nconst progressRef = ref<InstanceType<typeof ElProgress>>();\n\ndefineOptions({\n name: 'Progress',\n});\n\ndefineExpose({\n progressRef,\n});\n</script>\n","<template>\n <ElSteps ref=\"stepsRef\" class=\"tt-steps\" v-bind=\"$attrs\">\n <slot />\n </ElSteps>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElSteps } from 'element-plus';\n\nconst stepsRef = ref<InstanceType<typeof ElSteps>>();\n\ndefineOptions({\n name: 'Steps',\n});\n\ndefineExpose({\n stepsRef,\n});\n</script>\n","<template>\n <ElStep ref=\"stepRef\" class=\"tt-step\" v-bind=\"$attrs\">\n <template v-if=\"slots.icon\" #icon>\n <slot name=\"icon\" />\n </template>\n <template v-if=\"slots.title\" #title>\n <slot name=\"title\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </ElStep>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, useSlots } from 'vue';\nimport { ElStep } from 'element-plus';\n\nconst slots = useSlots();\nconst stepRef = ref<InstanceType<typeof ElStep>>();\n\ndefineOptions({\n name: 'Step',\n});\n\ndefineExpose({\n stepRef,\n});\n</script>\n","export type TTThemeMode = 'light' | 'dark' | 'system';\n\nconst THEME_ATTRIBUTE = 'data-tt-theme';\nconst VALID_MODES: readonly TTThemeMode[] = ['light', 'dark', 'system'];\n\nexport function normalizeThemeMode(mode: unknown): TTThemeMode {\n return typeof mode === 'string' && (VALID_MODES as readonly string[]).includes(mode)\n ? mode as TTThemeMode\n : 'light';\n}\n\nexport function applyTheme(mode: TTThemeMode, target?: HTMLElement): TTThemeMode {\n const root = target ?? (typeof document !== 'undefined' ? document.documentElement : undefined);\n const resolvedMode = normalizeThemeMode(mode);\n\n if (root) {\n root.setAttribute(THEME_ATTRIBUTE, resolvedMode);\n }\n\n return resolvedMode;\n}\n\nexport function getTheme(target?: HTMLElement): TTThemeMode {\n const root = target ?? (typeof document !== 'undefined' ? document.documentElement : undefined);\n return normalizeThemeMode(root?.getAttribute(THEME_ATTRIBUTE));\n}\n\nexport function getThemeAttributeName() {\n return THEME_ATTRIBUTE;\n}\n"],"names":["timelineRef","ref","__expose","_openBlock","_createBlock","_unref","_mergeProps","$attrs","_renderSlot","_ctx","slots","useSlots","timelineItemRef","_createSlots","_createElementVNode","_hoisted_1","_createElementBlock","_createVNode","Timeline","_Fragment","_renderList","__props","item","TimelineItem","_hoisted_2","_hoisted_3","_toDisplayString","_hoisted_4","_hoisted_5","alertRef","IMAGE_MIN_SCALE","IMAGE_MAX_SCALE","IMAGE_SCALE_STEP","DEFAULT_OFFICE_PREVIEW_URL","props","emit","__emit","attrs","useAttrs","root","footerExpanded","currentIndex","imageTransform","textPreviewContent","dragState","normalizedFiles","computed","isPreviewMode","currentFile","currentName","_a","currentUrl","safeUrl","previewType","getPreviewType","currentIconText","fileIcon","imageUrl","originImageUrl","officeUrl","getOfficePreviewUrl","isOfficeFile","canNavigate","canPrev","canNext","iconText","imageStyle","watch","files","startFile","startIndex","file","reset","previewMode","visible","_","onCleanup","originalOverflow","type","url","controller","response","getExtension","extension","parsedUrl","fileKey","index","handlePreview","close","handleMaskClick","selectFile","prev","next","updateScale","step","scale","rotateImage","offset","handleImageWheel","event","startImageDrag","handleMouseMove","stopImageDrag","copyCurrentUrl","textarea","handleDownload","handleKeydown","onMounted","onBeforeUnmount","_Teleport","_hoisted_6","_hoisted_7","_hoisted_8","CopyDocument","Download","Close","_hoisted_11","_normalizeClass","_hoisted_15","_hoisted_18","_hoisted_19","ArrowLeft","ArrowRight","_hoisted_23","_cache","$event","ZoomOut","ZoomIn","RefreshLeft","RefreshRight","Refresh","_hoisted_24","ArrowUp","ArrowDown","_hoisted_26","_hoisted_28","_hoisted_30","_hoisted_31","FilePreview","_withModifiers","avatarColors","avatarRef","slotText","node","resolvedColor","avatarClass","badgeLabel","ElTooltip","ElIcon","CircleCloseFilled","avatarGroupRef","badgeRef","backtopRef","breadcrumbRef","breadcrumbItemRef","isBooleanAttr","value","getButtonClass","size","buttonAttrs","buttonClass","cardRef","isMetric","isPanel","isPanelSubtitle","hasHeader","hasCompare","cardClass","_hoisted_9","_hoisted_10","_hoisted_12","_hoisted_13","splitGradientArguments","items","start","depth","gradientAngle","degree","linearCoordinates","angle","radians","horizontal","vertical","toPercent","parseGradient","match","argumentsList","firstArgument","hasDirection","stops","stop","allStops","color","offsetMatch","gradientId","useId","gradientDefinition","iconColor","iconStyle","isComponentIcon","isTextIcon","iconClass","_resolveDynamicComponent","innerValue","selectedValue","getKey","record","key","getTitle","getDescription","isSelected","toggle","selected","Icon","Check","modelValue","_useModel","cascaderAttrs","_popperClass","rest","mergedPopperClass","cascaderProps","useSelectAll","leafPaths","collectLeafPaths","selectedPaths","allSelected","selectedPath","isPathEqual","path","isIndeterminate","cascaderRef","options","parentPath","parentDisabled","option","isCascaderOption","currentPath","disabled","first","second","toggleSelectAll","nextValue","triggerChange","listener","handler","getCheckedNodes","args","togglePopperVisible","_b","focus","blur","$slots","ElCheckbox","calendarRef","_withCtx","slotProps","carouselRef","setActiveItem","carouselItemRef","chartRef","instance","resizeObserver","normalizedHeight","initChart","echarts","bindEvents","setOption","updateLoading","nextTick","eventName","resize","dispatchAction","payload","convertToPixel","convertFromPixel","handleWindowResize","enabled","themeColors","wrapper","resolvedTheme","EChartsWrapper","copied","copiedTimer","colorValue","colorName","colorClass","copyColor","RECENT_COLORS_KEY","initialValue","initialGradient","mode","pureColor","gradientStops","createDefaultStops","selectedStop","colorPickerRef","commonColors","commonGradients","recentColors","loadRecentColors","showIcon","showStatus","showAlpha","colorFormat","predefine","clearable","isDisabled","activeStop","activeStopColor","updateActiveStop","gradientValue","formatGradient","previewValue","displayValue","updateValue","gradient","setMode","nextMode","updates","updateStopPosition","position","addStop","removeStop","selectCommonColor","selectGradient","parsed","selectRecentColor","clear","show","hide","stored","saveRecentColor","ElPopover","ElColorPickerPanel","_normalizeStyle","_hoisted_14","ElInputNumber","_hoisted_16","_hoisted_17","_hoisted_20","_hoisted_22","authorInitial","normalizedActions","action","handleAction","_component_ElContainer","collapseRef","collapseItemRef","pickerType","isRangePicker","nativeShortcuts","datePickerAttrs","_shortcuts","mergedShortcuts","getDefaultQuickActions","datePickerRef","isRange","getRecentRange","addDays","amount","date","unit","end","descriptionsRef","descriptionsItemRef","appendToBody","dialogAttrs","_propAppendToBody","restProps","_appendToBody","dialogRef","dividerRef","drawerAttrs","drawerRef","dropdownRef","mergedPopperOptions","handleOpen","handleClose","emptyRef","componentTag","toCssLength","fallback","buttonStyle","handleClick","tagMap","tagName","fontClass","formRef","formAttrs","validate","validateField","resetFields","clearValidate","scrollToField","formItemAttrs","rowRef","colRef","imageRef","normalizedGap","normalizedSiderWidth","layoutClass","layoutStyle","siderStyle","linkRef","linkClass","underline","inputAttrs","inputRef","select","inputNumberRef","_controls","_style","min","toFiniteNumber","max","isDecreaseDisabled","isIncreaseDisabled","numberValue","decrease","increase","Minus","Plus","messageTypes","normalizeOptions","Message","ElMessage","masonryStyle","hasMinColumnWidth","getItemKey","menuRef","menuClass","open","handleResize","menuItemRef","subMenuRef","numericValue","isNegative","formatValue","formatted","withSymbol","moneyClass","notificationTypes","Notification","ElNotification","paginationAttrs","provinceBriefs","disabledKeyboardKeys","keyboardLayouts","normalize","focused","cursor","keyboardMode","isVirtualPlate","plateLength","availableBriefs","plateColor","resolvePlateColor","colorOptions","resolveColorOptions","popoverVisible","keyboardRows","displayChars","chars","plateClass","length","normalized","focusAt","handlePopoverVisible","nextVisible","insertKey","isKeyboardKeyDisabled","handleKeyboardKey","removeKey","target","selectProvince","brief","oldBriefLength","suffix","handlePaste","pasted","copyValue","currentValue","currentMode","externalColor","legacyType","colorMap","row","rowIndex","queryFormRef","ElButton","dataUrl","altText","qrcodeClass","qrcodeStyle","level","QRCodeLib","rateRef","resultRef","EditorComp","shallowRef","ToolbarComp","mod","markRaw","toolbarKeyMap","editorRef","minHeightValue","editorConfig","toolbarConfig","tool","tools","syncReadonlyState","handleCreated","editor","handleChange","getHtml","setHtml","selectRef","searchQuery","searchable","selectAttrs","_options","_searchable","filteredOptions","keyword","isSelectOption","children","child","isMultiple","selectedValues","selectableOptionValues","collectSelectableValues","getOptionKey","clearHoveringOption","ElOption","ElOptionGroup","ElInput","segmentedRef","skeletonRef","skeletonItemRef","spaceRef","compactClass","index$1","Space","SpaceCompact","splitterRef","splitterPanelRef","statisticRef","visibleSpinning","delayTimer","spinning","delay","spinClass","dot","switchRef","tableRef","clearSelection","toggleRowSelection","ignoreSelectable","toggleAllSelection","toggleRowExpansion","expanded","setCurrentRow","clearSort","clearFilter","columnKeys","doLayout","sort","prop","order","normalizeClassName","active","name","_sfc_main$i","defineComponent","className","kebabClassName","columnAttrs","mergedClassName","h","ElTableColumn","scope","_sfc_main$h","label","fixed","columnLabel","columnFixed","TableColumn","Tools","tagRef","Tag","CheckableTag","timePickerRef","timePickerAttrs","activeIndex","switchStyle","handleSelect","Button","_createTextVNode","tourRef","transferRef","treeRef","filter","getCheckedKeys","setCheckedKeys","setChecked","setCheckedNodes","getCurrentNode","getCurrentKey","setCurrentKey","updateKeyChildren","resolvedData","treeSelectRef","uploadRef","uploadStyle","getFileIcon","formatFileSize","submit","abort","clearFiles","states","handleStart","rawFile","handleRemove","_normalizeProps","_guardReactiveProps","fallbackText","Avatar","ElWatermark","progressRef","stepsRef","stepRef","THEME_ATTRIBUTE","VALID_MODES","normalizeThemeMode","applyTheme","resolvedMode","getTheme","getThemeAttributeName"],"mappings":"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"}
|