@transsionfe/semi-ui-vue 0.0.1 → 0.0.2
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/lib/es/components/_cssAnimation/index.vue2.js +5 -0
- package/lib/es/components/_cssAnimation/index.vue2.js.map +1 -0
- package/lib/es/components/_portal/Portal.vue2.js +5 -0
- package/lib/es/components/_portal/Portal.vue2.js.map +1 -0
- package/lib/es/components/_resizeObserver/index.vue2.js +5 -0
- package/lib/es/components/_resizeObserver/index.vue2.js.map +1 -0
- package/lib/es/components/_sortable/Sortable.vue2.js +118 -0
- package/lib/es/components/_sortable/Sortable.vue2.js.map +1 -0
- package/lib/es/components/anchor/Anchor.vue2.js +5 -0
- package/lib/es/components/anchor/Anchor.vue2.js.map +1 -0
- package/lib/es/components/anchor/Link.vue2.js +5 -0
- package/lib/es/components/anchor/Link.vue2.js.map +1 -0
- package/lib/es/components/autoComplete/AutoComplete.vue2.js +5 -0
- package/lib/es/components/autoComplete/AutoComplete.vue2.js.map +1 -0
- package/lib/es/components/autoComplete/Option.vue2.js +5 -0
- package/lib/es/components/autoComplete/Option.vue2.js.map +1 -0
- package/lib/es/components/avatar/Avatar.vue2.js +5 -0
- package/lib/es/components/avatar/Avatar.vue2.js.map +1 -0
- package/lib/es/components/avatar/AvatarGroup.vue2.js +5 -0
- package/lib/es/components/avatar/AvatarGroup.vue2.js.map +1 -0
- package/lib/es/components/avatar/TopSlotSvg.vue2.js +5 -0
- package/lib/es/components/avatar/TopSlotSvg.vue2.js.map +1 -0
- package/lib/es/components/backTop/BackTop.vue2.js +5 -0
- package/lib/es/components/backTop/BackTop.vue2.js.map +1 -0
- package/lib/es/components/badge/Badge.vue2.js +5 -0
- package/lib/es/components/badge/Badge.vue2.js.map +1 -0
- package/lib/es/components/banner/Banner.vue2.js +5 -0
- package/lib/es/components/banner/Banner.vue2.js.map +1 -0
- package/lib/es/components/breadcrumb/Breadcrumb.vue2.js +185 -0
- package/lib/es/components/breadcrumb/Breadcrumb.vue2.js.map +1 -0
- package/lib/es/components/breadcrumb/BreadcrumbItem.vue2.js +159 -0
- package/lib/es/components/breadcrumb/BreadcrumbItem.vue2.js.map +1 -0
- package/lib/es/components/button/Button.vue2.js +5 -0
- package/lib/es/components/button/Button.vue2.js.map +1 -0
- package/lib/es/components/button/ButtonGroup.vue2.js +5 -0
- package/lib/es/components/button/ButtonGroup.vue2.js.map +1 -0
- package/lib/es/components/button/SplitButtonGroup.vue2.js +5 -0
- package/lib/es/components/button/SplitButtonGroup.vue2.js.map +1 -0
- package/lib/es/components/calendar/Calendar.vue2.js +5 -0
- package/lib/es/components/calendar/Calendar.vue2.js.map +1 -0
- package/lib/es/components/calendar/DayCalendar.vue2.js +194 -0
- package/lib/es/components/calendar/DayCalendar.vue2.js.map +1 -0
- package/lib/es/components/calendar/DayCol.vue2.js +125 -0
- package/lib/es/components/calendar/DayCol.vue2.js.map +1 -0
- package/lib/es/components/calendar/MonthCalendar.vue2.js +228 -0
- package/lib/es/components/calendar/MonthCalendar.vue2.js.map +1 -0
- package/lib/es/components/calendar/MonthCalendarInner.vue2.js +5 -0
- package/lib/es/components/calendar/MonthCalendarInner.vue2.js.map +1 -0
- package/lib/es/components/calendar/RangeCalendar.vue2.js +178 -0
- package/lib/es/components/calendar/RangeCalendar.vue2.js.map +1 -0
- package/lib/es/components/calendar/RangeCalendarInner.vue2.js +5 -0
- package/lib/es/components/calendar/RangeCalendarInner.vue2.js.map +1 -0
- package/lib/es/components/calendar/TimeCol.vue2.js +54 -0
- package/lib/es/components/calendar/TimeCol.vue2.js.map +1 -0
- package/lib/es/components/calendar/WeekCalendar.vue2.js +178 -0
- package/lib/es/components/calendar/WeekCalendar.vue2.js.map +1 -0
- package/lib/es/components/calendar/WeekCalendarInner.vue2.js +5 -0
- package/lib/es/components/calendar/WeekCalendarInner.vue2.js.map +1 -0
- package/lib/es/components/card/Card.vue2.js +130 -0
- package/lib/es/components/card/Card.vue2.js.map +1 -0
- package/lib/es/components/card/CardGroup.vue2.js +5 -0
- package/lib/es/components/card/CardGroup.vue2.js.map +1 -0
- package/lib/es/components/carousel/Carousel.vue2.js +5 -0
- package/lib/es/components/carousel/Carousel.vue2.js.map +1 -0
- package/lib/es/components/carousel/CarouselArrow.vue2.js +5 -0
- package/lib/es/components/carousel/CarouselArrow.vue2.js.map +1 -0
- package/lib/es/components/carousel/CarouselIndicator.vue2.js +5 -0
- package/lib/es/components/carousel/CarouselIndicator.vue2.js.map +1 -0
- package/lib/es/components/cascader/Cascader.vue2.js +5 -0
- package/lib/es/components/cascader/Cascader.vue2.js.map +1 -0
- package/lib/es/components/cascader/CascaderPanel.vue2.js +5 -0
- package/lib/es/components/cascader/CascaderPanel.vue2.js.map +1 -0
- package/lib/es/components/cascader/Item.vue2.js +5 -0
- package/lib/es/components/cascader/Item.vue2.js.map +1 -0
- package/lib/es/components/checkbox/Checkbox.vue2.js +5 -0
- package/lib/es/components/checkbox/Checkbox.vue2.js.map +1 -0
- package/lib/es/components/checkbox/CheckboxGroup.vue2.js +5 -0
- package/lib/es/components/checkbox/CheckboxGroup.vue2.js.map +1 -0
- package/lib/es/components/checkbox/CheckboxInner.vue2.js +90 -0
- package/lib/es/components/checkbox/CheckboxInner.vue2.js.map +1 -0
- package/lib/es/components/collapse/Collapse.vue2.js +5 -0
- package/lib/es/components/collapse/Collapse.vue2.js.map +1 -0
- package/lib/es/components/collapse/CollapsePanel.vue2.js +5 -0
- package/lib/es/components/collapse/CollapsePanel.vue2.js.map +1 -0
- package/lib/es/components/collapsible/Collapsible.vue2.js +5 -0
- package/lib/es/components/collapsible/Collapsible.vue2.js.map +1 -0
- package/lib/es/components/colorPicker/AlphaSlider.vue2.js +5 -0
- package/lib/es/components/colorPicker/AlphaSlider.vue2.js.map +1 -0
- package/lib/es/components/colorPicker/ColorChooseArea.vue2.js +5 -0
- package/lib/es/components/colorPicker/ColorChooseArea.vue2.js.map +1 -0
- package/lib/es/components/colorPicker/ColorPicker.vue2.js +5 -0
- package/lib/es/components/colorPicker/ColorPicker.vue2.js.map +1 -0
- package/lib/es/components/colorPicker/ColorPickerInner.vue2.js +5 -0
- package/lib/es/components/colorPicker/ColorPickerInner.vue2.js.map +1 -0
- package/lib/es/components/colorPicker/ColorSlider.vue2.js +5 -0
- package/lib/es/components/colorPicker/ColorSlider.vue2.js.map +1 -0
- package/lib/es/components/colorPicker/DataPart.vue2.js +5 -0
- package/lib/es/components/colorPicker/DataPart.vue2.js.map +1 -0
- package/lib/es/components/datePicker/DatePicker.vue2.js +5 -0
- package/lib/es/components/datePicker/DatePicker.vue2.js.map +1 -0
- package/lib/es/components/datePicker/Footer.vue2.js +5 -0
- package/lib/es/components/datePicker/Footer.vue2.js.map +1 -0
- package/lib/es/components/datePicker/Month.vue2.js +5 -0
- package/lib/es/components/datePicker/Month.vue2.js.map +1 -0
- package/lib/es/components/datePicker/MonthsGrid.vue2.js +5 -0
- package/lib/es/components/datePicker/MonthsGrid.vue2.js.map +1 -0
- package/lib/es/components/datePicker/Navigation.vue2.js +5 -0
- package/lib/es/components/datePicker/Navigation.vue2.js.map +1 -0
- package/lib/es/components/datePicker/Panel.vue2.js +5 -0
- package/lib/es/components/datePicker/Panel.vue2.js.map +1 -0
- package/lib/es/components/datePicker/QuickControl.vue2.js +5 -0
- package/lib/es/components/datePicker/QuickControl.vue2.js.map +1 -0
- package/lib/es/components/datePicker/YearAndMonth.vue2.js +5 -0
- package/lib/es/components/datePicker/YearAndMonth.vue2.js.map +1 -0
- package/lib/es/components/descriptions/Descriptions.vue2.js +5 -0
- package/lib/es/components/descriptions/Descriptions.vue2.js.map +1 -0
- package/lib/es/components/descriptions/DescriptionsItem.vue2.js +5 -0
- package/lib/es/components/descriptions/DescriptionsItem.vue2.js.map +1 -0
- package/lib/es/components/divider/Divider.vue2.js +5 -0
- package/lib/es/components/divider/Divider.vue2.js.map +1 -0
- package/lib/es/components/dropdown/ContextProvider.vue2.js +5 -0
- package/lib/es/components/dropdown/ContextProvider.vue2.js.map +1 -0
- package/lib/es/components/dropdown/Dropdown.vue2.js +5 -0
- package/lib/es/components/dropdown/Dropdown.vue2.js.map +1 -0
- package/lib/es/components/dropdown/DropdownDivider.vue2.js +5 -0
- package/lib/es/components/dropdown/DropdownDivider.vue2.js.map +1 -0
- package/lib/es/components/dropdown/DropdownItem.vue2.js +5 -0
- package/lib/es/components/dropdown/DropdownItem.vue2.js.map +1 -0
- package/lib/es/components/dropdown/DropdownMenu.vue2.js +5 -0
- package/lib/es/components/dropdown/DropdownMenu.vue2.js.map +1 -0
- package/lib/es/components/dropdown/DropdownTitle.vue2.js +5 -0
- package/lib/es/components/dropdown/DropdownTitle.vue2.js.map +1 -0
- package/lib/es/components/empty/Empty.vue2.js +5 -0
- package/lib/es/components/empty/Empty.vue2.js.map +1 -0
- package/lib/es/components/form/ArrayField.vue2.js +5 -0
- package/lib/es/components/form/ArrayField.vue2.js.map +1 -0
- package/lib/es/components/form/ErrorMessage.vue2.js +5 -0
- package/lib/es/components/form/ErrorMessage.vue2.js.map +1 -0
- package/lib/es/components/form/FieldWrapper.vue2.js +5 -0
- package/lib/es/components/form/FieldWrapper.vue2.js.map +1 -0
- package/lib/es/components/form/Form.vue2.js +5 -0
- package/lib/es/components/form/Form.vue2.js.map +1 -0
- package/lib/es/components/form/Group.vue2.js +5 -0
- package/lib/es/components/form/Group.vue2.js.map +1 -0
- package/lib/es/components/form/Label.vue2.js +5 -0
- package/lib/es/components/form/Label.vue2.js.map +1 -0
- package/lib/es/components/form/Section.vue2.js +37 -0
- package/lib/es/components/form/Section.vue2.js.map +1 -0
- package/lib/es/components/form/Slot.vue2.js +5 -0
- package/lib/es/components/form/Slot.vue2.js.map +1 -0
- package/lib/es/components/grid/Col.vue2.js +5 -0
- package/lib/es/components/grid/Col.vue2.js.map +1 -0
- package/lib/es/components/grid/Row.vue2.js +5 -0
- package/lib/es/components/grid/Row.vue2.js.map +1 -0
- package/lib/es/components/highlight/Highlight.vue2.js +5 -0
- package/lib/es/components/highlight/Highlight.vue2.js.map +1 -0
- package/lib/es/components/iconButton/IconButton.vue2.js +5 -0
- package/lib/es/components/iconButton/IconButton.vue2.js.map +1 -0
- package/lib/es/components/image/Image.vue2.js +5 -0
- package/lib/es/components/image/Image.vue2.js.map +1 -0
- package/lib/es/components/image/Preview.vue2.js +5 -0
- package/lib/es/components/image/Preview.vue2.js.map +1 -0
- package/lib/es/components/image/PreviewFooter.vue2.js +5 -0
- package/lib/es/components/image/PreviewFooter.vue2.js.map +1 -0
- package/lib/es/components/image/PreviewHeader.vue2.js +5 -0
- package/lib/es/components/image/PreviewHeader.vue2.js.map +1 -0
- package/lib/es/components/image/PreviewImage.vue2.js +5 -0
- package/lib/es/components/image/PreviewImage.vue2.js.map +1 -0
- package/lib/es/components/image/PreviewInner.vue2.js +5 -0
- package/lib/es/components/image/PreviewInner.vue2.js.map +1 -0
- package/lib/es/components/input/Input.vue2.js +5 -0
- package/lib/es/components/input/Input.vue2.js.map +1 -0
- package/lib/es/components/input/InputGroup.vue2.js +5 -0
- package/lib/es/components/input/InputGroup.vue2.js.map +1 -0
- package/lib/es/components/input/TextArea.vue2.js +5 -0
- package/lib/es/components/input/TextArea.vue2.js.map +1 -0
- package/lib/es/components/inputNumber/InputNumber.vue2.js +5 -0
- package/lib/es/components/inputNumber/InputNumber.vue2.js.map +1 -0
- package/lib/es/components/layout/Content.vue2.js +5 -0
- package/lib/es/components/layout/Content.vue2.js.map +1 -0
- package/lib/es/components/layout/Footer.vue2.js +5 -0
- package/lib/es/components/layout/Footer.vue2.js.map +1 -0
- package/lib/es/components/layout/Header.vue2.js +5 -0
- package/lib/es/components/layout/Header.vue2.js.map +1 -0
- package/lib/es/components/layout/Layout.vue2.js +5 -0
- package/lib/es/components/layout/Layout.vue2.js.map +1 -0
- package/lib/es/components/layout/Sider.vue2.js +5 -0
- package/lib/es/components/layout/Sider.vue2.js.map +1 -0
- package/lib/es/components/list/List.vue2.js +5 -0
- package/lib/es/components/list/List.vue2.js.map +1 -0
- package/lib/es/components/list/ListItem.vue2.js +5 -0
- package/lib/es/components/list/ListItem.vue2.js.map +1 -0
- package/lib/es/components/locale/LocaleConsumer.vue2.js +5 -0
- package/lib/es/components/locale/LocaleConsumer.vue2.js.map +1 -0
- package/lib/es/components/locale/LocaleProvider.vue2.js +5 -0
- package/lib/es/components/locale/LocaleProvider.vue2.js.map +1 -0
- package/lib/es/components/modal/ConfirmModal.vue2.js +5 -0
- package/lib/es/components/modal/ConfirmModal.vue2.js.map +1 -0
- package/lib/es/components/modal/Modal.vue2.js +5 -0
- package/lib/es/components/modal/Modal.vue2.js.map +1 -0
- package/lib/es/components/modal/ModalContent.vue2.js +5 -0
- package/lib/es/components/modal/ModalContent.vue2.js.map +1 -0
- package/lib/es/components/navigation/CollapseButton.vue2.js +5 -0
- package/lib/es/components/navigation/CollapseButton.vue2.js.map +1 -0
- package/lib/es/components/navigation/Footer.vue2.js +5 -0
- package/lib/es/components/navigation/Footer.vue2.js.map +1 -0
- package/lib/es/components/navigation/Header.vue2.js +5 -0
- package/lib/es/components/navigation/Header.vue2.js.map +1 -0
- package/lib/es/components/navigation/Item.vue2.js +5 -0
- package/lib/es/components/navigation/Item.vue2.js.map +1 -0
- package/lib/es/components/navigation/Navigation.vue2.js +5 -0
- package/lib/es/components/navigation/Navigation.vue2.js.map +1 -0
- package/lib/es/components/navigation/SubNav.vue2.js +5 -0
- package/lib/es/components/navigation/SubNav.vue2.js.map +1 -0
- package/lib/es/components/notification/Notice.vue2.js +5 -0
- package/lib/es/components/notification/Notice.vue2.js.map +1 -0
- package/lib/es/components/notification/NotificationList.vue2.js +5 -0
- package/lib/es/components/notification/NotificationList.vue2.js.map +1 -0
- package/lib/es/components/overflowList/IntersectionObserver.vue2.js +5 -0
- package/lib/es/components/overflowList/IntersectionObserver.vue2.js.map +1 -0
- package/lib/es/components/overflowList/OverflowList.vue2.js +5 -0
- package/lib/es/components/overflowList/OverflowList.vue2.js.map +1 -0
- package/lib/es/components/pagination/Pagination.vue2.js +5 -0
- package/lib/es/components/pagination/Pagination.vue2.js.map +1 -0
- package/lib/es/components/pagination/RestPageList.vue2.js +5 -0
- package/lib/es/components/pagination/RestPageList.vue2.js.map +1 -0
- package/lib/es/components/pinCode/PinCode.vue2.js +5 -0
- package/lib/es/components/pinCode/PinCode.vue2.js.map +1 -0
- package/lib/es/components/popconfirm/Popconfirm.vue2.js +5 -0
- package/lib/es/components/popconfirm/Popconfirm.vue2.js.map +1 -0
- package/lib/es/components/popover/Arrow.vue2.js +59 -0
- package/lib/es/components/popover/Arrow.vue2.js.map +1 -0
- package/lib/es/components/popover/Popover.vue2.js +5 -0
- package/lib/es/components/popover/Popover.vue2.js.map +1 -0
- package/lib/es/components/progress/Progress.vue2.js +5 -0
- package/lib/es/components/progress/Progress.vue2.js.map +1 -0
- package/lib/es/components/radio/Radio.vue2.js +5 -0
- package/lib/es/components/radio/Radio.vue2.js.map +1 -0
- package/lib/es/components/radio/RadioGroup.vue2.js +5 -0
- package/lib/es/components/radio/RadioGroup.vue2.js.map +1 -0
- package/lib/es/components/rating/Rating.vue2.js +5 -0
- package/lib/es/components/rating/Rating.vue2.js.map +1 -0
- package/lib/es/components/rating/RatingItem.vue2.js +5 -0
- package/lib/es/components/rating/RatingItem.vue2.js.map +1 -0
- package/lib/es/components/resizable/Resizable.vue2.js +5 -0
- package/lib/es/components/resizable/Resizable.vue2.js.map +1 -0
- package/lib/es/components/resizable/ResizableHandler.vue2.js +5 -0
- package/lib/es/components/resizable/ResizableHandler.vue2.js.map +1 -0
- package/lib/es/components/resizable/group/ResizeGroup.vue2.js +5 -0
- package/lib/es/components/resizable/group/ResizeGroup.vue2.js.map +1 -0
- package/lib/es/components/resizable/group/ResizeHandler.vue2.js +5 -0
- package/lib/es/components/resizable/group/ResizeHandler.vue2.js.map +1 -0
- package/lib/es/components/resizable/group/ResizeItem.vue2.js +5 -0
- package/lib/es/components/resizable/group/ResizeItem.vue2.js.map +1 -0
- package/lib/es/components/resizeObserver/index.vue2.js +5 -0
- package/lib/es/components/resizeObserver/index.vue2.js.map +1 -0
- package/lib/es/components/scrollList/ScrollItem.vue2.js +5 -0
- package/lib/es/components/scrollList/ScrollItem.vue2.js.map +1 -0
- package/lib/es/components/scrollList/ScrollList.vue2.js +5 -0
- package/lib/es/components/scrollList/ScrollList.vue2.js.map +1 -0
- package/lib/es/components/select/Option.vue2.js +5 -0
- package/lib/es/components/select/Option.vue2.js.map +1 -0
- package/lib/es/components/select/OptionGroup.vue2.js +5 -0
- package/lib/es/components/select/OptionGroup.vue2.js.map +1 -0
- package/lib/es/components/select/Select.vue2.js +5 -0
- package/lib/es/components/select/Select.vue2.js.map +1 -0
- package/lib/es/components/sideSheet/SideSheet.vue2.js +5 -0
- package/lib/es/components/sideSheet/SideSheet.vue2.js.map +1 -0
- package/lib/es/components/sideSheet/SideSheetContent.vue2.js +5 -0
- package/lib/es/components/sideSheet/SideSheetContent.vue2.js.map +1 -0
- package/lib/es/components/skeleton/Skeleton.vue2.js +5 -0
- package/lib/es/components/skeleton/Skeleton.vue2.js.map +1 -0
- package/lib/es/components/skeleton/SkeletonAvatar.vue2.js +5 -0
- package/lib/es/components/skeleton/SkeletonAvatar.vue2.js.map +1 -0
- package/lib/es/components/skeleton/SkeletonButton.vue2.js +5 -0
- package/lib/es/components/skeleton/SkeletonButton.vue2.js.map +1 -0
- package/lib/es/components/skeleton/SkeletonImage.vue2.js +5 -0
- package/lib/es/components/skeleton/SkeletonImage.vue2.js.map +1 -0
- package/lib/es/components/skeleton/SkeletonParagraph.vue2.js +5 -0
- package/lib/es/components/skeleton/SkeletonParagraph.vue2.js.map +1 -0
- package/lib/es/components/skeleton/SkeletonTitle.vue2.js +5 -0
- package/lib/es/components/skeleton/SkeletonTitle.vue2.js.map +1 -0
- package/lib/es/components/slider/Slider.vue2.js +5 -0
- package/lib/es/components/slider/Slider.vue2.js.map +1 -0
- package/lib/es/components/space/Space.vue2.js +5 -0
- package/lib/es/components/space/Space.vue2.js.map +1 -0
- package/lib/es/components/spin/Spin.vue2.js +5 -0
- package/lib/es/components/spin/Spin.vue2.js.map +1 -0
- package/lib/es/components/steps/BasicStep.vue2.js +5 -0
- package/lib/es/components/steps/BasicStep.vue2.js.map +1 -0
- package/lib/es/components/steps/BasicSteps.vue2.js +5 -0
- package/lib/es/components/steps/BasicSteps.vue2.js.map +1 -0
- package/lib/es/components/steps/FillStep.vue2.js +5 -0
- package/lib/es/components/steps/FillStep.vue2.js.map +1 -0
- package/lib/es/components/steps/FillSteps.vue2.js +5 -0
- package/lib/es/components/steps/FillSteps.vue2.js.map +1 -0
- package/lib/es/components/steps/NavStep.vue2.js +5 -0
- package/lib/es/components/steps/NavStep.vue2.js.map +1 -0
- package/lib/es/components/steps/NavSteps.vue2.js +5 -0
- package/lib/es/components/steps/NavSteps.vue2.js.map +1 -0
- package/lib/es/components/steps/Step.vue2.js +5 -0
- package/lib/es/components/steps/Step.vue2.js.map +1 -0
- package/lib/es/components/steps/Steps.vue2.js +5 -0
- package/lib/es/components/steps/Steps.vue2.js.map +1 -0
- package/lib/es/components/switch/Switch.vue2.js +5 -0
- package/lib/es/components/switch/Switch.vue2.js.map +1 -0
- package/lib/es/components/table/Column.vue2.js +5 -0
- package/lib/es/components/table/Column.vue2.js.map +1 -0
- package/lib/es/components/table/ColumnFilter.vue2.js +133 -0
- package/lib/es/components/table/ColumnFilter.vue2.js.map +1 -0
- package/lib/es/components/table/ColumnSorter.vue2.js +73 -0
- package/lib/es/components/table/ColumnSorter.vue2.js.map +1 -0
- package/lib/es/components/table/CustomExpandIcon.vue2.js +63 -0
- package/lib/es/components/table/CustomExpandIcon.vue2.js.map +1 -0
- package/lib/es/components/table/ResizableHeaderCell.vue2.js +52 -0
- package/lib/es/components/table/ResizableHeaderCell.vue2.js.map +1 -0
- package/lib/es/components/table/Table.vue2.js +5 -0
- package/lib/es/components/table/Table.vue2.js.map +1 -0
- package/lib/es/components/table/TableCell.vue2.js +207 -0
- package/lib/es/components/table/TableCell.vue2.js.map +1 -0
- package/lib/es/components/table/TableHeader.vue2.js +93 -0
- package/lib/es/components/table/TableHeader.vue2.js.map +1 -0
- package/lib/es/components/table/TableHeaderRow.vue2.js +351 -0
- package/lib/es/components/table/TableHeaderRow.vue2.js.map +1 -0
- package/lib/es/components/table/TableSelectionCell.vue2.js +74 -0
- package/lib/es/components/table/TableSelectionCell.vue2.js.map +1 -0
- package/lib/es/components/table/VirtualizedBody.vue2.js +652 -0
- package/lib/es/components/table/VirtualizedBody.vue2.js.map +1 -0
- package/lib/es/components/tabs/TabBar.vue2.js +5 -0
- package/lib/es/components/tabs/TabBar.vue2.js.map +1 -0
- package/lib/es/components/tabs/TabItem.vue2.js +5 -0
- package/lib/es/components/tabs/TabItem.vue2.js.map +1 -0
- package/lib/es/components/tabs/TabPane.vue2.js +5 -0
- package/lib/es/components/tabs/TabPane.vue2.js.map +1 -0
- package/lib/es/components/tabs/Tabs.vue2.js +5 -0
- package/lib/es/components/tabs/Tabs.vue2.js.map +1 -0
- package/lib/es/components/tag/Tag.vue2.js +5 -0
- package/lib/es/components/tag/Tag.vue2.js.map +1 -0
- package/lib/es/components/tag/TagGroup.vue2.js +5 -0
- package/lib/es/components/tag/TagGroup.vue2.js.map +1 -0
- package/lib/es/components/tagInput/TagInput.vue2.js +412 -0
- package/lib/es/components/tagInput/TagInput.vue2.js.map +1 -0
- package/lib/es/components/tagInput/TagItem.vue2.js +5 -0
- package/lib/es/components/tagInput/TagItem.vue2.js.map +1 -0
- package/lib/es/components/timePicker/Combobox.vue2.js +5 -0
- package/lib/es/components/timePicker/Combobox.vue2.js.map +1 -0
- package/lib/es/components/timePicker/TimeInput.vue2.js +5 -0
- package/lib/es/components/timePicker/TimeInput.vue2.js.map +1 -0
- package/lib/es/components/timePicker/TimePicker.vue2.js +5 -0
- package/lib/es/components/timePicker/TimePicker.vue2.js.map +1 -0
- package/lib/es/components/timeline/Timeline.vue2.js +5 -0
- package/lib/es/components/timeline/Timeline.vue2.js.map +1 -0
- package/lib/es/components/timeline/TimelineItem.vue2.js +5 -0
- package/lib/es/components/timeline/TimelineItem.vue2.js.map +1 -0
- package/lib/es/components/toast/HookToast.vue2.js +5 -0
- package/lib/es/components/toast/HookToast.vue2.js.map +1 -0
- package/lib/es/components/toast/Toast.vue2.js +5 -0
- package/lib/es/components/toast/Toast.vue2.js.map +1 -0
- package/lib/es/components/toast/ToastList.vue2.js +5 -0
- package/lib/es/components/toast/ToastList.vue2.js.map +1 -0
- package/lib/es/components/tooltip/Tooltip.vue2.js +594 -0
- package/lib/es/components/tooltip/Tooltip.vue2.js.map +1 -0
- package/lib/es/components/tooltip/TriangleArrow.vue2.js +5 -0
- package/lib/es/components/tooltip/TriangleArrow.vue2.js.map +1 -0
- package/lib/es/components/tooltip/TriangleArrowVertical.vue2.js +5 -0
- package/lib/es/components/tooltip/TriangleArrowVertical.vue2.js.map +1 -0
- package/lib/es/components/transfer/Transfer.vue2.js +5 -0
- package/lib/es/components/transfer/Transfer.vue2.js.map +1 -0
- package/lib/es/components/transfer/TransferHeader.vue2.js +5 -0
- package/lib/es/components/transfer/TransferHeader.vue2.js.map +1 -0
- package/lib/es/components/transfer/TransferSelected.vue2.js +5 -0
- package/lib/es/components/transfer/TransferSelected.vue2.js.map +1 -0
- package/lib/es/components/transfer/TransferSource.vue2.js +5 -0
- package/lib/es/components/transfer/TransferSource.vue2.js.map +1 -0
- package/lib/es/components/tree/AutoSizer.vue2.js +5 -0
- package/lib/es/components/tree/AutoSizer.vue2.js.map +1 -0
- package/lib/es/components/tree/Indent.vue2.js +5 -0
- package/lib/es/components/tree/Indent.vue2.js.map +1 -0
- package/lib/es/components/tree/NodeCollapsible.vue2.js +5 -0
- package/lib/es/components/tree/NodeCollapsible.vue2.js.map +1 -0
- package/lib/es/components/tree/NodeList.vue2.js +5 -0
- package/lib/es/components/tree/NodeList.vue2.js.map +1 -0
- package/lib/es/components/tree/Tree.vue2.js +5 -0
- package/lib/es/components/tree/Tree.vue2.js.map +1 -0
- package/lib/es/components/tree/TreeNode.vue2.js +5 -0
- package/lib/es/components/tree/TreeNode.vue2.js.map +1 -0
- package/lib/es/components/treeSelect/TreeSelect.vue2.js +5 -0
- package/lib/es/components/treeSelect/TreeSelect.vue2.js.map +1 -0
- package/lib/es/components/trigger/Trigger.vue2.js +5 -0
- package/lib/es/components/trigger/Trigger.vue2.js.map +1 -0
- package/lib/es/components/typography/Base.vue2.js +5 -0
- package/lib/es/components/typography/Base.vue2.js.map +1 -0
- package/lib/es/components/typography/Copyable.vue2.js +5 -0
- package/lib/es/components/typography/Copyable.vue2.js.map +1 -0
- package/lib/es/components/typography/Paragraph.vue2.js +5 -0
- package/lib/es/components/typography/Paragraph.vue2.js.map +1 -0
- package/lib/es/components/typography/Text.vue2.js +5 -0
- package/lib/es/components/typography/Text.vue2.js.map +1 -0
- package/lib/es/components/typography/Title.vue2.js +5 -0
- package/lib/es/components/typography/Title.vue2.js.map +1 -0
- package/lib/es/components/typography/Typography.vue2.js +5 -0
- package/lib/es/components/typography/Typography.vue2.js.map +1 -0
- package/lib/es/components/upload/Upload.vue2.js +5 -0
- package/lib/es/components/upload/Upload.vue2.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VirtualizedBody.vue2.js","sources":["../../../../src/components/table/VirtualizedBody.vue"],"sourcesContent":["<template>\n <div\n ref=\"containerRef\"\n :class=\"bodyCls\"\n :style=\"containerStyle\"\n @scroll=\"handleScroll\"\n @wheel.passive=\"handleWheel\"\n >\n <div\n :style=\"{\n width: typeof tableWidth === 'number' ? `${tableWidth}px` : tableWidth,\n overflow: 'visible',\n }\"\n :class=\"tableCls\"\n >\n <div :class=\"`${prefixCls}-tbody`\" :style=\"innerStyle\">\n <component\n :is=\"renderRowWithStyle(item, item.__originalIndex ?? relativeIndex)\"\n v-for=\"(item, relativeIndex) in virtualizedData\"\n :key=\"getItemKey(item, item.__originalIndex ?? relativeIndex)\"\n />\n </div>\n </div>\n <div v-if=\"!allData || allData.length === 0\" :class=\"`${prefixCls}-empty`\">\n <slot name=\"empty\">\n <Empty v-if=\"!props.emptySlot\" />\n <component :is=\"props.emptySlot\" v-else />\n </slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, onUnmounted, nextTick, h } from 'vue';\nimport { get } from 'lodash';\nimport classnames from 'classnames';\nimport { cssClasses } from '@douyinfe/semi-foundation/table/constants';\nimport {\n getDefaultVirtualizedRowConfig,\n arrayAdd,\n isInnerColumnKey,\n isExpandedColumn,\n isScrollbarColumn,\n isFixedLeft,\n isFixedRight,\n isLastLeftFixed,\n isFirstFixedRight,\n} from '@douyinfe/semi-foundation/table/utils';\nimport { strings } from '@douyinfe/semi-foundation/table/constants';\nimport Empty from '../empty';\nimport { useTableBodyFoundation } from './useTableBodyFoundation';\nimport { useTableContext } from './table-context';\nimport TableCell from './TableCell.vue';\nimport type { Virtualized, VirtualizedItemSize, VirtualizedOnScroll, ColumnProps, Size } from './interface';\nimport type { CSSProperties } from 'vue';\n\ndefineOptions({\n name: 'SemiVirtualizedBody',\n});\n\ninterface Props {\n dataSource?: any[];\n columns?: ColumnProps[];\n virtualized?: Virtualized;\n scroll?: { y?: number | string; x?: number | string };\n prefixCls?: string;\n size?: Size;\n onScroll?: VirtualizedOnScroll;\n handleBodyScroll?: (e: any) => void;\n handleWheel?: (e: WheelEvent) => void;\n emptySlot?: any;\n rowKey?: string | number | ((record: any) => string | number);\n components?: any;\n expandedRowKeys?: (string | number)[];\n expandedRowRender?: (record: any, index: number, expanded: boolean) => any;\n onRow?: (record: any, index: number) => any;\n rowExpandable?: (record: any) => boolean;\n selectedRowKeysSet?: Set<string | number> | Set<unknown>;\n disabledRowKeysSet?: Set<string | number> | Set<unknown>;\n renderExpandIcon?: (record: any, isNested: boolean, groupKey?: string | number) => any;\n hideExpandedColumn?: boolean;\n expandRowByClick?: boolean;\n slots?: any;\n childrenRecordName?: string;\n groups?: Map<string | number, Set<string | number>> | null;\n renderGroupSection?: (groupKey?: string | number, group?: (string | number)[]) => any;\n onGroupedRow?: (record?: any, index?: number) => any;\n clickGroupedRowToExpand?: boolean;\n onGroupExpand?: (expanded: boolean, groupKey: string | number, e: MouseEvent) => void;\n indentSize?: number;\n expandIcon?: any;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n prefixCls: cssClasses.PREFIX,\n dataSource: () => [],\n columns: () => [],\n});\n\nconst emit = defineEmits<{\n (\n e: 'items-rendered',\n props: {\n overscanStartIndex: number;\n overscanStopIndex: number;\n visibleStartIndex: number;\n visibleStopIndex: number;\n }\n ): void;\n}>();\n\nconst containerRef = ref<HTMLElement>();\nconst scrollTop = ref(0);\nconst scrollLeft = ref(0);\n\nconst { virtualizedData: foundationVirtualizedData } = useTableBodyFoundation({\n dataSource: computed(() => props.dataSource),\n rowKey: computed(() => props.rowKey),\n childrenRecordName: computed(() => props.childrenRecordName),\n expandedRowRender: computed(() => props.expandedRowRender),\n expandedRowKeys: computed(() => props.expandedRowKeys),\n groups: computed(() => props.groups),\n columns: computed(() => props.columns),\n});\n\nconst allData = computed(() => {\n return foundationVirtualizedData.value || [];\n});\n\n// 可见项范围\n// 初始值设置为 -1,表示还未计算,避免初始时只显示第一项\n// 但在数据准备好后会立即计算,确保正确显示\nconst visibleRange = ref({\n startIndex: -1,\n endIndex: -1,\n overscanStartIndex: -1,\n overscanStopIndex: -1,\n});\n\nconst virtualizedData = computed(() => {\n const { overscanStartIndex, overscanStopIndex } = visibleRange.value;\n\n // 如果还未计算可见范围(初始值为 -1),但有数据,返回前几项作为初始显示\n if (overscanStartIndex < 0 || overscanStopIndex < 0) {\n // 如果有数据但还未初始化,返回前 10 项作为初始显示\n if (allData.value.length > 0) {\n const initialCount = Math.min(10, allData.value.length);\n return allData.value.slice(0, initialCount).map((item, relativeIndex) => ({\n ...item,\n __originalIndex: relativeIndex,\n }));\n }\n return [];\n }\n\n const start = Math.max(0, overscanStartIndex);\n const end = Math.min(allData.value.length - 1, overscanStopIndex);\n\n // 返回可见范围内的数据,但保留原始索引信息\n return allData.value.slice(start, end + 1).map((item, relativeIndex) => ({\n ...item,\n __originalIndex: start + relativeIndex, // 保存原始索引\n }));\n});\n\nconst bodyCls = computed(() => classnames(`${props.prefixCls}-body`));\n\nconst tableContext = useTableContext();\n\nconst tableWidth = computed(() => {\n const scrollX = props.scroll?.x;\n if (scrollX) {\n return typeof scrollX === 'number' ? scrollX : scrollX;\n }\n\n // 如果没有 scroll.x,使用 tableContext 的 tableWidth(如果可用)\n if (tableContext?.tableWidth !== undefined && tableContext.tableWidth !== null) {\n const ctxWidth = tableContext.tableWidth;\n if (typeof ctxWidth === 'number' && ctxWidth > 0) {\n return ctxWidth;\n }\n }\n\n // 降级方案:使用 getCellWidths 计算\n if (tableContext?.getCellWidths) {\n const cellWidths = tableContext.getCellWidths(props.columns);\n if (cellWidths && cellWidths.length > 0) {\n const totalWidth = arrayAdd(cellWidths, 0, (props.columns || []).length);\n if (totalWidth > 0) {\n return totalWidth;\n }\n }\n }\n\n // 最后的降级方案:直接计算列宽\n const manualWidth = (props.columns || []).reduce((sum: number, col: ColumnProps) => {\n return sum + (typeof col.width === 'number' ? col.width : 0);\n }, 0);\n\n // 如果手动计算有宽度,返回该宽度,否则返回 100%\n return manualWidth > 0 ? manualWidth : '100%';\n});\n\nconst tableCls = computed(() => classnames(`${props.prefixCls}`, `${props.prefixCls}-fixed`));\n\nconst containerStyle = computed<CSSProperties>(() => {\n const rawY = get(props.scroll, 'y');\n const yIsNumber = typeof rawY === 'number';\n const y = yIsNumber ? rawY : 600;\n\n return {\n width: '100%',\n height: yIsNumber ? `${y}px` : '600px',\n overflowX: 'auto',\n overflowY: 'scroll',\n position: 'relative',\n scrollbarGutter: 'stable',\n } as CSSProperties;\n});\n\nconst innerStyle = computed<CSSProperties>(() => {\n // 计算所有扁平化数据的总高度(不是只计算可见项的高度)\n // 使用缓存的高度计算,避免重复遍历\n let totalHeight = 0;\n const dataLength = allData.value.length;\n\n // 如果数据量很大,可以考虑优化计算\n if (dataLength > 0) {\n // 预分配数组,提高性能\n const heights = new Array(dataLength);\n for (let i = 0; i < dataLength; i++) {\n const size = getItemSize(i);\n heights[i] = size;\n totalHeight += size;\n }\n }\n\n return {\n width: '100%',\n height: `${totalHeight}px`,\n position: 'relative',\n };\n});\n\nconst itemSizeCache = new Map<number, number>();\n\nconst getItemSize = (index: number): number => {\n if (itemSizeCache.has(index)) {\n return itemSizeCache.get(index)!;\n }\n\n // 边界检查\n if (index < 0 || index >= allData.value.length) {\n return 0;\n }\n\n // 使用原始数据源获取 item\n const item = allData.value[index];\n if (!item) {\n return 0;\n }\n\n const defaultConfig = getDefaultVirtualizedRowConfig(props.size, item?.sectionRow);\n const itemSize = get(props.virtualized, 'itemSize', defaultConfig.height) as VirtualizedItemSize;\n\n let realSize = itemSize as number;\n\n if (typeof itemSize === 'function') {\n try {\n realSize = itemSize(index, {\n expandedRow: get(item, 'expandedRow', false),\n sectionRow: get(item, 'sectionRow', false),\n });\n } catch (error) {\n console.warn(`Error in itemSize function at index ${index}:`, error);\n realSize = defaultConfig.height;\n }\n }\n\n // 确保返回有效值\n if (typeof realSize !== 'number' || isNaN(realSize)) {\n realSize = defaultConfig.height;\n }\n\n if (realSize < defaultConfig.minHeight) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n `The computed real \\`itemSize\\` at index ${index} cannot be less than ${defaultConfig.minHeight}, got ${realSize}`\n );\n }\n realSize = defaultConfig.minHeight;\n }\n itemSizeCache.set(index, realSize);\n return realSize;\n};\n\n// 当数据变化时,清空缓存\nwatch(\n () => allData.value,\n () => {\n itemSizeCache.clear();\n },\n { deep: true }\n);\n\nconst getItemKey = (item: any, index: number): string | number => {\n return get(item, 'key', index);\n};\n\nconst getItemStyle = (item: any, relativeIndex: number): CSSProperties => {\n // 使用原始索引计算位置(__originalIndex 是在 virtualizedData computed 中设置的)\n const originalIndex = item?.__originalIndex ?? relativeIndex;\n\n // 确保索引在有效范围内\n if (originalIndex < 0 || originalIndex >= allData.value.length) {\n return {\n position: 'absolute',\n top: '0px',\n left: 0,\n right: 0,\n height: '0px',\n display: 'none', // 隐藏无效项\n };\n }\n\n // 计算该索引之前所有项的总高度\n let top = 0;\n for (let i = 0; i < originalIndex; i++) {\n top += getItemSize(i);\n }\n\n return {\n position: 'absolute',\n top: `${top}px`,\n left: 0,\n height: `${getItemSize(originalIndex)}px`,\n display: 'flex',\n // 确保单元格不会被压缩\n flexShrink: 0,\n };\n};\n\n// 获取 cellWidths,用于虚拟滚动行的宽度计算\nconst getCellWidths = computed(() => {\n let cellWidths: number[] = [];\n if (tableContext?.getCellWidths) {\n cellWidths = tableContext.getCellWidths(props.columns) || [];\n }\n\n // 如果 tableContext 没有返回有效数据,或者列数不匹配,使用降级方案\n if (!cellWidths.length || cellWidths.length !== props.columns?.length) {\n cellWidths = (props.columns || []).map((col: ColumnProps) => {\n // 优先使用列配置的 width\n if (typeof col.width === 'number' && col.width > 0) {\n return col.width;\n }\n // 如果是固定列,尝试从 context 获取\n if (col.fixed && tableContext?.getCellWidths) {\n const contextWidths = tableContext.getCellWidths(props.columns) || [];\n if (contextWidths.length > 0) {\n return contextWidths[0] || 0; // 降级方案\n }\n }\n return 0; // 让浏览器自动计算\n });\n }\n\n const hasZeroWidth = cellWidths.some((w) => w === 0);\n if (hasZeroWidth) {\n cellWidths = cellWidths.map((width, index) => {\n if (width > 0) {\n return width;\n }\n const column = props.columns?.[index];\n if (column && typeof column.width === 'number' && column.width > 0) {\n return column.width;\n }\n return 80;\n });\n }\n\n return cellWidths;\n});\n\nconst getBodyCellComponent = computed(() => {\n return get(props.components, 'body.cell', strings.DEFAULT_COMPONENTS.body.cell);\n});\n\n// 计算第一个数据列的索引(排除 inner columns)\nconst getFirstDataColumnIndex = computed(() => {\n let idx = 0;\n const cols = props.columns || [];\n while (idx < cols.length) {\n const key = (cols[idx] as any)?.key;\n if (key != null && isInnerColumnKey(key)) {\n idx += 1;\n continue;\n }\n break;\n }\n return idx;\n});\n\n/**\n * 渲染带有绝对定位样式的行\n * 关键:虚拟滚动中,react-window 的样式(position: absolute, top, height)\n * 需要直接应用到 <tr> 元素上,而不是外层 wrapper\n * 这样才能确保 table 布局正确工作\n */\nconst renderRowWithStyle = (item: any, index: number) => {\n const rowVNode = renderRow(item, index);\n if (!rowVNode) {\n return null;\n }\n\n // 获取绝对定位样式\n const itemStyle = getItemStyle(item, index);\n\n // 获取行宽度\n const rowWidth = typeof tableWidth.value === 'number' ? `${tableWidth.value}px` : tableWidth.value;\n\n const existingStyle = rowVNode.props?.style || {};\n const mergedStyle: CSSProperties = {\n // 先应用用户自定义样式\n ...(typeof existingStyle === 'object' ? existingStyle : {}),\n // 再应用虚拟滚动必需的定位样式(不能被覆盖)\n ...itemStyle,\n width: rowWidth,\n };\n\n // 使用 h() 创建新的 VNode 并合并样式\n return h(\n rowVNode.type as any,\n {\n ...rowVNode.props,\n style: mergedStyle,\n },\n rowVNode.children as any\n );\n};\n\nconst renderRow = (item: any, index: number) => {\n // 如果是分组行(sectionRow)\n if (item?.sectionRow) {\n const groupKey = item.groupKey;\n const group = item.group;\n const expanded = item.expanded ?? false;\n\n // 获取分组的所有 row keys\n const groupRowKeys = group ? Array.from(group as Set<string | number>) : [];\n\n // 渲染分组标题内容\n let groupSectionContent: any = null;\n if (props.renderGroupSection) {\n const result = props.renderGroupSection(groupKey, groupRowKeys);\n // 如果返回的是对象(包含 children),则提取 children\n if (result && typeof result === 'object' && 'children' in result) {\n groupSectionContent = result.children;\n } else {\n groupSectionContent = result;\n }\n } else {\n groupSectionContent = String(groupKey || '');\n }\n\n // 计算 colSpan(排除 scrollbar 列)\n const filteredColumns = (props.columns || []).filter((col: ColumnProps) => !isScrollbarColumn(col));\n const colSpan = filteredColumns.length;\n\n // 分组行的 onRow 处理\n const groupRecord = { groupKey, records: groupRowKeys } as any;\n const groupedRowProps = props.onGroupedRow ? props.onGroupedRow(groupRecord, index) : {};\n const {\n className: groupClassName,\n style: groupStyle,\n onClick: groupOnClick,\n ...restGroupRowProps\n } = groupedRowProps as any;\n\n // 处理分组行的点击事件(用于展开/收起)\n const handleGroupRowClick = (e: MouseEvent) => {\n // 如果启用了点击分组行展开,触发展开/收起\n if (props.clickGroupedRowToExpand && props.onGroupExpand) {\n props.onGroupExpand(!expanded, groupKey, e);\n }\n // 调用 onGroupedRow 的 onClick(如果存在)\n if (groupOnClick) {\n groupOnClick(e);\n }\n };\n\n const rowCls = classnames(\n `${props.prefixCls}-row-section`,\n {\n [`${props.prefixCls}-row-section-on`]: expanded,\n },\n groupClassName\n );\n\n // 渲染分组行,返回 <tr> 元素\n return h(\n 'tr',\n {\n class: rowCls,\n style: groupStyle || {},\n role: 'row',\n 'aria-level': 1,\n 'aria-expanded': expanded,\n onClick: handleGroupRowClick,\n ...restGroupRowProps,\n },\n [\n h(\n 'td',\n {\n colspan: colSpan,\n class: `${props.prefixCls}-row-cell`,\n },\n [\n h(\n 'div',\n {\n class: `${props.prefixCls}-section-inner`,\n },\n [\n // 渲染展开图标(如果存在)\n props.renderExpandIcon ? props.renderExpandIcon(groupRecord, false, groupKey) : null,\n // 渲染分组内容\n groupSectionContent,\n ]\n ),\n ]\n ),\n ]\n );\n }\n\n // 如果是展开行(expandedRow)\n if (item?.expandedRow) {\n if (!props.expandedRowRender) {\n return null;\n }\n const record = item.record || item;\n const rowIndex = item.index ?? index;\n\n // 展开行不需要 cellWidths,但需要正确的 colspan\n // 排除 scrollbar 列\n const filteredColumns = (props.columns || []).filter((col: ColumnProps) => !isScrollbarColumn(col));\n const colSpan = filteredColumns.length || props.columns?.length || 0;\n\n return h(\n 'tr',\n {\n class: `${props.prefixCls}-row-expand ${props.prefixCls}-row`,\n role: 'row',\n },\n [\n h(\n 'td',\n {\n colspan: colSpan,\n class: `${props.prefixCls}-row-cell`,\n },\n [\n h(\n 'div',\n {\n class: `${props.prefixCls}-expand-inner`,\n },\n [\n typeof props.expandedRowRender === 'function'\n ? props.expandedRowRender(record, rowIndex, true)\n : null,\n ]\n ),\n ]\n ),\n ]\n );\n }\n\n const record = item.record || item;\n const rowIndex = item.index ?? index;\n const level = item.level ?? 0;\n\n const getRecordKey = (r: any, key?: string | number | ((r: any) => string | number)) => {\n if (typeof key === 'function') {\n return key(r);\n }\n if (typeof key === 'string' || typeof key === 'number') {\n return get(r, key, '');\n }\n return get(r, 'key', '');\n };\n\n const key = getRecordKey(record, props.rowKey);\n const expanded = props.expandedRowKeys?.includes(key) || false;\n const selected = props.selectedRowKeysSet?.has(key) || false;\n const disabled = props.disabledRowKeysSet?.has(key) || false;\n const expandable = props.rowExpandable ? props.rowExpandable(record) : false;\n\n const rowProps = props.onRow ? props.onRow(record, rowIndex) : {};\n const { className, style, onClick, onDoubleClick, onMouseEnter, onMouseLeave, ...restRowProps } = rowProps as any;\n\n const rowClass = classnames(\n `${props.prefixCls}-row`,\n {\n [`${props.prefixCls}-row-selected`]: selected,\n [`${props.prefixCls}-row-disabled`]: disabled,\n [`${props.prefixCls}-row-expanded`]: expanded,\n },\n className\n );\n\n const cells: any[] = [];\n const cellWidths = getCellWidths.value;\n const firstDataColumnIndex = getFirstDataColumnIndex.value;\n const BodyCell = getBodyCellComponent.value;\n\n // 获取列的插槽名称(用于作用域插槽),与 Table.vue 中的 getColumnSlotName 一致\n const getColumnSlotName = (column: ColumnProps): string | null => {\n // 优先使用 key,其次使用 dataIndex\n if (column.key) {\n return String(column.key);\n }\n if (column.dataIndex) {\n return String(column.dataIndex);\n }\n return null;\n };\n\n (props.columns || []).forEach((column: ColumnProps, columnIndex: number) => {\n // 跳过 scrollbar 列\n if (isScrollbarColumn(column)) {\n return;\n }\n\n // 如果是 expanded column 且不需要显示,渲染空单元格\n if (isExpandedColumn(column) && !expandable) {\n cells.push(\n h(TableCell, {\n key: columnIndex,\n colIndex: columnIndex,\n column: column,\n record: record,\n index: rowIndex,\n prefixCls: props.prefixCls,\n component: BodyCell,\n expandable: false,\n })\n );\n return;\n }\n\n const expandableProps: any = {};\n if (expandable && columnIndex === firstDataColumnIndex) {\n expandableProps.renderExpandIcon = props.renderExpandIcon;\n expandableProps.expandable = true;\n if (props.hideExpandedColumn || false) {\n expandableProps.expandIcon = props.expandIcon != null ? props.expandIcon : true;\n }\n } else {\n expandableProps.expandable = false;\n }\n\n if (level != null && columnIndex === firstDataColumnIndex) {\n expandableProps.indent = level;\n const isBool = typeof props.expandIcon === 'boolean';\n const hasExpandIcon = props.expandIcon !== false || (!isBool && props.expandIcon !== null);\n // 如果 expandIcon 为空,不需要 indent\n if (!expandable && props.hideExpandedColumn && hasExpandIcon) {\n expandableProps.indent = level + 1;\n }\n }\n\n const fixedLeft = isFixedLeft(column) ? Math.round(arrayAdd(cellWidths, 0, columnIndex)) : false;\n const lastFixedLeft = isLastLeftFixed(props.columns || [], column);\n const fixedRight = isFixedRight(column) ? Math.round(arrayAdd(cellWidths, columnIndex + 1)) : false;\n const firstFixedRight = isFirstFixedRight(props.columns || [], column);\n\n // 确保固定列在虚拟滚动中也能正确显示层级\n // 当有固定列时,需要确保 z-index 正确设置\n // 这个值会在 TableCell 组件中用于样式计算\n\n const diyProps: any = {};\n if (!item.expandedRow) {\n const cellWidth = cellWidths[columnIndex];\n const columnWidth = typeof column.width === 'number' ? column.width : cellWidth;\n\n if (cellWidth && cellWidth > 0) {\n diyProps.width = cellWidth;\n } else if (columnWidth && columnWidth > 0) {\n diyProps.width = columnWidth;\n } else {\n diyProps.width = 80;\n }\n }\n\n const columnSlotName = getColumnSlotName(column);\n const hasSlot = columnSlotName && props.slots && !!props.slots[columnSlotName];\n let cellSlots: any = null;\n if (hasSlot && columnSlotName && props.slots[columnSlotName]) {\n // 获取列的文本值,用于插槽\n const getColumnValue = (r: any, col: ColumnProps): any => {\n if (col.dataIndex) {\n return get(r, col.dataIndex, '');\n }\n return r;\n };\n const textValue = getColumnValue(record, column);\n const slotFn = props.slots[columnSlotName];\n // 使用闭包捕获值,创建一个函数在 Vue 渲染时调用\n // 注意:这个函数会在 TableCell 渲染 slot 时被调用,此时处于正确的渲染上下文\n // 我们使用闭包捕获的值,而不是 slotProps(虽然 slotProps 也会被传递,但我们使用自己的值)\n const capturedText = textValue;\n const capturedRecord = record;\n const capturedIndex = rowIndex;\n cellSlots = {\n [columnSlotName]: () => {\n // 在渲染时调用 slot 函数,使用闭包捕获的值\n return slotFn({\n text: capturedText,\n record: capturedRecord,\n index: capturedIndex,\n });\n },\n };\n }\n\n cells.push(\n h(\n TableCell,\n {\n key: `${columnIndex}-${rowIndex}`, // 使用更稳定的 key\n colIndex: columnIndex,\n column: column,\n record: record,\n index: rowIndex,\n prefixCls: props.prefixCls,\n component: BodyCell,\n hideExpandedColumn: props.hideExpandedColumn,\n indentSize: props.indentSize || (props.size === 'small' ? 12 : props.size === 'middle' ? 16 : 16),\n selected: selected,\n expanded: expanded,\n disabled: disabled,\n fixedLeft: fixedLeft,\n lastFixedLeft: lastFixedLeft,\n fixedRight: fixedRight,\n firstFixedRight: firstFixedRight,\n firstDataColumnIndex: firstDataColumnIndex,\n expandIcon: props.expandIcon,\n columnSlotName: columnSlotName,\n hasSlot: hasSlot,\n ...expandableProps,\n ...diyProps,\n },\n cellSlots || {}\n )\n );\n });\n\n const rowStyle: CSSProperties = {\n ...style,\n };\n\n const rowEvents: any = {};\n if (onClick) rowEvents.onClick = onClick;\n if (onDoubleClick) rowEvents.onDblclick = onDoubleClick;\n if (onMouseEnter) rowEvents.onMouseenter = onMouseEnter;\n if (onMouseLeave) rowEvents.onMouseleave = onMouseLeave;\n\n return h(\n 'tr',\n {\n class: rowClass,\n style: rowStyle,\n role: 'row',\n 'data-row-key': key,\n 'aria-rowindex': rowIndex + 1,\n 'aria-expanded': expandable ? expanded : undefined,\n 'aria-level': level != null ? level + 1 : undefined,\n ...rowEvents,\n ...restRowProps,\n },\n cells\n );\n};\n\n/**\n * 使用二分查找优化可见范围计算\n * 参考 react-window 的实现\n */\nconst getOffsetForIndex = (index: number): number => {\n if (index <= 0) {\n return 0;\n }\n\n let offset = 0;\n // 优化:对于小索引,直接计算;对于大索引,可以考虑缓存\n const maxIndex = Math.min(index, allData.value.length);\n\n for (let i = 0; i < maxIndex; i++) {\n offset += getItemSize(i);\n }\n return offset;\n};\n\nconst findNearestItem = (offset: number): number => {\n const dataLength = allData.value.length;\n if (dataLength === 0) {\n return 0;\n }\n\n let left = 0;\n let right = dataLength - 1;\n let bestGuess = 0;\n\n // 如果 offset 小于等于 0,直接返回 0\n if (offset <= 0) {\n return 0;\n }\n\n // 如果 offset 大于总高度,返回最后一个索引\n const totalHeight = getOffsetForIndex(dataLength);\n if (offset >= totalHeight) {\n return dataLength - 1;\n }\n\n while (left <= right) {\n const currentGuess = Math.floor((left + right) / 2);\n const currentOffset = getOffsetForIndex(currentGuess);\n const itemSize = getItemSize(currentGuess);\n\n // 检查 offset 是否在当前项的范围内\n if (currentOffset <= offset && currentOffset + itemSize > offset) {\n return currentGuess;\n }\n\n if (currentOffset <= offset) {\n // offset 在当前项之后,向右查找\n left = currentGuess + 1;\n bestGuess = currentGuess;\n } else {\n // offset 在当前项之前,向左查找\n right = currentGuess - 1;\n }\n }\n\n return Math.min(bestGuess, dataLength - 1);\n};\n\n/**\n * 完全按照 CellSizeAndPositionManager.getVisibleCellRange 的算法实现\n * 参考 react-window 和 react-virtualized 的实现\n */\nconst updateVisibleItems = (currentScrollTop: number) => {\n if (!containerRef.value || allData.value.length === 0) {\n return;\n }\n\n const containerHeight = containerRef.value.clientHeight;\n // 如果容器高度为 0,说明还没有渲染完成,延迟计算\n if (containerHeight === 0) {\n nextTick(() => {\n if (containerRef.value && containerRef.value.clientHeight > 0) {\n updateVisibleItems(currentScrollTop);\n }\n });\n return;\n }\n\n const overscanCount = get(props.virtualized, 'overscanCount', 5) as number;\n\n // 完全按照 CellSizeAndPositionManager.getVisibleCellRange 的算法\n const containerSize = containerHeight;\n let offset = currentScrollTop;\n const maxOffset = offset + containerSize;\n\n // 使用二分查找找到可见范围的起始索引\n const start = findNearestItem(offset);\n\n // 获取起始项的位置和大小\n const startOffset = getOffsetForIndex(start);\n const startItemSize = getItemSize(start);\n\n // offset 更新为起始项的底部位置(即下一项的顶部位置)\n offset = startOffset + startItemSize;\n\n // 从 start 开始,累加后续项的高度,直到超过 maxOffset\n let stop = start;\n while (offset < maxOffset && stop < allData.value.length - 1) {\n stop++;\n const itemSize = getItemSize(stop);\n offset += itemSize;\n }\n\n // 确保索引在有效范围内\n const startIndex = Math.max(0, Math.min(start, allData.value.length - 1));\n const endIndex = Math.max(startIndex, Math.min(stop, allData.value.length - 1));\n\n // 应用 overscan\n const overscanStartIndex = Math.max(0, startIndex - overscanCount);\n const overscanStopIndex = Math.min(allData.value.length - 1, endIndex + overscanCount);\n\n // 只有在可见范围真正发生变化时才更新,避免不必要的重新渲染\n const currentRange = visibleRange.value;\n const hasChanged =\n currentRange.overscanStartIndex !== overscanStartIndex ||\n currentRange.overscanStopIndex !== overscanStopIndex ||\n currentRange.startIndex !== startIndex ||\n currentRange.endIndex !== endIndex;\n\n if (hasChanged) {\n visibleRange.value = {\n startIndex,\n endIndex,\n overscanStartIndex,\n overscanStopIndex,\n };\n\n emit('items-rendered', {\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex: startIndex,\n visibleStopIndex: endIndex,\n });\n }\n};\n\n/**\n * 暴露类似 react-window List 的 API\n * Scroll to the specified item\n * @param index - The index of the item to scroll to\n * @param align - Alignment option: 'auto' | 'smart' | 'center' | 'end' | 'start'\n */\nconst scrollToItem = (index: number, align: 'auto' | 'smart' | 'center' | 'end' | 'start' = 'auto') => {\n if (!containerRef.value || index < 0 || index >= allData.value.length) {\n return;\n }\n\n // 计算目标项的顶部位置\n const targetTop = getOffsetForIndex(index);\n const containerHeight = containerRef.value.clientHeight;\n const itemHeight = getItemSize(index);\n const currentScrollTop = containerRef.value.scrollTop;\n const visibleTop = currentScrollTop;\n const visibleBottom = currentScrollTop + containerHeight;\n const itemTop = targetTop;\n const itemBottom = targetTop + itemHeight;\n\n // 检查项目是否已经在可见范围内\n const isAlreadyVisible = itemTop >= visibleTop && itemBottom <= visibleBottom;\n if (isAlreadyVisible && align === 'auto') {\n return; // 已经可见,不需要滚动\n }\n\n let finalScrollTop = currentScrollTop;\n\n // 根据 align 参数调整滚动位置\n switch (align) {\n case 'start':\n finalScrollTop = itemTop;\n break;\n case 'center':\n finalScrollTop = itemTop - (containerHeight - itemHeight) / 2;\n break;\n case 'end':\n finalScrollTop = itemBottom - containerHeight;\n break;\n case 'smart': {\n // 如果目标项在可见范围内,不滚动\n if (isAlreadyVisible) {\n return;\n }\n // 如果目标项距离可见区域小于一个视口,滚动尽可能少\n const viewportDistance = Math.min(Math.abs(itemTop - visibleTop), Math.abs(itemBottom - visibleBottom));\n if (viewportDistance < containerHeight) {\n // 滚动尽可能少以确保项目可见\n if (itemTop < visibleTop) {\n finalScrollTop = itemTop;\n } else {\n finalScrollTop = itemBottom - containerHeight;\n }\n } else {\n // 如果距离超过一个视口,居中显示\n finalScrollTop = itemTop - (containerHeight - itemHeight) / 2;\n }\n break;\n }\n case 'auto':\n default: {\n // auto: 滚动尽可能少以确保项目可见\n if (itemTop < visibleTop) {\n finalScrollTop = itemTop;\n } else if (itemBottom > visibleBottom) {\n finalScrollTop = itemBottom - containerHeight;\n } else {\n // 已经可见,不滚动\n return;\n }\n break;\n }\n }\n\n // 确保滚动位置有效\n const maxScrollTop = Math.max(0, containerRef.value.scrollHeight - containerHeight);\n finalScrollTop = Math.max(0, Math.min(maxScrollTop, finalScrollTop));\n\n // 只有在位置真正变化时才滚动\n if (finalScrollTop !== currentScrollTop) {\n containerRef.value.scrollTop = finalScrollTop;\n // 直接设置 scrollTop 不会触发 scroll 事件,需要手动更新可见项\n scrollTop.value = finalScrollTop;\n updateVisibleItems(finalScrollTop);\n }\n};\n\ndefineExpose({\n /**\n * 暴露 containerRef,供 Table.vue 在虚拟滚动时访问滚动容器\n * 用于 handleWheelNonPassive 等需要直接操作滚动容器的场景\n */\n containerRef,\n /**\n * Scroll to the specified offset (scrollTop)\n * @param scrollOffset - The offset to scroll to\n */\n scrollTo: (scrollOffset: number) => {\n if (containerRef.value) {\n containerRef.value.scrollTop = scrollOffset;\n scrollTop.value = scrollOffset;\n updateVisibleItems(scrollOffset);\n }\n },\n /**\n * Scroll to the specified item\n * @param index - The index of the item to scroll to\n * @param align - Alignment option: 'auto' | 'smart' | 'center' | 'end' | 'start'\n */\n scrollToItem,\n // 保持向后兼容的别名\n scrollToOffset: (offset: number) => {\n if (containerRef.value) {\n containerRef.value.scrollTop = offset;\n scrollTop.value = offset;\n updateVisibleItems(offset);\n }\n },\n scrollToTop: () => {\n if (containerRef.value) {\n containerRef.value.scrollTop = 0;\n scrollTop.value = 0;\n updateVisibleItems(0);\n }\n },\n});\n\nlet scrollTimeout: NodeJS.Timeout | null = null;\nconst scrollDebounceDelay = 16; // 约 60fps\n\nconst handleScroll = (e: Event) => {\n const target = e.target as HTMLElement;\n const newScrollTop = target.scrollTop;\n const newScrollLeft = target.scrollLeft;\n\n if (props.onScroll) {\n const prevTop = scrollTop.value;\n props.onScroll({\n scrollOffset: newScrollTop,\n scrollDirection: newScrollTop > prevTop ? 'forward' : 'backward',\n });\n }\n\n scrollTop.value = newScrollTop;\n scrollLeft.value = newScrollLeft;\n\n if (props.handleBodyScroll) {\n props.handleBodyScroll(e);\n }\n\n // 使用防抖来优化性能,避免频繁计算\n if (scrollTimeout) {\n clearTimeout(scrollTimeout);\n }\n\n scrollTimeout = setTimeout(() => {\n // 计算可见项\n updateVisibleItems(newScrollTop);\n scrollTimeout = null;\n }, scrollDebounceDelay);\n};\n\nconst handleWheel = (e: WheelEvent) => {\n if (props.handleWheel) {\n props.handleWheel(e);\n }\n};\n\nlet resizeObserver: ResizeObserver | null = null;\n\nonMounted(() => {\n // 使用 nextTick 确保 DOM 已经完全渲染\n nextTick(() => {\n // 如果容器已准备好,直接初始化\n if (containerRef.value && containerRef.value.clientHeight > 0) {\n updateVisibleItems(containerRef.value.scrollTop || 0);\n return;\n }\n\n // 否则使用 requestAnimationFrame 等待渲染\n requestAnimationFrame(() => {\n if (containerRef.value && containerRef.value.clientHeight > 0) {\n updateVisibleItems(containerRef.value.scrollTop || 0);\n } else if (containerRef.value && typeof ResizeObserver !== 'undefined') {\n // 使用 ResizeObserver 监听容器大小变化\n resizeObserver = new ResizeObserver(() => {\n if (containerRef.value && containerRef.value.clientHeight > 0) {\n updateVisibleItems(containerRef.value.scrollTop || 0);\n resizeObserver?.disconnect();\n resizeObserver = null;\n }\n });\n resizeObserver.observe(containerRef.value);\n }\n });\n });\n});\n\nonUnmounted(() => {\n if (resizeObserver) {\n resizeObserver.disconnect();\n resizeObserver = null;\n }\n if (scrollTimeout) {\n clearTimeout(scrollTimeout);\n scrollTimeout = null;\n }\n // 清理缓存\n itemSizeCache.clear();\n});\n\nwatch(\n () => allData.value,\n (newData) => {\n if (newData && newData.length > 0) {\n // 清空缓存,因为数据源变化了\n itemSizeCache.clear();\n\n // 使用 nextTick 确保 DOM 已经更新\n nextTick(() => {\n // 如果容器还没有初始化,先尝试初始化\n if (!containerRef.value || containerRef.value.clientHeight === 0) {\n // 使用 requestAnimationFrame 等待容器渲染\n requestAnimationFrame(() => {\n if (containerRef.value && containerRef.value.clientHeight > 0) {\n // 容器已准备好,计算可见范围\n updateVisibleItems(containerRef.value.scrollTop || 0);\n } else {\n // 容器还未准备好,设置一个初始可见范围\n // 这样 virtualizedData 就不会为空\n visibleRange.value = {\n startIndex: 0,\n endIndex: Math.min(9, newData.length - 1),\n overscanStartIndex: 0,\n overscanStopIndex: Math.min(14, newData.length - 1),\n };\n }\n });\n } else {\n // 容器已存在,更新可见项\n updateVisibleItems(containerRef.value.scrollTop || 0);\n }\n });\n } else if (newData && newData.length === 0) {\n // 数据为空时,重置可见范围\n visibleRange.value = {\n startIndex: -1,\n endIndex: -1,\n overscanStartIndex: -1,\n overscanStopIndex: -1,\n };\n // 清空缓存\n itemSizeCache.clear();\n }\n },\n { immediate: true }\n);\n\nconst cachedScrollTop = ref(0);\n\nwatch(\n () => props.dataSource,\n () => {\n if (containerRef.value) {\n // 保存当前滚动位置\n cachedScrollTop.value = containerRef.value.scrollTop;\n nextTick(() => {\n // 恢复滚动位置\n containerRef.value!.scrollTop = cachedScrollTop.value;\n updateVisibleItems(cachedScrollTop.value);\n });\n }\n }\n);\n\n// 监听 expandedRowKeys 变化,保持滚动位置(展开/收起时)\nwatch(\n () => props.expandedRowKeys,\n (newKeys, oldKeys) => {\n // 只有在实际发生变化时才处理\n if (containerRef.value && JSON.stringify(newKeys) !== JSON.stringify(oldKeys)) {\n // 保存当前滚动位置\n const currentScrollTop = containerRef.value.scrollTop;\n cachedScrollTop.value = currentScrollTop;\n\n // 清空缓存,因为展开/收起会改变数据结构\n itemSizeCache.clear();\n\n nextTick(() => {\n if (containerRef.value) {\n containerRef.value.scrollTop = currentScrollTop;\n updateVisibleItems(currentScrollTop);\n }\n });\n }\n },\n { deep: true }\n);\n</script>\n"],"names":["scrollDebounceDelay","props","__props","emit","__emit","containerRef","ref","scrollTop","scrollLeft","foundationVirtualizedData","useTableBodyFoundation","computed","allData","visibleRange","virtualizedData","overscanStartIndex","overscanStopIndex","initialCount","item","relativeIndex","start","end","bodyCls","classnames","tableContext","useTableContext","tableWidth","scrollX","_a","ctxWidth","cellWidths","totalWidth","arrayAdd","manualWidth","sum","col","tableCls","containerStyle","rawY","get","yIsNumber","innerStyle","totalHeight","dataLength","heights","i","size","getItemSize","itemSizeCache","index","defaultConfig","getDefaultVirtualizedRowConfig","itemSize","realSize","error","watch","getItemKey","getItemStyle","originalIndex","top","getCellWidths","contextWidths","w","width","column","getBodyCellComponent","strings","getFirstDataColumnIndex","idx","cols","key","isInnerColumnKey","renderRowWithStyle","rowVNode","renderRow","itemStyle","rowWidth","existingStyle","mergedStyle","h","groupKey","group","expanded","groupRowKeys","groupSectionContent","result","colSpan","isScrollbarColumn","groupRecord","groupedRowProps","groupClassName","groupStyle","groupOnClick","restGroupRowProps","handleGroupRowClick","e","rowCls","record","rowIndex","level","r","_b","selected","_c","disabled","_d","expandable","rowProps","className","style","onClick","onDoubleClick","onMouseEnter","onMouseLeave","restRowProps","rowClass","cells","firstDataColumnIndex","BodyCell","getColumnSlotName","columnIndex","isExpandedColumn","TableCell","expandableProps","isBool","hasExpandIcon","fixedLeft","isFixedLeft","lastFixedLeft","isLastLeftFixed","fixedRight","isFixedRight","firstFixedRight","isFirstFixedRight","diyProps","cellWidth","columnWidth","columnSlotName","hasSlot","cellSlots","textValue","slotFn","capturedText","capturedRecord","capturedIndex","rowStyle","rowEvents","getOffsetForIndex","offset","maxIndex","findNearestItem","left","right","bestGuess","currentGuess","currentOffset","updateVisibleItems","currentScrollTop","containerHeight","nextTick","overscanCount","containerSize","maxOffset","startOffset","startItemSize","stop","startIndex","endIndex","currentRange","__expose","scrollOffset","align","targetTop","itemHeight","visibleTop","visibleBottom","itemTop","itemBottom","isAlreadyVisible","finalScrollTop","maxScrollTop","scrollTimeout","handleScroll","target","newScrollTop","newScrollLeft","prevTop","handleWheel","resizeObserver","onMounted","onUnmounted","newData","cachedScrollTop","newKeys","oldKeys","_createElementBlock","_createElementVNode","_normalizeStyle","_openBlock","_Fragment","_renderList","_createBlock","_resolveDynamicComponent","_renderSlot","_ctx","_unref","Empty"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabBar.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabItem.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabPane.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tag.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagGroup.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
import { defineComponent as De, ref as A, watch as U, computed as r, h as T, onMounted as Re, nextTick as G, createElementBlock as h, openBlock as c, mergeProps as X, unref as F, createCommentVNode as S, createElementVNode as J, normalizeClass as C, createBlock as y, resolveDynamicComponent as V, createVNode as ze, Fragment as Q, renderList as Me, withCtx as Ke, toDisplayString as Y } from "vue";
|
|
2
|
+
import k from "classnames";
|
|
3
|
+
import { noop as f, isArray as Z, isEqual as He, isString as w, isNull as ee, isUndefined as N, isFunction as te, isNumber as je } from "lodash-es";
|
|
4
|
+
import We from "@douyinfe/semi-foundation/tagInput/foundation";
|
|
5
|
+
import { cssClasses as qe } from "@douyinfe/semi-foundation/tagInput/constants";
|
|
6
|
+
import ae from "@douyinfe/semi-foundation/tagInput/utils/getSplitedArray";
|
|
7
|
+
import { isSemiIcon as ne } from "../_utils/index.js";
|
|
8
|
+
import Ue from "../input/Input.vue.js";
|
|
9
|
+
import le from "./TagItem.vue.js";
|
|
10
|
+
import Ge from "../popover/Popover.vue.js";
|
|
11
|
+
import Xe from "../_sortable/Sortable.vue.js";
|
|
12
|
+
import { useBaseComponent as Je } from "../_utils/useBaseComponent.js";
|
|
13
|
+
import { useFoundation as Qe } from "../../_utils/useFoundation.js";
|
|
14
|
+
import Ye from "../icons/icons/IconClear.js";
|
|
15
|
+
import { normalizeKeyboardEvent as Ze, isEnterPressed as et } from "../_utils/keyboardUtils.js";
|
|
16
|
+
const tt = ["aria-disabled", "aria-label", "aria-invalid"], at = ["id"], yt = /* @__PURE__ */ De({
|
|
17
|
+
name: "TagInput",
|
|
18
|
+
__name: "TagInput",
|
|
19
|
+
props: {
|
|
20
|
+
className: {},
|
|
21
|
+
clearIcon: {},
|
|
22
|
+
defaultValue: {},
|
|
23
|
+
disabled: { type: Boolean },
|
|
24
|
+
inputValue: {},
|
|
25
|
+
maxLength: {},
|
|
26
|
+
max: {},
|
|
27
|
+
maxTagCount: {},
|
|
28
|
+
showRestTagsPopover: { type: Boolean, default: !0 },
|
|
29
|
+
restTagsPopoverProps: {},
|
|
30
|
+
showContentTooltip: { type: [Boolean, Object], default: !0 },
|
|
31
|
+
allowDuplicates: { type: Boolean, default: !0 },
|
|
32
|
+
addOnBlur: { type: Boolean, default: !1 },
|
|
33
|
+
draggable: { type: Boolean, default: !1 },
|
|
34
|
+
expandRestTagsOnClick: { type: Boolean, default: !0 },
|
|
35
|
+
onAdd: { type: Function, default: f },
|
|
36
|
+
onBlur: { type: Function, default: f },
|
|
37
|
+
onChange: { type: Function, default: f },
|
|
38
|
+
onExceed: { type: Function, default: f },
|
|
39
|
+
onFocus: { type: Function, default: f },
|
|
40
|
+
onInputChange: { type: Function, default: f },
|
|
41
|
+
onInputExceed: { type: Function, default: f },
|
|
42
|
+
onKeyDown: { type: Function, default: f },
|
|
43
|
+
onRemove: { type: Function, default: f },
|
|
44
|
+
placeholder: {},
|
|
45
|
+
insetLabel: {},
|
|
46
|
+
insetLabelId: {},
|
|
47
|
+
prefix: {},
|
|
48
|
+
renderTagItem: {},
|
|
49
|
+
separator: { default: "," },
|
|
50
|
+
showClear: { type: Boolean, default: !1 },
|
|
51
|
+
size: { default: "default" },
|
|
52
|
+
style: {},
|
|
53
|
+
suffix: {},
|
|
54
|
+
validateStatus: { default: "default" },
|
|
55
|
+
value: {},
|
|
56
|
+
autoFocus: { type: Boolean, default: !1 },
|
|
57
|
+
"aria-label": {},
|
|
58
|
+
preventScroll: { type: Boolean }
|
|
59
|
+
},
|
|
60
|
+
emits: ["update:value", "update:inputValue", "change", "add", "remove", "blur", "focus", "inputChange", "keydown"],
|
|
61
|
+
setup(oe, { expose: se, emit: ue }) {
|
|
62
|
+
const l = qe.PREFIX, t = oe, p = ue, D = A(), x = A(), $ = A(null), P = () => {
|
|
63
|
+
var e, a;
|
|
64
|
+
return (a = (e = x.value) == null ? void 0 : e.$el) == null ? void 0 : a.querySelector("input");
|
|
65
|
+
}, o = A({
|
|
66
|
+
tagsArray: Z(t.value) ? t.value : t.value === null ? [] : t.defaultValue || [],
|
|
67
|
+
inputValue: t.inputValue || "",
|
|
68
|
+
focusing: !1,
|
|
69
|
+
hovering: !1,
|
|
70
|
+
active: !1,
|
|
71
|
+
entering: !1
|
|
72
|
+
});
|
|
73
|
+
let R = !1;
|
|
74
|
+
U(
|
|
75
|
+
() => t.value,
|
|
76
|
+
(e, a) => {
|
|
77
|
+
Z(e) ? o.value.tagsArray = e : e === null ? o.value.tagsArray = [] : e === void 0 && (!R && a === void 0 && (t.defaultValue || []).length > 0 && o.value.tagsArray.length > 0 && He(o.value.tagsArray, t.defaultValue) || (o.value.tagsArray = [])), R = !0;
|
|
78
|
+
},
|
|
79
|
+
{ immediate: !0, deep: !1 }
|
|
80
|
+
), U(
|
|
81
|
+
() => t.inputValue,
|
|
82
|
+
(e) => {
|
|
83
|
+
(w(e) || e === "") && (o.value.inputValue = e || "");
|
|
84
|
+
},
|
|
85
|
+
{ immediate: !0 }
|
|
86
|
+
);
|
|
87
|
+
const { adapter: E, getDataAttr: re } = Je(t, o);
|
|
88
|
+
E.getProps = () => {
|
|
89
|
+
const e = {};
|
|
90
|
+
return Object.keys(t).forEach((a) => {
|
|
91
|
+
const n = t[a];
|
|
92
|
+
n !== void 0 && (e[a] = n);
|
|
93
|
+
}), e;
|
|
94
|
+
};
|
|
95
|
+
const ie = E.getStates;
|
|
96
|
+
E.getStates = () => {
|
|
97
|
+
const e = ie(), a = P();
|
|
98
|
+
return a && a.value !== e.inputValue && (e.inputValue = a.value), e;
|
|
99
|
+
};
|
|
100
|
+
const ce = {
|
|
101
|
+
...E,
|
|
102
|
+
setInputValue: (e) => {
|
|
103
|
+
o.value.inputValue = e, p("update:inputValue", e);
|
|
104
|
+
},
|
|
105
|
+
setTagsArray: (e) => {
|
|
106
|
+
o.value.tagsArray = e, p("update:value", e);
|
|
107
|
+
},
|
|
108
|
+
setFocusing: (e) => {
|
|
109
|
+
o.value.focusing = e;
|
|
110
|
+
},
|
|
111
|
+
toggleFocusing: (e) => {
|
|
112
|
+
var a, n;
|
|
113
|
+
e ? (a = x.value) == null || a.focus() : (n = x.value) == null || n.blur(), o.value.focusing = e;
|
|
114
|
+
},
|
|
115
|
+
setHovering: (e) => {
|
|
116
|
+
o.value.hovering = e;
|
|
117
|
+
},
|
|
118
|
+
setActive: (e) => {
|
|
119
|
+
o.value.active = e;
|
|
120
|
+
},
|
|
121
|
+
setEntering: (e) => {
|
|
122
|
+
o.value.entering = e;
|
|
123
|
+
},
|
|
124
|
+
getClickOutsideHandler: () => $.value,
|
|
125
|
+
registerClickOutsideHandler: (e) => {
|
|
126
|
+
const a = (n) => {
|
|
127
|
+
var g;
|
|
128
|
+
const u = D.value, v = n.target, i = ((g = n.composedPath) == null ? void 0 : g.call(n)) || [v];
|
|
129
|
+
u && !u.contains(v) && !i.includes(u) && e(n);
|
|
130
|
+
};
|
|
131
|
+
$.value = a, document.addEventListener("click", a, !1);
|
|
132
|
+
},
|
|
133
|
+
unregisterClickOutsideHandler: () => {
|
|
134
|
+
$.value && (document.removeEventListener("click", $.value), $.value = null);
|
|
135
|
+
},
|
|
136
|
+
notifyBlur: (e) => {
|
|
137
|
+
p("blur", e), t.onBlur(e);
|
|
138
|
+
},
|
|
139
|
+
notifyFocus: (e) => {
|
|
140
|
+
p("focus", e), t.onFocus(e);
|
|
141
|
+
},
|
|
142
|
+
notifyInputChange: (e, a) => {
|
|
143
|
+
p("inputChange", e, a), t.onInputChange(e, a);
|
|
144
|
+
},
|
|
145
|
+
notifyTagChange: (e) => {
|
|
146
|
+
o.value.tagsArray = e, p("change", e), p("update:value", e), t.onChange(e);
|
|
147
|
+
},
|
|
148
|
+
notifyTagAdd: (e) => {
|
|
149
|
+
p("add", e), t.onAdd(e);
|
|
150
|
+
},
|
|
151
|
+
notifyTagRemove: (e, a) => {
|
|
152
|
+
p("remove", e, a), t.onRemove(e, a);
|
|
153
|
+
},
|
|
154
|
+
notifyKeyDown: (e) => {
|
|
155
|
+
p("keydown", e), t.onKeyDown(e);
|
|
156
|
+
}
|
|
157
|
+
}, { foundation: s } = Qe(We, ce), d = r(() => o.value.tagsArray || []), de = r(() => o.value.focusing || !1), z = r(() => o.value.hovering || !1), b = r(() => o.value.active || !1), B = r(() => t.draggable && b.value), pe = r(
|
|
158
|
+
() => k(l, t.className, {
|
|
159
|
+
[`${l}-focus`]: de.value || b.value,
|
|
160
|
+
[`${l}-disabled`]: t.disabled,
|
|
161
|
+
[`${l}-hover`]: z.value && !t.disabled,
|
|
162
|
+
[`${l}-error`]: t.validateStatus === "error",
|
|
163
|
+
[`${l}-warning`]: t.validateStatus === "warning",
|
|
164
|
+
[`${l}-small`]: t.size === "small",
|
|
165
|
+
[`${l}-large`]: t.size === "large",
|
|
166
|
+
[`${l}-with-prefix`]: !!t.prefix || !!t.insetLabel,
|
|
167
|
+
[`${l}-with-suffix`]: !!t.suffix
|
|
168
|
+
})
|
|
169
|
+
), fe = r(() => `${l}-wrapper`), ve = r(() => k(`${l}-wrapper-input`, `${l}-wrapper-input-${t.size}`)), M = r(() => {
|
|
170
|
+
const e = t.prefix || t.insetLabel;
|
|
171
|
+
return ee(e) || N(e) ? null : w(e) ? T("span", e) : e;
|
|
172
|
+
}), K = r(() => ee(t.suffix) || N(t.suffix) ? null : w(t.suffix) ? T("span", t.suffix) : t.suffix), ge = r(() => {
|
|
173
|
+
const e = t.prefix || t.insetLabel;
|
|
174
|
+
return k(`${l}-prefix`, {
|
|
175
|
+
[`${l}-inset-label`]: t.insetLabel,
|
|
176
|
+
[`${l}-prefix-text`]: e && w(e),
|
|
177
|
+
[`${l}-prefix-icon`]: e && ne(e)
|
|
178
|
+
});
|
|
179
|
+
}), me = r(
|
|
180
|
+
() => k(`${l}-suffix`, {
|
|
181
|
+
[`${l}-suffix-text`]: t.suffix && w(t.suffix),
|
|
182
|
+
[`${l}-suffix-icon`]: t.suffix && ne(t.suffix)
|
|
183
|
+
})
|
|
184
|
+
), he = r(
|
|
185
|
+
() => k(`${l}-clearBtn`, {
|
|
186
|
+
[`${l}-clearBtn-invisible`]: !z.value || o.value.inputValue === "" && d.value.length === 0 || t.disabled
|
|
187
|
+
})
|
|
188
|
+
), Ce = r(() => (!b.value || !t.expandRestTagsOnClick) && t.maxTagCount && t.maxTagCount < d.value.length ? d.value.slice(0, t.maxTagCount) : d.value), _ = r(() => (!b.value || !t.expandRestTagsOnClick) && t.maxTagCount && t.maxTagCount < d.value.length ? d.value.slice(t.maxTagCount) : []), H = r(
|
|
189
|
+
() => k(`${l}-wrapper-n`, {
|
|
190
|
+
[`${l}-wrapper-n-disabled`]: t.disabled
|
|
191
|
+
})
|
|
192
|
+
), ye = r(() => T(
|
|
193
|
+
"div",
|
|
194
|
+
{ class: `${l}-rest-tags-popover-list` },
|
|
195
|
+
_.value.map((e, a) => {
|
|
196
|
+
const n = (t.maxTagCount || 0) + a;
|
|
197
|
+
return L(e, n);
|
|
198
|
+
})
|
|
199
|
+
)), xe = (e, a) => B.value ? e : `${a}${e}`, L = (e, a, n) => {
|
|
200
|
+
const { size: u, disabled: v, renderTagItem: i, showContentTooltip: g, draggable: O } = t, m = b.value && O, I = () => {
|
|
201
|
+
v || s.handleTagClose(a);
|
|
202
|
+
};
|
|
203
|
+
if (te(i)) {
|
|
204
|
+
const Ne = i(e, a, I);
|
|
205
|
+
return T(le, {
|
|
206
|
+
value: e,
|
|
207
|
+
index: a,
|
|
208
|
+
prefixCls: l,
|
|
209
|
+
size: u,
|
|
210
|
+
disabled: v,
|
|
211
|
+
showContentTooltip: g,
|
|
212
|
+
showIconHandler: m,
|
|
213
|
+
draggable: B.value,
|
|
214
|
+
sortableHandle: n,
|
|
215
|
+
customRender: Ne,
|
|
216
|
+
onClose: I
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
return T(le, {
|
|
220
|
+
value: e,
|
|
221
|
+
index: a,
|
|
222
|
+
prefixCls: l,
|
|
223
|
+
size: u,
|
|
224
|
+
disabled: v,
|
|
225
|
+
showContentTooltip: g,
|
|
226
|
+
showIconHandler: m,
|
|
227
|
+
draggable: B.value,
|
|
228
|
+
sortableHandle: n,
|
|
229
|
+
onClose: I
|
|
230
|
+
});
|
|
231
|
+
}, be = (e) => {
|
|
232
|
+
const { id: a, sortableHandle: n } = e, u = d.value.indexOf(a);
|
|
233
|
+
return L(a, u, n);
|
|
234
|
+
}, Ie = (e) => T("div", {
|
|
235
|
+
class: `${l}-sortable-list`,
|
|
236
|
+
style: { flexWrap: "nowrap", overflow: "hidden" },
|
|
237
|
+
...e
|
|
238
|
+
}), Te = (e) => {
|
|
239
|
+
const a = e.target, n = a.value, u = o.value.inputValue;
|
|
240
|
+
if (je(t.maxLength)) {
|
|
241
|
+
const i = ae(n, t.separator), g = ae(u, t.separator), O = Math.max(i.length, g.length);
|
|
242
|
+
for (let m = 0; m < O; m++)
|
|
243
|
+
if (!N(i[m]) && i[m].length > t.maxLength) {
|
|
244
|
+
const I = P();
|
|
245
|
+
I && (I.value = u), te(t.onInputExceed) && t.onInputExceed(n);
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
const v = {
|
|
250
|
+
...e,
|
|
251
|
+
target: {
|
|
252
|
+
...a,
|
|
253
|
+
value: n
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
s.handleInputChange(v), G(() => {
|
|
257
|
+
const i = P();
|
|
258
|
+
i && (o.value.inputValue === u && i.value !== u ? i.value = u : i.value !== o.value.inputValue && (i.value = o.value.inputValue));
|
|
259
|
+
});
|
|
260
|
+
}, ke = (e, a) => {
|
|
261
|
+
o.value.inputValue = e;
|
|
262
|
+
const n = {
|
|
263
|
+
...a,
|
|
264
|
+
target: {
|
|
265
|
+
...a.target,
|
|
266
|
+
value: e
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
s.handleInputChange(n);
|
|
270
|
+
}, $e = (e) => {
|
|
271
|
+
const a = Ze(e), n = e.target;
|
|
272
|
+
n && n.tagName === "INPUT" && (o.value.inputValue = n.value), et(a) && a.preventDefault(), s.handleKeyDown(a);
|
|
273
|
+
}, we = (e) => {
|
|
274
|
+
s.handleInputFocus(e);
|
|
275
|
+
}, Ee = (e) => {
|
|
276
|
+
s.handleInputBlur(e);
|
|
277
|
+
}, Be = (e) => {
|
|
278
|
+
s.handleInputCompositionStart(e);
|
|
279
|
+
}, Ae = (e) => {
|
|
280
|
+
s.handleInputCompositionEnd(e);
|
|
281
|
+
}, Fe = (e) => {
|
|
282
|
+
s.handleClearBtn(e);
|
|
283
|
+
}, Se = (e) => {
|
|
284
|
+
s.handleClearEnterPress(e);
|
|
285
|
+
}, Ve = () => {
|
|
286
|
+
s.handleInputMouseEnter();
|
|
287
|
+
}, Pe = () => {
|
|
288
|
+
s.handleInputMouseLeave();
|
|
289
|
+
}, _e = (e) => {
|
|
290
|
+
s.handleClick(e);
|
|
291
|
+
}, j = (e) => {
|
|
292
|
+
s.handleClickPrefixOrSuffix(e);
|
|
293
|
+
}, W = (e) => {
|
|
294
|
+
s.handlePreventMouseDown(e);
|
|
295
|
+
}, Le = (e) => {
|
|
296
|
+
s.handleSortEnd(e);
|
|
297
|
+
}, Oe = () => {
|
|
298
|
+
var e;
|
|
299
|
+
(e = x.value) == null || e.blur(), s.clickOutsideCallBack();
|
|
300
|
+
}, q = () => {
|
|
301
|
+
var e;
|
|
302
|
+
(e = x.value) == null || e.focus(), t.disabled || s.handleClick();
|
|
303
|
+
};
|
|
304
|
+
return Re(() => {
|
|
305
|
+
G(() => {
|
|
306
|
+
!t.disabled && t.autoFocus && q(), s.init();
|
|
307
|
+
});
|
|
308
|
+
}), se({
|
|
309
|
+
blur: Oe,
|
|
310
|
+
focus: q
|
|
311
|
+
}), (e, a) => (c(), h("div", X({
|
|
312
|
+
ref_key: "tagInputRef",
|
|
313
|
+
ref: D,
|
|
314
|
+
class: pe.value,
|
|
315
|
+
style: t.style,
|
|
316
|
+
"aria-disabled": t.disabled,
|
|
317
|
+
"aria-label": t["aria-label"],
|
|
318
|
+
"aria-invalid": t.validateStatus === "error"
|
|
319
|
+
}, F(re)(), {
|
|
320
|
+
onMouseenter: Ve,
|
|
321
|
+
onMouseleave: Pe,
|
|
322
|
+
onClick: _e
|
|
323
|
+
}), [
|
|
324
|
+
M.value ? (c(), h("div", {
|
|
325
|
+
key: 0,
|
|
326
|
+
id: t.insetLabelId,
|
|
327
|
+
class: C(ge.value),
|
|
328
|
+
"x-semi-prop": "prefix,insetLabel",
|
|
329
|
+
onMousedown: W,
|
|
330
|
+
onClick: j
|
|
331
|
+
}, [
|
|
332
|
+
(c(), y(V(M.value)))
|
|
333
|
+
], 42, at)) : S("", !0),
|
|
334
|
+
J("div", {
|
|
335
|
+
class: C(fe.value)
|
|
336
|
+
}, [
|
|
337
|
+
b.value && B.value && d.value.length > 0 ? (c(), y(Xe, {
|
|
338
|
+
key: 0,
|
|
339
|
+
items: d.value,
|
|
340
|
+
onSortEnd: Le,
|
|
341
|
+
renderItem: be,
|
|
342
|
+
prefix: F(l),
|
|
343
|
+
container: Ie,
|
|
344
|
+
dragOverlayCls: `${F(l)}-right-item-drag-item-move`,
|
|
345
|
+
direction: "horizontal"
|
|
346
|
+
}, null, 8, ["items", "prefix", "dragOverlayCls"])) : (c(), h(Q, { key: 1 }, [
|
|
347
|
+
(c(!0), h(Q, null, Me(Ce.value, (n, u) => (c(), y(V(L(n, u)), {
|
|
348
|
+
key: xe(n, u)
|
|
349
|
+
}))), 128)),
|
|
350
|
+
_.value.length > 0 && t.showRestTagsPopover ? (c(), y(Ge, X({
|
|
351
|
+
key: 0,
|
|
352
|
+
content: ye.value,
|
|
353
|
+
showArrow: "",
|
|
354
|
+
trigger: "hover",
|
|
355
|
+
position: "top",
|
|
356
|
+
autoAdjustOverflow: !0
|
|
357
|
+
}, t.restTagsPopoverProps || {}), {
|
|
358
|
+
default: Ke(() => [
|
|
359
|
+
J("span", {
|
|
360
|
+
class: C(H.value)
|
|
361
|
+
}, "+" + Y(d.value.length - (t.maxTagCount || 0)), 3)
|
|
362
|
+
]),
|
|
363
|
+
_: 1
|
|
364
|
+
}, 16, ["content"])) : _.value.length > 0 ? (c(), h("span", {
|
|
365
|
+
key: 1,
|
|
366
|
+
class: C(H.value)
|
|
367
|
+
}, " +" + Y(d.value.length - (t.maxTagCount || 0)), 3)) : S("", !0)
|
|
368
|
+
], 64)),
|
|
369
|
+
ze(Ue, {
|
|
370
|
+
ref_key: "inputRef",
|
|
371
|
+
ref: x,
|
|
372
|
+
class: C(ve.value),
|
|
373
|
+
disabled: t.disabled,
|
|
374
|
+
value: o.value.inputValue,
|
|
375
|
+
size: t.size,
|
|
376
|
+
placeholder: d.value.length === 0 ? t.placeholder : "",
|
|
377
|
+
onKeydown: $e,
|
|
378
|
+
onInput: Te,
|
|
379
|
+
onChange: ke,
|
|
380
|
+
onBlur: Ee,
|
|
381
|
+
onFocus: we,
|
|
382
|
+
onCompositionstart: Be,
|
|
383
|
+
onCompositionend: Ae
|
|
384
|
+
}, null, 8, ["class", "disabled", "value", "size", "placeholder"])
|
|
385
|
+
], 2),
|
|
386
|
+
t.showClear ? (c(), h("div", {
|
|
387
|
+
key: 1,
|
|
388
|
+
class: C(he.value),
|
|
389
|
+
role: "button",
|
|
390
|
+
tabindex: "0",
|
|
391
|
+
"aria-label": "Clear TagInput value",
|
|
392
|
+
onClick: Fe,
|
|
393
|
+
onKeypress: Se
|
|
394
|
+
}, [
|
|
395
|
+
t.clearIcon ? (c(), y(V(t.clearIcon), { key: 0 })) : (c(), y(F(Ye), { key: 1 }))
|
|
396
|
+
], 34)) : S("", !0),
|
|
397
|
+
K.value ? (c(), h("div", {
|
|
398
|
+
key: 2,
|
|
399
|
+
class: C(me.value),
|
|
400
|
+
"x-semi-prop": "suffix",
|
|
401
|
+
onMousedown: W,
|
|
402
|
+
onClick: j
|
|
403
|
+
}, [
|
|
404
|
+
(c(), y(V(K.value)))
|
|
405
|
+
], 34)) : S("", !0)
|
|
406
|
+
], 16, tt));
|
|
407
|
+
}
|
|
408
|
+
});
|
|
409
|
+
export {
|
|
410
|
+
yt as default
|
|
411
|
+
};
|
|
412
|
+
//# sourceMappingURL=TagInput.vue2.js.map
|